// File: /workspace/github_c_makefile_star2_O3/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 0x1fb66
xorl %edi, %edi
callq 0x47425
movq %rax, %rbx
leaq 0x34f87(%rip), %rax     # 0x54af4
movl $0x8, %r14d
leaq 0x36a36(%rip), %r10     # 0x565b0
movl $0x2, %r12d
leaq 0x36a18(%rip), %rdx     # 0x5659f
movq %rbx, %rdi
movl $0x1f, %esi
movl $0x2, %ecx
movl $0x2, %r8d
movl $0x2, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r12
callq 0x20301
addq $0x20, %rsp
leaq 0x34fd7(%rip), %rax     # 0x54b8e
leaq 0x369fa(%rip), %r10     # 0x565b8
leaq 0x4065f(%rip), %rdx     # 0x60224
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 0x20301
addq $0x20, %rsp
leaq 0x35106(%rip), %rax     # 0x54d01
leaq 0x369be(%rip), %r10     # 0x565c0
leaq 0x350ee(%rip), %rdx     # 0x54cf7
movq %rbx, %rdi
movl $0x1a, %esi
movl $0x2, %ecx
movl $0x2, %r8d
movl $0x2, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r12
callq 0x20301
addq $0x20, %rsp
leaq 0x3529f(%rip), %rax     # 0x54ed8
leaq 0x36988(%rip), %r10     # 0x565c8
leaq 0x3528b(%rip), %rdx     # 0x54ed2
movq %rbx, %rdi
movl $0x1, %esi
movl $0x1, %ecx
xorl %r8d, %r8d
movl $0x1, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r15
callq 0x20301
addq $0x20, %rsp
leaq 0x35312(%rip), %rax     # 0x54f86
leaq 0x36955(%rip), %r10     # 0x565d0
leaq 0x48b1c(%rip), %rdx     # 0x6879e
movq %rbx, %rdi
movl $0x2, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x1, %r9d
pushq %rax
pushq $0x4
pushq %r10
pushq %r15
callq 0x20301
addq $0x20, %rsp
leaq 0x35329(%rip), %rax     # 0x54fdb
leaq 0x3691b(%rip), %r10     # 0x565d4
leaq 0x35315(%rip), %rdx     # 0x54fd5
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 0x20301
addq $0x20, %rsp
leaq 0x353cc(%rip), %rax     # 0x550bf
leaq 0x368e2(%rip), %r10     # 0x565dc
leaq 0x4c180(%rip), %rdx     # 0x6be81
movq %rbx, %rdi
movl $0x20, %esi
movl $0x2, %ecx
movl $0x2, %r8d
movl $0x2, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r12
callq 0x20301
addq $0x20, %rsp
leaq 0x35432(%rip), %rax     # 0x55163
leaq 0x368ac(%rip), %r10     # 0x565e4
leaq 0x3541d(%rip), %rdx     # 0x5515c
movq %rbx, %rdi
movl $0x5, %esi
movl $0x2, %ecx
movl $0x1, %r8d
movl $0x2, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r12
callq 0x20301
addq $0x20, %rsp
leaq 0x35557(%rip), %rax     # 0x552c6
movl $0x18, %r12d
leaq 0x36874(%rip), %r10     # 0x565f0
leaq 0x3862f(%rip), %rdx     # 0x583b2
movq %rbx, %rdi
movl $0x6, %esi
movl $0x3, %ecx
movl $0x2, %r8d
movl $0x3, %r9d
pushq %rax
pushq %r12
pushq %r10
pushq %r13
callq 0x20301
addq $0x20, %rsp
leaq 0x3569e(%rip), %rax     # 0x55451
leaq 0x36856(%rip), %r10     # 0x56610
leaq 0x4abdb(%rip), %rdx     # 0x6a99c
movq %rbx, %rdi
movl $0x1b, %esi
movl $0x3, %ecx
movl $0x2, %r8d
movl $0x3, %r9d
pushq %rax
pushq %r12
pushq %r10
pushq %r13
callq 0x20301
addq $0x20, %rsp
leaq 0x35791(%rip), %rax     # 0x55582
leaq 0x36830(%rip), %r10     # 0x56628
leaq 0x329fc(%rip), %rdx     # 0x527fb
movq %rbx, %rdi
movl $0x7, %esi
movl $0x3, %ecx
movl $0x3, %r8d
movl $0x3, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq $0x3
callq 0x20301
addq $0x20, %rsp
leaq 0x359ab(%rip), %rax     # 0x557da
leaq 0x367fa(%rip), %r10     # 0x56630
leaq 0x4815d(%rip), %rdx     # 0x67f9a
movq %rbx, %rdi
movl $0x8, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x1, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r15
callq 0x20301
addq $0x20, %rsp
leaq 0x35a1f(%rip), %rax     # 0x5588c
leaq 0x367c4(%rip), %r10     # 0x56638
leaq 0x328a4(%rip), %rdx     # 0x5271f
movq %rbx, %rdi
movl $0x13, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x1, %r9d
pushq %rax
pushq %r14
pushq %r10
pushq %r15
callq 0x20301
addq $0x20, %rsp
leaq 0x36531(%rip), %rax     # 0x563dc
leaq 0x3678e(%rip), %r10     # 0x56640
leaq 0x3651d(%rip), %rdx     # 0x563d6
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 0x20301
addq $0x18, %rsp
leaq 0x359d8(%rip), %rax     # 0x558c1
leaq 0x3e099(%rip), %rdx     # 0x5df89
movq %rbx, %rdi
movl $0x9, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
movl $0x6, %r9d
pushq %rax
callq 0x203ec
addq $0x8, %rsp
leaq 0x35a16(%rip), %rax     # 0x5592a
leaq 0x4816c(%rip), %rdx     # 0x68087
movq %rbx, %rdi
movl $0xa, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
movl $0x8, %r9d
pushq %rax
callq 0x203ec
addq $0x8, %rsp
leaq 0x35ac7(%rip), %rax     # 0x55a06
leaq 0x3e049(%rip), %rdx     # 0x5df8f
movq %rbx, %rdi
movl $0xb, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0xa, %r9d
pushq %rax
callq 0x203ec
addq $0x8, %rsp
leaq 0x35ae6(%rip), %rax     # 0x55a56
leaq 0x3e01b(%rip), %rdx     # 0x5df92
movq %rbx, %rdi
movl $0xc, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0xc, %r9d
pushq %rax
callq 0x203ec
addq $0x8, %rsp
leaq 0x35b7d(%rip), %rax     # 0x55b1e
leaq 0x3dfed(%rip), %rdx     # 0x5df95
movq %rbx, %rdi
movl $0x21, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0xd, %r9d
pushq %rax
callq 0x203ec
addq $0x8, %rsp
leaq 0x35c1e(%rip), %rax     # 0x55bf0
leaq 0x46302(%rip), %rdx     # 0x662db
movq %rbx, %rdi
movl $0x1d, %esi
xorl %ecx, %ecx
movl $0x1, %r8d
movl $0xe, %r9d
pushq %rax
callq 0x203ec
addq $0x8, %rsp
leaq 0x35c85(%rip), %rax     # 0x55c85
leaq 0x46102(%rip), %rdx     # 0x66109
movq %rbx, %rdi
movl $0x1e, %esi
xorl %ecx, %ecx
movl $0x1, %r8d
movl $0xf, %r9d
pushq %rax
callq 0x203ec
addq $0x8, %rsp
leaq 0x35cb2(%rip), %rax     # 0x55ce0
leaq 0x326e5(%rip), %rdx     # 0x5271a
movq %rbx, %rdi
movl $0xd, %esi
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movl $0x10, %r9d
pushq %rax
callq 0x203ec
addq $0x8, %rsp
leaq 0x35cdd(%rip), %rax     # 0x55d3c
leaq 0x326be(%rip), %rdx     # 0x52724
movq %rbx, %rdi
movl $0xe, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
movl $0x11, %r9d
pushq %rax
callq 0x203ec
addq $0x8, %rsp
leaq 0x35d0c(%rip), %rax     # 0x55d96
leaq 0x32697(%rip), %rdx     # 0x52728
movq %rbx, %rdi
movl $0xf, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
movl $0x12, %r9d
pushq %rax
callq 0x203ec
addq $0x8, %rsp
leaq 0x35d43(%rip), %rax     # 0x55df8
leaq 0x35d34(%rip), %rdx     # 0x55df0
movq %rbx, %rdi
movl $0x10, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x14, %r9d
pushq %rax
callq 0x203ec
addq $0x8, %rsp
leaq 0x35dac(%rip), %rax     # 0x55e92
leaq 0x35d9d(%rip), %rdx     # 0x55e8a
movq %rbx, %rdi
movl $0x11, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x16, %r9d
pushq %rax
callq 0x203ec
addq $0x8, %rsp
leaq 0x35e17(%rip), %rax     # 0x55f2e
leaq 0x35e07(%rip), %rdx     # 0x55f25
movq %rbx, %rdi
movl $0x12, %esi
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x18, %r9d
pushq %rax
callq 0x203ec
addq $0x10, %rsp
leaq 0x47f3c(%rip), %rdx     # 0x68084
leaq 0x35ed4(%rip), %r9      # 0x56023
movq %rbx, %rdi
movl $0x14, %esi
xorl %ecx, %ecx
movl $0x21, %r8d
callq 0x20494
leaq 0x4bb4a(%rip), %rdx     # 0x6bcb5
leaq 0x35ef2(%rip), %r9      # 0x56064
movq %rbx, %rdi
movl $0x15, %esi
xorl %ecx, %ecx
movl $0x23, %r8d
callq 0x20494
leaq 0x35f16(%rip), %rdx     # 0x560a4
leaq 0x35f12(%rip), %r9      # 0x560a7
movq %rbx, %rdi
movl $0x16, %esi
xorl %ecx, %ecx
movl $0x47, %r8d
callq 0x20494
leaq 0x35f3b(%rip), %rdx     # 0x560ec
leaq 0x35f37(%rip), %r9      # 0x560ef
movq %rbx, %rdi
movl $0x17, %esi
xorl %ecx, %ecx
movl $0x48, %r8d
callq 0x20494
leaq 0x35f19(%rip), %rdx     # 0x560ed
leaq 0x35f5a(%rip), %r9      # 0x56135
movq %rbx, %rdi
movl $0x18, %esi
xorl %ecx, %ecx
movl $0x25, %r8d
callq 0x20494
leaq 0x35f80(%rip), %rdx     # 0x56177
leaq 0x35f7e(%rip), %r9      # 0x5617c
movq %rbx, %rdi
movl $0x19, %esi
movl $0x1, %ecx
movl $0x25, %r8d
callq 0x20494
leaq 0x35fb6(%rip), %rdi     # 0x561d3
callq 0x4482c
movabsq $-0x6000000000000, %r14 # imm = 0xFFFA000000000000
movq %rax, %rdi
movq %r14, %rsi
callq 0x4ed39
leaq 0x35f87(%rip), %rsi     # 0x561c5
leaq 0x35f95(%rip), %rcx     # 0x561da
movq %rbx, %rdi
movq %rax, %rdx
callq 0x489e4
leaq 0x35fc0(%rip), %rdi     # 0x56217
callq 0x4482c
movq %rax, %rdi
movq %r14, %rsi
callq 0x4ed39
leaq 0x35f9d(%rip), %rsi     # 0x5620b
leaq 0x35fab(%rip), %rcx     # 0x56220
movq %rbx, %rdi
movq %rax, %rdx
callq 0x489e4
movsd 0x34090(%rip), %xmm0    # 0x54318
callq 0x4ee44
leaq 0x35fbf(%rip), %rsi     # 0x56253
leaq 0x35fca(%rip), %rcx     # 0x56265
movq %rbx, %rdi
movq %rax, %rdx
callq 0x489e4
movabsq $-0x3800000000000, %r14 # imm = 0xFFFC800000000000
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4ed7e
leaq 0x36022(%rip), %rsi     # 0x562e4
leaq 0x36024(%rip), %rcx     # 0x562ed
movq %rbx, %rdi
movq %rax, %rdx
callq 0x489e4
movq %rbx, %rdi
callq 0x2052b
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4ed7e
movq %rax, %rdi
callq 0x2b13a
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq