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

#define ATTRIB_IMMUTABLE(name)                                                \
do {                                                                          \
  if ((attrib->length == strlen(name) && strcmp(name, attrib->data) == 0)) {  \
    VM_SET_ERROR(vm, stringFormat(vm, "'$' attribute is immutable.", name));  \
    return;                                                                   \
  }                                                                           \
} while (false)

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

  Object* obj = AS_OBJ(on);
  switch (obj->type) {
    case OBJ_STRING:
      ATTRIB_IMMUTABLE("length");
      ATTRIB_IMMUTABLE("lower");
      ATTRIB_IMMUTABLE("upper");
      ATTRIB_IMMUTABLE("strip");
      ERR_NO_ATTRIB(vm, on, attrib);
      return;

    case OBJ_LIST:
      ATTRIB_IMMUTABLE("length");
      ERR_NO_ATTRIB(vm, on, attrib);
      return;

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

      ERR_NO_ATTRIB(vm, on, attrib);
      return;

    case OBJ_RANGE:
      ATTRIB_IMMUTABLE("as_list");
      ATTRIB_IMMUTABLE("first");
      ATTRIB_IMMUTABLE("last");
      ERR_NO_ATTRIB(vm, on, attrib);
      return;

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

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

      // Check function (Functions are immutable).
      index = scriptGetFunc(scr, attrib->data, attrib->length);
      if (index != -1) {
        ASSERT_INDEX((uint32_t)index, scr->functions.count);
        ATTRIB_IMMUTABLE(scr->functions.data[index]->name);
        return;
      }

      index = scriptGetClass(scr, attrib->data, attrib->length);
      if (index != -1) {
        ASSERT_INDEX((uint32_t)index, scr->classes.count);
        ASSERT_INDEX(scr->classes.data[index]->name, scr->names.count);
        String* name = scr->names.data[scr->classes.data[index]->name];
        ATTRIB_IMMUTABLE(name->data);
        return;
      }

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

    case OBJ_FUNC:
      ATTRIB_IMMUTABLE("arity");
      ATTRIB_IMMUTABLE("name");
      ERR_NO_ATTRIB(vm, on, attrib);
      return;

    case OBJ_FIBER:
      ERR_NO_ATTRIB(vm, on, attrib);
      return;

    case OBJ_CLASS:
      ERR_NO_ATTRIB(vm, on, attrib);
      return;

    case OBJ_INST:
    {
      if (!instSetAttrib(vm, (Instance*)obj, attrib, value)) {
        // If we has error by now, that means the set value type is
        // incompatible. No need for us to set an other error, just return.
        if (VM_HAS_ERROR(vm)) return;
        ERR_NO_ATTRIB(vm, on, attrib);
      }

      // If we reached here, that means the attribute exists and we have
      // updated the value.
      return;
    }

    default:
      UNREACHABLE();
  }
  UNREACHABLE();

#undef ATTRIB_IMMUTABLE
}

// Assembly:
subq $0xa8, %rsp
movq %rdi, 0xa0(%rsp)
movq %rsi, 0x98(%rsp)
movq %rdx, 0x90(%rsp)
movq %rcx, 0x88(%rsp)
movabsq $-0x4000000000000, %rax # imm = 0xFFFC000000000000
andq 0x98(%rsp), %rax
movabsq $-0x4000000000000, %rcx # imm = 0xFFFC000000000000
cmpq %rcx, %rax
je 0x21e7d
jmp 0x21dde
jmp 0x21de0
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x21e30
movq 0x111fb(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x8349(%rip), %rsi      # 0x2a150
leaq 0x8456(%rip), %rdx      # 0x2a264
leaq 0xa2d8(%rip), %rcx      # 0x2c0ed
leaq 0x9c7a(%rip), %r8       # 0x2ba96
movl $0x694, %r9d            # imm = 0x694
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x21e32
movq 0xa0(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x98(%rsp), %rdi
callq 0x7590
movq 0x60(%rsp), %rdi
movq %rax, %rdx
leaq 0xa24f(%rip), %rsi      # 0x2c0aa
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
movq 0x98(%rsp), %rax
movabsq $0xffffffffffff, %rcx   # imm = 0xFFFFFFFFFFFF
andq %rcx, %rax
movq %rax, 0x80(%rsp)
movq 0x80(%rsp), %rax
movl (%rax), %eax
movq %rax, 0x58(%rsp)
subq $0x8, %rax
ja 0x230cb
movq 0x58(%rsp), %rax
leaq 0x9b59(%rip), %rcx      # 0x2ba18
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
jmp 0x21eca
movq 0x90(%rsp), %rax
movl 0x14(%rax), %eax
cmpq $0x6, %rax
jne 0x21f8e
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
leaq 0xa208(%rip), %rdi      # 0x2c0fa
callq 0x2220
cmpl $0x0, %eax
jne 0x21f8e
jmp 0x21f02
jmp 0x21f04
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x21f54
movq 0x110d7(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x8225(%rip), %rsi      # 0x2a150
leaq 0x8332(%rip), %rdx      # 0x2a264
leaq 0xa1b4(%rip), %rcx      # 0x2c0ed
leaq 0x9b56(%rip), %r8       # 0x2ba96
movl $0x69b, %r9d            # imm = 0x69B
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x21f56
movq 0xa0(%rsp), %rdi
leaq 0xa19c(%rip), %rsi      # 0x2c101
leaq 0xa18e(%rip), %rdx      # 0x2c0fa
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x21f90
jmp 0x21f92
movq 0x90(%rsp), %rax
movl 0x14(%rax), %eax
cmpq $0x5, %rax
jne 0x22056
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
leaq 0xa163(%rip), %rdi      # 0x2c11d
callq 0x2220
cmpl $0x0, %eax
jne 0x22056
jmp 0x21fca
jmp 0x21fcc
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x2201c
movq 0x1100f(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x815d(%rip), %rsi      # 0x2a150
leaq 0x826a(%rip), %rdx      # 0x2a264
leaq 0xa0ec(%rip), %rcx      # 0x2c0ed
leaq 0x9a8e(%rip), %r8       # 0x2ba96
movl $0x69c, %r9d            # imm = 0x69C
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x2201e
movq 0xa0(%rsp), %rdi
leaq 0xa0d4(%rip), %rsi      # 0x2c101
leaq 0xa0e9(%rip), %rdx      # 0x2c11d
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x22058
jmp 0x2205a
movq 0x90(%rsp), %rax
movl 0x14(%rax), %eax
cmpq $0x5, %rax
jne 0x2211e
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
leaq 0xa0a1(%rip), %rdi      # 0x2c123
callq 0x2220
cmpl $0x0, %eax
jne 0x2211e
jmp 0x22092
jmp 0x22094
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x220e4
movq 0x10f47(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x8095(%rip), %rsi      # 0x2a150
leaq 0x81a2(%rip), %rdx      # 0x2a264
leaq 0xa024(%rip), %rcx      # 0x2c0ed
leaq 0x99c6(%rip), %r8       # 0x2ba96
movl $0x69d, %r9d            # imm = 0x69D
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x220e6
movq 0xa0(%rsp), %rdi
leaq 0xa00c(%rip), %rsi      # 0x2c101
leaq 0xa027(%rip), %rdx      # 0x2c123
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x22120
jmp 0x22122
movq 0x90(%rsp), %rax
movl 0x14(%rax), %eax
cmpq $0x5, %rax
jne 0x221e6
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
leaq 0x9fdf(%rip), %rdi      # 0x2c129
callq 0x2220
cmpl $0x0, %eax
jne 0x221e6
jmp 0x2215a
jmp 0x2215c
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x221ac
movq 0x10e7f(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x7fcd(%rip), %rsi      # 0x2a150
leaq 0x80da(%rip), %rdx      # 0x2a264
leaq 0x9f5c(%rip), %rcx      # 0x2c0ed
leaq 0x98fe(%rip), %r8       # 0x2ba96
movl $0x69e, %r9d            # imm = 0x69E
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x221ae
movq 0xa0(%rsp), %rdi
leaq 0x9f44(%rip), %rsi      # 0x2c101
leaq 0x9f65(%rip), %rdx      # 0x2c129
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x221e8
jmp 0x221ea
jmp 0x221ec
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x2223c
movq 0x10def(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x7f3d(%rip), %rsi      # 0x2a150
leaq 0x804a(%rip), %rdx      # 0x2a264
leaq 0x9ecc(%rip), %rcx      # 0x2c0ed
leaq 0x986e(%rip), %r8       # 0x2ba96
movl $0x69f, %r9d            # imm = 0x69F
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x2223e
movq 0xa0(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x98(%rsp), %rdi
callq 0x7590
movq 0x50(%rsp), %rdi
movq %rax, %rdx
movq 0x90(%rsp), %rcx
addq $0x1c, %rcx
leaq 0x9e54(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x22297
movq 0x90(%rsp), %rax
movl 0x14(%rax), %eax
cmpq $0x6, %rax
jne 0x2235b
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
leaq 0x9e3b(%rip), %rdi      # 0x2c0fa
callq 0x2220
cmpl $0x0, %eax
jne 0x2235b
jmp 0x222cf
jmp 0x222d1
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x22321
movq 0x10d0a(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x7e58(%rip), %rsi      # 0x2a150
leaq 0x7f65(%rip), %rdx      # 0x2a264
leaq 0x9de7(%rip), %rcx      # 0x2c0ed
leaq 0x9789(%rip), %r8       # 0x2ba96
movl $0x6a3, %r9d            # imm = 0x6A3
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x22323
movq 0xa0(%rsp), %rdi
leaq 0x9dcf(%rip), %rsi      # 0x2c101
leaq 0x9dc1(%rip), %rdx      # 0x2c0fa
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x2235d
jmp 0x2235f
jmp 0x22361
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x223b1
movq 0x10c7a(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x7dc8(%rip), %rsi      # 0x2a150
leaq 0x7ed5(%rip), %rdx      # 0x2a264
leaq 0x9d57(%rip), %rcx      # 0x2c0ed
leaq 0x96f9(%rip), %r8       # 0x2ba96
movl $0x6a4, %r9d            # imm = 0x6A4
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x223b3
movq 0xa0(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x98(%rsp), %rdi
callq 0x7590
movq 0x48(%rsp), %rdi
movq %rax, %rdx
movq 0x90(%rsp), %rcx
addq $0x1c, %rcx
leaq 0x9cdf(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x2240c
movq 0x10be5(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x7d33(%rip), %rsi      # 0x2a150
leaq 0x7f8b(%rip), %rdx      # 0x2a3af
leaq 0x9cc2(%rip), %rcx      # 0x2c0ed
leaq 0x9664(%rip), %r8       # 0x2ba96
movl $0x6ac, %r9d            # imm = 0x6AC
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x22448
movq 0x90(%rsp), %rax
movl 0x14(%rax), %eax
cmpq $0x7, %rax
jne 0x2250c
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
leaq 0x9cbf(%rip), %rdi      # 0x2c12f
callq 0x2220
cmpl $0x0, %eax
jne 0x2250c
jmp 0x22480
jmp 0x22482
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x224d2
movq 0x10b59(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x7ca7(%rip), %rsi      # 0x2a150
leaq 0x7db4(%rip), %rdx      # 0x2a264
leaq 0x9c36(%rip), %rcx      # 0x2c0ed
leaq 0x95d8(%rip), %r8       # 0x2ba96
movl $0x6b2, %r9d            # imm = 0x6B2
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x224d4
movq 0xa0(%rsp), %rdi
leaq 0x9c1e(%rip), %rsi      # 0x2c101
leaq 0x9c45(%rip), %rdx      # 0x2c12f
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x2250e
jmp 0x22510
movq 0x90(%rsp), %rax
movl 0x14(%rax), %eax
cmpq $0x5, %rax
jne 0x225d4
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
leaq 0x9bff(%rip), %rdi      # 0x2c137
callq 0x2220
cmpl $0x0, %eax
jne 0x225d4
jmp 0x22548
jmp 0x2254a
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x2259a
movq 0x10a91(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x7bdf(%rip), %rsi      # 0x2a150
leaq 0x7cec(%rip), %rdx      # 0x2a264
leaq 0x9b6e(%rip), %rcx      # 0x2c0ed
leaq 0x9510(%rip), %r8       # 0x2ba96
movl $0x6b3, %r9d            # imm = 0x6B3
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x2259c
movq 0xa0(%rsp), %rdi
leaq 0x9b56(%rip), %rsi      # 0x2c101
leaq 0x9b85(%rip), %rdx      # 0x2c137
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x225d6
jmp 0x225d8
movq 0x90(%rsp), %rax
movl 0x14(%rax), %eax
cmpq $0x4, %rax
jne 0x2269c
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
leaq 0x9b3d(%rip), %rdi      # 0x2c13d
callq 0x2220
cmpl $0x0, %eax
jne 0x2269c
jmp 0x22610
jmp 0x22612
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x22662
movq 0x109c9(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x7b17(%rip), %rsi      # 0x2a150
leaq 0x7c24(%rip), %rdx      # 0x2a264
leaq 0x9aa6(%rip), %rcx      # 0x2c0ed
leaq 0x9448(%rip), %r8       # 0x2ba96
movl $0x6b4, %r9d            # imm = 0x6B4
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x22664
movq 0xa0(%rsp), %rdi
leaq 0x9a8e(%rip), %rsi      # 0x2c101
leaq 0x9ac3(%rip), %rdx      # 0x2c13d
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x2269e
jmp 0x226a0
jmp 0x226a2
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x226f2
movq 0x10939(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x7a87(%rip), %rsi      # 0x2a150
leaq 0x7b94(%rip), %rdx      # 0x2a264
leaq 0x9a16(%rip), %rcx      # 0x2c0ed
leaq 0x93b8(%rip), %r8       # 0x2ba96
movl $0x6b5, %r9d            # imm = 0x6B5
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x226f4
movq 0xa0(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x98(%rsp), %rdi
callq 0x7590
movq 0x40(%rsp), %rdi
movq %rax, %rdx
movq 0x90(%rsp), %rcx
addq $0x1c, %rcx
leaq 0x999e(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
movq 0x80(%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0x78(%rsp), %rdi
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
movq 0x90(%rsp), %rax
movl 0x14(%rax), %edx
callq 0x6a40
movl %eax, 0x74(%rsp)
cmpl $-0x1, 0x74(%rsp)
je 0x227f6
jmp 0x22786
cmpl $0x0, 0x74(%rsp)
jb 0x2279b
movl 0x74(%rsp), %eax
movq 0x78(%rsp), %rcx
cmpl 0x28(%rcx), %eax
jb 0x227d5
movq 0x10856(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x79a4(%rip), %rsi      # 0x2a150
leaq 0x7b5a(%rip), %rdx      # 0x2a30d
leaq 0x9933(%rip), %rcx      # 0x2c0ed
leaq 0x92d5(%rip), %r8       # 0x2ba96
movl $0x6be, %r9d            # imm = 0x6BE
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x227d7
movq 0x88(%rsp), %rdx
movq 0x78(%rsp), %rax
movq 0x20(%rax), %rax
movslq 0x74(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
jmp 0x23100
movq 0x78(%rsp), %rdi
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
movq 0x90(%rsp), %rax
movl 0x14(%rax), %edx
callq 0x69a0
movl %eax, 0x74(%rsp)
cmpl $-0x1, 0x74(%rsp)
je 0x2298b
jmp 0x22828
cmpl $0x0, 0x74(%rsp)
jb 0x2283d
movl 0x74(%rsp), %eax
movq 0x78(%rsp), %rcx
cmpl 0x48(%rcx), %eax
jb 0x22877
movq 0x107b4(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x7902(%rip), %rsi      # 0x2a150
leaq 0x7ab8(%rip), %rdx      # 0x2a30d
leaq 0x9891(%rip), %rcx      # 0x2c0ed
leaq 0x9233(%rip), %r8       # 0x2ba96
movl $0x6c6, %r9d            # imm = 0x6C6
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x22879
jmp 0x2287b
movq 0x90(%rsp), %rax
movl 0x14(%rax), %eax
movq %rax, 0x38(%rsp)
movq 0x78(%rsp), %rax
movq 0x40(%rax), %rax
movslq 0x74(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rdi
callq 0x2130
movq %rax, %rcx
movq 0x38(%rsp), %rax
cmpq %rcx, %rax
jne 0x22984
movq 0x78(%rsp), %rax
movq 0x40(%rax), %rax
movslq 0x74(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rdi
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
callq 0x2220
cmpl $0x0, %eax
jne 0x22984
jmp 0x228e9
jmp 0x228eb
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x2293b
movq 0x106f0(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x783e(%rip), %rsi      # 0x2a150
leaq 0x794b(%rip), %rdx      # 0x2a264
leaq 0x97cd(%rip), %rcx      # 0x2c0ed
leaq 0x916f(%rip), %r8       # 0x2ba96
movl $0x6c7, %r9d            # imm = 0x6C7
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x2293d
movq 0xa0(%rsp), %rdi
movq 0x78(%rsp), %rax
movq 0x40(%rax), %rax
movslq 0x74(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rdx
leaq 0x979f(%rip), %rsi      # 0x2c101
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x22986
jmp 0x23100
movq 0x78(%rsp), %rdi
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
movq 0x90(%rsp), %rax
movl 0x14(%rax), %edx
callq 0x68a0
movl %eax, 0x74(%rsp)
cmpl $-0x1, 0x74(%rsp)
je 0x22b93
jmp 0x229bd
cmpl $0x0, 0x74(%rsp)
jb 0x229d2
movl 0x74(%rsp), %eax
movq 0x78(%rsp), %rcx
cmpl 0x58(%rcx), %eax
jb 0x22a0c
movq 0x1061f(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x776d(%rip), %rsi      # 0x2a150
leaq 0x7923(%rip), %rdx      # 0x2a30d
leaq 0x96fc(%rip), %rcx      # 0x2c0ed
leaq 0x909e(%rip), %r8       # 0x2ba96
movl $0x6cd, %r9d            # imm = 0x6CD
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x22a0e
jmp 0x22a10
movq 0x78(%rsp), %rax
movq 0x50(%rax), %rax
movslq 0x74(%rsp), %rcx
movq (%rax,%rcx,8), %rax
cmpl $0x0, 0x18(%rax)
jb 0x22a47
movq 0x78(%rsp), %rax
movq 0x50(%rax), %rax
movslq 0x74(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movl 0x18(%rax), %eax
movq 0x78(%rsp), %rcx
cmpl 0x68(%rcx), %eax
jb 0x22a81
movq 0x105aa(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x76f8(%rip), %rsi      # 0x2a150
leaq 0x78ae(%rip), %rdx      # 0x2a30d
leaq 0x9687(%rip), %rcx      # 0x2c0ed
leaq 0x9029(%rip), %r8       # 0x2ba96
movl $0x6ce, %r9d            # imm = 0x6CE
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x22a83
movq 0x78(%rsp), %rax
movq 0x60(%rax), %rax
movq 0x78(%rsp), %rcx
movq 0x50(%rcx), %rcx
movslq 0x74(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
movl 0x18(%rcx), %ecx
movq (%rax,%rcx,8), %rax
movq %rax, 0x68(%rsp)
movq 0x90(%rsp), %rax
movl 0x14(%rax), %eax
movq %rax, 0x30(%rsp)
movq 0x68(%rsp), %rdi
addq $0x1c, %rdi
callq 0x2130
movq %rax, %rcx
movq 0x30(%rsp), %rax
cmpq %rcx, %rax
jne 0x22b8c
movq 0x68(%rsp), %rdi
addq $0x1c, %rdi
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
callq 0x2220
cmpl $0x0, %eax
jne 0x22b8c
jmp 0x22afe
jmp 0x22b00
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x22b50
movq 0x104db(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x7629(%rip), %rsi      # 0x2a150
leaq 0x7736(%rip), %rdx      # 0x2a264
leaq 0x95b8(%rip), %rcx      # 0x2c0ed
leaq 0x8f5a(%rip), %r8       # 0x2ba96
movl $0x6d0, %r9d            # imm = 0x6D0
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x22b52
movq 0xa0(%rsp), %rdi
movq 0x68(%rsp), %rdx
addq $0x1c, %rdx
leaq 0x9597(%rip), %rsi      # 0x2c101
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x22b8e
jmp 0x23100
jmp 0x22b95
jmp 0x22b97
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x22be7
movq 0x10444(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x7592(%rip), %rsi      # 0x2a150
leaq 0x769f(%rip), %rdx      # 0x2a264
leaq 0x9521(%rip), %rcx      # 0x2c0ed
leaq 0x8ec3(%rip), %r8       # 0x2ba96
movl $0x6d4, %r9d            # imm = 0x6D4
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x22be9
movq 0xa0(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x98(%rsp), %rdi
callq 0x7590
movq 0x28(%rsp), %rdi
movq %rax, %rdx
movq 0x90(%rsp), %rcx
addq $0x1c, %rcx
leaq 0x94a9(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x22c42
movq 0x90(%rsp), %rax
movl 0x14(%rax), %eax
cmpq $0x5, %rax
jne 0x22d06
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
leaq 0x94d8(%rip), %rdi      # 0x2c142
callq 0x2220
cmpl $0x0, %eax
jne 0x22d06
jmp 0x22c7a
jmp 0x22c7c
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x22ccc
movq 0x1035f(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x74ad(%rip), %rsi      # 0x2a150
leaq 0x75ba(%rip), %rdx      # 0x2a264
leaq 0x943c(%rip), %rcx      # 0x2c0ed
leaq 0x8dde(%rip), %r8       # 0x2ba96
movl $0x6d9, %r9d            # imm = 0x6D9
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x22cce
movq 0xa0(%rsp), %rdi
leaq 0x9424(%rip), %rsi      # 0x2c101
leaq 0x945e(%rip), %rdx      # 0x2c142
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x22d08
jmp 0x22d0a
movq 0x90(%rsp), %rax
movl 0x14(%rax), %eax
cmpq $0x4, %rax
jne 0x22dce
movq 0x90(%rsp), %rsi
addq $0x1c, %rsi
leaq 0x8fa8(%rip), %rdi      # 0x2bcda
callq 0x2220
cmpl $0x0, %eax
jne 0x22dce
jmp 0x22d42
jmp 0x22d44
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x22d94
movq 0x10297(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x73e5(%rip), %rsi      # 0x2a150
leaq 0x74f2(%rip), %rdx      # 0x2a264
leaq 0x9374(%rip), %rcx      # 0x2c0ed
leaq 0x8d16(%rip), %r8       # 0x2ba96
movl $0x6da, %r9d            # imm = 0x6DA
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x22d96
movq 0xa0(%rsp), %rdi
leaq 0x935c(%rip), %rsi      # 0x2c101
leaq 0x8f2e(%rip), %rdx      # 0x2bcda
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x22dd0
jmp 0x22dd2
jmp 0x22dd4
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x22e24
movq 0x10207(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x7355(%rip), %rsi      # 0x2a150
leaq 0x7462(%rip), %rdx      # 0x2a264
leaq 0x92e4(%rip), %rcx      # 0x2c0ed
leaq 0x8c86(%rip), %r8       # 0x2ba96
movl $0x6db, %r9d            # imm = 0x6DB
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x22e26
movq 0xa0(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x98(%rsp), %rdi
callq 0x7590
movq 0x20(%rsp), %rdi
movq %rax, %rdx
movq 0x90(%rsp), %rcx
addq $0x1c, %rcx
leaq 0x926c(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x22e7f
jmp 0x22e81
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x22ed1
movq 0x1015a(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x72a8(%rip), %rsi      # 0x2a150
leaq 0x73b5(%rip), %rdx      # 0x2a264
leaq 0x9237(%rip), %rcx      # 0x2c0ed
leaq 0x8bd9(%rip), %r8       # 0x2ba96
movl $0x6df, %r9d            # imm = 0x6DF
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x22ed3
movq 0xa0(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x98(%rsp), %rdi
callq 0x7590
movq 0x18(%rsp), %rdi
movq %rax, %rdx
movq 0x90(%rsp), %rcx
addq $0x1c, %rcx
leaq 0x91bf(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
jmp 0x22f2c
jmp 0x22f2e
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x22f7e
movq 0x100ad(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x71fb(%rip), %rsi      # 0x2a150
leaq 0x7308(%rip), %rdx      # 0x2a264
leaq 0x918a(%rip), %rcx      # 0x2c0ed
leaq 0x8b2c(%rip), %r8       # 0x2ba96
movl $0x6e3, %r9d            # imm = 0x6E3
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x22f80
movq 0xa0(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x98(%rsp), %rdi
callq 0x7590
movq 0x10(%rsp), %rdi
movq %rax, %rdx
movq 0x90(%rsp), %rcx
addq $0x1c, %rcx
leaq 0x9112(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x23100
movq 0xa0(%rsp), %rdi
movq 0x80(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq 0x88(%rsp), %rcx
callq 0x7030
testb $0x1, %al
jne 0x230c9
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x2301f
jmp 0x23100
jmp 0x23021
jmp 0x23023
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x23073
movq 0xffb8(%rip), %rax      # 0x32ff8
movq (%rax), %rdi
leaq 0x7106(%rip), %rsi      # 0x2a150
leaq 0x7213(%rip), %rdx      # 0x2a264
leaq 0x9095(%rip), %rcx      # 0x2c0ed
leaq 0x8a37(%rip), %r8       # 0x2ba96
movl $0x6ec, %r9d            # imm = 0x6EC
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
jmp 0x23075
movq 0xa0(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x98(%rsp), %rdi
callq 0x7590
movq 0x8(%rsp), %rdi
movq %rax, %rdx
movq 0x90(%rsp), %rcx
addq $0x1c, %rcx
leaq 0x901d(%rip), %rsi      # 0x2c0c7
movb $0x0, %al
callq 0x4ed0
movq %rax, %rcx
movq 0xa0(%rsp), %rax
movq 0x5f0(%rax), %rax
movq %rcx, 0x58(%rax)
jmp 0x230c9
jmp 0x23100
jmp 0x230cd
movq 0xff24(%rip), %rax      # 0x32ff8
movq (%rax), %rdi
leaq 0x70fc(%rip), %rsi      # 0x2a1da
leaq 0x9008(%rip), %rdx      # 0x2c0ed
leaq 0x89aa(%rip), %rcx      # 0x2ba96
movl $0x6f5, %r8d            # imm = 0x6F5
movb $0x0, %al
callq 0x2240
ud2
callq 0x2040
addq $0xa8, %rsp
retq
nopl (%rax,%rax)