// File: sgalkina[P]data_structures/src/main.cpp
// Function: vector_smoketest()
void vector_smoketest() {
  gtl::vector<memcheck> vect;
  assert(vect.capacity() == 0);
  assert(vect.size() == 0);
  size_t n = 20;
  for (size_t i = 1; i <= n; ++i) {
    memcheck el;
    vect.push_back(std::move(el));
  }
  assert(memcheck::get_counter() == vect.size());
  assert(vect.size() == n);
  memcheck el;
  vect[10] = el;
  const gtl::vector<memcheck> vect2(vect);
  memcheck by_index = vect2[0];
}

// Assembly:
subq $0xa8, %rsp
leaq 0x90(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x2fa0
movq 0x30(%rsp), %rdi
callq 0x2fd0
movq %rax, 0x38(%rsp)
jmp 0x241a
movq 0x38(%rsp), %rax
cmpq $0x0, %rax
jne 0x2427
jmp 0x245f
leaq 0xbc1a(%rip), %rdi      # 0xe048
leaq 0xbbf0(%rip), %rsi      # 0xe025
movl $0x14, %edx
leaq 0xbc1c(%rip), %rcx      # 0xe05d
callq 0x2080
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x26c5
leaq 0x90(%rsp), %rdi
callq 0x2fe0
movq %rax, 0x28(%rsp)
jmp 0x2473
movq 0x28(%rsp), %rax
cmpq $0x0, %rax
jne 0x2480
jmp 0x249f
leaq 0xbbee(%rip), %rdi      # 0xe075
leaq 0xbb97(%rip), %rsi      # 0xe025
movl $0x15, %edx
leaq 0xbbc3(%rip), %rcx      # 0xe05d
callq 0x2080
movq $0x14, 0x78(%rsp)
movq $0x1, 0x70(%rsp)
movq 0x70(%rsp), %rax
cmpq 0x78(%rsp), %rax
ja 0x251a
leaq 0x6c(%rsp), %rdi
callq 0xd180
jmp 0x24c9
leaq 0x90(%rsp), %rdi
leaq 0x6c(%rsp), %rsi
callq 0x2ff0
jmp 0x24dd
leaq 0x6c(%rsp), %rdi
callq 0xd1b0
movq 0x70(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x70(%rsp)
jmp 0x24b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
leaq 0x6c(%rsp), %rdi
callq 0xd1b0
jmp 0x26c5
callq 0xd340
movq %rax, 0x20(%rsp)
jmp 0x2526
leaq 0x90(%rsp), %rdi
callq 0x2fe0
movq %rax, 0x18(%rsp)
jmp 0x253a
movq 0x20(%rsp), %rax
movq 0x18(%rsp), %rcx
cmpq %rcx, %rax
jne 0x254b
jmp 0x256a
leaq 0xbb34(%rip), %rdi      # 0xe086
leaq 0xbacc(%rip), %rsi      # 0xe025
movl $0x1b, %edx
leaq 0xbaf8(%rip), %rcx      # 0xe05d
callq 0x2080
leaq 0x90(%rsp), %rdi
callq 0x2fe0
movq %rax, 0x10(%rsp)
jmp 0x257e
movq 0x10(%rsp), %rax
cmpq 0x78(%rsp), %rax
jne 0x258c
jmp 0x25ab
leaq 0xbb1a(%rip), %rdi      # 0xe0ad
leaq 0xba8b(%rip), %rsi      # 0xe025
movl $0x1c, %edx
leaq 0xbab7(%rip), %rcx      # 0xe05d
callq 0x2080
leaq 0x68(%rsp), %rdi
callq 0xd180
jmp 0x25b7
leaq 0x64(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0xd2e0
jmp 0x25c8
leaq 0x90(%rsp), %rdi
movl $0xa, %esi
callq 0x3050
movq %rax, 0x8(%rsp)
jmp 0x25e1
movq 0x8(%rsp), %rdi
leaq 0x64(%rsp), %rsi
callq 0xd310
jmp 0x25f2
leaq 0x64(%rsp), %rdi
callq 0xd1b0
leaq 0x48(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x30d0
jmp 0x2610
xorl %eax, %eax
movl %eax, %esi
leaq 0x48(%rsp), %rdi
callq 0x3180
movq %rax, (%rsp)
jmp 0x2624
movq (%rsp), %rsi
leaq 0x44(%rsp), %rdi
callq 0xd2e0
jmp 0x2634
leaq 0x44(%rsp), %rdi
callq 0xd1b0
leaq 0x48(%rsp), %rdi
callq 0x2f20
leaq 0x68(%rsp), %rdi
callq 0xd1b0
leaq 0x90(%rsp), %rdi
callq 0x2f20
addq $0xa8, %rsp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
jmp 0x26bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
leaq 0x64(%rsp), %rdi
callq 0xd1b0
jmp 0x26bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
leaq 0x48(%rsp), %rdi
callq 0x2f20
leaq 0x68(%rsp), %rdi
callq 0xd1b0
leaq 0x90(%rsp), %rdi
callq 0x2f20
movq 0x88(%rsp), %rdi
callq 0x21a0
nop