// File: /workspace/github_c_makefile_star2_O0/mrkite[P]regs/src/api.cc
// Function: API::dumpSymbol(std::shared_ptr<symbol::Symbol>, unsigned int, int)
void API::dumpSymbol(std::shared_ptr<symbol::Symbol> sym, uint32_t org, int depth) {
  indent(depth);
  printf("%s: ", sym->name.c_str());
  switch (sym->kind) {
    case symbol::Kind::isIntrinsic:
      switch (std::static_pointer_cast<symbol::Intrinsic>(sym)->type) {
        case symbol::Intrinsic::U8:
          printf("uint8");
          break;
        case symbol::Intrinsic::U16:
          printf("uint16");
          break;
        case symbol::Intrinsic::U32:
          printf("uint32");
          break;
        case symbol::Intrinsic::S8:
          printf("int8");
          break;
        case symbol::Intrinsic::S16:
          printf("int16");
          break;
        case symbol::Intrinsic::S32:
          printf("int32");
          break;
      }
      break;
    case symbol::Kind::isEnum:
      {
        auto e = std::static_pointer_cast<symbol::Enum>(sym);
        printf("enum : %s {\n", e->type->name.c_str());
        for (auto entry : e->entries) {
          printf("  %s = $%x,\n", entry.first.c_str(), entry.second);
        }
        printf("}");
      }
      break;
    case symbol::Kind::isAlias:
    case symbol::Kind::isRef:
      dumpRef(std::static_pointer_cast<symbol::Ref>(sym));
      break;
    case symbol::Kind::isStruct:
      {
        auto s = std::static_pointer_cast<symbol::Struct>(sym);
        printf("struct { // $%x bytes\n", sym->size);
        for (auto &f : s->fields) {
          indent(depth);
          printf("  %s: ", f.key.c_str());
          switch (f.value->kind) {
            case symbol::Kind::isRef:
              dumpRef(std::static_pointer_cast<symbol::Ref>(f.value));
              break;
            case symbol::Kind::isStruct:
              dumpSymbol(f.value, org, depth + 1);
              break;
            case symbol::Kind::isUnion:
              dumpSymbol(f.value, org, depth + 1);
              break;
            default:
              printf("%s", f.value->name.c_str());
              break;
          }
          printf(" // $");
          if (org > 0xffff) {
            printf("%02x/%04x\n", org >> 16, org & 0xffff);
          } else {
            printf("%04x\n", org);
          }
          org += f.value->size;
        }
        indent(depth);
        printf("}");
      }
      break;
    case symbol::Kind::isUnion:
      {
        auto s = std::static_pointer_cast<symbol::Struct>(sym);
        printf("union { // $%x bytes\n", sym->size);
        for (auto &f : s->fields) {
          printf("  %s: ", f.key.c_str());
          switch (f.value->kind) {
            case symbol::Kind::isRef:
              dumpRef(std::static_pointer_cast<symbol::Ref>(f.value));
              break;
            case symbol::Kind::isUnion:
              dumpSymbol(f.value, org, depth + 1);
              break;
            case symbol::Kind::isStruct:
              dumpSymbol(f.value, org, depth + 1);
              break;
            default:
              printf("%s", f.value->name.c_str());
              break;
          }
          printf(" // $");
          if (org > 0xffff) {
            printf("%02x/%04x\n", org >> 16, org & 0xffff);
          } else {
            printf("%04x\n", org);
          }
        }
        indent(depth);
        printf("}");
      }
      break;
    case symbol::Kind::isFunction:
      {
        auto f = std::static_pointer_cast<symbol::Function>(sym);
        printf("(\n");
        for (auto &a : f->arguments) {
          printf("  %s: ", a.key.c_str());
          dumpRef(a.ref);
          printf(",\n");
        }
        if (f->returnType->symbol != nullptr) {
          printf("): ");
          dumpRef(f->returnType);
        } else {
          printf(")");
        }
        if (f->signature[0] >= 0) {  // tool
          printf(" = TOOL $%02x:%02x\n", f->signature[0],
                 f->signature[1]);
        } else if (f->signature[0] == -1) {  // p16/gsos
          printf(" = GSOS $%04x\n", f->signature[2]);
        } else if (f->signature[0] == -2) {  // p8
          printf(" = P8 $%02x\n", f->signature[2]);
        } else if (f->signature[0] == -3) {  // smartport
          printf(" = Smartport $%02x\n", f->signature[2]);
        } else if (f->signature[0] == -4) {  // symbol
          printf(" = $%02x/%04x\n", f->signature[1] >> 16,
                 f->signature[1] & 0xffff);
        }
      }
      break;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x260, %rsp            # imm = 0x260
movq %rsi, -0x1b8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x1c0(%rbp)
movl -0x18(%rbp), %edi
callq 0x248f0
movq -0x1b8(%rbp), %rdi
callq 0x7ef0
movq %rax, %rdi
callq 0x6160
movq %rax, %rsi
leaq 0x170e7(%rip), %rdi     # 0x3abf8
xorl %eax, %eax
callq 0x6070
movq -0x1b8(%rbp), %rdi
callq 0x7ef0
movl 0x24(%rax), %eax
movq %rax, -0x1b0(%rbp)
subq $0x6, %rax
ja 0x2480a
movq -0x1b0(%rbp), %rax
leaq 0x16fda(%rip), %rcx     # 0x3ab20
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x1b8(%rbp), %rsi
leaq -0x28(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0x25850
movq -0x1d0(%rbp), %rdi
callq 0x258a0
movq -0x1d0(%rbp), %rdi
movl 0x28(%rax), %eax
movq %rax, -0x1c8(%rbp)
callq 0x25440
movq -0x1c8(%rbp), %rax
subq $0x5, %rax
ja 0x23c0a
movq -0x1c8(%rbp), %rax
leaq 0x16f99(%rip), %rcx     # 0x3ab3c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x16ffc(%rip), %rdi     # 0x3abaf
movb $0x0, %al
callq 0x6070
jmp 0x23c0a
leaq 0x16ff2(%rip), %rdi     # 0x3abb5
movb $0x0, %al
callq 0x6070
jmp 0x23c0a
leaq 0x16fe9(%rip), %rdi     # 0x3abbc
movb $0x0, %al
callq 0x6070
jmp 0x23c0a
leaq 0x16fcd(%rip), %rdi     # 0x3abb0
movb $0x0, %al
callq 0x6070
jmp 0x23c0a
leaq 0x16fc3(%rip), %rdi     # 0x3abb6
movb $0x0, %al
callq 0x6070
jmp 0x23c0a
leaq 0x16fba(%rip), %rdi     # 0x3abbd
movb $0x0, %al
callq 0x6070
jmp 0x2480a
movq -0x1b8(%rbp), %rsi
leaq -0x38(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
callq 0x258c0
movq -0x1d8(%rbp), %rdi
callq 0x25910
movq %rax, %rdi
addq $0x28, %rdi
callq 0x7ef0
movq %rax, %rdi
callq 0x6160
movq %rax, %rsi
leaq 0x16f73(%rip), %rdi     # 0x3abc3
xorl %eax, %eax
callq 0x6070
jmp 0x23c59
leaq -0x38(%rbp), %rdi
callq 0x25910
addq $0x38, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
callq 0x25ce0
movq %rax, -0x58(%rbp)
movq -0x50(%rbp), %rdi
callq 0x25d10
movq %rax, -0x60(%rbp)
leaq -0x58(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x25d40
testb $0x1, %al
jne 0x23c97
jmp 0x23d12
leaq -0x58(%rbp), %rdi
callq 0x25d70
movq %rax, %rsi
leaq -0x88(%rbp), %rdi
callq 0x25d90
jmp 0x23cb1
leaq -0x88(%rbp), %rdi
callq 0x6160
movq %rax, %rsi
movl -0x68(%rbp), %edx
leaq 0x16f06(%rip), %rdi     # 0x3abd0
xorl %eax, %eax
callq 0x6070
jmp 0x23cd3
leaq -0x88(%rbp), %rdi
callq 0x25dd0
leaq -0x58(%rbp), %rdi
callq 0x25df0
jmp 0x23c84
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x23d30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x25dd0
jmp 0x23d30
leaq 0x16ec4(%rip), %rdi     # 0x3abdd
xorl %eax, %eax
callq 0x6070
jmp 0x23d22
leaq -0x38(%rbp), %rdi
callq 0x25500
jmp 0x2480a
leaq -0x38(%rbp), %rdi
callq 0x25500
jmp 0x24813
movq -0x1b8(%rbp), %rsi
leaq -0x98(%rbp), %rdi
movq %rdi, -0x1e0(%rbp)
callq 0x25a40
movq -0x1c0(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
callq 0x24820
jmp 0x23d6d
leaq -0x98(%rbp), %rdi
callq 0x255c0
jmp 0x2480a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x255c0
jmp 0x24813
movq -0x1b8(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0x25ab0
movq -0x1b8(%rbp), %rdi
callq 0x7ef0
movl 0x20(%rax), %esi
leaq 0x16e1b(%rip), %rdi     # 0x3abdf
xorl %eax, %eax
callq 0x6070
jmp 0x23dcd
leaq -0xa8(%rbp), %rdi
callq 0x25b00
addq $0x28, %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x25e20
movq %rax, -0xb8(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x25e50
movq %rax, -0xc0(%rbp)
leaq -0xb8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x25e80
testb $0x1, %al
jne 0x23e26
jmp 0x2408a
leaq -0xb8(%rbp), %rdi
callq 0x25ec0
movq %rax, -0xc8(%rbp)
movl -0x18(%rbp), %edi
callq 0x248f0
jmp 0x23e43
movq -0xc8(%rbp), %rdi
callq 0x6160
movq %rax, %rsi
leaq 0x16d9d(%rip), %rdi     # 0x3abf6
xorl %eax, %eax
callq 0x6070
jmp 0x23e62
movq -0xc8(%rbp), %rdi
addq $0x20, %rdi
callq 0x7ef0
movl 0x24(%rax), %eax
movl %eax, -0x1e4(%rbp)
subl $0x3, %eax
je 0x23f19
jmp 0x23e86
movl -0x1e4(%rbp), %eax
subl $0x4, %eax
je 0x23f82
jmp 0x23e97
movl -0x1e4(%rbp), %eax
subl $0x5, %eax
je 0x23eb8
jmp 0x23fe8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x240b5
movq -0xc8(%rbp), %rsi
addq $0x20, %rsi
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x1f0(%rbp)
callq 0x25a40
movq -0x1c0(%rbp), %rdi
movq -0x1f0(%rbp), %rsi
callq 0x24820
jmp 0x23eeb
leaq -0xd8(%rbp), %rdi
callq 0x255c0
jmp 0x24015
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x255c0
jmp 0x240b5
movq -0xc8(%rbp), %rsi
addq $0x20, %rsi
leaq -0xe8(%rbp), %rdi
movq %rdi, -0x1f8(%rbp)
callq 0x8490
movq -0x1c0(%rbp), %rdi
movq -0x1f8(%rbp), %rsi
movl -0x14(%rbp), %edx
movl -0x18(%rbp), %ecx
incl %ecx
callq 0x23ac0
jmp 0x23f54
leaq -0xe8(%rbp), %rdi
callq 0x8770
jmp 0x24015
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x8770
jmp 0x240b5
movq -0xc8(%rbp), %rsi
addq $0x20, %rsi
leaq -0xf8(%rbp), %rdi
movq %rdi, -0x200(%rbp)
callq 0x8490
movq -0x1c0(%rbp), %rdi
movq -0x200(%rbp), %rsi
movl -0x14(%rbp), %edx
movl -0x18(%rbp), %ecx
incl %ecx
callq 0x23ac0
jmp 0x23fbd
leaq -0xf8(%rbp), %rdi
callq 0x8770
jmp 0x24015
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x8770
jmp 0x240b5
movq -0xc8(%rbp), %rdi
addq $0x20, %rdi
callq 0x7ef0
movq %rax, %rdi
callq 0x6160
movq %rax, %rsi
leaq 0x16b9a(%rip), %rdi     # 0x3aba4
xorl %eax, %eax
callq 0x6070
jmp 0x24013
jmp 0x24015
leaq 0x16be1(%rip), %rdi     # 0x3abfd
xorl %eax, %eax
callq 0x6070
jmp 0x24025
cmpl $0xffff, -0x14(%rbp)    # imm = 0xFFFF
jbe 0x2404b
movl -0x14(%rbp), %eax
movl %eax, %esi
shrl $0x10, %esi
movzwl %ax, %edx
leaq 0x16c28(%rip), %rdi     # 0x3ac68
xorl %eax, %eax
callq 0x6070
jmp 0x24049
jmp 0x24060
movl -0x14(%rbp), %esi
leaq 0x16be8(%rip), %rdi     # 0x3ac3d
xorl %eax, %eax
callq 0x6070
jmp 0x2405e
jmp 0x24060
movq -0xc8(%rbp), %rdi
addq $0x20, %rdi
callq 0x7ef0
movl 0x20(%rax), %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x25ee0
jmp 0x23e0a
movl -0x18(%rbp), %edi
callq 0x248f0
jmp 0x24094
leaq 0x16b42(%rip), %rdi     # 0x3abdd
xorl %eax, %eax
callq 0x6070
jmp 0x240a4
leaq -0xa8(%rbp), %rdi
callq 0x25680
jmp 0x2480a
leaq -0xa8(%rbp), %rdi
callq 0x25680
jmp 0x24813
movq -0x1b8(%rbp), %rsi
leaq -0x108(%rbp), %rdi
callq 0x25ab0
movq -0x1b8(%rbp), %rdi
callq 0x7ef0
movl 0x20(%rax), %esi
leaq 0x16b14(%rip), %rdi     # 0x3ac03
xorl %eax, %eax
callq 0x6070
jmp 0x240f8
leaq -0x108(%rbp), %rdi
callq 0x25b00
addq $0x28, %rax
movq %rax, -0x110(%rbp)
movq -0x110(%rbp), %rdi
callq 0x25e20
movq %rax, -0x118(%rbp)
movq -0x110(%rbp), %rdi
callq 0x25e50
movq %rax, -0x120(%rbp)
leaq -0x118(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x25e80
testb $0x1, %al
jne 0x24151
jmp 0x24394
leaq -0x118(%rbp), %rdi
callq 0x25ec0
movq %rax, -0x128(%rbp)
movq -0x128(%rbp), %rdi
callq 0x6160
movq %rax, %rsi
leaq 0x16a7c(%rip), %rdi     # 0x3abf6
xorl %eax, %eax
callq 0x6070
jmp 0x24183
movq -0x128(%rbp), %rdi
addq $0x20, %rdi
callq 0x7ef0
movl 0x24(%rax), %eax
movl %eax, -0x204(%rbp)
subl $0x3, %eax
je 0x242a3
jmp 0x241a7
movl -0x204(%rbp), %eax
subl $0x4, %eax
je 0x2423a
jmp 0x241b8
movl -0x204(%rbp), %eax
subl $0x5, %eax
je 0x241d9
jmp 0x24309
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x243bf
movq -0x128(%rbp), %rsi
addq $0x20, %rsi
leaq -0x138(%rbp), %rdi
movq %rdi, -0x210(%rbp)
callq 0x25a40
movq -0x1c0(%rbp), %rdi
movq -0x210(%rbp), %rsi
callq 0x24820
jmp 0x2420c
leaq -0x138(%rbp), %rdi
callq 0x255c0
jmp 0x24336
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x255c0
jmp 0x243bf
movq -0x128(%rbp), %rsi
addq $0x20, %rsi
leaq -0x148(%rbp), %rdi
movq %rdi, -0x218(%rbp)
callq 0x8490
movq -0x1c0(%rbp), %rdi
movq -0x218(%rbp), %rsi
movl -0x14(%rbp), %edx
movl -0x18(%rbp), %ecx
incl %ecx
callq 0x23ac0
jmp 0x24275
leaq -0x148(%rbp), %rdi
callq 0x8770
jmp 0x24336
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x8770
jmp 0x243bf
movq -0x128(%rbp), %rsi
addq $0x20, %rsi
leaq -0x158(%rbp), %rdi
movq %rdi, -0x220(%rbp)
callq 0x8490
movq -0x1c0(%rbp), %rdi
movq -0x220(%rbp), %rsi
movl -0x14(%rbp), %edx
movl -0x18(%rbp), %ecx
incl %ecx
callq 0x23ac0
jmp 0x242de
leaq -0x158(%rbp), %rdi
callq 0x8770
jmp 0x24336
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x8770
jmp 0x243bf
movq -0x128(%rbp), %rdi
addq $0x20, %rdi
callq 0x7ef0
movq %rax, %rdi
callq 0x6160
movq %rax, %rsi
leaq 0x16879(%rip), %rdi     # 0x3aba4
xorl %eax, %eax
callq 0x6070
jmp 0x24334
jmp 0x24336
leaq 0x168c0(%rip), %rdi     # 0x3abfd
xorl %eax, %eax
callq 0x6070
jmp 0x24346
cmpl $0xffff, -0x14(%rbp)    # imm = 0xFFFF
jbe 0x2436c
movl -0x14(%rbp), %eax
movl %eax, %esi
shrl $0x10, %esi
movzwl %ax, %edx
leaq 0x16907(%rip), %rdi     # 0x3ac68
xorl %eax, %eax
callq 0x6070
jmp 0x2436a
jmp 0x24381
movl -0x14(%rbp), %esi
leaq 0x168c7(%rip), %rdi     # 0x3ac3d
xorl %eax, %eax
callq 0x6070
jmp 0x2437f
jmp 0x24381
jmp 0x24383
leaq -0x118(%rbp), %rdi
callq 0x25ee0
jmp 0x24135
movl -0x18(%rbp), %edi
callq 0x248f0
jmp 0x2439e
leaq 0x16838(%rip), %rdi     # 0x3abdd
xorl %eax, %eax
callq 0x6070
jmp 0x243ae
leaq -0x108(%rbp), %rdi
callq 0x25680
jmp 0x2480a
leaq -0x108(%rbp), %rdi
callq 0x25680
jmp 0x24813
movq -0x1b8(%rbp), %rsi
leaq -0x168(%rbp), %rdi
callq 0x7f10
leaq 0x1682f(%rip), %rdi     # 0x3ac19
xorl %eax, %eax
callq 0x6070
jmp 0x243f3
leaq -0x168(%rbp), %rdi
callq 0x7f60
addq $0x28, %rax
movq %rax, -0x170(%rbp)
movq -0x170(%rbp), %rdi
callq 0x25f00
movq %rax, -0x178(%rbp)
movq -0x170(%rbp), %rdi
callq 0x25f30
movq %rax, -0x180(%rbp)
leaq -0x178(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x25f60
testb $0x1, %al
jne 0x2444c
jmp 0x2450e
leaq -0x178(%rbp), %rdi
callq 0x25fa0
movq %rax, -0x188(%rbp)
movq -0x188(%rbp), %rdi
callq 0x6160
movq %rax, %rsi
leaq 0x16781(%rip), %rdi     # 0x3abf6
xorl %eax, %eax
callq 0x6070
jmp 0x2447e
movq -0x188(%rbp), %rsi
addq $0x20, %rsi
leaq -0x198(%rbp), %rdi
movq %rdi, -0x228(%rbp)
callq 0x25be0
movq -0x1c0(%rbp), %rdi
movq -0x228(%rbp), %rsi
callq 0x24820
jmp 0x244b1
leaq -0x198(%rbp), %rdi
callq 0x255c0
leaq 0x16716(%rip), %rdi     # 0x3abda
xorl %eax, %eax
callq 0x6070
jmp 0x244cd
jmp 0x244cf
leaq -0x178(%rbp), %rdi
callq 0x25fc0
jmp 0x24430
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x247fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x255c0
jmp 0x247fc
leaq -0x168(%rbp), %rdi
callq 0x7f60
movq %rax, %rdi
addq $0x40, %rdi
callq 0x25a90
movq %rax, %rdi
addq $0x28, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x25fe0
testb $0x1, %al
jne 0x2453c
jmp 0x245b2
leaq 0x166d9(%rip), %rdi     # 0x3ac1c
xorl %eax, %eax
callq 0x6070
jmp 0x2454c
leaq -0x168(%rbp), %rdi
callq 0x7f60
movq %rax, %rsi
addq $0x40, %rsi
leaq -0x1a8(%rbp), %rdi
movq %rdi, -0x230(%rbp)
callq 0x25be0
movq -0x1c0(%rbp), %rdi
movq -0x230(%rbp), %rsi
callq 0x24820
jmp 0x24587
leaq -0x1a8(%rbp), %rdi
callq 0x255c0
jmp 0x245c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x255c0
jmp 0x247fc
leaq 0x16902(%rip), %rdi     # 0x3aebb
xorl %eax, %eax
callq 0x6070
jmp 0x245c2
jmp 0x245c4
leaq -0x168(%rbp), %rdi
callq 0x7f60
movq %rax, %rdi
addq $0x50, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7fa0
cmpl $0x0, (%rax)
jl 0x24657
leaq -0x168(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0x7f60
movq %rax, %rdi
addq $0x50, %rdi
xorl %eax, %eax
movl %eax, -0x234(%rbp)
movl %eax, %esi
callq 0x7fa0
movq -0x240(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x238(%rbp)
callq 0x7f60
movq %rax, %rdi
addq $0x50, %rdi
movl $0x1, %esi
callq 0x7fa0
movl -0x238(%rbp), %esi
movq %rax, %rcx
movl -0x234(%rbp), %eax
movl (%rcx), %edx
leaq 0x165d5(%rip), %rdi     # 0x3ac20
callq 0x6070
jmp 0x24652
jmp 0x247ee
leaq -0x168(%rbp), %rdi
callq 0x7f60
movq %rax, %rdi
addq $0x50, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7fa0
cmpl $-0x1, (%rax)
jne 0x246ac
leaq -0x168(%rbp), %rdi
callq 0x7f60
movq %rax, %rdi
addq $0x50, %rdi
movl $0x2, %esi
callq 0x7fa0
movl (%rax), %esi
leaq 0x16596(%rip), %rdi     # 0x3ac34
xorl %eax, %eax
callq 0x6070
jmp 0x246a7
jmp 0x247ec
leaq -0x168(%rbp), %rdi
callq 0x7f60
movq %rax, %rdi
addq $0x50, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7fa0
cmpl $-0x2, (%rax)
jne 0x24701
leaq -0x168(%rbp), %rdi
callq 0x7f60
movq %rax, %rdi
addq $0x50, %rdi
movl $0x2, %esi
callq 0x7fa0
movl (%rax), %esi
leaq 0x16550(%rip), %rdi     # 0x3ac43
xorl %eax, %eax
callq 0x6070
jmp 0x246fc
jmp 0x247ea
leaq -0x168(%rbp), %rdi
callq 0x7f60
movq %rax, %rdi
addq $0x50, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7fa0
cmpl $-0x3, (%rax)
jne 0x24756
leaq -0x168(%rbp), %rdi
callq 0x7f60
movq %rax, %rdi
addq $0x50, %rdi
movl $0x2, %esi
callq 0x7fa0
movl (%rax), %esi
leaq 0x16508(%rip), %rdi     # 0x3ac50
xorl %eax, %eax
callq 0x6070
jmp 0x24751
jmp 0x247e8
leaq -0x168(%rbp), %rdi
callq 0x7f60
movq %rax, %rdi
addq $0x50, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7fa0
cmpl $-0x4, (%rax)
jne 0x247e6
leaq -0x168(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0x7f60
movq %rax, %rdi
addq $0x50, %rdi
movl $0x1, %esi
movq %rsi, -0x250(%rbp)
callq 0x7fa0
movq -0x258(%rbp), %rdi
movswl 0x2(%rax), %eax
movl %eax, -0x244(%rbp)
callq 0x7f60
movq -0x250(%rbp), %rsi
movq %rax, %rdi
addq $0x50, %rdi
callq 0x7fa0
movl -0x244(%rbp), %esi
movzwl (%rax), %edx
leaq 0x16489(%rip), %rdi     # 0x3ac64
xorl %eax, %eax
callq 0x6070
jmp 0x247e4
jmp 0x247e6
jmp 0x247e8
jmp 0x247ea
jmp 0x247ec
jmp 0x247ee
leaq -0x168(%rbp), %rdi
callq 0x8120
jmp 0x2480a
leaq -0x168(%rbp), %rdi
callq 0x8120
jmp 0x24813
addq $0x260, %rsp            # imm = 0x260
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x6540
nopl (%rax)