// File: /workspace/github_c_makefile_star2_O2/vtereshkov[P]umka-lang/src/umka_vm.c
// Function: doCopyMapNode
static MapNode *doCopyMapNode(Map *map, MapNode *node, Fiber *fiber, HeapPages *pages, Error *error)
{
    if (!node)
        return NULL;

    const Type *nodeType = map->type->base;
    MapNode *result = (MapNode *)chunkAlloc(pages, nodeType->size, nodeType, NULL, false, error);

    result->len = node->len;

    if (node->key)
    {
        const Type *keyType = typeMapKey(map->type);

        Slot srcKey = {.ptrVal = node->key};
        doDerefImpl(&srcKey, keyType->kind, error);

        // When allocating dynamic arrays, we mark with type the data chunk, not the header chunk
        result->key = chunkAlloc(pages, keyType->size, keyType->kind == TYPE_DYNARRAY ? NULL : keyType, NULL, false, error);

        if (typeGarbageCollected(keyType))
            doChangeRefCntImpl(fiber, pages, srcKey.ptrVal, keyType, TOK_PLUSPLUS);

        doAssignImpl(result->key, srcKey, keyType->kind, keyType->size, error);
    }

    if (node->data)
    {
        const Type *itemType = typeMapItem(map->type);

        Slot srcItem = {.ptrVal = node->data};
        doDerefImpl(&srcItem, itemType->kind, error);

        // When allocating dynamic arrays, we mark with type the data chunk, not the header chunk
        result->data = chunkAlloc(pages, itemType->size, itemType->kind == TYPE_DYNARRAY ? NULL : itemType, NULL, false, error);

        if (typeGarbageCollected(itemType))
            doChangeRefCntImpl(fiber, pages, srcItem.ptrVal, itemType, TOK_PLUSPLUS);

        doAssignImpl(result->data, srcItem, itemType->kind, itemType->size, error);
    }

    if (node->left)
        result->left = doCopyMapNode(map, node->left, fiber, pages, error);

    if (node->right)
        result->right = doCopyMapNode(map, node->right, fiber, pages, error);

    return result;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %r8, 0x38(%rsp)
movq %rdx, 0x58(%rsp)
testq %rsi, %rsi
je 0x3ef60
movq %rcx, %rbp
movq %rdi, %r15
movq %rsi, 0x28(%rsp)
movq (%rdi), %rax
movq 0x8(%rax), %r12
movslq 0xc0(%r12), %rbx
leaq 0x8(%rbx), %rax
pushq $0x8
popq %rcx
cqto
idivq %rcx
negq %rdx
leaq (%rbx,%rdx), %r14
addq $0x6f, %r14
pushq $0x40
popq %rcx
movq %r14, %rax
cqto
idivq %rcx
subq %rdx, %r14
testq %rbx, %rbx
js 0x40c46
movl $0x80000000, %eax       # imm = 0x80000000
cmpq %rax, %r14
jge 0x40c46
movl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
xorl %r8d, %r8d
movq %rbp, %rcx
movq %r15, 0x20(%rsp)
movq %r12, 0x40(%rsp)
pushq $0x1
popq %r13
movq (%rcx), %rcx
testq %rcx, %rcx
je 0x3eea0
movl 0xc(%rcx), %edx
cmpl 0x8(%rcx), %edx
jge 0x3ee9a
movl 0x14(%rcx), %edx
cmpl %r14d, %edx
je 0x3ef67
setg %sil
cmpl %eax, %edx
setl %dil
testb %dil, %sil
cmovneq %rcx, %r8
cmovnel %edx, %eax
addq $0x20, %rcx
jmp 0x3ee6a
testq %r8, %r8
jne 0x3ef6a
movl $0x100000, %eax         # imm = 0x100000
xorl %edx, %edx
idivq %r14
movq %rax, %r12
testq %rax, %rax
cmovel %r13d, %r12d
movl %r12d, %eax
imull %r14d, %eax
movslq %eax, %r13
leaq 0x30(%r13), %rdi
callq 0x3290
movq %rax, %r15
movq %rax, %r8
testq %rax, %rax
je 0x40d45
movl 0x18(%rbp), %eax
leal 0x1(%rax), %ecx
movl %ecx, 0x18(%rbp)
movl %eax, (%r8)
andl $0x0, 0x4(%r8)
movl %r12d, 0x8(%r8)
andq $0x0, 0xc(%r8)
movl %r14d, 0x14(%r8)
andq $0x0, 0x18(%r8)
movq (%rbp), %rax
movq %rax, 0x20(%r8)
leaq (%r15,%r13), %rcx
addq $0x30, %rcx
movq %rcx, 0x28(%r8)
addq %r13, 0x20(%rbp)
testq %rax, %rax
je 0x3ef23
movq %r8, 0x18(%rax)
addq $0x30, %r15
movq %r8, (%rbp)
movq 0x8(%rbp), %rax
testq %rax, %rax
pushq $0x1
popq %r13
je 0x3ef3d
cmpq %r15, %rax
jbe 0x3ef41
movq %r15, 0x8(%rbp)
movq 0x10(%rbp), %rdx
xorl %eax, %eax
movq 0x28(%r8), %rcx
testq %rdx, %rdx
je 0x3ef55
cmpq %rcx, %rdx
jae 0x3ef59
movq %rcx, 0x10(%rbp)
movq 0x20(%rsp), %r15
jmp 0x3ef72
xorl %ebx, %ebx
jmp 0x40c34
movq %rcx, %r8
movl 0xc(%r8), %eax
movl 0x14(%r8), %r14d
movq %r8, 0x18(%rsp)
imull %r14d, %eax
cltq
movq %rax, 0x60(%rsp)
leaq (%r8,%rax), %r12
addq $0x30, %r12
movslq %r14d, %rdx
movq %r12, %rdi
xorl %esi, %esi
callq 0x3190
movq 0x18(%rsp), %rcx
movl $0x1, (%r12)
movl %ebx, 0x4(%r12)
movq 0x40(%rsp), %rax
movq %rax, 0x8(%r12)
andq $0x0, 0x10(%r12)
movq 0x28(%rbp), %rax
movslq 0x8(%rax), %rax
movq %rax, 0x18(%r12)
movb $0x0, 0x20(%r12)
incl 0xc(%rcx)
incl 0x4(%rcx)
movq 0x28(%rsp), %r14
movq (%r14), %rax
movq %r12, 0x50(%rsp)
movq %rax, 0x28(%r12)
movq 0x8(%r14), %rax
testq %rax, %rax
movq %rbp, 0x40(%rsp)
je 0x3fdaf
movq %rax, 0x8(%rsp)
movq (%r15), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq 0x8(%rax), %rax
movq 0x108(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x30(%rsp)
movl (%rax), %eax
leal -0x4(%rax), %ecx
cmpl $0x16, %ecx
ja 0x3f09b
leaq 0x2e4d1(%rip), %rdx     # 0x6d4fc
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq 0x8(%rsp), %rax
movq (%rax), %rax
jmp 0x3f079
movq 0x8(%rsp), %rax
movzbl (%rax), %eax
jmp 0x3f079
movq 0x8(%rsp), %rax
movslq (%rax), %rax
jmp 0x3f079
movq 0x8(%rsp), %rax
movzwl (%rax), %eax
jmp 0x3f079
movq 0x8(%rsp), %rax
movl (%rax), %eax
jmp 0x3f079
movq 0x8(%rsp), %rax
movsbq (%rax), %rax
jmp 0x3f079
movq 0x8(%rsp), %rax
movswq (%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rsp)
jmp 0x3f0cd
movq 0x8(%rsp), %rax
cvtss2sd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
jmp 0x3f07e
movq 0x38(%rsp), %rcx
movq 0x20(%rcx), %rdi
leaq 0x2af65(%rip), %rdx     # 0x6a010
pushq $-0x1
popq %rsi
xorl %eax, %eax
callq *0x8(%rcx)
movq 0x30(%rsp), %rax
movl (%rax), %eax
xorl %ecx, %ecx
cmpl $0x13, %eax
movq 0x30(%rsp), %rax
cmovneq %rax, %rcx
movq %rcx, 0x10(%rsp)
movslq 0xc0(%rax), %rbx
leaq 0x8(%rbx), %rax
cqto
pushq $0x8
popq %rcx
idivq %rcx
negq %rdx
leaq (%rbx,%rdx), %r14
addq $0x6f, %r14
movq %r14, %rax
cqto
pushq $0x40
popq %rcx
idivq %rcx
subq %rdx, %r14
testq %rbx, %rbx
js 0x40d03
movl $0x80000000, %eax       # imm = 0x80000000
cmpq %rax, %r14
jge 0x40d03
movq %rbx, 0x48(%rsp)
movl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
xorl %ebx, %ebx
movq %rbp, %rcx
movq (%rcx), %rcx
testq %rcx, %rcx
je 0x3f155
movl 0xc(%rcx), %edx
cmpl 0x8(%rcx), %edx
jge 0x3f14f
movl 0x14(%rcx), %edx
cmpl %r14d, %edx
je 0x3f20a
setg %sil
cmpl %eax, %edx
setl %dil
testb %dil, %sil
cmovneq %rcx, %rbx
cmovnel %edx, %eax
addq $0x20, %rcx
jmp 0x3f11f
testq %rbx, %rbx
jne 0x3f20d
movl $0x100000, %eax         # imm = 0x100000
xorl %edx, %edx
idivq %r14
movq %rax, %r12
testq %rax, %rax
cmovel %r13d, %r12d
movl %r12d, %eax
imull %r14d, %eax
movslq %eax, %r13
leaq 0x30(%r13), %rdi
callq 0x3290
movq %rax, %r15
movq %rax, %rbx
testq %rax, %rax
je 0x40d6b
movl 0x18(%rbp), %eax
leal 0x1(%rax), %ecx
movl %ecx, 0x18(%rbp)
movl %eax, (%rbx)
andl $0x0, 0x4(%rbx)
movl %r12d, 0x8(%rbx)
andq $0x0, 0xc(%rbx)
movl %r14d, 0x14(%rbx)
andq $0x0, 0x18(%rbx)
movq (%rbp), %rax
movq %rax, 0x20(%rbx)
leaq (%r15,%r13), %rcx
addq $0x30, %rcx
movq %rcx, 0x28(%rbx)
addq %r13, 0x20(%rbp)
testq %rax, %rax
je 0x3f1d6
movq %rbx, 0x18(%rax)
addq $0x30, %r15
movq %rbx, (%rbp)
movq 0x8(%rbp), %rax
testq %rax, %rax
je 0x3f1ec
cmpq %r15, %rax
jbe 0x3f1f0
movq %r15, 0x8(%rbp)
movq 0x10(%rbp), %rdx
xorl %eax, %eax
movq 0x28(%rbx), %rcx
testq %rdx, %rdx
je 0x3f204
cmpq %rcx, %rdx
jae 0x3f214
movq %rcx, 0x10(%rbp)
jmp 0x3f214
movq %rcx, %rbx
movl 0xc(%rbx), %eax
movl 0x14(%rbx), %r14d
imull %r14d, %eax
movslq %eax, %r12
leaq (%rbx,%r12), %r15
addq $0x30, %r15
movslq %r14d, %rdx
xorl %r13d, %r13d
movq %r15, %rdi
xorl %esi, %esi
callq 0x3190
movl $0x1, (%r15)
movq 0x48(%rsp), %rax
movl %eax, 0x4(%r15)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%r15)
andq $0x0, 0x10(%r15)
movq 0x28(%rbp), %rax
movslq 0x8(%rax), %rax
movq %rax, 0x18(%r15)
movb $0x0, 0x20(%r15)
incl 0xc(%rbx)
incl 0x4(%rbx)
leaq (%rbx,%r12), %rax
addq $0x58, %rax
movq 0x50(%rsp), %rcx
movq %rax, 0x30(%rcx)
movq 0x30(%rsp), %rdi
callq 0x3d5d5
testb %al, %al
je 0x3fcd3
movq 0x58(%rsp), %rax
movq 0x68(%rax), %rbx
orl $-0x1, 0x8(%rbx)
movslq 0xc(%rbx), %rcx
movq (%rbx), %rax
testq %rcx, %rcx
jg 0x3f2c4
leal (%rcx,%rcx), %edx
movl %edx, 0xc(%rbx)
movq 0x10(%rbx), %rdi
imulq $0x30, %rcx, %rdx
movq %rax, %rsi
callq 0x42b1
movq %rax, (%rbx)
movl 0x8(%rbx), %r13d
incl %r13d
movl %r13d, 0x8(%rbx)
movslq %r13d, %rcx
imulq $0x18, %rcx, %rcx
movq 0x8(%rsp), %rdx
movq %rdx, (%rax,%rcx)
movq 0x30(%rsp), %rdx
movq %rdx, 0x8(%rax,%rcx)
andq $0x0, 0x10(%rax,%rcx)
movq %rbx, 0x10(%rsp)
testl %r13d, %r13d
js 0x3fcd3
movq (%rbx), %rax
leal -0x1(%r13), %ecx
movl %ecx, 0x8(%rbx)
movl %r13d, %edx
imulq $0x18, %rdx, %rdx
movq (%rax,%rdx), %r12
movq 0x10(%rax,%rdx), %r14
testq %r14, %r14
je 0x3f3e4
movq %r12, %rax
subq %r14, %rax
addq $-0x30, %rax
movslq 0x14(%r14), %rcx
cqto
idivq %rcx
movq %rdx, %r15
movq %r12, %rax
subq %rdx, %rax
negq %r15
movl (%rax), %eax
testl %eax, %eax
jle 0x3fb67
cmpl %eax, 0x4(%r14)
jl 0x3fb67
incl %eax
movl %eax, (%r12,%r15)
movl 0x4(%r14), %eax
incl %eax
movl %eax, 0x4(%r14)
movq 0x28(%rbp), %r15
cmpq %r12, 0x18(%r15)
ja 0x3fb0a
movslq 0x28(%r15), %rcx
shlq $0x3, %rcx
addq 0x10(%r15), %rcx
cmpq %r12, %rcx
jbe 0x3fb0a
leaq 0x20(%r15), %rbx
movq (%rbx), %rbx
leaq 0x8(%rbx), %r13
movq -0x10(%rbx), %rax
movq 0x10(%rax), %rax
leaq (,%rax,8), %rax
addq %r13, %rax
cmpq %r12, %rax
jae 0x3fb02
movq 0x10(%r15), %rax
movslq 0x28(%r15), %rcx
leaq (%rax,%rcx,8), %rax
addq $-0x8, %rax
cmpq %rax, %rbx
je 0x3f3cb
movl (%r13), %eax
andl $-0x2, %eax
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
cmpl %ecx, %eax
jne 0x3f383
movq 0x30(%rbp), %rcx
movq 0x20(%rcx), %rdi
pushq $-0x1
popq %rsi
leaq 0x2f6c2(%rip), %rdx     # 0x6ea9f
xorl %eax, %eax
callq *0x8(%rcx)
jmp 0x3f38a
movq 0x8(%rax,%rdx), %r14
movl (%r14), %edx
addl $-0x10, %edx
cmpl $0x9, %edx
ja 0x3fb52
leaq 0x2e1b5(%rip), %rsi     # 0x6d5b4
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
cmpq %r12, 0x8(%rbp)
ja 0x3fb52
movq 0x10(%rbp), %rax
testq %rax, %rax
je 0x3f424
cmpq %r12, %rax
jbe 0x3fb52
movq %rbp, %r14
movq (%r14), %r14
testq %r14, %r14
je 0x3fb52
leaq 0x30(%r14), %rax
cmpq %r12, %rax
ja 0x3f446
cmpq %r12, 0x28(%r14)
ja 0x3f88f
addq $0x20, %r14
jmp 0x3f427
movq 0x10(%r12), %r15
cmpq %r15, 0x8(%rbp)
ja 0x3fb52
movq 0x10(%rbp), %rax
testq %rax, %rax
je 0x3f46d
cmpq %r15, %rax
jbe 0x3fb52
movq %rbp, %r14
movq (%r14), %r14
testq %r14, %r14
je 0x3fb52
leaq 0x30(%r14), %rbx
cmpq %r15, %rbx
ja 0x3f48f
cmpq %r15, 0x28(%r14)
ja 0x3f7ba
addq $0x20, %r14
jmp 0x3f470
xorl %r15d, %r15d
movslq 0x10(%r14), %rdx
cmpq %rdx, %r15
jge 0x3fb52
movq 0x28(%r14), %rdx
movq (%rdx,%r15,8), %rsi
movq 0x108(%rsi), %r13
movl (%r13), %edx
cmpl $0x19, %edx
ja 0x3f530
movl $0x3fd0000, %edi        # imm = 0x3FD0000
btl %edx, %edi
jae 0x3f530
movslq 0x110(%rsi), %rbp
addq %r12, %rbp
cmpl $0x19, %edx
ja 0x3f538
movl $0x2110000, %esi        # imm = 0x2110000
btl %edx, %esi
movq 0x10(%rsp), %rbx
jae 0x3f4e9
movq (%rbp), %rbp
movslq 0xc(%rbx), %rdx
leal -0x1(%rdx), %esi
cmpl %esi, %ecx
jl 0x3f510
leal (%rdx,%rdx), %ecx
movl %ecx, 0xc(%rbx)
movq 0x10(%rbx), %rdi
imulq $0x30, %rdx, %rdx
movq %rax, %rsi
callq 0x42b1
movq %rax, (%rbx)
movl 0x8(%rbx), %ecx
incl %ecx
movl %ecx, 0x8(%rbx)
movslq %ecx, %rdx
imulq $0x18, %rdx, %rdx
movq %rbp, (%rax,%rdx)
movq %r13, 0x8(%rax,%rdx)
andq $0x0, 0x10(%rax,%rdx)
movq 0x40(%rsp), %rbp
incq %r15
jmp 0x3f498
movq 0x10(%rsp), %rbx
jmp 0x3f4e9
movq 0x8(%r14), %rdx
movl (%rdx), %esi
cmpl $0x19, %esi
ja 0x3fb52
movl $0x3fd0000, %edi        # imm = 0x3FD0000
btl %esi, %edi
jae 0x3fb52
movl 0x10(%r14), %r15d
movslq 0xc0(%rdx), %rdi
testl %r15d, %r15d
movl $0x0, %edx
cmovlel %edx, %r15d
movq %r14, 0x48(%rsp)
subl $0x1, %r15d
jb 0x3fb52
movq 0x8(%r14), %rbp
movl (%rbp), %edx
movq %r12, %rbx
cmpl $0x19, %edx
ja 0x3f5a2
movl $0x2110000, %esi        # imm = 0x2110000
btl %edx, %esi
movq %r12, %rbx
jae 0x3f5a2
movq (%r12), %rbx
movq 0x10(%rsp), %r13
movslq 0xc(%r13), %rdx
leal -0x1(%rdx), %esi
cmpl %esi, %ecx
jl 0x3f5e2
leal (%rdx,%rdx), %ecx
movl %ecx, 0xc(%r13)
movq %r12, %r14
movq %rdi, %r12
movq 0x10(%r13), %rdi
imulq $0x30, %rdx, %rdx
movq %rax, %rsi
callq 0x42b1
movq %r12, %rdi
movq %r14, %r12
movq 0x48(%rsp), %r14
movq %rax, (%r13)
movl 0x8(%r13), %ecx
incl %ecx
movl %ecx, 0x8(%r13)
movslq %ecx, %rdx
imulq $0x18, %rdx, %rdx
movq %rbx, (%rax,%rdx)
movq %rbp, 0x8(%rax,%rdx)
andq $0x0, 0x10(%rax,%rdx)
addq %rdi, %r12
movq 0x40(%rsp), %rbp
jmp 0x3f578
movq (%r12), %rbx
testq %rbx, %rbx
je 0x3fb52
movq 0x8(%r12), %r14
jmp 0x3f728
xorl %r15d, %r15d
movslq 0x10(%r14), %rdx
cmpq %rdx, %r15
jge 0x3fb52
movq 0x28(%r14), %rdx
movq (%rdx,%r15,8), %rsi
movq 0x108(%rsi), %r13
movl (%r13), %edx
cmpl $0x19, %edx
ja 0x3f6bd
movl $0x3fd0000, %edi        # imm = 0x3FD0000
btl %edx, %edi
jae 0x3f6bd
movslq 0x110(%rsi), %rbp
addq %r12, %rbp
cmpl $0x19, %edx
ja 0x3f6c5
movl $0x2110000, %esi        # imm = 0x2110000
btl %edx, %esi
movq 0x10(%rsp), %rbx
jae 0x3f676
movq (%rbp), %rbp
movslq 0xc(%rbx), %rdx
leal -0x1(%rdx), %esi
cmpl %esi, %ecx
jl 0x3f69d
leal (%rdx,%rdx), %ecx
movl %ecx, 0xc(%rbx)
movq 0x10(%rbx), %rdi
imulq $0x30, %rdx, %rdx
movq %rax, %rsi
callq 0x42b1
movq %rax, (%rbx)
movl 0x8(%rbx), %ecx
incl %ecx
movl %ecx, 0x8(%rbx)
movslq %ecx, %rdx
imulq $0x18, %rdx, %rdx
movq %rbp, (%rax,%rdx)
movq %r13, 0x8(%rax,%rdx)
andq $0x0, 0x10(%rax,%rdx)
movq 0x40(%rsp), %rbp
incq %r15
jmp 0x3f625
movq 0x10(%rsp), %rbx
jmp 0x3f676
cmpq %r12, 0x8(%rbp)
ja 0x3fb52
movq 0x10(%rbp), %rax
testq %rax, %rax
je 0x3f6e8
cmpq %r12, %rax
jbe 0x3fb52
movq %rbp, %r14
movq (%r14), %r14
testq %r14, %r14
je 0x3fb52
leaq 0x30(%r14), %rax
cmpq %r12, %rax
ja 0x3f70a
cmpq %r12, 0x28(%r14)
ja 0x3f964
addq $0x20, %r14
jmp 0x3f6eb
movq 0x8(%r12), %rbx
movq 0x8(%r14), %rcx
movq 0x28(%rcx), %rcx
movq 0x18(%rcx), %rcx
movq 0x108(%rcx), %r14
movq 0x10(%rsp), %r15
movslq 0xc(%r15), %rcx
cmpl %ecx, %r13d
jl 0x3f757
leal (%rcx,%rcx), %edx
movl %edx, 0xc(%r15)
movq 0x10(%r15), %rdi
imulq $0x30, %rcx, %rdx
movq %rax, %rsi
callq 0x42b1
movq %rax, (%r15)
movl 0x8(%r15), %r13d
incl %r13d
movl %r13d, 0x8(%r15)
movslq %r13d, %rcx
imulq $0x18, %rcx, %rcx
movq %rbx, (%rax,%rcx)
movq %r14, 0x8(%rax,%rcx)
andq $0x0, 0x10(%rax,%rcx)
jmp 0x3fb52
cmpq %r12, 0x8(%rbp)
ja 0x3fb52
movq 0x10(%rbp), %rax
testq %rax, %rax
je 0x3f792
cmpq %r12, %rax
jbe 0x3fb52
movq %rbp, %r14
movq (%r14), %r14
testq %r14, %r14
je 0x3fb52
leaq 0x30(%r14), %rax
cmpq %r12, %rax
ja 0x3f7b4
cmpq %r12, 0x28(%r14)
ja 0x3fa39
addq $0x20, %r14
jmp 0x3f795
movq %r15, %rax
subq %rbx, %rax
movslq 0x14(%r14), %rcx
cqto
idivq %rcx
movq %r15, %rax
subq %rdx, %rax
cmpl $0x0, (%rax)
jle 0x3fc1b
movq %rdx, %r13
negq %r13
movl (%r15,%r13), %eax
testl %eax, %eax
jle 0x3fb8b
cmpl %eax, 0x4(%r14)
jl 0x3fb8b
incl %eax
movl %eax, (%r15,%r13)
movl 0x4(%r14), %eax
incl %eax
movl %eax, 0x4(%r14)
movq 0x28(%rbp), %rbx
cmpq %r15, 0x18(%rbx)
ja 0x3fb0a
movslq 0x28(%rbx), %rcx
shlq $0x3, %rcx
addq 0x10(%rbx), %rcx
cmpq %r15, %rcx
jbe 0x3fb0a
leaq 0x20(%rbx), %r12
movq (%r12), %r12
leaq 0x8(%r12), %r13
movq -0x10(%r12), %rax
movq 0x10(%rax), %rax
leaq (,%rax,8), %rax
addq %r13, %rax
cmpq %r15, %rax
jae 0x3fb60
movq 0x10(%rbx), %rax
movslq 0x28(%rbx), %rcx
leaq (%rax,%rcx,8), %rax
addq $-0x8, %rax
cmpq %rax, %r12
je 0x3f876
movl (%r13), %eax
andl $-0x2, %eax
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
cmpl %ecx, %eax
jne 0x3f82b
movq 0x30(%rbp), %rcx
movq 0x20(%rcx), %rdi
pushq $-0x1
popq %rsi
leaq 0x2f217(%rip), %rdx     # 0x6ea9f
xorl %eax, %eax
callq *0x8(%rcx)
jmp 0x3f834
movq %r12, %rbx
subq %rax, %rbx
movslq 0x14(%r14), %rcx
movq %rbx, %rax
cqto
idivq %rcx
movq %r12, %rax
subq %rdx, %rax
cmpl $0x0, (%rax)
jle 0x3fc4f
movq %rdx, %r15
negq %r15
movl (%r12,%r15), %eax
testl %eax, %eax
jle 0x3fbaf
cmpl %eax, 0x4(%r14)
jl 0x3fbaf
incl %eax
movl %eax, (%r12,%r15)
movl 0x4(%r14), %eax
incl %eax
movl %eax, 0x4(%r14)
movq 0x28(%rbp), %r15
cmpq %r12, 0x18(%r15)
ja 0x3fb0a
movslq 0x28(%r15), %rcx
shlq $0x3, %rcx
addq 0x10(%r15), %rcx
cmpq %r12, %rcx
jbe 0x3fb0a
leaq 0x20(%r15), %rbx
movq (%rbx), %rbx
leaq 0x8(%rbx), %r13
movq -0x10(%rbx), %rax
movq 0x10(%rax), %rax
leaq (,%rax,8), %rax
addq %r13, %rax
cmpq %r12, %rax
jae 0x3fb02
movq 0x10(%r15), %rax
movslq 0x28(%r15), %rcx
leaq (%rax,%rcx,8), %rax
addq $-0x8, %rax
cmpq %rax, %rbx
je 0x3f94b
movl (%r13), %eax
andl $-0x2, %eax
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
cmpl %ecx, %eax
jne 0x3f903
movq 0x30(%rbp), %rcx
movq 0x20(%rcx), %rdi
pushq $-0x1
popq %rsi
leaq 0x2f142(%rip), %rdx     # 0x6ea9f
xorl %eax, %eax
callq *0x8(%rcx)
jmp 0x3f90a
movq %r12, %rbx
subq %rax, %rbx
movslq 0x14(%r14), %rcx
movq %rbx, %rax
cqto
idivq %rcx
movq %r12, %rax
subq %rdx, %rax
cmpl $0x0, (%rax)
jle 0x3fc7b
movq %rdx, %r15
negq %r15
movl (%r12,%r15), %eax
testl %eax, %eax
jle 0x3fbd3
cmpl %eax, 0x4(%r14)
jl 0x3fbd3
incl %eax
movl %eax, (%r12,%r15)
movl 0x4(%r14), %eax
incl %eax
movl %eax, 0x4(%r14)
movq 0x28(%rbp), %r15
cmpq %r12, 0x18(%r15)
ja 0x3fb0a
movslq 0x28(%r15), %rcx
shlq $0x3, %rcx
addq 0x10(%r15), %rcx
cmpq %r12, %rcx
jbe 0x3fb0a
leaq 0x20(%r15), %rbx
movq (%rbx), %rbx
leaq 0x8(%rbx), %r13
movq -0x10(%rbx), %rax
movq 0x10(%rax), %rax
leaq (,%rax,8), %rax
addq %r13, %rax
cmpq %r12, %rax
jae 0x3fb02
movq 0x10(%r15), %rax
movslq 0x28(%r15), %rcx
leaq (%rax,%rcx,8), %rax
addq $-0x8, %rax
cmpq %rax, %rbx
je 0x3fa20
movl (%r13), %eax
andl $-0x2, %eax
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
cmpl %ecx, %eax
jne 0x3f9d8
movq 0x30(%rbp), %rcx
movq 0x20(%rcx), %rdi
pushq $-0x1
popq %rsi
leaq 0x2f06d(%rip), %rdx     # 0x6ea9f
xorl %eax, %eax
callq *0x8(%rcx)
jmp 0x3f9df
movq %r12, %rbx
subq %rax, %rbx
movslq 0x14(%r14), %rcx
movq %rbx, %rax
cqto
idivq %rcx
movq %r12, %rax
subq %rdx, %rax
cmpl $0x0, (%rax)
jle 0x3fca7
movq %rdx, %r15
negq %r15
movl (%r12,%r15), %eax
testl %eax, %eax
jle 0x3fbf7
cmpl %eax, 0x4(%r14)
jl 0x3fbf7
incl %eax
movl %eax, (%r12,%r15)
movl 0x4(%r14), %eax
incl %eax
movl %eax, 0x4(%r14)
movq 0x28(%rbp), %r15
cmpq %r12, 0x18(%r15)
ja 0x3fb0a
movslq 0x28(%r15), %rcx
shlq $0x3, %rcx
addq 0x10(%r15), %rcx
cmpq %r12, %rcx
jbe 0x3fb0a
leaq 0x20(%r15), %rbx
movq (%rbx), %rbx
leaq 0x8(%rbx), %r13
movq -0x10(%rbx), %rax
movq 0x10(%rax), %rax
leaq (,%rax,8), %rax
addq %r13, %rax
cmpq %r12, %rax
jae 0x3fb02
movq 0x10(%r15), %rax
movslq 0x28(%r15), %rcx
leaq (%rax,%rcx,8), %rax
addq $-0x8, %rax
cmpq %rax, %rbx
je 0x3fae9
movl (%r13), %eax
andl $-0x2, %eax
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
cmpl %ecx, %eax
jne 0x3faa5
movq 0x30(%rbp), %rcx
movq 0x20(%rcx), %rdi
pushq $-0x1
popq %rsi
leaq 0x2efa4(%rip), %rdx     # 0x6ea9f
xorl %eax, %eax
callq *0x8(%rcx)
jmp 0x3faac
incq -0x8(%rbx)
movl 0x4(%r14), %eax
testl %eax, %eax
jne 0x3fb52
movslq 0x8(%r14), %rax
movslq 0x14(%r14), %rcx
imulq %rax, %rcx
subq %rcx, 0x20(%rbp)
cmpq %r14, (%rbp)
jne 0x3fb2c
movq 0x20(%r14), %rax
movq %rax, (%rbp)
movq 0x18(%r14), %rcx
movq 0x20(%r14), %rax
testq %rcx, %rcx
je 0x3fb3d
movq %rax, 0x20(%rcx)
testq %rax, %rax
je 0x3fb4a
movq 0x18(%r14), %rcx
movq %rcx, 0x18(%rax)
movq %r14, %rdi
callq 0x3040
movq 0x10(%rsp), %rbx
movl 0x8(%rbx), %r13d
jmp 0x3f2ed
incq -0x8(%r12)
jmp 0x3fb06
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2eefe(%rip), %rdx     # 0x6ea77
movq %r12, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movl (%r12,%r15), %eax
jmp 0x3f34c
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2eeda(%rip), %rdx     # 0x6ea77
movq %r15, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movl (%r15,%r13), %eax
jmp 0x3f7f4
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2eeb6(%rip), %rdx     # 0x6ea77
movq %r12, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movl (%r12,%r15), %eax
jmp 0x3f8cc
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2ee92(%rip), %rdx     # 0x6ea77
movq %r12, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movl (%r12,%r15), %eax
jmp 0x3f9a1
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2ee6e(%rip), %rdx     # 0x6ea77
movq %r12, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movl (%r12,%r15), %eax
jmp 0x3fa76
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2ee33(%rip), %rdx     # 0x6ea60
movq %r15, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movq 0x10(%r12), %r15
movslq 0x14(%r14), %rcx
movq %r15, %rax
subq %rbx, %rax
cqto
idivq %rcx
jmp 0x3f7d8
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2edff(%rip), %rdx     # 0x6ea60
movq %r12, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movslq 0x14(%r14), %rcx
movq %rbx, %rax
cqto
idivq %rcx
jmp 0x3f8b0
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2edd3(%rip), %rdx     # 0x6ea60
movq %r12, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movslq 0x14(%r14), %rcx
movq %rbx, %rax
cqto
idivq %rcx
jmp 0x3f985
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2eda7(%rip), %rdx     # 0x6ea60
movq %r12, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movslq 0x14(%r14), %rcx
movq %rbx, %rax
cqto
idivq %rcx
jmp 0x3fa5a
movq 0x50(%rsp), %rax
movq 0x30(%rax), %rbx
movq 0x30(%rsp), %rax
movl (%rax), %r15d
movslq 0xc0(%rax), %r14
testq %rbx, %rbx
je 0x40c67
movl %r15d, %edi
movq 0x8(%rsp), %rsi
callq 0x3d27e
testb %al, %al
pushq $0x1
popq %r13
jne 0x40c84
addl $-0x4, %r15d
cmpl $0x16, %r15d
ja 0x3fd88
leaq 0x2d83a(%rip), %rax     # 0x6d558
movslq (%rax,%r15,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x8(%rsp), %rax
movq %rax, (%rbx)
jmp 0x3fda0
movq 0x8(%rsp), %rsi
testq %rsi, %rsi
movq 0x20(%rsp), %r15
je 0x40da3
movq %rbx, %rdi
movq %r14, %rdx
callq 0x3260
jmp 0x3fda5
movq 0x8(%rsp), %rax
movb %al, (%rbx)
jmp 0x3fda0
movq 0x8(%rsp), %rax
movl %eax, (%rbx)
jmp 0x3fda0
movq 0x8(%rsp), %rax
movw %ax, (%rbx)
jmp 0x3fda0
movsd 0x8(%rsp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, (%rbx)
jmp 0x3fda0
cmpq $0x0, 0x8(%rsp)
setne (%rbx)
jmp 0x3fda0
movq 0x38(%rsp), %rcx
movq 0x20(%rcx), %rdi
leaq 0x2a278(%rip), %rdx     # 0x6a010
pushq $-0x1
popq %rsi
xorl %eax, %eax
callq *0x8(%rcx)
movq 0x20(%rsp), %r15
movq 0x28(%rsp), %r14
movq 0x18(%rsp), %rcx
movq 0x10(%r14), %rax
testq %rax, %rax
je 0x40bd4
movq %rax, 0x8(%rsp)
movq (%r15), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rax
movq 0x10(%rax), %rax
movq 0x108(%rax), %rax
movq 0x8(%rax), %rbx
movl (%rbx), %eax
leal -0x4(%rax), %ecx
cmpl $0x16, %ecx
ja 0x3fe57
leaq 0x2d7f0(%rip), %rdx     # 0x6d5dc
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq 0x8(%rsp), %rax
movq (%rax), %rax
jmp 0x3fe3a
movq 0x8(%rsp), %rax
movzbl (%rax), %eax
jmp 0x3fe3a
movq 0x8(%rsp), %rax
movslq (%rax), %rax
jmp 0x3fe3a
movq 0x8(%rsp), %rax
movzwl (%rax), %eax
jmp 0x3fe3a
movq 0x8(%rsp), %rax
movl (%rax), %eax
jmp 0x3fe3a
movq 0x8(%rsp), %rax
movsbq (%rax), %rax
jmp 0x3fe3a
movq 0x8(%rsp), %rax
movswq (%rax), %rax
movq %rax, 0x8(%rsp)
movq %rbx, 0x10(%rsp)
jmp 0x3fe7f
movq 0x8(%rsp), %rax
cvtss2sd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
jmp 0x3fe3f
movq 0x38(%rsp), %rcx
movq 0x20(%rcx), %rdi
leaq 0x2a1a9(%rip), %rdx     # 0x6a010
pushq $-0x1
popq %rsi
xorl %eax, %eax
callq *0x8(%rcx)
movl (%rbx), %eax
xorl %ecx, %ecx
cmpl $0x13, %eax
cmovneq %rbx, %rcx
movq %rcx, 0x10(%rsp)
movq %rbx, 0x30(%rsp)
movslq 0xc0(%rbx), %rbx
leaq 0x8(%rbx), %rax
cqto
pushq $0x8
popq %rcx
idivq %rcx
negq %rdx
leaq (%rbx,%rdx), %r15
addq $0x6f, %r15
movq %r15, %rax
cqto
pushq $0x40
popq %rcx
idivq %rcx
subq %rdx, %r15
testq %rbx, %rbx
js 0x40d24
movl $0x80000000, %eax       # imm = 0x80000000
cmpq %rax, %r15
jge 0x40d24
movl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
xorl %r12d, %r12d
movq %rbp, %rcx
movq (%rcx), %rcx
testq %rcx, %rcx
je 0x3ff08
movl 0xc(%rcx), %edx
cmpl 0x8(%rcx), %edx
jge 0x3ff02
movl 0x14(%rcx), %edx
cmpl %r15d, %edx
je 0x3ffce
setg %sil
cmpl %eax, %edx
setl %dil
testb %dil, %sil
cmovneq %rcx, %r12
cmovnel %edx, %eax
addq $0x20, %rcx
jmp 0x3fed2
testq %r12, %r12
jne 0x3ffd1
movl $0x100000, %eax         # imm = 0x100000
xorl %edx, %edx
idivq %r15
testq %rax, %rax
cmovnel %eax, %r13d
movl %r13d, 0x48(%rsp)
movl %r13d, %eax
imull %r15d, %eax
movslq %eax, %r13
leaq 0x30(%r13), %rdi
callq 0x3290
movq %rax, %r14
movq %rax, %r12
testq %rax, %rax
je 0x40d87
movl 0x18(%rbp), %eax
leal 0x1(%rax), %ecx
movl %ecx, 0x18(%rbp)
movl %eax, (%r12)
andl $0x0, 0x4(%r12)
movl 0x48(%rsp), %eax
movl %eax, 0x8(%r12)
andq $0x0, 0xc(%r12)
movl %r15d, 0x14(%r12)
andq $0x0, 0x18(%r12)
movq (%rbp), %rax
movq %rax, 0x20(%r12)
leaq (%r14,%r13), %rcx
addq $0x30, %rcx
movq %rcx, 0x28(%r12)
addq %r13, 0x20(%rbp)
testq %rax, %rax
je 0x3ff99
movq %r12, 0x18(%rax)
addq $0x30, %r14
movq %r12, (%rbp)
movq 0x8(%rbp), %rax
testq %rax, %rax
je 0x3ffaf
cmpq %r14, %rax
jbe 0x3ffb3
movq %r14, 0x8(%rbp)
movq 0x10(%rbp), %rdx
xorl %eax, %eax
movq 0x28(%r12), %rcx
testq %rdx, %rdx
je 0x3ffc8
cmpq %rcx, %rdx
jae 0x3ffdb
movq %rcx, 0x10(%rbp)
jmp 0x3ffdb
movq %rcx, %r12
movl 0xc(%r12), %eax
movl 0x14(%r12), %r15d
imull %r15d, %eax
movslq %eax, %r13
leaq (%r12,%r13), %r14
addq $0x30, %r14
movslq %r15d, %rdx
xorl %r15d, %r15d
movq %r14, %rdi
xorl %esi, %esi
callq 0x3190
movl $0x1, (%r14)
movl %ebx, 0x4(%r14)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%r14)
andq $0x0, 0x10(%r14)
movq 0x28(%rbp), %rax
movslq 0x8(%rax), %rax
movq %rax, 0x18(%r14)
movb $0x0, 0x20(%r14)
incl 0xc(%r12)
incl 0x4(%r12)
leaq (%r12,%r13), %rax
addq $0x58, %rax
movq 0x50(%rsp), %rcx
movq %rax, 0x38(%rcx)
movq 0x30(%rsp), %rdi
callq 0x3d5d5
testb %al, %al
je 0x40afc
movq 0x58(%rsp), %rax
movq 0x68(%rax), %rbx
orl $-0x1, 0x8(%rbx)
movslq 0xc(%rbx), %rcx
movq (%rbx), %rax
testq %rcx, %rcx
jg 0x4008a
leal (%rcx,%rcx), %edx
movl %edx, 0xc(%rbx)
movq 0x10(%rbx), %rdi
imulq $0x30, %rcx, %rdx
movq %rax, %rsi
callq 0x42b1
movq %rax, (%rbx)
movl 0x8(%rbx), %r15d
incl %r15d
movl %r15d, 0x8(%rbx)
movslq %r15d, %rcx
imulq $0x18, %rcx, %rcx
movq 0x8(%rsp), %rdx
movq %rdx, (%rax,%rcx)
movq 0x30(%rsp), %rdx
movq %rdx, 0x8(%rax,%rcx)
andq $0x0, 0x10(%rax,%rcx)
movq %rbx, 0x10(%rsp)
testl %r15d, %r15d
js 0x40afc
movq (%rbx), %rax
leal -0x1(%r15), %ecx
movl %ecx, 0x8(%rbx)
movl %r15d, %edx
imulq $0x18, %rdx, %rdx
movq (%rax,%rdx), %r12
movq 0x10(%rax,%rdx), %r14
testq %r14, %r14
je 0x401aa
movq %r12, %rax
subq %r14, %rax
addq $-0x30, %rax
movslq 0x14(%r14), %rcx
cqto
idivq %rcx
movq %rdx, %r15
movq %r12, %rax
subq %rdx, %rax
negq %r15
movl (%rax), %eax
testl %eax, %eax
jle 0x40990
cmpl %eax, 0x4(%r14)
jl 0x40990
incl %eax
movl %eax, (%r12,%r15)
movl 0x4(%r14), %eax
incl %eax
movl %eax, 0x4(%r14)
movq 0x28(%rbp), %r15
cmpq %r12, 0x18(%r15)
ja 0x4021a
movslq 0x28(%r15), %rcx
shlq $0x3, %rcx
addq 0x10(%r15), %rcx
cmpq %r12, %rcx
jbe 0x4021a
leaq 0x20(%r15), %rbx
movq (%rbx), %rbx
leaq 0x8(%rbx), %r13
movq -0x10(%rbx), %rax
movq 0x10(%rax), %rax
leaq (,%rax,8), %rax
addq %r13, %rax
cmpq %r12, %rax
jae 0x40212
movq 0x10(%r15), %rax
movslq 0x28(%r15), %rcx
leaq (%rax,%rcx,8), %rax
addq $-0x8, %rax
cmpq %rax, %rbx
je 0x40191
movl (%r13), %eax
andl $-0x2, %eax
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
cmpl %ecx, %eax
jne 0x40149
movq 0x30(%rbp), %rcx
movq 0x20(%rcx), %rdi
pushq $-0x1
popq %rsi
leaq 0x2e8fc(%rip), %rdx     # 0x6ea9f
xorl %eax, %eax
callq *0x8(%rcx)
jmp 0x40150
movq 0x8(%rax,%rdx), %r14
movl (%r14), %edx
addl $-0x10, %edx
cmpl $0x9, %edx
ja 0x4093e
leaq 0x2d4cf(%rip), %rsi     # 0x6d694
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
cmpq %r12, 0x8(%rbp)
ja 0x4093e
movq 0x10(%rbp), %rax
testq %rax, %rax
je 0x401ea
cmpq %r12, %rax
jbe 0x4093e
movq %rbp, %r15
movq (%r15), %r15
testq %r15, %r15
je 0x4093e
leaq 0x30(%r15), %rax
cmpq %r12, %rax
ja 0x4020c
cmpq %r12, 0x28(%r15)
ja 0x406b4
addq $0x20, %r15
jmp 0x401ed
incq -0x8(%rbx)
movl 0x4(%r14), %eax
testl %eax, %eax
jne 0x4093e
movslq 0x8(%r14), %rax
movslq 0x14(%r14), %rcx
imulq %rax, %rcx
subq %rcx, 0x20(%rbp)
cmpq %r14, (%rbp)
jne 0x40240
movq 0x20(%r14), %rax
movq %rax, (%rbp)
movq 0x18(%r14), %rcx
movq 0x20(%r14), %rax
testq %rcx, %rcx
je 0x40251
movq %rax, 0x20(%rcx)
testq %rax, %rax
je 0x4025e
movq 0x18(%r14), %rcx
movq %rcx, 0x18(%rax)
movq %r14, %rdi
callq 0x3040
jmp 0x4093e
movq 0x10(%r12), %r14
cmpq %r14, 0x8(%rbp)
ja 0x4093e
movq 0x10(%rbp), %rax
testq %rax, %rax
je 0x4028c
cmpq %r14, %rax
jbe 0x4093e
movq %rbp, %r15
movq (%r15), %r15
testq %r15, %r15
je 0x4093e
leaq 0x30(%r15), %rbx
cmpq %r14, %rbx
ja 0x402ae
cmpq %r14, 0x28(%r15)
ja 0x405df
addq $0x20, %r15
jmp 0x4028f
xorl %r15d, %r15d
movslq 0x10(%r14), %rdx
cmpq %rdx, %r15
jge 0x4093e
movq 0x28(%r14), %rdx
movq (%rdx,%r15,8), %rsi
movq 0x108(%rsi), %r13
movl (%r13), %edx
cmpl $0x19, %edx
ja 0x4034f
movl $0x3fd0000, %edi        # imm = 0x3FD0000
btl %edx, %edi
jae 0x4034f
movslq 0x110(%rsi), %rbp
addq %r12, %rbp
cmpl $0x19, %edx
ja 0x40357
movl $0x2110000, %esi        # imm = 0x2110000
btl %edx, %esi
movq 0x10(%rsp), %rbx
jae 0x40308
movq (%rbp), %rbp
movslq 0xc(%rbx), %rdx
leal -0x1(%rdx), %esi
cmpl %esi, %ecx
jl 0x4032f
leal (%rdx,%rdx), %ecx
movl %ecx, 0xc(%rbx)
movq 0x10(%rbx), %rdi
imulq $0x30, %rdx, %rdx
movq %rax, %rsi
callq 0x42b1
movq %rax, (%rbx)
movl 0x8(%rbx), %ecx
incl %ecx
movl %ecx, 0x8(%rbx)
movslq %ecx, %rdx
imulq $0x18, %rdx, %rdx
movq %rbp, (%rax,%rdx)
movq %r13, 0x8(%rax,%rdx)
andq $0x0, 0x10(%rax,%rdx)
movq 0x40(%rsp), %rbp
incq %r15
jmp 0x402b7
movq 0x10(%rsp), %rbx
jmp 0x40308
movq 0x8(%r14), %rdx
movl (%rdx), %esi
cmpl $0x19, %esi
ja 0x4093e
movl $0x3fd0000, %edi        # imm = 0x3FD0000
btl %esi, %edi
jae 0x4093e
movl 0x10(%r14), %r15d
movslq 0xc0(%rdx), %rdi
testl %r15d, %r15d
movl $0x0, %edx
cmovlel %edx, %r15d
movq %r14, 0x48(%rsp)
subl $0x1, %r15d
jb 0x4093e
movq 0x8(%r14), %rbp
movl (%rbp), %edx
movq %r12, %rbx
cmpl $0x19, %edx
ja 0x403c1
movl $0x2110000, %esi        # imm = 0x2110000
btl %edx, %esi
movq %r12, %rbx
jae 0x403c1
movq (%r12), %rbx
movq 0x10(%rsp), %r13
movslq 0xc(%r13), %rdx
leal -0x1(%rdx), %esi
cmpl %esi, %ecx
jl 0x40401
leal (%rdx,%rdx), %ecx
movl %ecx, 0xc(%r13)
movq %r12, %r14
movq %rdi, %r12
movq 0x10(%r13), %rdi
imulq $0x30, %rdx, %rdx
movq %rax, %rsi
callq 0x42b1
movq %r12, %rdi
movq %r14, %r12
movq 0x48(%rsp), %r14
movq %rax, (%r13)
movl 0x8(%r13), %ecx
incl %ecx
movl %ecx, 0x8(%r13)
movslq %ecx, %rdx
imulq $0x18, %rdx, %rdx
movq %rbx, (%rax,%rdx)
movq %rbp, 0x8(%rax,%rdx)
andq $0x0, 0x10(%rax,%rdx)
addq %rdi, %r12
movq 0x40(%rsp), %rbp
jmp 0x40397
movq (%r12), %rbx
testq %rbx, %rbx
je 0x4093e
movq 0x8(%r12), %r14
jmp 0x40547
xorl %r15d, %r15d
movslq 0x10(%r14), %rdx
cmpq %rdx, %r15
jge 0x4093e
movq 0x28(%r14), %rdx
movq (%rdx,%r15,8), %rsi
movq 0x108(%rsi), %r13
movl (%r13), %edx
cmpl $0x19, %edx
ja 0x404dc
movl $0x3fd0000, %edi        # imm = 0x3FD0000
btl %edx, %edi
jae 0x404dc
movslq 0x110(%rsi), %rbp
addq %r12, %rbp
cmpl $0x19, %edx
ja 0x404e4
movl $0x2110000, %esi        # imm = 0x2110000
btl %edx, %esi
movq 0x10(%rsp), %rbx
jae 0x40495
movq (%rbp), %rbp
movslq 0xc(%rbx), %rdx
leal -0x1(%rdx), %esi
cmpl %esi, %ecx
jl 0x404bc
leal (%rdx,%rdx), %ecx
movl %ecx, 0xc(%rbx)
movq 0x10(%rbx), %rdi
imulq $0x30, %rdx, %rdx
movq %rax, %rsi
callq 0x42b1
movq %rax, (%rbx)
movl 0x8(%rbx), %ecx
incl %ecx
movl %ecx, 0x8(%rbx)
movslq %ecx, %rdx
imulq $0x18, %rdx, %rdx
movq %rbp, (%rax,%rdx)
movq %r13, 0x8(%rax,%rdx)
andq $0x0, 0x10(%rax,%rdx)
movq 0x40(%rsp), %rbp
incq %r15
jmp 0x40444
movq 0x10(%rsp), %rbx
jmp 0x40495
cmpq %r12, 0x8(%rbp)
ja 0x4093e
movq 0x10(%rbp), %rax
testq %rax, %rax
je 0x40507
cmpq %r12, %rax
jbe 0x4093e
movq %rbp, %r15
movq (%r15), %r15
testq %r15, %r15
je 0x4093e
leaq 0x30(%r15), %rax
cmpq %r12, %rax
ja 0x40529
cmpq %r12, 0x28(%r15)
ja 0x40789
addq $0x20, %r15
jmp 0x4050a
movq 0x8(%r12), %rbx
movq 0x8(%r14), %rcx
movq 0x28(%rcx), %rcx
movq 0x18(%rcx), %rcx
movq 0x108(%rcx), %r14
movq 0x10(%rsp), %r12
movslq 0xc(%r12), %rcx
cmpl %ecx, %r15d
jl 0x4057b
leal (%rcx,%rcx), %edx
movl %edx, 0xc(%r12)
movq 0x10(%r12), %rdi
imulq $0x30, %rcx, %rdx
movq %rax, %rsi
callq 0x42b1
movq %rax, (%r12)
movl 0x8(%r12), %r15d
incl %r15d
movl %r15d, 0x8(%r12)
movslq %r15d, %rcx
imulq $0x18, %rcx, %rcx
movq %rbx, (%rax,%rcx)
movq %r14, 0x8(%rax,%rcx)
andq $0x0, 0x10(%rax,%rcx)
jmp 0x4093e
cmpq %r12, 0x8(%rbp)
ja 0x4093e
movq 0x10(%rbp), %rax
testq %rax, %rax
je 0x405b7
cmpq %r12, %rax
jbe 0x4093e
movq %rbp, %r15
movq (%r15), %r15
testq %r15, %r15
je 0x4093e
leaq 0x30(%r15), %rax
cmpq %r12, %rax
ja 0x405d9
cmpq %r12, 0x28(%r15)
ja 0x4085e
addq $0x20, %r15
jmp 0x405ba
movq %r14, %rax
subq %rbx, %rax
movslq 0x14(%r15), %rcx
cqto
idivq %rcx
movq %r14, %rax
subq %rdx, %rax
cmpl $0x0, (%rax)
jle 0x40a44
movq %rdx, %r13
negq %r13
movl (%r14,%r13), %eax
testl %eax, %eax
jle 0x409b4
cmpl %eax, 0x4(%r15)
jl 0x409b4
incl %eax
movl %eax, (%r14,%r13)
movl 0x4(%r15), %eax
incl %eax
movl %eax, 0x4(%r15)
movq 0x28(%rbp), %rbx
cmpq %r14, 0x18(%rbx)
ja 0x4093a
movslq 0x28(%rbx), %rcx
shlq $0x3, %rcx
addq 0x10(%rbx), %rcx
cmpq %r14, %rcx
jbe 0x4093a
leaq 0x20(%rbx), %r12
movq (%r12), %r12
leaq 0x8(%r12), %r13
movq -0x10(%r12), %rax
movq 0x10(%rax), %rax
leaq (,%rax,8), %rax
addq %r13, %rax
cmpq %r14, %rax
jae 0x40931
movq 0x10(%rbx), %rax
movslq 0x28(%rbx), %rcx
leaq (%rax,%rcx,8), %rax
addq $-0x8, %rax
cmpq %rax, %r12
je 0x4069b
movl (%r13), %eax
andl $-0x2, %eax
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
cmpl %ecx, %eax
jne 0x40650
movq 0x30(%rbp), %rcx
movq 0x20(%rcx), %rdi
pushq $-0x1
popq %rsi
leaq 0x2e3f2(%rip), %rdx     # 0x6ea9f
xorl %eax, %eax
callq *0x8(%rcx)
jmp 0x40659
movq %r12, %rbx
subq %rax, %rbx
movslq 0x14(%r15), %rcx
movq %rbx, %rax
cqto
idivq %rcx
movq %r12, %rax
subq %rdx, %rax
cmpl $0x0, (%rax)
jle 0x40a78
movq %rdx, %r14
negq %r14
movl (%r12,%r14), %eax
testl %eax, %eax
jle 0x409d8
cmpl %eax, 0x4(%r15)
jl 0x409d8
incl %eax
movl %eax, (%r12,%r14)
movl 0x4(%r15), %eax
incl %eax
movl %eax, 0x4(%r15)
movq 0x28(%rbp), %r14
cmpq %r12, 0x18(%r14)
ja 0x4093a
movslq 0x28(%r14), %rcx
shlq $0x3, %rcx
addq 0x10(%r14), %rcx
cmpq %r12, %rcx
jbe 0x4093a
leaq 0x20(%r14), %rbx
movq (%rbx), %rbx
leaq 0x8(%rbx), %r13
movq -0x10(%rbx), %rax
movq 0x10(%rax), %rax
leaq (,%rax,8), %rax
addq %r13, %rax
cmpq %r12, %rax
jae 0x4092b
movq 0x10(%r14), %rax
movslq 0x28(%r14), %rcx
leaq (%rax,%rcx,8), %rax
addq $-0x8, %rax
cmpq %rax, %rbx
je 0x40770
movl (%r13), %eax
andl $-0x2, %eax
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
cmpl %ecx, %eax
jne 0x40728
movq 0x30(%rbp), %rcx
movq 0x20(%rcx), %rdi
pushq $-0x1
popq %rsi
leaq 0x2e31d(%rip), %rdx     # 0x6ea9f
xorl %eax, %eax
callq *0x8(%rcx)
jmp 0x4072f
movq %r12, %rbx
subq %rax, %rbx
movslq 0x14(%r15), %rcx
movq %rbx, %rax
cqto
idivq %rcx
movq %r12, %rax
subq %rdx, %rax
cmpl $0x0, (%rax)
jle 0x40aa4
movq %rdx, %r14
negq %r14
movl (%r12,%r14), %eax
testl %eax, %eax
jle 0x409fc
cmpl %eax, 0x4(%r15)
jl 0x409fc
incl %eax
movl %eax, (%r12,%r14)
movl 0x4(%r15), %eax
incl %eax
movl %eax, 0x4(%r15)
movq 0x28(%rbp), %r14
cmpq %r12, 0x18(%r14)
ja 0x4093a
movslq 0x28(%r14), %rcx
shlq $0x3, %rcx
addq 0x10(%r14), %rcx
cmpq %r12, %rcx
jbe 0x4093a
leaq 0x20(%r14), %rbx
movq (%rbx), %rbx
leaq 0x8(%rbx), %r13
movq -0x10(%rbx), %rax
movq 0x10(%rax), %rax
leaq (,%rax,8), %rax
addq %r13, %rax
cmpq %r12, %rax
jae 0x4092b
movq 0x10(%r14), %rax
movslq 0x28(%r14), %rcx
leaq (%rax,%rcx,8), %rax
addq $-0x8, %rax
cmpq %rax, %rbx
je 0x40845
movl (%r13), %eax
andl $-0x2, %eax
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
cmpl %ecx, %eax
jne 0x407fd
movq 0x30(%rbp), %rcx
movq 0x20(%rcx), %rdi
pushq $-0x1
popq %rsi
leaq 0x2e248(%rip), %rdx     # 0x6ea9f
xorl %eax, %eax
callq *0x8(%rcx)
jmp 0x40804
movq %r12, %rbx
subq %rax, %rbx
movslq 0x14(%r15), %rcx
movq %rbx, %rax
cqto
idivq %rcx
movq %r12, %rax
subq %rdx, %rax
cmpl $0x0, (%rax)
jle 0x40ad0
movq %rdx, %r14
negq %r14
movl (%r12,%r14), %eax
testl %eax, %eax
jle 0x40a20
cmpl %eax, 0x4(%r15)
jl 0x40a20
incl %eax
movl %eax, (%r12,%r14)
movl 0x4(%r15), %eax
incl %eax
movl %eax, 0x4(%r15)
movq 0x28(%rbp), %r14
cmpq %r12, 0x18(%r14)
ja 0x4093a
movslq 0x28(%r14), %rcx
shlq $0x3, %rcx
addq 0x10(%r14), %rcx
cmpq %r12, %rcx
jbe 0x4093a
leaq 0x20(%r14), %rbx
movq (%rbx), %rbx
leaq 0x8(%rbx), %r13
movq -0x10(%rbx), %rax
movq 0x10(%rax), %rax
leaq (,%rax,8), %rax
addq %r13, %rax
cmpq %r12, %rax
jae 0x4092b
movq 0x10(%r14), %rax
movslq 0x28(%r14), %rcx
leaq (%rax,%rcx,8), %rax
addq $-0x8, %rax
cmpq %rax, %rbx
je 0x40912
movl (%r13), %eax
andl $-0x2, %eax
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
cmpl %ecx, %eax
jne 0x408ce
movq 0x30(%rbp), %rcx
movq 0x20(%rcx), %rdi
pushq $-0x1
popq %rsi
leaq 0x2e17b(%rip), %rdx     # 0x6ea9f
xorl %eax, %eax
callq *0x8(%rcx)
jmp 0x408d5
incq -0x8(%rbx)
jmp 0x40936
incq -0x8(%r12)
movl 0x4(%r15), %eax
testl %eax, %eax
je 0x4094c
movq 0x10(%rsp), %rbx
movl 0x8(%rbx), %r15d
jmp 0x400b3
movslq 0x8(%r15), %rax
movslq 0x14(%r15), %rcx
imulq %rax, %rcx
subq %rcx, 0x20(%rbp)
cmpq %r15, (%rbp)
jne 0x4096a
movq 0x20(%r15), %rax
movq %rax, (%rbp)
movq 0x18(%r15), %rcx
movq 0x20(%r15), %rax
testq %rcx, %rcx
je 0x4097b
movq %rax, 0x20(%rcx)
testq %rax, %rax
je 0x40988
movq 0x18(%r15), %rcx
movq %rcx, 0x18(%rax)
movq %r15, %rdi
jmp 0x40261
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2e0d5(%rip), %rdx     # 0x6ea77
movq %r12, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movl (%r12,%r15), %eax
jmp 0x40112
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2e0b1(%rip), %rdx     # 0x6ea77
movq %r14, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movl (%r14,%r13), %eax
jmp 0x40619
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2e08d(%rip), %rdx     # 0x6ea77
movq %r12, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movl (%r12,%r14), %eax
jmp 0x406f1
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2e069(%rip), %rdx     # 0x6ea77
movq %r12, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movl (%r12,%r14), %eax
jmp 0x407c6
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2e045(%rip), %rdx     # 0x6ea77
movq %r12, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movl (%r12,%r14), %eax
jmp 0x4089b
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2e00a(%rip), %rdx     # 0x6ea60
movq %r14, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movq 0x10(%r12), %r14
movslq 0x14(%r15), %rcx
movq %r14, %rax
subq %rbx, %rax
cqto
idivq %rcx
jmp 0x405fd
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2dfd6(%rip), %rdx     # 0x6ea60
movq %r12, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movslq 0x14(%r15), %rcx
movq %rbx, %rax
cqto
idivq %rcx
jmp 0x406d5
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2dfaa(%rip), %rdx     # 0x6ea60
movq %r12, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movslq 0x14(%r15), %rcx
movq %rbx, %rax
cqto
idivq %rcx
jmp 0x407aa
movq 0x30(%rbp), %r8
movq 0x20(%r8), %rdi
pushq $-0x1
popq %rsi
leaq 0x2df7e(%rip), %rdx     # 0x6ea60
movq %r12, %rcx
xorl %eax, %eax
callq *0x8(%r8)
movslq 0x14(%r15), %rcx
movq %rbx, %rax
cqto
idivq %rcx
jmp 0x4087f
movq 0x50(%rsp), %rax
movq 0x38(%rax), %rbx
movq 0x30(%rsp), %rax
movl (%rax), %r15d
movslq 0xc0(%rax), %r14
testq %rbx, %rbx
je 0x40cb7
movl %r15d, %edi
movq 0x8(%rsp), %rsi
callq 0x3d27e
testb %al, %al
jne 0x40cd4
addl $-0x4, %r15d
cmpl $0x16, %r15d
ja 0x40bad
leaq 0x2caf5(%rip), %rax     # 0x6d638
movslq (%rax,%r15,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x8(%rsp), %rax
movq %rax, (%rbx)
jmp 0x40bc5
movq 0x8(%rsp), %rsi
testq %rsi, %rsi
movq 0x20(%rsp), %r15
je 0x40dc5
movq %rbx, %rdi
movq %r14, %rdx
callq 0x3260
jmp 0x40bca
movq 0x8(%rsp), %rax
movb %al, (%rbx)
jmp 0x40bc5
movq 0x8(%rsp), %rax
movl %eax, (%rbx)
jmp 0x40bc5
movq 0x8(%rsp), %rax
movw %ax, (%rbx)
jmp 0x40bc5
movsd 0x8(%rsp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, (%rbx)
jmp 0x40bc5
cmpq $0x0, 0x8(%rsp)
setne (%rbx)
jmp 0x40bc5
movq 0x38(%rsp), %rcx
movq 0x20(%rcx), %rdi
leaq 0x29453(%rip), %rdx     # 0x6a010
pushq $-0x1
popq %rsi
xorl %eax, %eax
callq *0x8(%rcx)
movq 0x20(%rsp), %r15
movq 0x28(%rsp), %r14
movq 0x18(%rsp), %rcx
movq 0x18(%r14), %rsi
testq %rsi, %rsi
je 0x40c00
movq %r15, %rdi
movq 0x58(%rsp), %rdx
movq %rbp, %rcx
movq 0x38(%rsp), %r8
callq 0x3edda
movq 0x18(%rsp), %rcx
movq 0x50(%rsp), %rdx
movq %rax, 0x40(%rdx)
movq 0x60(%rsp), %rax
leaq (%rcx,%rax), %rbx
addq $0x58, %rbx
movq 0x20(%r14), %rsi
testq %rsi, %rsi
je 0x40c34
movq %r15, %rdi
movq 0x58(%rsp), %rdx
movq %rbp, %rcx
movq 0x38(%rsp), %r8
callq 0x3edda
movq 0x50(%rsp), %rcx
movq %rax, 0x48(%rcx)
movq %rbx, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x38(%rsp), %r8
movq 0x20(%r8), %rdi
leaq 0x2dde4(%rip), %rdx     # 0x6ea3a
pushq $-0x1
popq %rsi
movq %rbx, %rcx
xorl %eax, %eax
callq *0x8(%r8)
jmp 0x3ee51
movq 0x38(%rsp), %rcx
movq 0x20(%rcx), %rdi
leaq 0x29389(%rip), %rdx     # 0x6a000
pushq $-0x1
popq %rsi
xorl %eax, %eax
callq *0x8(%rcx)
jmp 0x3fcf4
movq 0x38(%rsp), %rax
movq 0x8(%rax), %r13
movq 0x20(%rax), %r12
movl %r15d, %edi
callq 0x1601e
leaq 0x2953c(%rip), %rdx     # 0x6a1dc
pushq $-0x1
popq %rsi
movq %r12, %rdi
movq %rax, %rcx
xorl %eax, %eax
callq *%r13
pushq $0x1
popq %r13
jmp 0x3fd0d
movq 0x38(%rsp), %rcx
movq 0x20(%rcx), %rdi
leaq 0x29339(%rip), %rdx     # 0x6a000
pushq $-0x1
popq %rsi
xorl %eax, %eax
callq *0x8(%rcx)
jmp 0x40b1d
movq 0x38(%rsp), %rax
movq 0x8(%rax), %r13
movq 0x20(%rax), %r12
movl %r15d, %edi
callq 0x1601e
leaq 0x294ec(%rip), %rdx     # 0x6a1dc
pushq $-0x1
popq %rsi
movq %r12, %rdi
movq %rax, %rcx
xorl %eax, %eax
callq *%r13
jmp 0x40b32
movq 0x38(%rsp), %r8
movq 0x20(%r8), %rdi
leaq 0x2dd27(%rip), %rdx     # 0x6ea3a
pushq $-0x1
popq %rsi
movq %rbx, %rcx
xorl %eax, %eax
callq *0x8(%r8)
jmp 0x3f110
movq 0x38(%rsp), %r8
movq 0x20(%r8), %rdi
leaq 0x2dd06(%rip), %rdx     # 0x6ea3a
pushq $-0x1
popq %rsi
movq %rbx, %rcx
xorl %eax, %eax
callq *0x8(%r8)
jmp 0x3fec7
movq 0x30(%rbp), %rcx
movq 0x20(%rcx), %rdi
leaq 0x2555b(%rip), %rdx     # 0x662af
pushq $-0x1
popq %rsi
xorl %eax, %eax
movq %r8, 0x18(%rsp)
callq *0x8(%rcx)
movq 0x18(%rsp), %r8
jmp 0x3eedf
movq 0x30(%rbp), %rcx
movq 0x20(%rcx), %rdi
leaq 0x25535(%rip), %rdx     # 0x662af
pushq $-0x1
popq %rsi
xorl %eax, %eax
callq *0x8(%rcx)
jmp 0x3f194
movq 0x30(%rbp), %rcx
movq 0x20(%rcx), %rdi
leaq 0x25519(%rip), %rdx     # 0x662af
pushq $-0x1
popq %rsi
xorl %eax, %eax
callq *0x8(%rcx)
jmp 0x3ff49
movq 0x38(%rsp), %rcx
movq 0x20(%rcx), %rdi
leaq 0x2924d(%rip), %rdx     # 0x6a000
pushq $-0x1
popq %rsi
xorl %eax, %eax
callq *0x8(%rcx)
movq 0x8(%rsp), %rsi
jmp 0x3fd44
movq 0x38(%rsp), %rcx
movq 0x20(%rcx), %rdi
leaq 0x2922b(%rip), %rdx     # 0x6a000
pushq $-0x1
popq %rsi
xorl %eax, %eax
callq *0x8(%rcx)
movq 0x8(%rsp), %rsi
jmp 0x40b69