// File: /workspace/github_c_makefile_star2_O1/janet-lang[P]janet/src/core/corelib.c
// Function: janet_core_env
JanetTable *janet_core_env(JanetTable *replacements) {
    JanetTable *env = (NULL != replacements) ? replacements : janet_table(0);
    janet_quick_asm(env, JANET_FUN_CMP,
                    "cmp", 2, 2, 2, 2, cmp_asm, sizeof(cmp_asm),
                    JDOC("(cmp x y)\n\n"
         "Returns -1 if x is strictly less than y, 1 if y is strictly greater "
         "than x, and 0 otherwise. To return 0, x and y must be the exact same type."));
    janet_quick_asm(env, JANET_FUN_NEXT,
                    "next", 2, 1, 2, 2, next_asm, sizeof(next_asm),
                    JDOC("(next ds &opt key)\n\n"
         "Gets the next key in a data structure. Can be used to iterate through "
         "the keys of a data structure in an unspecified order. Keys are guaranteed "
         "to be seen only once per iteration if the data structure is not mutated "
         "during iteration. If key is nil, next returns the first key. If next "
         "returns nil, there are no more keys to iterate through."));
    janet_quick_asm(env, JANET_FUN_PROP,
                    "propagate", 2, 2, 2, 2, propagate_asm, sizeof(propagate_asm),
                    JDOC("(propagate x fiber)\n\n"
         "Propagate a signal from a fiber to the current fiber and "
         "set the last value of the current fiber to `x`.  The signal "
         "value is then available as the status of the current fiber. "
         "The resulting stack trace from the current fiber will include "
         "frames from fiber. If fiber is in a state that can be resumed, "
         "resuming the current fiber will first resume `fiber`. "
         "This function can be used to re-raise an error without losing "
         "the original stack trace."));
    janet_quick_asm(env, JANET_FUN_DEBUG,
                    "debug", 1, 0, 1, 1, debug_asm, sizeof(debug_asm),
                    JDOC("(debug &opt x)\n\n"
         "Throws a debug signal that can be caught by a parent fiber and used to inspect "
         "the running state of the current fiber. Returns the value passed in by resume."));
    janet_quick_asm(env, JANET_FUN_ERROR,
                    "error", 1, 1, 1, 1, error_asm, sizeof(error_asm),
                    JDOC("(error e)\n\n"
         "Throws an error e that can be caught and handled by a parent fiber."));
    janet_quick_asm(env, JANET_FUN_YIELD,
                    "yield", 1, 0, 1, 2, yield_asm, sizeof(yield_asm),
                    JDOC("(yield &opt x)\n\n"
         "Yield a value to a parent fiber. When a fiber yields, its execution is paused until "
         "another thread resumes it. The fiber will then resume, and the last yield call will "
         "return the value that was passed to resume."));
    janet_quick_asm(env, JANET_FUN_CANCEL,
                    "cancel", 2, 2, 2, 2, cancel_asm, sizeof(cancel_asm),
                    JDOC("(cancel fiber err)\n\n"
         "Resume a fiber but have it immediately raise an error. This lets a programmer unwind a pending fiber. "
         "Returns the same result as resume."));
    janet_quick_asm(env, JANET_FUN_RESUME,
                    "resume", 2, 1, 2, 2, resume_asm, sizeof(resume_asm),
                    JDOC("(resume fiber &opt x)\n\n"
         "Resume a new or suspended fiber and optionally pass in a value to the fiber that "
         "will be returned to the last yield in the case of a pending fiber, or the argument to "
         "the dispatch function in the case of a new fiber. Returns either the return result of "
         "the fiber's dispatch function, or the value from the next yield call in fiber."));
    janet_quick_asm(env, JANET_FUN_IN,
                    "in", 3, 2, 3, 4, in_asm, sizeof(in_asm),
                    JDOC("(in ds key &opt dflt)\n\n"
         "Get value in ds at key, works on associative data structures. Arrays, tuples, tables, structs, "
         "strings, symbols, and buffers are all associative and can be used. Arrays, tuples, strings, buffers, "
         "and symbols must use integer keys that are in bounds or an error is raised. Structs and tables can "
         "take any value as a key except nil and will return nil or dflt if not found."));
    janet_quick_asm(env, JANET_FUN_GET,
                    "get", 3, 2, 3, 4, get_asm, sizeof(in_asm),
                    JDOC("(get ds key &opt dflt)\n\n"
         "Get the value mapped to key in data structure ds, and return dflt or nil if not found. "
         "Similar to in, but will not throw an error if the key is invalid for the data structure "
         "unless the data structure is an abstract type. In that case, the abstract type getter may throw "
         "an error."));
    janet_quick_asm(env, JANET_FUN_PUT,
                    "put", 3, 3, 3, 3, put_asm, sizeof(put_asm),
                    JDOC("(put ds key value)\n\n"
         "Associate a key with a value in any mutable associative data structure. Indexed data structures "
         "(arrays and buffers) only accept non-negative integer keys, and will expand if an out of bounds "
         "value is provided. In an array, extra space will be filled with nils, and in a buffer, extra "
         "space will be filled with 0 bytes. In a table, putting a key that is contained in the table prototype "
         "will hide the association defined by the prototype, but will not mutate the prototype table. Putting "
         "a value nil into a table will remove the key from the table. Returns the data structure ds."));
    janet_quick_asm(env, JANET_FUN_LENGTH,
                    "length", 1, 1, 1, 1, length_asm, sizeof(length_asm),
                    JDOC("(length ds)\n\n"
         "Returns the length or count of a data structure in constant time as an integer. For "
         "structs and tables, returns the number of key-value pairs in the data structure."));
    janet_quick_asm(env, JANET_FUN_BNOT,
                    "bnot", 1, 1, 1, 1, bnot_asm, sizeof(bnot_asm),
                    JDOC("(bnot x)\n\nReturns the bit-wise inverse of integer x."));
    make_apply(env);

    /* Variadic ops */
    templatize_varop(env, JANET_FUN_ADD, "+", 0, 0, JOP_ADD,
                     JDOC("(+ & xs)\n\n"
         "Returns the sum of all xs. xs must be integers or real numbers only. If xs is empty, return 0."));
    templatize_varop(env, JANET_FUN_SUBTRACT, "-", 0, 0, JOP_SUBTRACT,
                     JDOC("(- & xs)\n\n"
         "Returns the difference of xs. If xs is empty, returns 0. If xs has one element, returns the "
         "negative value of that element. Otherwise, returns the first element in xs minus the sum of "
         "the rest of the elements."));
    templatize_varop(env, JANET_FUN_MULTIPLY, "*", 1, 1, JOP_MULTIPLY,
                     JDOC("(* & xs)\n\n"
         "Returns the product of all elements in xs. If xs is empty, returns 1."));
    templatize_varop(env, JANET_FUN_DIVIDE, "/", 1, 1, JOP_DIVIDE,
                     JDOC("(/ & xs)\n\n"
         "Returns the quotient of xs. If xs is empty, returns 1. If xs has one value x, returns "
         "the reciprocal of x. Otherwise return the first value of xs repeatedly divided by the remaining "
         "values."));
    templatize_varop(env, JANET_FUN_DIVIDE_FLOOR, "div", 1, 1, JOP_DIVIDE_FLOOR,
                     JDOC("(div & xs)\n\n"
         "Returns the floored division of xs. If xs is empty, returns 1. If xs has one value x, returns "
         "the reciprocal of x. Otherwise return the first value of xs repeatedly divided by the remaining "
         "values."));
    templatize_varop(env, JANET_FUN_MODULO, "mod", 0, 1, JOP_MODULO,
                     JDOC("(mod & xs)\n\n"
         "Returns the result of applying the modulo operator on the first value of xs with each remaining value. "
         "`(mod x 0)` is defined to be `x`."));
    templatize_varop(env, JANET_FUN_REMAINDER, "%", 0, 1, JOP_REMAINDER,
                     JDOC("(% & xs)\n\n"
         "Returns the remainder of dividing the first value of xs by each remaining value."));
    templatize_varop(env, JANET_FUN_BAND, "band", -1, -1, JOP_BAND,
                     JDOC("(band & xs)\n\n"
         "Returns the bit-wise and of all values in xs. Each x in xs must be an integer."));
    templatize_varop(env, JANET_FUN_BOR, "bor", 0, 0, JOP_BOR,
                     JDOC("(bor & xs)\n\n"
         "Returns the bit-wise or of all values in xs. Each x in xs must be an integer."));
    templatize_varop(env, JANET_FUN_BXOR, "bxor", 0, 0, JOP_BXOR,
                     JDOC("(bxor & xs)\n\n"
         "Returns the bit-wise xor of all values in xs. Each in xs must be an integer."));
    templatize_varop(env, JANET_FUN_LSHIFT, "blshift", 1, 1, JOP_SHIFT_LEFT,
                     JDOC("(blshift x & shifts)\n\n"
         "Returns the value of x bit shifted left by the sum of all values in shifts. x "
         "and each element in shift must be an integer."));
    templatize_varop(env, JANET_FUN_RSHIFT, "brshift", 1, 1, JOP_SHIFT_RIGHT,
                     JDOC("(brshift x & shifts)\n\n"
         "Returns the value of x bit shifted right by the sum of all values in shifts. x "
         "and each element in shift must be an integer."));
    templatize_varop(env, JANET_FUN_RSHIFTU, "brushift", 1, 1, JOP_SHIFT_RIGHT_UNSIGNED,
                     JDOC("(brushift x & shifts)\n\n"
         "Returns the value of x bit shifted right by the sum of all values in shifts. x "
         "and each element in shift must be an integer. The sign of x is not preserved, so "
         "for positive shifts the return value will always be positive."));

    /* Variadic comparators */
    templatize_comparator(env, JANET_FUN_GT, ">", 0, JOP_GREATER_THAN,
                          JDOC("(> & xs)\n\n"
         "Check if xs is in descending order. Returns a boolean."));
    templatize_comparator(env, JANET_FUN_LT, "<", 0, JOP_LESS_THAN,
                          JDOC("(< & xs)\n\n"
         "Check if xs is in ascending order. Returns a boolean."));
    templatize_comparator(env, JANET_FUN_GTE, ">=", 0, JOP_GREATER_THAN_EQUAL,
                          JDOC("(>= & xs)\n\n"
         "Check if xs is in non-ascending order. Returns a boolean."));
    templatize_comparator(env, JANET_FUN_LTE, "<=", 0, JOP_LESS_THAN_EQUAL,
                          JDOC("(<= & xs)\n\n"
         "Check if xs is in non-descending order. Returns a boolean."));
    templatize_comparator(env, JANET_FUN_EQ, "=", 0, JOP_EQUALS,
                          JDOC("(= & xs)\n\n"
         "Check if all values in xs are equal. Returns a boolean."));
    templatize_comparator(env, JANET_FUN_NEQ, "not=", 1, JOP_EQUALS,
                          JDOC("(not= & xs)\n\n"
         "Check if any values in xs are not equal. Returns a boolean."));

    /* Platform detection */
    janet_def(env, "janet/version", janet_cstringv(JANET_VERSION),
              JDOC("The version number of the running janet program."));
    janet_def(env, "janet/build", janet_cstringv(JANET_BUILD),
              JDOC("The build identifier of the running janet program."));
    janet_def(env, "janet/config-bits", janet_wrap_integer(JANET_CURRENT_CONFIG_BITS),
              JDOC("The flag set of config options from janetconf.h which is used to check "
         "if native modules are compatible with the host program."));

    /* Allow references to the environment */
    janet_def(env, "root-env", janet_wrap_table(env),
              JDOC("The root environment used to create environments with (make-env)."));

    janet_load_libs(env);
    janet_gcroot(janet_wrap_table(env));
    return env;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
testq %rdi, %rdi
jne 0x1fed8
xorl %edi, %edi
callq 0x47e96
movq %rax, %rbx
leaq 0x35c15(%rip), %rax     # 0x55af4
movl $0x8, %r14d
leaq 0x376c4(%rip), %r10     # 0x575b0
movl $0x2, %r12d
leaq 0x376a6(%rip), %rdx     # 0x5759f
movq %rbx, %rdi
movl $0x1f, %esi
movl $0x2, %ecx
movl $0x2, %r8d
movl $0x2, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r12
callq 0x20673
addq $0x20, %rsp
leaq 0x35c65(%rip), %rax     # 0x55b8e
leaq 0x37688(%rip), %r10     # 0x575b8
leaq 0x412fd(%rip), %rdx     # 0x61234
movl $0x1, %r15d
movq %rbx, %rdi
movl $0x1c, %esi
movl $0x2, %ecx
movl $0x1, %r8d
movl $0x2, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r12
callq 0x20673
addq $0x20, %rsp
leaq 0x35d94(%rip), %rax     # 0x55d01
leaq 0x3764c(%rip), %r10     # 0x575c0
leaq 0x35d7c(%rip), %rdx     # 0x55cf7
movq %rbx, %rdi
movl $0x1a, %esi
movl $0x2, %ecx
movl $0x2, %r8d
movl $0x2, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r12
callq 0x20673
addq $0x20, %rsp
leaq 0x35f2d(%rip), %rax     # 0x55ed8
leaq 0x37616(%rip), %r10     # 0x575c8
leaq 0x35f19(%rip), %rdx     # 0x55ed2
movq %rbx, %rdi
movl $0x1, %esi
movl $0x1, %ecx
xorl %r8d, %r8d
movl $0x1, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r15
callq 0x20673
addq $0x20, %rsp
leaq 0x35fa0(%rip), %rax     # 0x55f86
leaq 0x375e3(%rip), %r10     # 0x575d0
leaq 0x497ca(%rip), %rdx     # 0x697be
movq %rbx, %rdi
movl $0x2, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x1, %r9d
pushq %rax
pushq $0x4
pushq %r10
pushq %r15
callq 0x20673
addq $0x20, %rsp
leaq 0x35fb7(%rip), %rax     # 0x55fdb
leaq 0x375a9(%rip), %r10     # 0x575d4
leaq 0x35fa3(%rip), %rdx     # 0x55fd5
movl $0x4, %r13d
movq %rbx, %rdi
movl $0x4, %esi
movl $0x1, %ecx
xorl %r8d, %r8d
movl $0x1, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r12
callq 0x20673
addq $0x20, %rsp
leaq 0x3605a(%rip), %rax     # 0x560bf
leaq 0x37570(%rip), %r10     # 0x575dc
leaq 0x4ce2e(%rip), %rdx     # 0x6cea1
movq %rbx, %rdi
movl $0x20, %esi
movl $0x2, %ecx
movl $0x2, %r8d
movl $0x2, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r12
callq 0x20673
addq $0x20, %rsp
leaq 0x360c0(%rip), %rax     # 0x56163
leaq 0x3753a(%rip), %r10     # 0x575e4
leaq 0x360ab(%rip), %rdx     # 0x5615c
movq %rbx, %rdi
movl $0x5, %esi
movl $0x2, %ecx
movl $0x1, %r8d
movl $0x2, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r12
callq 0x20673
addq $0x20, %rsp
leaq 0x361e5(%rip), %rax     # 0x562c6
movl $0x18, %r12d
leaq 0x37502(%rip), %r10     # 0x575f0
leaq 0x392bd(%rip), %rdx     # 0x593b2
movq %rbx, %rdi
movl $0x6, %esi
movl $0x3, %ecx
movl $0x2, %r8d
movl $0x3, %r9d
pushq %rax
pushq %r12
pushq %r10
pushq %r13
callq 0x20673
addq $0x20, %rsp
leaq 0x3632c(%rip), %rax     # 0x56451
leaq 0x374e4(%rip), %r10     # 0x57610
leaq 0x4b889(%rip), %rdx     # 0x6b9bc
movq %rbx, %rdi
movl $0x1b, %esi
movl $0x3, %ecx
movl $0x2, %r8d
movl $0x3, %r9d
pushq %rax
pushq %r12
pushq %r10
pushq %r13
callq 0x20673
addq $0x20, %rsp
leaq 0x3641f(%rip), %rax     # 0x56582
leaq 0x374be(%rip), %r10     # 0x57628
leaq 0x3368a(%rip), %rdx     # 0x537fb
movq %rbx, %rdi
movl $0x7, %esi
movl $0x3, %ecx
movl $0x3, %r8d
movl $0x3, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq $0x3
callq 0x20673
addq $0x20, %rsp
leaq 0x36639(%rip), %rax     # 0x567da
leaq 0x37488(%rip), %r10     # 0x57630
leaq 0x48e0b(%rip), %rdx     # 0x68fba
movq %rbx, %rdi
movl $0x8, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x1, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r15
callq 0x20673
addq $0x20, %rsp
leaq 0x366ad(%rip), %rax     # 0x5688c
leaq 0x37452(%rip), %r10     # 0x57638
leaq 0x33532(%rip), %rdx     # 0x5371f
movq %rbx, %rdi
movl $0x13, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x1, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r15
callq 0x20673
addq $0x20, %rsp
leaq 0x371bf(%rip), %rax     # 0x573dc
leaq 0x3741c(%rip), %r10     # 0x57640
leaq 0x371ab(%rip), %rdx     # 0x573d6
movq %rbx, %rdi
movl $0x10003, %esi          # imm = 0x10003
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x7fffffff, %r9d       # imm = 0x7FFFFFFF
pushq %rax
pushq $0x30
pushq %r10
pushq $0x6
callq 0x20673
addq $0x18, %rsp
leaq 0x36666(%rip), %rax     # 0x568c1
leaq 0x3ed27(%rip), %rdx     # 0x5ef89
movq %rbx, %rdi
movl $0x9, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
movl $0x6, %r9d
pushq %rax
callq 0x2075e
addq $0x8, %rsp
leaq 0x366a4(%rip), %rax     # 0x5692a
leaq 0x48e1a(%rip), %rdx     # 0x690a7
movq %rbx, %rdi
movl $0xa, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
movl $0x8, %r9d
pushq %rax
callq 0x2075e
addq $0x8, %rsp
leaq 0x36755(%rip), %rax     # 0x56a06
leaq 0x3ecd7(%rip), %rdx     # 0x5ef8f
movq %rbx, %rdi
movl $0xb, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0xa, %r9d
pushq %rax
callq 0x2075e
addq $0x8, %rsp
leaq 0x36774(%rip), %rax     # 0x56a56
leaq 0x3eca9(%rip), %rdx     # 0x5ef92
movq %rbx, %rdi
movl $0xc, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0xc, %r9d
pushq %rax
callq 0x2075e
addq $0x8, %rsp
leaq 0x3680b(%rip), %rax     # 0x56b1e
leaq 0x3ec7b(%rip), %rdx     # 0x5ef95
movq %rbx, %rdi
movl $0x21, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0xd, %r9d
pushq %rax
callq 0x2075e
addq $0x8, %rsp
leaq 0x368ac(%rip), %rax     # 0x56bf0
leaq 0x46fa0(%rip), %rdx     # 0x672eb
movq %rbx, %rdi
movl $0x1d, %esi
xorl %ecx, %ecx
movl $0x1, %r8d
movl $0xe, %r9d
pushq %rax
callq 0x2075e
addq $0x8, %rsp
leaq 0x36913(%rip), %rax     # 0x56c85
leaq 0x46da0(%rip), %rdx     # 0x67119
movq %rbx, %rdi
movl $0x1e, %esi
xorl %ecx, %ecx
movl $0x1, %r8d
movl $0xf, %r9d
pushq %rax
callq 0x2075e
addq $0x8, %rsp
leaq 0x36940(%rip), %rax     # 0x56ce0
leaq 0x33373(%rip), %rdx     # 0x5371a
movq %rbx, %rdi
movl $0xd, %esi
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movl $0x10, %r9d
pushq %rax
callq 0x2075e
addq $0x8, %rsp
leaq 0x3696b(%rip), %rax     # 0x56d3c
leaq 0x3334c(%rip), %rdx     # 0x53724
movq %rbx, %rdi
movl $0xe, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
movl $0x11, %r9d
pushq %rax
callq 0x2075e
addq $0x8, %rsp
leaq 0x3699a(%rip), %rax     # 0x56d96
leaq 0x33325(%rip), %rdx     # 0x53728
movq %rbx, %rdi
movl $0xf, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
movl $0x12, %r9d
pushq %rax
callq 0x2075e
addq $0x8, %rsp
leaq 0x369d1(%rip), %rax     # 0x56df8
leaq 0x369c2(%rip), %rdx     # 0x56df0
movq %rbx, %rdi
movl $0x10, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x14, %r9d
pushq %rax
callq 0x2075e
addq $0x8, %rsp
leaq 0x36a3a(%rip), %rax     # 0x56e92
leaq 0x36a2b(%rip), %rdx     # 0x56e8a
movq %rbx, %rdi
movl $0x11, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x16, %r9d
pushq %rax
callq 0x2075e
addq $0x8, %rsp
leaq 0x36aa5(%rip), %rax     # 0x56f2e
leaq 0x36a95(%rip), %rdx     # 0x56f25
movq %rbx, %rdi
movl $0x12, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x18, %r9d
pushq %rax
callq 0x2075e
addq $0x10, %rsp
leaq 0x48bea(%rip), %rdx     # 0x690a4
leaq 0x36b62(%rip), %r9      # 0x57023
movq %rbx, %rdi
movl $0x14, %esi
xorl %ecx, %ecx
movl $0x21, %r8d
callq 0x20806
leaq 0x4c7f8(%rip), %rdx     # 0x6ccd5
leaq 0x36b80(%rip), %r9      # 0x57064
movq %rbx, %rdi
movl $0x15, %esi
xorl %ecx, %ecx
movl $0x23, %r8d
callq 0x20806
leaq 0x36ba4(%rip), %rdx     # 0x570a4
leaq 0x36ba0(%rip), %r9      # 0x570a7
movq %rbx, %rdi
movl $0x16, %esi
xorl %ecx, %ecx
movl $0x47, %r8d
callq 0x20806
leaq 0x36bc9(%rip), %rdx     # 0x570ec
leaq 0x36bc5(%rip), %r9      # 0x570ef
movq %rbx, %rdi
movl $0x17, %esi
xorl %ecx, %ecx
movl $0x48, %r8d
callq 0x20806
leaq 0x36ba7(%rip), %rdx     # 0x570ed
leaq 0x36be8(%rip), %r9      # 0x57135
movq %rbx, %rdi
movl $0x18, %esi
xorl %ecx, %ecx
movl $0x25, %r8d
callq 0x20806
leaq 0x36c0e(%rip), %rdx     # 0x57177
leaq 0x36c0c(%rip), %r9      # 0x5717c
movq %rbx, %rdi
movl $0x19, %esi
movl $0x1, %ecx
movl $0x25, %r8d
callq 0x20806
leaq 0x36c44(%rip), %rdi     # 0x571d3
callq 0x4516c
movabsq $-0x6000000000000, %r14 # imm = 0xFFFA000000000000
movq %rax, %rdi
movq %r14, %rsi
callq 0x4f9ad
leaq 0x36c15(%rip), %rsi     # 0x571c5
leaq 0x36c23(%rip), %rcx     # 0x571da
movq %rbx, %rdi
movq %rax, %rdx
callq 0x494f4
leaq 0x36c4e(%rip), %rdi     # 0x57217
callq 0x4516c
movq %rax, %rdi
movq %r14, %rsi
callq 0x4f9ad
leaq 0x36c2b(%rip), %rsi     # 0x5720b
leaq 0x36c39(%rip), %rcx     # 0x57220
movq %rbx, %rdi
movq %rax, %rdx
callq 0x494f4
movsd 0x34d1e(%rip), %xmm0    # 0x55318
callq 0x4fab8
leaq 0x36c4d(%rip), %rsi     # 0x57253
leaq 0x36c58(%rip), %rcx     # 0x57265
movq %rbx, %rdi
movq %rax, %rdx
callq 0x494f4
movabsq $-0x3800000000000, %r14 # imm = 0xFFFC800000000000
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4f9f2
leaq 0x36cb0(%rip), %rsi     # 0x572e4
leaq 0x36cb2(%rip), %rcx     # 0x572ed
movq %rbx, %rdi
movq %rax, %rdx
callq 0x494f4
movq %rbx, %rdi
callq 0x2089d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4f9f2
movq %rax, %rdi
callq 0x2b5e5
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq