// File: wagnerflo[P]inipp/./inipp.hh
// Function: inipp::inifile::inifile(std::basic_ifstream<char, std::char_traits<char>>&)
inifile::inifile(std::ifstream& infile) {
    std::map<std::string,std::string>* cursec = &this->_defaultsection;
    std::string line;

    while(std::getline(infile, line)) {
      // trim line
      line = _private::trim(line);

      // ignore empty lines and comments
      if(line.empty() || line[0] == '#') {
        continue;
      }

      // section?
      if(line[0] == '[') {
        if(line[line.size() - 1] != ']') {
          throw syntax_error("The section '" + line +
                             "' is missing a closing bracket.");
        }

        line = _private::trim(line.substr(1, line.size() - 2));
        cursec = &this->_sections[line];
        continue;
      }

      // entry: split by "=", trim and set
      std::string key;
      std::string value;

      if(_private::split(line, "=", key, value)) {
        (*cursec)[_private::trim(key)] = _private::trim(value);
        continue;
      }

      // throw exception on invalid line
      throw syntax_error("The line '" + line + "' is invalid.");
    }
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x330, %rsp            # imm = 0x330
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0x94a20
movq -0x288(%rbp), %rdi
addq $0x30, %rdi
movq %rdi, -0x290(%rbp)
callq 0x94a40
movq -0x288(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x18(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x108d0
movq -0x10(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x10130
movq %rax, -0x298(%rbp)
jmp 0x5b1a8
movq -0x298(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x10810
movb %al, -0x299(%rbp)
jmp 0x5b1c6
movb -0x299(%rbp), %al
testb $0x1, %al
jne 0x5b1d5
jmp 0x5b8d7
leaq -0x89(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x10ab0
movq -0x2a8(%rbp), %rdx
leaq 0x68856(%rip), %rsi     # 0xc3a4c
leaq -0x88(%rbp), %rdi
callq 0x4a2d0
jmp 0x5b204
leaq -0x68(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0x94a60
jmp 0x5b21a
leaq -0x38(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x107c0
leaq -0x68(%rbp), %rdi
callq 0x10c38
leaq -0x88(%rbp), %rdi
callq 0x10c38
leaq -0x89(%rbp), %rdi
callq 0x106a0
leaq -0x38(%rbp), %rdi
callq 0x10a00
testb $0x1, %al
jne 0x5b27a
xorl %eax, %eax
movl %eax, %esi
leaq -0x38(%rbp), %rdi
callq 0x10c10
movq %rax, -0x2b0(%rbp)
jmp 0x5b26b
movq -0x2b0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0x5b2c7
jmp 0x5b192
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x5b8e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x5b2b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x10c38
leaq -0x89(%rbp), %rdi
callq 0x106a0
jmp 0x5b8e9
xorl %eax, %eax
movl %eax, %esi
leaq -0x38(%rbp), %rdi
callq 0x10c10
movq %rax, -0x2b8(%rbp)
jmp 0x5b2dd
movq -0x2b8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5b, %eax
jne 0x5b54b
leaq -0x38(%rbp), %rdi
movq %rdi, -0x2c8(%rbp)
callq 0x10430
movq -0x2c8(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x10c10
movq %rax, -0x2c0(%rbp)
jmp 0x5b31b
movq -0x2c0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5d, %eax
je 0x5b412
movb $0x1, -0xd1(%rbp)
movl $0x10, %edi
callq 0x102e0
movq %rax, -0x2d0(%rbp)
leaq 0x68706(%rip), %rsi     # 0xc3a53
leaq -0xd0(%rbp), %rdi
leaq -0x38(%rbp), %rdx
callq 0x4c460
jmp 0x5b35f
leaq 0x686fb(%rip), %rdx     # 0xc3a61
leaq -0xb0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x4a380
jmp 0x5b37b
movq -0x2d0(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x94af0
jmp 0x5b390
movq -0x2d0(%rbp), %rdi
movb $0x0, -0xd1(%rbp)
leaq 0xb9d63(%rip), %rsi     # 0x115108
leaq 0x39784(%rip), %rdx     # 0x94b30
callq 0x10a40
jmp 0x5b913
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x5b3f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x5b3ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x10c38
leaq -0xd0(%rbp), %rdi
callq 0x10c38
testb $0x1, -0xd1(%rbp)
jne 0x5b401
jmp 0x5b40d
movq -0x2d0(%rbp), %rdi
callq 0x10470
jmp 0x5b8e9
leaq -0x38(%rbp), %rdi
movq %rdi, -0x2d8(%rbp)
callq 0x10430
movq -0x2d8(%rbp), %rsi
movq %rax, %rcx
addq $-0x2, %rcx
leaq -0x118(%rbp), %rdi
movl $0x1, %edx
callq 0x10650
jmp 0x5b443
leaq -0x139(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x10ab0
movq -0x2e0(%rbp), %rdx
leaq 0x685e8(%rip), %rsi     # 0xc3a4c
leaq -0x138(%rbp), %rdi
callq 0x4a2d0
jmp 0x5b472
leaq -0xf8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x138(%rbp), %rdx
callq 0x94a60
jmp 0x5b48e
leaq -0x38(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
leaq -0xf8(%rbp), %rsi
movq %rsi, -0x2f8(%rbp)
callq 0x107c0
movq -0x2f8(%rbp), %rdi
callq 0x10c38
leaq -0x138(%rbp), %rdi
callq 0x10c38
leaq -0x139(%rbp), %rdi
callq 0x106a0
leaq -0x118(%rbp), %rdi
callq 0x10c38
movq -0x288(%rbp), %rdi
movq -0x2f0(%rbp), %rsi
callq 0x94b50
movq %rax, -0x2e8(%rbp)
jmp 0x5b4f8
movq -0x2e8(%rbp), %rax
movq %rax, -0x18(%rbp)
jmp 0x5b192
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x5b52e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x10c38
leaq -0x139(%rbp), %rdi
callq 0x106a0
leaq -0x118(%rbp), %rdi
callq 0x10c38
jmp 0x5b8e9
leaq -0x160(%rbp), %rdi
callq 0x108d0
leaq -0x180(%rbp), %rdi
callq 0x108d0
leaq -0x1a1(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0x10ab0
movq -0x300(%rbp), %rdx
leaq 0x654c0(%rip), %rsi     # 0xc0a44
leaq -0x1a0(%rbp), %rdi
callq 0x4a2d0
jmp 0x5b592
leaq -0x38(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
leaq -0x160(%rbp), %rdx
leaq -0x180(%rbp), %rcx
callq 0x94c30
movb %al, -0x301(%rbp)
jmp 0x5b5b8
leaq -0x1a0(%rbp), %rdi
callq 0x10c38
leaq -0x1a1(%rbp), %rdi
callq 0x106a0
movb -0x301(%rbp), %al
testb $0x1, %al
jne 0x5b5df
jmp 0x5b7dc
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x310(%rbp)
callq 0x10ab0
movq -0x310(%rbp), %rdx
leaq 0x6844c(%rip), %rsi     # 0xc3a4c
leaq -0x1e8(%rbp), %rdi
callq 0x4a2d0
jmp 0x5b60e
leaq -0x1c8(%rbp), %rdi
leaq -0x180(%rbp), %rsi
leaq -0x1e8(%rbp), %rdx
callq 0x94a60
jmp 0x5b62a
movq -0x18(%rbp), %rax
movq %rax, -0x320(%rbp)
leaq -0x231(%rbp), %rdi
movq %rdi, -0x318(%rbp)
callq 0x10ab0
movq -0x318(%rbp), %rdx
leaq 0x683f6(%rip), %rsi     # 0xc3a4c
leaq -0x230(%rbp), %rdi
callq 0x4a2d0
jmp 0x5b664
leaq -0x210(%rbp), %rdi
leaq -0x160(%rbp), %rsi
leaq -0x230(%rbp), %rdx
callq 0x94a60
jmp 0x5b680
movq -0x320(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0x94d30
movq %rax, -0x328(%rbp)
jmp 0x5b69c
movq -0x328(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x107c0
leaq -0x210(%rbp), %rdi
callq 0x10c38
leaq -0x230(%rbp), %rdi
callq 0x10c38
leaq -0x231(%rbp), %rdi
callq 0x106a0
leaq -0x1c8(%rbp), %rdi
callq 0x10c38
leaq -0x1e8(%rbp), %rdi
callq 0x10c38
leaq -0x1e9(%rbp), %rdi
callq 0x106a0
leaq -0x180(%rbp), %rdi
callq 0x10c38
leaq -0x160(%rbp), %rdi
callq 0x10c38
jmp 0x5b192
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x5b73a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x10c38
leaq -0x1a1(%rbp), %rdi
callq 0x106a0
jmp 0x5b8bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x5b7cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x5b7bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x5b7a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x5b79b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x10c38
leaq -0x230(%rbp), %rdi
callq 0x10c38
leaq -0x231(%rbp), %rdi
callq 0x106a0
leaq -0x1c8(%rbp), %rdi
callq 0x10c38
leaq -0x1e8(%rbp), %rdi
callq 0x10c38
leaq -0x1e9(%rbp), %rdi
callq 0x106a0
jmp 0x5b8bd
movb $0x1, -0x279(%rbp)
movl $0x10, %edi
callq 0x102e0
movq %rax, -0x330(%rbp)
leaq 0x68286(%rip), %rsi     # 0xc3a81
leaq -0x278(%rbp), %rdi
leaq -0x38(%rbp), %rdx
callq 0x4c460
jmp 0x5b80d
leaq 0x68278(%rip), %rdx     # 0xc3a8c
leaq -0x258(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x4a380
jmp 0x5b829
movq -0x330(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x94af0
jmp 0x5b83e
movq -0x330(%rbp), %rdi
movb $0x0, -0x279(%rbp)
leaq 0xb98b5(%rip), %rsi     # 0x115108
leaq 0x392d6(%rip), %rdx     # 0x94b30
callq 0x10a40
jmp 0x5b913
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x5b8a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x5b898
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x10c38
leaq -0x278(%rbp), %rdi
callq 0x10c38
testb $0x1, -0x279(%rbp)
jne 0x5b8af
jmp 0x5b8bb
movq -0x330(%rbp), %rdi
callq 0x10470
jmp 0x5b8bd
leaq -0x180(%rbp), %rdi
callq 0x10c38
leaq -0x160(%rbp), %rdi
callq 0x10c38
jmp 0x5b8e9
leaq -0x38(%rbp), %rdi
callq 0x10c38
addq $0x330, %rsp            # imm = 0x330
popq %rbp
retq
leaq -0x38(%rbp), %rdi
callq 0x10c38
movq -0x290(%rbp), %rdi
callq 0x94e10
movq -0x288(%rbp), %rdi
callq 0x94e30
movq -0x40(%rbp), %rdi
callq 0x10a90
nopw %cs:(%rax,%rax)
nopl (%rax)