// File: maplechori[P]stata-reader-writer/State.cpp
// Function: OpenMap::process(Context&)
bool OpenMap::process(Context &ctx)
{
#define MAP_COUNT 14
  char *ctxbuf = (char *)ctx.advance();
  int i, j;

  string map_names[] = {
      "stata_data_start",
      "map",
      "variable_types",
      "varnames",
      "sortlist",
      "formats",
      "value_label_names",
      "variable_labels",
      "characteristics",
      "data",
      "strls",
      "value_labels",
      "stata_data_end",
      "eof"};

  for (i = 0; i < MAP_COUNT; i++, ctxbuf += 8)
    ctx.map.stata_map[map_names[i].c_str()] = GetLSF<uint64_t>(ctxbuf, 8);

  ctx.advance();

  return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x390, %rsp            # imm = 0x390
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x15460
movq %rax, -0x20(%rbp)
movb $0x1, -0x21a(%rbp)
leaq -0x1f0(%rbp), %rax
movq %rax, -0x258(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0x250(%rbp)
callq 0x87d0
movq -0x258(%rbp), %rdi
movq -0x250(%rbp), %rdx
leaq 0xbc33(%rip), %rsi      # 0x21947
callq 0xa840
jmp 0x15d1b
leaq -0x1d0(%rbp), %rax
movq %rax, -0x268(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x20d(%rbp), %rdi
movq %rdi, -0x260(%rbp)
callq 0x87d0
movq -0x268(%rbp), %rdi
movq -0x260(%rbp), %rdx
leaq 0xbc00(%rip), %rsi      # 0x21958
callq 0xa840
jmp 0x15d5f
leaq -0x1b0(%rbp), %rax
movq %rax, -0x278(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x20e(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0x87d0
movq -0x278(%rbp), %rdi
movq -0x270(%rbp), %rdx
leaq 0xbbc0(%rip), %rsi      # 0x2195c
callq 0xa840
jmp 0x15da3
leaq -0x190(%rbp), %rax
movq %rax, -0x288(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x20f(%rbp), %rdi
movq %rdi, -0x280(%rbp)
callq 0x87d0
movq -0x288(%rbp), %rdi
movq -0x280(%rbp), %rdx
leaq 0xbb8b(%rip), %rsi      # 0x2196b
callq 0xa840
jmp 0x15de7
leaq -0x170(%rbp), %rax
movq %rax, -0x298(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x210(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x87d0
movq -0x298(%rbp), %rdi
movq -0x290(%rbp), %rdx
leaq 0xbb50(%rip), %rsi      # 0x21974
callq 0xa840
jmp 0x15e2b
leaq -0x150(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x211(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq 0x87d0
movq -0x2a8(%rbp), %rdi
movq -0x2a0(%rbp), %rdx
leaq 0xbb15(%rip), %rsi      # 0x2197d
callq 0xa840
jmp 0x15e6f
leaq -0x130(%rbp), %rax
movq %rax, -0x2b8(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x212(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x87d0
movq -0x2b8(%rbp), %rdi
movq -0x2b0(%rbp), %rdx
leaq 0xbad9(%rip), %rsi      # 0x21985
callq 0xa840
jmp 0x15eb3
leaq -0x110(%rbp), %rax
movq %rax, -0x2c8(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x213(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x87d0
movq -0x2c8(%rbp), %rdi
movq -0x2c0(%rbp), %rdx
leaq 0xbaa7(%rip), %rsi      # 0x21997
callq 0xa840
jmp 0x15ef7
leaq -0xf0(%rbp), %rax
movq %rax, -0x2d8(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x214(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
callq 0x87d0
movq -0x2d8(%rbp), %rdi
movq -0x2d0(%rbp), %rdx
leaq 0xba73(%rip), %rsi      # 0x219a7
callq 0xa840
jmp 0x15f3b
leaq -0xd0(%rbp), %rax
movq %rax, -0x2e8(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x215(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x87d0
movq -0x2e8(%rbp), %rdi
movq -0x2e0(%rbp), %rdx
leaq 0xb2ab(%rip), %rsi      # 0x21223
callq 0xa840
jmp 0x15f7f
leaq -0xb0(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x216(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0x87d0
movq -0x2f8(%rbp), %rdi
movq -0x2f0(%rbp), %rdx
leaq 0xb9fb(%rip), %rsi      # 0x219b7
callq 0xa840
jmp 0x15fc3
leaq -0x90(%rbp), %rax
movq %rax, -0x308(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x217(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0x87d0
movq -0x308(%rbp), %rdi
movq -0x300(%rbp), %rdx
leaq 0xb9bd(%rip), %rsi      # 0x219bd
callq 0xa840
jmp 0x16007
leaq -0x70(%rbp), %rax
movq %rax, -0x318(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x218(%rbp), %rdi
movq %rdi, -0x310(%rbp)
callq 0x87d0
movq -0x318(%rbp), %rdi
movq -0x310(%rbp), %rdx
leaq 0xb989(%rip), %rsi      # 0x219ca
callq 0xa840
jmp 0x16048
leaq -0x50(%rbp), %rax
movq %rax, -0x328(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x219(%rbp), %rdi
movq %rdi, -0x320(%rbp)
callq 0x87d0
movq -0x328(%rbp), %rdi
movq -0x320(%rbp), %rdx
leaq 0xb957(%rip), %rsi      # 0x219d9
callq 0xa840
jmp 0x16089
movb $0x0, -0x21a(%rbp)
leaq -0x219(%rbp), %rdi
callq 0x84a0
leaq -0x218(%rbp), %rdi
callq 0x84a0
leaq -0x217(%rbp), %rdi
callq 0x84a0
leaq -0x216(%rbp), %rdi
callq 0x84a0
leaq -0x215(%rbp), %rdi
callq 0x84a0
leaq -0x214(%rbp), %rdi
callq 0x84a0
leaq -0x213(%rbp), %rdi
callq 0x84a0
leaq -0x212(%rbp), %rdi
callq 0x84a0
leaq -0x211(%rbp), %rdi
callq 0x84a0
leaq -0x210(%rbp), %rdi
callq 0x84a0
leaq -0x20f(%rbp), %rdi
callq 0x84a0
leaq -0x20e(%rbp), %rdi
callq 0x84a0
leaq -0x20d(%rbp), %rdi
callq 0x84a0
leaq -0x1f9(%rbp), %rdi
callq 0x84a0
movl $0x0, -0x24(%rbp)
cmpl $0xe, -0x24(%rbp)
jge 0x164a6
movq -0x20(%rbp), %rdi
movl $0x8, %esi
callq 0x18740
movq %rax, -0x330(%rbp)
jmp 0x16160
movq -0x18(%rbp), %rax
addq $0x70, %rax
movq %rax, -0x348(%rbp)
movslq -0x24(%rbp), %rax
shlq $0x5, %rax
leaq -0x1f0(%rbp,%rax), %rdi
callq 0x8190
movq %rax, -0x340(%rbp)
leaq -0x241(%rbp), %rdi
movq %rdi, -0x338(%rbp)
callq 0x87d0
movq -0x340(%rbp), %rsi
movq -0x338(%rbp), %rdx
leaq -0x240(%rbp), %rdi
callq 0xa840
jmp 0x161ba
movq -0x348(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x18990
movq %rax, -0x350(%rbp)
jmp 0x161d6
movq -0x350(%rbp), %rax
movq -0x330(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x240(%rbp), %rdi
callq 0x8280
leaq -0x241(%rbp), %rdi
callq 0x84a0
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
movq -0x20(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x20(%rbp)
jmp 0x1613f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x163e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x163da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x163ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x163c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x163b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x163aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x1639e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x16392
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x16386
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x1637a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x1636e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x16362
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x16356
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
leaq -0x219(%rbp), %rdi
callq 0x84a0
leaq -0x218(%rbp), %rdi
callq 0x84a0
leaq -0x217(%rbp), %rdi
callq 0x84a0
leaq -0x216(%rbp), %rdi
callq 0x84a0
leaq -0x215(%rbp), %rdi
callq 0x84a0
leaq -0x214(%rbp), %rdi
callq 0x84a0
leaq -0x213(%rbp), %rdi
callq 0x84a0
leaq -0x212(%rbp), %rdi
callq 0x84a0
leaq -0x211(%rbp), %rdi
callq 0x84a0
leaq -0x210(%rbp), %rdi
callq 0x84a0
leaq -0x20f(%rbp), %rdi
callq 0x84a0
leaq -0x20e(%rbp), %rdi
callq 0x84a0
leaq -0x20d(%rbp), %rdi
callq 0x84a0
leaq -0x1f9(%rbp), %rdi
callq 0x84a0
testb $0x1, -0x21a(%rbp)
jne 0x163fd
jmp 0x1644a
movq -0x1f8(%rbp), %rax
leaq -0x1f0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x358(%rbp)
je 0x16448
movq -0x358(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x360(%rbp)
callq 0x8280
movq -0x360(%rbp), %rax
leaq -0x1f0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x358(%rbp)
jne 0x16417
jmp 0x1644a
jmp 0x1655d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x1650f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x16498
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x8280
leaq -0x241(%rbp), %rdi
callq 0x84a0
jmp 0x1650f
movq -0x18(%rbp), %rdi
callq 0x15460
jmp 0x164b1
movb $0x1, -0x1(%rbp)
leaq -0x1f0(%rbp), %rax
movq %rax, -0x370(%rbp)
addq $0x1c0, %rax            # imm = 0x1C0
movq %rax, -0x368(%rbp)
movq -0x368(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x378(%rbp)
callq 0x8280
movq -0x370(%rbp), %rcx
movq -0x378(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x368(%rbp)
jne 0x164d0
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x390, %rsp            # imm = 0x390
popq %rbp
retq
leaq -0x1f0(%rbp), %rax
movq %rax, -0x388(%rbp)
addq $0x1c0, %rax            # imm = 0x1C0
movq %rax, -0x380(%rbp)
movq -0x380(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x390(%rbp)
callq 0x8280
movq -0x388(%rbp), %rcx
movq -0x390(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x380(%rbp)
jne 0x1652a
jmp 0x1655d
movq -0x208(%rbp), %rdi
callq 0x87c0
nopl (%rax)