// File: /workspace/github_c_makefile_star2_O1/vtereshkov[P]umka-lang/src/umka_compiler.c
// Function: compilerInit
void compilerInit(Compiler *comp, const char *fileName, const char *sourceString, int stackSize, int argc, char **argv, bool fileSystemEnabled, bool implLibsEnabled)
{
#ifdef _WIN32
    comp->originalInputCodepage = GetConsoleCP();
    comp->originalOutputCodepage = GetConsoleOutputCP();
    SetConsoleCP(CP_UTF8);
    SetConsoleOutputCP(CP_UTF8);
#endif

    compilerSetAPI(comp);

    storageInit  (&comp->storage, &comp->error);
    moduleInit   (&comp->modules, &comp->storage, implLibsEnabled, &comp->error);
    blocksInit   (&comp->blocks, &comp->error);
    externalInit (&comp->externals, &comp->storage);
    typeInit     (&comp->types, &comp->storage, &comp->error);
    identInit    (&comp->idents, &comp->storage, &comp->debug, &comp->error);
    constInit    (&comp->consts, &comp->error);
    genInit      (&comp->gen, &comp->storage, &comp->debug, &comp->error);
    vmInit       (&comp->vm, &comp->storage, stackSize, fileSystemEnabled, &comp->error);

    vmReset(&comp->vm, comp->gen.code, comp->gen.debugPerInstr);

    comp->lex.fileName = "<unknown>";
    comp->lex.tok.line = 1;
    comp->lex.tok.pos = 1;
    comp->debug.fnName = "<unknown>";

    char filePath[DEFAULT_STR_LEN + 1] = "";
    moduleAssertRegularizePath(&comp->modules, fileName, comp->modules.curFolder, filePath, DEFAULT_STR_LEN + 1);

    comp->lex.fileName = filePath;

    lexInit(&comp->lex, &comp->storage, &comp->debug, filePath, sourceString, false, &comp->error);

    comp->argc  = argc;
    comp->argv  = argv;

    comp->blocks.module = moduleAdd(&comp->modules, "#universe");

    compilerDeclareBuiltinTypes (comp);
    compilerDeclareBuiltinIdents(comp);
    compilerDeclareExternalFuncs(comp, fileSystemEnabled);

    // Command-line-arguments
    Type *argvType = typeAdd(&comp->types, &comp->blocks, TYPE_ARRAY);
    argvType->base = comp->strType;
    typeResizeArray(argvType, comp->argc);

    Ident *rtlargv = identAllocVar(&comp->idents, &comp->types, &comp->modules, &comp->blocks, "rtlargv", argvType, true);
    char **argArray = (char **)rtlargv->ptr;

    for (int i = 0; i < comp->argc; i++)
    {
        argArray[i] = storageAddStr(&comp->storage, strlen(comp->argv[i]));
        strcpy(argArray[i], comp->argv[i]);
    }

    // Embedded standard library modules
    const int numRuntimeModules = sizeof(runtimeModuleSources) / sizeof(runtimeModuleSources[0]);
    for (int i = 0; i < numRuntimeModules; i++)
    {
        char runtimeModulePath[DEFAULT_STR_LEN + 1] = "";
        moduleAssertRegularizePath(&comp->modules, runtimeModuleNames[i], comp->modules.curFolder, runtimeModulePath, DEFAULT_STR_LEN + 1);

        const bool runtimeModuleTrusted = strcmp(runtimeModuleNames[i], "std.um") == 0;
        moduleAddSource(&comp->modules, runtimeModulePath, runtimeModuleSources[i], runtimeModuleTrusted);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x278, %rsp            # imm = 0x278
movq %r9, 0x28(%rsp)
movl %r8d, 0x20(%rsp)
movl %ecx, 0x38(%rsp)
movq %rdx, 0x18(%rsp)
movq %rsi, 0x40(%rsp)
movq %rdi, %rbx
movb 0x2b8(%rsp), %r12b
leaq -0x146b(%rip), %rax     # 0xc514
movq %rax, (%rdi)
leaq -0x146b(%rip), %rax     # 0xc51e
movq %rax, 0x8(%rdi)
leaq -0x10d6(%rip), %rax     # 0xc8be
movq %rax, 0x10(%rdi)
leaq -0x10b5(%rip), %rax     # 0xc8ea
movq %rax, 0x18(%rdi)
leaq -0x108c(%rip), %rax     # 0xc91e
movq %rax, 0x20(%rdi)
leaq -0x103d(%rip), %rax     # 0xc978
movq %rax, 0x28(%rdi)
leaq -0x1036(%rip), %rax     # 0xc98a
movq %rax, 0x30(%rdi)
leaq -0x1039(%rip), %rax     # 0xc992
movq %rax, 0x38(%rdi)
leaq -0x1038(%rip), %rax     # 0xc99e
movq %rax, 0x40(%rdi)
leaq -0x103e(%rip), %rax     # 0xc9a3
movq %rax, 0x48(%rdi)
leaq -0x1044(%rip), %rax     # 0xc9a8
movq %rax, 0x50(%rdi)
leaq -0x104a(%rip), %rax     # 0xc9ad
movq %rax, 0x58(%rdi)
leaq -0x1050(%rip), %rax     # 0xc9b2
movq %rax, 0x60(%rdi)
leaq -0xf4e(%rip), %rax      # 0xcabf
movq %rax, 0x68(%rdi)
leaq -0xf4d(%rip), %rax      # 0xcacb
movq %rax, 0x70(%rdi)
leaq -0xf4c(%rip), %rax      # 0xcad7
movq %rax, 0x78(%rdi)
leaq -0xf44(%rip), %rax      # 0xcaea
movq %rax, 0x80(%rdi)
leaq -0xf3f(%rip), %rax      # 0xcafd
movq %rax, 0x88(%rdi)
leaq -0xf41(%rip), %rax      # 0xcb09
movq %rax, 0x90(%rdi)
leaq -0xf43(%rip), %rax      # 0xcb15
movq %rax, 0x98(%rdi)
leaq -0xf45(%rip), %rax      # 0xcb21
movq %rax, 0xa0(%rdi)
leaq -0xf47(%rip), %rax      # 0xcb2d
movq %rax, 0xa8(%rdi)
leaq -0xf45(%rip), %rax      # 0xcb3d
movq %rax, 0xb0(%rdi)
leaq -0xf4b(%rip), %rax      # 0xcb45
movq %rax, 0xb8(%rdi)
leaq -0xf4d(%rip), %rax      # 0xcb51
movq %rax, 0xc0(%rdi)
leaq -0xf48(%rip), %rax      # 0xcb64
movq %rax, 0xc8(%rdi)
leaq -0xf30(%rip), %rax      # 0xcb8a
movq %rax, 0xd0(%rdi)
leaq -0xf31(%rip), %rax      # 0xcb97
movq %rax, 0xd8(%rdi)
leaq -0xf21(%rip), %rax      # 0xcbb5
movq %rax, 0xe0(%rdi)
leaq -0xf27(%rip), %rax      # 0xcbbd
movq %rax, 0xe8(%rdi)
leaq 0xf0(%rdi), %r15
leaq 0x50f8(%rdi), %rbp
movq %r15, %rdi
movq %rbp, %rsi
callq 0xcd1d
leaq 0x100(%rbx), %rdi
movq %rdi, 0x48(%rsp)
movzbl %r12b, %edx
movq %r15, %rsi
movq %rbp, %rcx
callq 0xce5c
leaq 0x4220(%rbx), %r13
movq %r13, %rdi
movq %rbp, %rsi
callq 0xd749
leaq 0x4b98(%rbx), %rdi
movq %rdi, 0x68(%rsp)
movq %r15, %rsi
callq 0xd833
leaq 0x4e18(%rbx), %rdi
movq %rdi, 0x58(%rsp)
movq %r15, %rsi
movq %rbp, %rdx
callq 0x1ea34
leaq 0x4e38(%rbx), %rdi
movq %rdi, 0x50(%rsp)
leaq 0x50e0(%rbx), %r12
movq %r15, %rsi
movq %r12, %rdx
movq %r12, 0x10(%rsp)
movq %rbp, %rcx
callq 0x19a2c
leaq 0x4e68(%rbx), %rdi
movq %rbp, %rsi
callq 0xeeb4
leaq 0x4e70(%rbx), %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %rbp, %rcx
callq 0x17d60
leaq 0x5058(%rbx), %r12
movzbl 0x2b0(%rsp), %ecx
movl %ecx, 0x30(%rsp)
movq %r12, %rdi
movq %r15, %rsi
movl 0x38(%rsp), %edx
movq %rbp, %r8
callq 0x204db
movq 0x4e70(%rbx), %rsi
movq 0x5040(%rbx), %rdx
movq %r12, %rdi
callq 0x20ad9
leaq 0x4ba8(%rbx), %rax
movq %rax, 0x8(%rsp)
leaq 0x657b9(%rip), %rax     # 0x733ad
movq %rax, 0x4ba8(%rbx)
movabsq $0x100000001, %rcx      # imm = 0x100000001
movq %rcx, 0x4ce0(%rbx)
movq %rax, 0x50e8(%rbx)
leaq 0x170(%rsp), %r14
movl $0x100, %edx            # imm = 0x100
movq %r14, %rdi
xorl %esi, %esi
callq 0x3190
leaq 0x4108(%rbx), %rdx
movq 0x48(%rsp), %r12
movq %r12, %rdi
movq 0x40(%rsp), %rsi
movq %rdx, 0x38(%rsp)
movq %r14, %rcx
movl $0x100, %r8d            # imm = 0x100
callq 0xd70b
movq %r14, 0x4ba8(%rbx)
movq %rbp, (%rsp)
movq 0x8(%rsp), %rdi
movq %r15, 0x40(%rsp)
movq %r15, %rsi
movq 0x58(%rsp), %r15
movq 0x10(%rsp), %rdx
movq %r14, %rcx
movq 0x18(%rsp), %r8
xorl %r9d, %r9d
callq 0x1a6f4
movl 0x20(%rsp), %eax
movl %eax, 0x52b8(%rbx)
movq 0x28(%rsp), %rax
movq %rax, 0x52c0(%rbx)
leaq 0x65717(%rip), %rsi     # 0x733b7
movq %r12, %rdi
callq 0xd137
movl %eax, 0x4b88(%rbx)
movq %r15, %r14
movq %r15, %rdi
movq %r13, %rsi
movl $0x2, %edx
callq 0x1ea48
movq %rax, 0x5218(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0x3, %edx
callq 0x1ea48
movq %rax, 0x5220(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0x4, %edx
callq 0x1ea48
movq %rax, 0x5228(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0x5, %edx
callq 0x1ea48
movq %rax, 0x5230(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0x6, %edx
callq 0x1ea48
movq %rax, 0x5238(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0x7, %edx
callq 0x1ea48
movq %rax, 0x5240(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0x8, %edx
callq 0x1ea48
movq %rax, 0x5248(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0x9, %edx
callq 0x1ea48
movq %rax, 0x5250(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0xa, %edx
callq 0x1ea48
movq %rax, 0x5258(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0xb, %edx
callq 0x1ea48
movq %rax, 0x5260(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0xc, %edx
callq 0x1ea48
movq %rax, 0x5268(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0xd, %edx
callq 0x1ea48
movq %rax, 0x5270(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0xe, %edx
callq 0x1ea48
movq %rax, 0x5278(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0xf, %edx
callq 0x1ea48
movq %rax, 0x5280(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0x14, %edx
callq 0x1ea48
movq %rax, 0x5288(%rbx)
movq 0x5218(%rbx), %rdx
movq %r15, %rdi
movq %r13, %rsi
callq 0x1edd3
movq %rax, 0x5298(%rbx)
movq 0x5220(%rbx), %rdx
movq %r15, %rdi
movq %r13, %rsi
callq 0x1edd3
movq %rax, 0x52a0(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0x17, %edx
callq 0x1ea48
movq %rax, %r12
movq 0x5298(%rbx), %rdx
leaq 0x65573(%rip), %rcx     # 0x733d0
movq %r15, %rdi
movq %rax, %rsi
callq 0x1f6e2
movq 0x5298(%rbx), %rdx
leaq 0x65560(%rip), %rcx     # 0x733d6
movq %r15, %rdi
movq %r12, %rsi
callq 0x1f6e2
movq %r12, 0x52a8(%rbx)
movq %r15, %rdi
movq %r13, %rsi
movl $0x19, %edx
callq 0x1ea48
movq %rax, %r15
movq %r14, %rdi
movq %r13, %rsi
movl $0x1a, %edx
callq 0x1ea48
movq %rax, %rbp
leaq 0x28(%rax), %rsi
movq 0x52a8(%rbx), %rdx
leaq 0x65520(%rip), %rcx     # 0x733e0
movq %r14, %rdi
xorl %r8d, %r8d
callq 0x1fbf9
movq 0x5218(%rbx), %rax
movq %rax, 0xb8(%rbp)
movq %r14, %rdi
movq %r13, %rsi
movl $0x18, %edx
callq 0x1ea48
movq %rax, %r12
leaq 0x654f7(%rip), %rcx     # 0x733ea
movq %r14, %rdi
movq %rax, %rsi
movq %rbp, %rdx
callq 0x1f6e2
movq 0x52a8(%rbx), %rdx
movq %r14, %rdi
movq %r12, %rsi
leaq 0x654cb(%rip), %rcx     # 0x733e0
callq 0x1f6e2
movq %r12, 0x8(%r15)
movq %r15, 0x5290(%rbx)
movq %r14, %rdi
movq %r13, %rsi
movl $0x16, %edx
callq 0x1ea48
movq %rax, %r12
movq 0x5298(%rbx), %rdx
leaq 0x654a8(%rip), %rcx     # 0x733ee
movq %r14, %rdi
movq %rax, %rsi
callq 0x1f6e2
movq %r14, %rdi
movq %r14, %r15
movq %r13, %rsi
movq %r12, %rdx
callq 0x1edd3
movq %rax, 0x52b0(%rbx)
movq 0x5268(%rbx), %r8
movq $0x1, (%rsp)
leaq 0x65475(%rip), %rcx     # 0x733f4
movq 0x50(%rsp), %r14
movq %r14, %rdi
movq 0x48(%rsp), %r12
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x19dcf
movq 0x5268(%rbx), %r8
xorl %ebp, %ebp
movq %rbp, (%rsp)
leaq 0x65448(%rip), %rcx     # 0x733f9
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x19dcf
movq 0x52a0(%rbx), %r8
movq %rbp, (%rsp)
leaq 0x6e40d(%rip), %rcx     # 0x7c3e4
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x19dcf
movq 0x5218(%rbx), %r8
leaq 0x69281(%rip), %rcx     # 0x7727a
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x5228(%rbx), %r8
leaq 0x653e5(%rip), %rcx     # 0x73400
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x5230(%rbx), %r8
leaq 0x653c9(%rip), %rcx     # 0x73406
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x5238(%rbx), %r8
leaq 0x653ae(%rip), %rcx     # 0x7340d
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x5240(%rbx), %r8
leaq 0x68fe7(%rip), %rcx     # 0x77068
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x5248(%rbx), %r8
leaq 0x6535c(%rip), %rcx     # 0x733ff
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x5250(%rbx), %r8
leaq 0x65340(%rip), %rcx     # 0x73405
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x5258(%rbx), %r8
leaq 0x65325(%rip), %rcx     # 0x7340c
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x5260(%rbx), %r8
leaq 0x6530a(%rip), %rcx     # 0x73413
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x5268(%rbx), %r8
leaq 0x652ed(%rip), %rcx     # 0x73418
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x5270(%rbx), %r8
leaq 0x652d0(%rip), %rcx     # 0x7341d
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x5278(%rbx), %r8
leaq 0x652b3(%rip), %rcx     # 0x73422
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x5280(%rbx), %r8
leaq 0x65298(%rip), %rcx     # 0x73429
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x5290(%rbx), %r8
leaq 0x6deb6(%rip), %rcx     # 0x7c069
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x52a8(%rbx), %r8
leaq 0x65259(%rip), %rcx     # 0x7342e
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x52b0(%rbx), %r8
leaq 0x6523b(%rip), %rcx     # 0x73432
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a25d
movq 0x5240(%rbx), %r8
leaq 0x65221(%rip), %rcx     # 0x7343a
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
xorl %r9d, %r9d
callq 0x1a277
movq 0x5240(%rbx), %r8
leaq 0x65201(%rip), %rcx     # 0x73439
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %r9d
callq 0x1a277
movq 0x5288(%rbx), %r8
leaq 0x651e7(%rip), %rcx     # 0x73441
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x2, %r9d
callq 0x1a277
movq 0x5240(%rbx), %r8
leaq 0x651ce(%rip), %rcx     # 0x7344a
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x3, %r9d
callq 0x1a277
movq 0x5240(%rbx), %r8
leaq 0x651ab(%rip), %rcx     # 0x73449
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x4, %r9d
callq 0x1a277
movq 0x5240(%rbx), %r8
leaq 0x65190(%rip), %rcx     # 0x73450
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x5, %r9d
callq 0x1a277
movq 0x5240(%rbx), %r8
leaq 0x65175(%rip), %rcx     # 0x73457
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x8, %r9d
callq 0x1a277
movq 0x5240(%rbx), %r8
leaq 0x65159(%rip), %rcx     # 0x7345d
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x9, %r9d
callq 0x1a277
movq 0x5240(%rbx), %r8
leaq 0x6513d(%rip), %rcx     # 0x73463
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0xa, %r9d
callq 0x1a277
movq 0x5240(%rbx), %r8
leaq 0x65120(%rip), %rcx     # 0x73468
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0xb, %r9d
callq 0x1a277
movq 0x5240(%rbx), %r8
leaq 0x65105(%rip), %rcx     # 0x7346f
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0xc, %r9d
callq 0x1a277
movq 0x5280(%rbx), %r8
leaq 0x650e2(%rip), %rcx     # 0x7346e
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0xd, %r9d
callq 0x1a277
movq 0x5280(%rbx), %r8
leaq 0x650c5(%rip), %rcx     # 0x73473
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0xe, %r9d
callq 0x1a277
movq 0x5280(%rbx), %r8
leaq 0x650a8(%rip), %rcx     # 0x73478
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0xf, %r9d
callq 0x1a277
movq 0x5280(%rbx), %r8
leaq 0x6508a(%rip), %rcx     # 0x7347c
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x10, %r9d
callq 0x1a277
movq 0x5280(%rbx), %r8
leaq 0x6506c(%rip), %rcx     # 0x73480
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x11, %r9d
callq 0x1a277
movq 0x5280(%rbx), %r8
leaq 0x6504f(%rip), %rcx     # 0x73485
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x12, %r9d
callq 0x1a277
movq 0x5280(%rbx), %r8
leaq 0x65033(%rip), %rcx     # 0x7348b
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x13, %r9d
callq 0x1a277
movq 0x5280(%rbx), %r8
leaq 0x65015(%rip), %rcx     # 0x7348f
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x14, %r9d
callq 0x1a277
movq 0x5298(%rbx), %r8
leaq 0x64ff7(%rip), %rcx     # 0x73493
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x15, %r9d
callq 0x1a277
movq 0x5298(%rbx), %r8
leaq 0x64fd9(%rip), %rcx     # 0x73497
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x16, %r9d
callq 0x1a277
movq 0x5298(%rbx), %r8
leaq 0x64fbc(%rip), %rcx     # 0x7349c
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1b, %r9d
callq 0x1a277
movq 0x5298(%rbx), %r8
leaq 0x64f9f(%rip), %rcx     # 0x734a1
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1c, %r9d
callq 0x1a277
movq 0x5298(%rbx), %r8
leaq 0x64f84(%rip), %rcx     # 0x734a8
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1d, %r9d
callq 0x1a277
movq 0x5298(%rbx), %r8
leaq 0x64f69(%rip), %rcx     # 0x734af
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1e, %r9d
callq 0x1a277
movq 0x5298(%rbx), %r8
leaq 0x64f4e(%rip), %rcx     # 0x734b6
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1f, %r9d
callq 0x1a277
movq 0x5218(%rbx), %r8
leaq 0x64f32(%rip), %rcx     # 0x734bc
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x20, %r9d
callq 0x1a277
movq 0x5240(%rbx), %r8
leaq 0x68cd4(%rip), %rcx     # 0x77280
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x22, %r9d
callq 0x1a277
movq 0x5240(%rbx), %r8
leaq 0x64ef3(%rip), %rcx     # 0x734c1
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x23, %r9d
callq 0x1a277
movq 0x5240(%rbx), %r8
leaq 0x64ed5(%rip), %rcx     # 0x734c5
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x24, %r9d
callq 0x1a277
movq 0x5240(%rbx), %r8
leaq 0x64eba(%rip), %rcx     # 0x734cc
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x25, %r9d
callq 0x1a277
movq 0x5298(%rbx), %r8
leaq 0x64ea3(%rip), %rcx     # 0x734d7
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x26, %r9d
callq 0x1a277
movq 0x5268(%rbx), %r8
leaq 0x64e89(%rip), %rcx     # 0x734df
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x27, %r9d
callq 0x1a277
movq 0x5268(%rbx), %r8
leaq 0x64e72(%rip), %rcx     # 0x734ea
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x28, %r9d
callq 0x1a277
movq 0x5298(%rbx), %r8
leaq 0x64e5b(%rip), %rcx     # 0x734f5
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x29, %r9d
callq 0x1a277
movq 0x5268(%rbx), %r8
leaq 0x64e41(%rip), %rcx     # 0x734fd
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x2a, %r9d
callq 0x1a277
movq 0x5268(%rbx), %r8
leaq 0x64e25(%rip), %rcx     # 0x73503
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x2b, %r9d
callq 0x1a277
movq 0x5298(%rbx), %r8
leaq 0x6dc1f(%rip), %rcx     # 0x7c31f
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x2c, %r9d
callq 0x1a277
movq 0x5218(%rbx), %r8
leaq 0x64dea(%rip), %rcx     # 0x7350c
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x2d, %r9d
callq 0x1a277
movq 0x5240(%rbx), %r8
leaq 0x64dcf(%rip), %rcx     # 0x73513
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x2e, %r9d
callq 0x1a277
movq 0x5218(%rbx), %r8
leaq 0x64db6(%rip), %rcx     # 0x7351c
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x2f, %r9d
callq 0x1a277
leaq 0x64da0(%rip), %rsi     # 0x73521
leaq 0xd09c(%rip), %rdx      # 0x1b824
movq 0x68(%rsp), %r14
movq %r14, %rdi
movl $0x1, %ecx
callq 0xd8a2
leaq 0x64d8a(%rip), %rsi     # 0x7352b
leaq 0xd0be(%rip), %rdx      # 0x1b866
movq %r14, %rdi
movl $0x1, %ecx
callq 0xd8a2
leaq 0x64d78(%rip), %rsi     # 0x73534
leaq 0xd0b8(%rip), %rdx      # 0x1b87b
movq %r14, %rdi
movl $0x1, %ecx
callq 0xd8a2
leaq 0x64d67(%rip), %rsi     # 0x7353e
leaq 0xd0b2(%rip), %rdx      # 0x1b890
movq %r14, %rdi
movl $0x1, %ecx
callq 0xd8a2
leaq 0xd0f7(%rip), %rdx      # 0x1b8e9
cmpb $0x0, 0x30(%rsp)
cmovneq 0x80799(%rip), %rdx     # 0x8ef98
leaq 0x64d42(%rip), %rsi     # 0x73548
leaq 0xd11c(%rip), %r12      # 0x1b929
cmovneq 0x807bb(%rip), %r12     # 0x8efd0
leaq 0xd18e(%rip), %rbp      # 0x1b9aa
cmovneq 0x8079c(%rip), %rbp     # 0x8efc0
leaq 0xd200(%rip), %rax      # 0x1ba2b
cmovneq 0x80775(%rip), %rax     # 0x8efa8
movq %rax, 0x60(%rsp)
leaq 0xd268(%rip), %rax      # 0x1baa7
cmovneq 0x80749(%rip), %rax     # 0x8ef90
movq %rax, 0x8(%rsp)
leaq 0xd294(%rip), %rax      # 0x1bae7
cmovneq 0x80755(%rip), %rax     # 0x8efb0
movq %rax, 0x10(%rsp)
leaq 0xd2c0(%rip), %rax      # 0x1bb27
cmovneq 0x80749(%rip), %rax     # 0x8efb8
movq %rax, 0x18(%rsp)
leaq 0xd2ec(%rip), %rax      # 0x1bb67
cmovneq 0x8075d(%rip), %rax     # 0x8efe0
movq %rax, 0x20(%rsp)
leaq 0xd546(%rip), %rax      # 0x1bdd5
cmovneq 0x80741(%rip), %rax     # 0x8efd8
movq %rax, 0x28(%rsp)
leaq 0xd572(%rip), %rax      # 0x1be15
cmovneq 0x80745(%rip), %rax     # 0x8eff0
movq %rax, 0x30(%rsp)
movq %r14, %rdi
movl $0x1, %ecx
callq 0xd8a2
movq %r14, %rdi
leaq 0x64c8a(%rip), %rsi     # 0x73551
movq %r12, %rdx
movl $0x1, %ecx
callq 0xd8a2
movq %r14, %rdi
leaq 0x64c7d(%rip), %rsi     # 0x7355b
movq %rbp, %rdx
movl $0x1, %ecx
callq 0xd8a2
movq %r14, %rdi
leaq 0x64c6f(%rip), %rsi     # 0x73564
movq 0x60(%rsp), %rdx
movl $0x1, %ecx
callq 0xd8a2
movq %r14, %rdi
leaq 0x64c60(%rip), %rsi     # 0x7356e
movq 0x8(%rsp), %rdx
movl $0x1, %ecx
callq 0xd8a2
movq %r14, %rdi
leaq 0x64c50(%rip), %rsi     # 0x73577
movq 0x10(%rsp), %rdx
movl $0x1, %ecx
callq 0xd8a2
movq %r14, %rdi
leaq 0x64c40(%rip), %rsi     # 0x73580
movq 0x18(%rsp), %rdx
movl $0x1, %ecx
callq 0xd8a2
movq %r14, %rdi
leaq 0x64c31(%rip), %rsi     # 0x7358a
movq 0x20(%rsp), %rdx
movl $0x1, %ecx
callq 0xd8a2
movq %r14, %rdi
leaq 0x64c20(%rip), %rsi     # 0x73592
leaq 0xd1fd(%rip), %rdx      # 0x1bb76
movl $0x1, %ecx
callq 0xd8a2
movq %r14, %rdi
leaq 0x64c0f(%rip), %rsi     # 0x7359c
leaq 0xd213(%rip), %rdx      # 0x1bba7
movl $0x1, %ecx
callq 0xd8a2
movq %r14, %rdi
leaq 0x64bfc(%rip), %rsi     # 0x735a4
leaq 0xd221(%rip), %rdx      # 0x1bbd0
movl $0x1, %ecx
callq 0xd8a2
movq %r14, %rdi
leaq 0x64bea(%rip), %rsi     # 0x735ad
leaq 0xd260(%rip), %rdx      # 0x1bc2a
movl $0x1, %ecx
callq 0xd8a2
movq %r14, %rdi
leaq 0x64bdc(%rip), %rsi     # 0x735ba
leaq 0xd2e7(%rip), %rdx      # 0x1bccc
movl $0x1, %ecx
callq 0xd8a2
movq %r14, %rdi
leaq 0x64bcb(%rip), %rsi     # 0x735c4
leaq 0xd318(%rip), %rdx      # 0x1bd18
movl $0x1, %ecx
callq 0xd8a2
movq %r14, %rdi
leaq 0x64bba(%rip), %rsi     # 0x735ce
movq 0x28(%rsp), %rdx
movl $0x1, %ecx
callq 0xd8a2
leaq 0x64bae(%rip), %rsi     # 0x735d8
movq %r14, %rdi
movq 0x30(%rsp), %rdx
movl $0x1, %ecx
callq 0xd8a2
leaq 0x64b9f(%rip), %rsi     # 0x735e2
leaq 0xd3da(%rip), %rdx      # 0x1be24
movq %r14, %rdi
movl $0x1, %ecx
callq 0xd8a2
movq %r15, %rdi
movq %r15, %r14
movq %r13, %rsi
movl $0x12, %edx
callq 0x1ea48
movq 0x5288(%rbx), %rcx
movq %rcx, 0x8(%rax)
cmpl $0x12, (%rax)
jne 0xea9c
movl 0x52b8(%rbx), %edx
movl %edx, 0x10(%rax)
imull 0xc0(%rcx), %edx
movl %edx, 0xc0(%rax)
movl 0xc4(%rcx), %ecx
movl %ecx, 0xc4(%rax)
movl $0x1, (%rsp)
leaq 0x64917(%rip), %r8      # 0x733c1
movq 0x50(%rsp), %rdi
movq %r14, %rsi
movq 0x48(%rsp), %rdx
movq %rdx, %r12
movq %r13, %rcx
movq %rax, %r9
callq 0x1a36e
cmpl $0x0, 0x52b8(%rbx)
movq 0x40(%rsp), %r13
jle 0xeb1e
movq 0x120(%rax), %r14
xorl %r15d, %r15d
movq 0x52c0(%rbx), %rax
movq (%rax,%r15,8), %rdi
callq 0x3130
movq %r13, %rdi
movq %rax, %rsi
callq 0xcd54
movq %rax, (%r14,%r15,8)
movq 0x52c0(%rbx), %rcx
movq (%rcx,%r15,8), %rsi
movq %rax, %rdi
callq 0x30a0
incq %r15
movslq 0x52b8(%rbx), %rax
cmpq %rax, %r15
jl 0xeadd
leaq 0x7fd6b(%rip), %r13     # 0x8e890
xorl %ebp, %ebp
leaq 0x70(%rsp), %rbx
movq %r12, %r15
movq 0x38(%rsp), %r14
movl $0x100, %edx            # imm = 0x100
movq %rbx, %rdi
xorl %esi, %esi
callq 0x3190
movq (%r13), %r12
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
movq %rbx, %rcx
movl $0x100, %r8d            # imm = 0x100
callq 0xd70b
movq %r12, %rdi
leaq 0x64861(%rip), %rsi     # 0x733c9
callq 0x3210
xorl %ecx, %ecx
testl %eax, %eax
sete %cl
leaq 0x6805d(%rip), %rax     # 0x76bd8
movslq (%rbp,%rax), %rdx
addq %rax, %rdx
movq %r15, %rdi
movq %rbx, %rsi
callq 0xd43d
addq $0x4, %rbp
addq $0x8, %r13
cmpq $0x10, %rbp
jne 0xeb34
addq $0x278, %rsp            # imm = 0x278
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq