// File: UTAP[P]APHTTP/utils/utilities.cpp
// Function: getCimapFromString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
cimap getCimapFromString(std::string str) {
  cimap m;
  vector<string> tokenized = tokenize(str, '&');
  for (auto token : tokenized) {
    vector<string> keyValue = tokenize(token, '=');
    if (keyValue.size() != 2)
      continue;
    string key = keyValue[0];
    string value = keyValue[1];
    m[key] = value;
  }
  return m;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movq %rsi, -0xe0(%rbp)
movq %rdi, -0xf0(%rbp)
movq %rdi, %rax
movq %rax, -0xe8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb $0x0, -0x11(%rbp)
callq 0xd110
movq -0xe0(%rbp), %rsi
leaq -0x30(%rbp), %rdi
movl $0x26, %edx
callq 0x159e0
jmp 0x15d8b
leaq -0x30(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
callq 0x135a0
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rdi
callq 0x135d0
movq %rax, -0x58(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x13600
testb $0x1, %al
jne 0x15dc3
jmp 0x15f7b
leaq -0x50(%rbp), %rdi
callq 0x13640
movq %rax, %rsi
leaq -0x78(%rbp), %rdi
callq 0x4200
jmp 0x15dda
leaq -0x90(%rbp), %rdi
leaq -0x78(%rbp), %rsi
movl $0x3d, %edx
callq 0x159e0
jmp 0x15df1
leaq -0x90(%rbp), %rdi
callq 0x137f0
cmpq $0x2, %rax
je 0x15e45
movl $0x3, -0x94(%rbp)
jmp 0x15edb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x15fc1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x15f9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x15f70
xorl %eax, %eax
movl %eax, %esi
leaq -0x90(%rbp), %rdi
callq 0x13660
movq %rax, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x4200
jmp 0x15e66
leaq -0x90(%rbp), %rdi
movl $0x1, %esi
callq 0x13660
movq %rax, %rsi
leaq -0xd8(%rbp), %rdi
callq 0x4200
jmp 0x15e88
movq -0xf0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0xd8d0
movq %rax, -0xf8(%rbp)
jmp 0x15ea4
movq -0xf8(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x4060
jmp 0x15eb9
leaq -0xd8(%rbp), %rdi
callq 0x4768
leaq -0xb8(%rbp), %rdi
callq 0x4768
movl $0x0, -0x94(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x13680
movl -0x94(%rbp), %eax
testl %eax, %eax
jne 0x15efd
jmp 0x15ef3
movl $0x0, -0x94(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x4768
movl -0x94(%rbp), %eax
testl %eax, %eax
je 0x15f14
jmp 0x15f12
jmp 0x15f16
jmp 0x15f16
leaq -0x50(%rbp), %rdi
callq 0x136e0
jmp 0x15dad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x15f64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x15f58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x4768
leaq -0xb8(%rbp), %rdi
callq 0x4768
leaq -0x90(%rbp), %rdi
callq 0x13680
leaq -0x78(%rbp), %rdi
callq 0x4768
jmp 0x15f9a
movb $0x1, -0x11(%rbp)
movl $0x1, -0x94(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x13680
testb $0x1, -0x11(%rbp)
jne 0x15fb1
jmp 0x15fa5
leaq -0x30(%rbp), %rdi
callq 0x13680
jmp 0x15fc1
movq -0xf0(%rbp), %rdi
callq 0xd2f0
movq -0xe8(%rbp), %rax
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
movq -0xf0(%rbp), %rdi
callq 0xd2f0
movq -0x38(%rbp), %rdi
callq 0x46b0
nopw %cs:(%rax,%rax)