// File: /workspace/github_c_makefile_star2_O0/atomlang[P]atomlang/src/pk_core.c
// Function: varGetAttrib
Var varGetAttrib(PKVM* vm, Var on, String* attrib) {

  if (!IS_OBJ(on)) {
    VM_SET_ERROR(vm, stringFormat(vm, "$ type is not subscriptable.",
                                  varTypeName(on)));
    return VAR_NULL;
  }

  Object* obj = AS_OBJ(on);
  switch (obj->type) {
    case OBJ_STRING:
    {
      String* str = (String*)obj;
      switch (attrib->hash) {

        case CHECK_HASH("length", 0x83d03615):
          return VAR_NUM((double)(str->length));

        case CHECK_HASH("lower", 0xb51d04ba):
          return VAR_OBJ(stringLower(vm, str));

        case CHECK_HASH("upper", 0xa8c6a47):
          return VAR_OBJ(stringUpper(vm, str));

        case CHECK_HASH("strip", 0xfd1b18d1):
          return VAR_OBJ(stringStrip(vm, str));

        default:
          ERR_NO_ATTRIB(vm, on, attrib);
          return VAR_NULL;
      }

      UNREACHABLE();
    }

    case OBJ_LIST:
    {
      List* list = (List*)obj;
      switch (attrib->hash) {

        case CHECK_HASH("length", 0x83d03615):
          return VAR_NUM((double)(list->elements.count));

        default:
          ERR_NO_ATTRIB(vm, on, attrib);
          return VAR_NULL;
      }

      UNREACHABLE();
    }

    case OBJ_MAP:
    {
      // Not sure should I allow string values could be accessed with
      // this way. ex:
      // map = { "foo" : 42, "can't access" : 32 }
      // val = map.foo ## 42
      TODO;
      UNREACHABLE();
    }

    case OBJ_RANGE:
    {
      Range* range = (Range*)obj;
      switch (attrib->hash) {

        case CHECK_HASH("as_list", 0x1562c22):
          return VAR_OBJ(rangeAsList(vm, range));

        // We can't use 'start', 'end' since 'end' in atomlang is a
        // keyword. Also we can't use 'from', 'to' since 'from' is a keyword
        // too. So, we're using 'first' and 'last' to access the range limits.

        case CHECK_HASH("first", 0x4881d841):
          return VAR_NUM(range->from);

        case CHECK_HASH("last", 0x63e1d819):
          return VAR_NUM(range->to);

        default:
          ERR_NO_ATTRIB(vm, on, attrib);
          return VAR_NULL;
      }

      UNREACHABLE();
    }

    case OBJ_SCRIPT:
    {
      Script* scr = (Script*)obj;

      // Search in types.
      int index = scriptGetClass(scr, attrib->data, attrib->length);
      if (index != -1) {
        ASSERT_INDEX((uint32_t)index, scr->classes.count);
        return VAR_OBJ(scr->classes.data[index]);
      }

      // Search in functions.
      index = scriptGetFunc(scr, attrib->data, attrib->length);
      if (index != -1) {
        ASSERT_INDEX((uint32_t)index, scr->functions.count);
        return VAR_OBJ(scr->functions.data[index]);
      }

      // Search in globals.
      index = scriptGetGlobals(scr, attrib->data, attrib->length);
      if (index != -1) {
        ASSERT_INDEX((uint32_t)index, scr->globals.count);
        return scr->globals.data[index];
      }

      ERR_NO_ATTRIB(vm, on, attrib);
      return VAR_NULL;
    }

    case OBJ_FUNC:
    {
      Function* fn = (Function*)obj;
      switch (attrib->hash) {

        case CHECK_HASH("arity", 0x3e96bd7a):
          return VAR_NUM((double)(fn->arity));

        case CHECK_HASH("name", 0x8d39bde6):
          return VAR_OBJ(newString(vm, fn->name));

        default:
          ERR_NO_ATTRIB(vm, on, attrib);
          return VAR_NULL;
      }
      UNREACHABLE();
    }

    case OBJ_FIBER:
      {
        Fiber* fb = (Fiber*)obj;
        switch (attrib->hash) {

          case CHECK_HASH("is_done", 0x789c2706):
            return VAR_BOOL(fb->state == FIBER_DONE);

          case CHECK_HASH("function", 0x9ed64249):
            return VAR_OBJ(fb->func);

          default:
            ERR_NO_ATTRIB(vm, on, attrib);
            return VAR_NULL;
          }
        UNREACHABLE();
      }

    case OBJ_CLASS:
      TODO;
      UNREACHABLE();

    case OBJ_INST:
    {
      Var value;
      if (!instGetAttrib(vm, (Instance*)obj, attrib, &value)) {
        ERR_NO_ATTRIB(vm, on, attrib);
        return VAR_NULL;
      }
      return value;
    }

    default:
      UNREACHABLE();
  }

  UNREACHABLE();
}

// Assembly:
subq $0xe8, %rsp
movq %rdi, 0xd8(%rsp)
movq %rsi, 0xd0(%rsp)
movq %rdx, 0xc8(%rsp)
movabsq $-0x4000000000000, %rax # imm = 0xFFFC000000000000
andq 0xd0(%rsp), %rax
movabsq $-0x4000000000000, %rcx # imm = 0xFFFC000000000000
cmpq %rcx, %rax
je 0x21157
jmp 0x210a6
jmp 0x210a8
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x210f8
movq 0x11f33(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x9081(%rip), %rsi      # 0x2a150
leaq 0x918e(%rip), %rdx      # 0x2a264
leaq 0xafc0(%rip), %rcx      # 0x2c09d
leaq 0xa9b2(%rip), %r8       # 0x2ba96
movl $0x5df, %r9d            # imm = 0x5DF
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x210fa
movq 0xd8(%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0xd0(%rsp), %rdi
callq 0x7590
movq 0x78(%rsp), %rdi
movq %rax, %rdx
leaq 0xaf87(%rip), %rsi      # 0x2c0aa
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
movabsq $0x7ffc000000000000, %rax # imm = 0x7FFC000000000000
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0xd0(%rsp), %rax
movabsq $0xffffffffffff, %rcx   # imm = 0xFFFFFFFFFFFF
andq %rcx, %rax
movq %rax, 0xc0(%rsp)
movq 0xc0(%rsp), %rax
movl (%rax), %eax
movq %rax, 0x70(%rsp)
subq $0x8, %rax
ja 0x21d3c
movq 0x70(%rsp), %rax
leaq 0xa85b(%rip), %rcx      # 0x2b9f4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0xc0(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq 0xc8(%rsp), %rax
movl 0x10(%rax), %eax
movl %eax, 0x6c(%rsp)
subl $0x83d03615, %eax       # imm = 0x83D03615
je 0x211f8
jmp 0x211ca
movl 0x6c(%rsp), %eax
subl $0xb51d04ba, %eax       # imm = 0xB51D04BA
je 0x2121a
jmp 0x211d7
movl 0x6c(%rsp), %eax
subl $0xfd1b18d1, %eax       # imm = 0xFD1B18D1
je 0x21278
jmp 0x211e8
movl 0x6c(%rsp), %eax
subl $0xa8c6a47, %eax        # imm = 0xA8C6A47
je 0x21249
jmp 0x212a7
movq 0xb8(%rsp), %rax
movl 0x14(%rax), %eax
cvtsi2sd %rax, %xmm0
callq 0x45b0
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0xd8(%rsp), %rdi
movq 0xb8(%rsp), %rsi
callq 0x55b0
movabsq $-0x4000000000000, %rcx # imm = 0xFFFC000000000000
orq %rcx, %rax
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0xd8(%rsp), %rdi
movq 0xb8(%rsp), %rsi
callq 0x56e0
movabsq $-0x4000000000000, %rcx # imm = 0xFFFC000000000000
orq %rcx, %rax
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0xd8(%rsp), %rdi
movq 0xb8(%rsp), %rsi
callq 0x5810
movabsq $-0x4000000000000, %rcx # imm = 0xFFFC000000000000
orq %rcx, %rax
movq %rax, 0xe0(%rsp)
jmp 0x21d71
jmp 0x212a9
jmp 0x212ab
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x212fb
movq 0x11d30(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x8e7e(%rip), %rsi      # 0x2a150
leaq 0x8f8b(%rip), %rdx      # 0x2a264
leaq 0xadbd(%rip), %rcx      # 0x2c09d
leaq 0xa7af(%rip), %r8       # 0x2ba96
movl $0x5f7, %r9d            # imm = 0x5F7
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x212fd
movq 0xd8(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0xd0(%rsp), %rdi
callq 0x7590
movq 0x60(%rsp), %rdi
movq %rax, %rdx
movq 0xc8(%rsp), %rcx
addq $0x1c, %rcx
leaq 0xad95(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
movabsq $0x7ffc000000000000, %rax # imm = 0x7FFC000000000000
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0xc0(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq 0xc8(%rsp), %rax
movl 0x10(%rax), %eax
subl $0x83d03615, %eax       # imm = 0x83D03615
jne 0x213ac
jmp 0x2138a
movq 0xb0(%rsp), %rax
movl 0x18(%rax), %eax
cvtsi2sd %rax, %xmm0
callq 0x45b0
movq %rax, 0xe0(%rsp)
jmp 0x21d71
jmp 0x213ae
jmp 0x213b0
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x21400
movq 0x11c2b(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x8d79(%rip), %rsi      # 0x2a150
leaq 0x8e86(%rip), %rdx      # 0x2a264
leaq 0xacb8(%rip), %rcx      # 0x2c09d
leaq 0xa6aa(%rip), %r8       # 0x2ba96
movl $0x607, %r9d            # imm = 0x607
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x21402
movq 0xd8(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0xd0(%rsp), %rdi
callq 0x7590
movq 0x58(%rsp), %rdi
movq %rax, %rdx
movq 0xc8(%rsp), %rcx
addq $0x1c, %rcx
leaq 0xac90(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
movabsq $0x7ffc000000000000, %rax # imm = 0x7FFC000000000000
movq %rax, 0xe0(%rsp)
jmp 0x21d71
jmp 0x2146d
movq 0x11b84(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x8cd2(%rip), %rsi      # 0x2a150
leaq 0x8f2a(%rip), %rdx      # 0x2a3af
leaq 0xac11(%rip), %rcx      # 0x2c09d
leaq 0xa603(%rip), %r8       # 0x2ba96
movl $0x614, %r9d            # imm = 0x614
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
movq 0xc0(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0xc8(%rsp), %rax
movl 0x10(%rax), %eax
movl %eax, 0x54(%rsp)
subl $0x1562c22, %eax        # imm = 0x1562C22
je 0x214e9
jmp 0x214cf
movl 0x54(%rsp), %eax
subl $0x4881d841, %eax       # imm = 0x4881D841
je 0x21518
jmp 0x214dc
movl 0x54(%rsp), %eax
subl $0x63e1d819, %eax       # imm = 0x63E1D819
je 0x21537
jmp 0x21556
movq 0xd8(%rsp), %rdi
movq 0xa8(%rsp), %rsi
callq 0x54b0
movabsq $-0x4000000000000, %rcx # imm = 0xFFFC000000000000
orq %rcx, %rax
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0xa8(%rsp), %rax
movsd 0x10(%rax), %xmm0
callq 0x45b0
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0xa8(%rsp), %rax
movsd 0x18(%rax), %xmm0
callq 0x45b0
movq %rax, 0xe0(%rsp)
jmp 0x21d71
jmp 0x21558
jmp 0x2155a
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x215aa
movq 0x11a81(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x8bcf(%rip), %rsi      # 0x2a150
leaq 0x8cdc(%rip), %rdx      # 0x2a264
leaq 0xab0e(%rip), %rcx      # 0x2c09d
leaq 0xa500(%rip), %r8       # 0x2ba96
movl $0x62b, %r9d            # imm = 0x62B
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x215ac
movq 0xd8(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0xd0(%rsp), %rdi
callq 0x7590
movq 0x48(%rsp), %rdi
movq %rax, %rdx
movq 0xc8(%rsp), %rcx
addq $0x1c, %rcx
leaq 0xaae6(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
movabsq $0x7ffc000000000000, %rax # imm = 0x7FFC000000000000
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0xc0(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0xa0(%rsp), %rdi
movq 0xc8(%rsp), %rsi
addq $0x1c, %rsi
movq 0xc8(%rsp), %rax
movl 0x14(%rax), %edx
callq 0x68a0
movl %eax, 0x9c(%rsp)
cmpl $-0x1, 0x9c(%rsp)
je 0x216ec
jmp 0x21660
cmpl $0x0, 0x9c(%rsp)
jb 0x2167e
movl 0x9c(%rsp), %eax
movq 0xa0(%rsp), %rcx
cmpl 0x58(%rcx), %eax
jb 0x216b8
movq 0x11973(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x8ac1(%rip), %rsi      # 0x2a150
leaq 0x8c77(%rip), %rdx      # 0x2a30d
leaq 0xaa00(%rip), %rcx      # 0x2c09d
leaq 0xa3f2(%rip), %r8       # 0x2ba96
movl $0x639, %r9d            # imm = 0x639
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x216ba
movq 0xa0(%rsp), %rax
movq 0x50(%rax), %rax
movslq 0x9c(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movabsq $-0x4000000000000, %rcx # imm = 0xFFFC000000000000
orq %rcx, %rax
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0xa0(%rsp), %rdi
movq 0xc8(%rsp), %rsi
addq $0x1c, %rsi
movq 0xc8(%rsp), %rax
movl 0x14(%rax), %edx
callq 0x69a0
movl %eax, 0x9c(%rsp)
cmpl $-0x1, 0x9c(%rsp)
je 0x217b3
jmp 0x21727
cmpl $0x0, 0x9c(%rsp)
jb 0x21745
movl 0x9c(%rsp), %eax
movq 0xa0(%rsp), %rcx
cmpl 0x48(%rcx), %eax
jb 0x2177f
movq 0x118ac(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x89fa(%rip), %rsi      # 0x2a150
leaq 0x8bb0(%rip), %rdx      # 0x2a30d
leaq 0xa939(%rip), %rcx      # 0x2c09d
leaq 0xa32b(%rip), %r8       # 0x2ba96
movl $0x640, %r9d            # imm = 0x640
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x21781
movq 0xa0(%rsp), %rax
movq 0x40(%rax), %rax
movslq 0x9c(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movabsq $-0x4000000000000, %rcx # imm = 0xFFFC000000000000
orq %rcx, %rax
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0xa0(%rsp), %rdi
movq 0xc8(%rsp), %rsi
addq $0x1c, %rsi
movq 0xc8(%rsp), %rax
movl 0x14(%rax), %edx
callq 0x6a40
movl %eax, 0x9c(%rsp)
cmpl $-0x1, 0x9c(%rsp)
je 0x2186d
jmp 0x217ee
cmpl $0x0, 0x9c(%rsp)
jb 0x2180c
movl 0x9c(%rsp), %eax
movq 0xa0(%rsp), %rcx
cmpl 0x28(%rcx), %eax
jb 0x21846
movq 0x117e5(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x8933(%rip), %rsi      # 0x2a150
leaq 0x8ae9(%rip), %rdx      # 0x2a30d
leaq 0xa872(%rip), %rcx      # 0x2c09d
leaq 0xa264(%rip), %r8       # 0x2ba96
movl $0x647, %r9d            # imm = 0x647
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x21848
movq 0xa0(%rsp), %rax
movq 0x20(%rax), %rax
movslq 0x9c(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0xe0(%rsp)
jmp 0x21d71
jmp 0x2186f
jmp 0x21871
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x218c1
movq 0x1176a(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x88b8(%rip), %rsi      # 0x2a150
leaq 0x89c5(%rip), %rdx      # 0x2a264
leaq 0xa7f7(%rip), %rcx      # 0x2c09d
leaq 0xa1e9(%rip), %r8       # 0x2ba96
movl $0x64b, %r9d            # imm = 0x64B
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x218c3
movq 0xd8(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0xd0(%rsp), %rdi
callq 0x7590
movq 0x40(%rsp), %rdi
movq %rax, %rdx
movq 0xc8(%rsp), %rcx
addq $0x1c, %rcx
leaq 0xa7cf(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
movabsq $0x7ffc000000000000, %rax # imm = 0x7FFC000000000000
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0xc0(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0xc8(%rsp), %rax
movl 0x10(%rax), %eax
movl %eax, 0x3c(%rsp)
subl $0x8d39bde6, %eax       # imm = 0x8D39BDE6
je 0x21984
jmp 0x21954
movl 0x3c(%rsp), %eax
subl $0x3e96bd7a, %eax       # imm = 0x3E96BD7A
jne 0x219fb
jmp 0x21965
movq 0x90(%rsp), %rax
cvtsi2sdl 0x20(%rax), %xmm0
callq 0x45b0
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0xd8(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x90(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x90(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x219b9
xorl %eax, %eax
movl %eax, 0x24(%rsp)
jmp 0x219ce
movq 0x90(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x2130
movl %eax, 0x24(%rsp)
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdi
movl 0x24(%rsp), %edx
callq 0x2760
movabsq $-0x4000000000000, %rcx # imm = 0xFFFC000000000000
orq %rcx, %rax
movq %rax, 0xe0(%rsp)
jmp 0x21d71
jmp 0x219fd
jmp 0x219ff
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x21a4f
movq 0x115dc(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x872a(%rip), %rsi      # 0x2a150
leaq 0x8837(%rip), %rdx      # 0x2a264
leaq 0xa669(%rip), %rcx      # 0x2c09d
leaq 0xa05b(%rip), %r8       # 0x2ba96
movl $0x65b, %r9d            # imm = 0x65B
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x21a51
movq 0xd8(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0xd0(%rsp), %rdi
callq 0x7590
movq 0x18(%rsp), %rdi
movq %rax, %rdx
movq 0xc8(%rsp), %rcx
addq $0x1c, %rcx
leaq 0xa641(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
movabsq $0x7ffc000000000000, %rax # imm = 0x7FFC000000000000
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0xc0(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0xc8(%rsp), %rax
movl 0x10(%rax), %eax
movl %eax, 0x14(%rsp)
subl $0x9ed64249, %eax       # imm = 0x9ED64249
je 0x21b22
jmp 0x21ae2
movl 0x14(%rsp), %eax
subl $0x789c2706, %eax       # imm = 0x789C2706
jne 0x21b48
jmp 0x21aef
movq 0x88(%rsp), %rax
movl 0x10(%rax), %edx
movabsq $0x7ffd000000000002, %rax # imm = 0x7FFD000000000002
movabsq $0x7ffd000000000003, %rcx # imm = 0x7FFD000000000003
cmpl $0x3, %edx
cmoveq %rcx, %rax
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0x88(%rsp), %rax
movq 0x18(%rax), %rax
movabsq $-0x4000000000000, %rcx # imm = 0xFFFC000000000000
orq %rcx, %rax
movq %rax, 0xe0(%rsp)
jmp 0x21d71
jmp 0x21b4a
jmp 0x21b4c
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x21b9c
movq 0x1148f(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x85dd(%rip), %rsi      # 0x2a150
leaq 0x86ea(%rip), %rdx      # 0x2a264
leaq 0xa51c(%rip), %rcx      # 0x2c09d
leaq 0x9f0e(%rip), %r8       # 0x2ba96
movl $0x66d, %r9d            # imm = 0x66D
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x21b9e
movq 0xd8(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0xd0(%rsp), %rdi
callq 0x7590
movq 0x8(%rsp), %rdi
movq %rax, %rdx
movq 0xc8(%rsp), %rcx
addq $0x1c, %rcx
leaq 0xa4f4(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
movabsq $0x7ffc000000000000, %rax # imm = 0x7FFC000000000000
movq %rax, 0xe0(%rsp)
jmp 0x21d71
jmp 0x21c09
movq 0x113e8(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x8536(%rip), %rsi      # 0x2a150
leaq 0x878e(%rip), %rdx      # 0x2a3af
leaq 0xa475(%rip), %rcx      # 0x2c09d
leaq 0x9e67(%rip), %r8       # 0x2ba96
movl $0x674, %r9d            # imm = 0x674
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
movq 0xd8(%rsp), %rdi
movq 0xc0(%rsp), %rsi
movq 0xc8(%rsp), %rdx
leaq 0x80(%rsp), %rcx
callq 0x6af0
testb $0x1, %al
jne 0x21d2a
jmp 0x21c72
jmp 0x21c74
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x21cc4
movq 0x11367(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x84b5(%rip), %rsi      # 0x2a150
leaq 0x85c2(%rip), %rdx      # 0x2a264
leaq 0xa3f4(%rip), %rcx      # 0x2c09d
leaq 0x9de6(%rip), %r8       # 0x2ba96
movl $0x67b, %r9d            # imm = 0x67B
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x21cc6
movq 0xd8(%rsp), %rax
movq %rax, (%rsp)
movq 0xd0(%rsp), %rdi
callq 0x7590
movq (%rsp), %rdi
movq %rax, %rdx
movq 0xc8(%rsp), %rcx
addq $0x1c, %rcx
leaq 0xa3ce(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xd8(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
movabsq $0x7ffc000000000000, %rax # imm = 0x7FFC000000000000
movq %rax, 0xe0(%rsp)
jmp 0x21d71
movq 0x80(%rsp), %rax
movq %rax, 0xe0(%rsp)
jmp 0x21d71
jmp 0x21d3e
movq 0x112b3(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x848b(%rip), %rsi      # 0x2a1da
leaq 0xa347(%rip), %rdx      # 0x2c09d
leaq 0x9d39(%rip), %rcx      # 0x2ba96
movl $0x682, %r8d            # imm = 0x682
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
movq 0xe0(%rsp), %rax
addq $0xe8, %rsp
retq
nopw %cs:(%rax,%rax)