From 32a1d346bdf32d4072d159fbfb3d2941c3455de9 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Thu, 18 Jun 2026 12:28:18 -0700 Subject: [PATCH] Replace hardcoded native signature mapping with auto-generated module Replace the hardcoded mapping in `create_pointer_conversion_wrappers` with a Python module loaded at runtime. Add `tools/maint/gen_native_sig_info.py` to regenerate this module by comparing wasm32 and wasm64 builds to detect pointer arguments. Signature changes/corrections: - `_emscripten_proxy_poll_finish`: Removed (dead code). - `setThrew`: Corrected from `_p` to `_p_` (has 2 arguments in C). - `_wasmfs_get_cwd`: Corrected from `p_` to `p` (has 0 arguments in C). - Void returns: Inconsistent `vp` signatures (e.g. `emscripten_builtin_free`, `stbi_image_free`) normalized to `_p`. --- embuilder.py | 3 +- system/lib/standalone/standalone.c | 14 +- test/test_other.py | 5 + tools/emscripten.py | 107 +- tools/maint/gen_native_sig_info.py | 178 +++ tools/native_sigs.py | 1785 ++++++++++++++++++++++++++++ 6 files changed, 1983 insertions(+), 109 deletions(-) create mode 100755 tools/maint/gen_native_sig_info.py create mode 100644 tools/native_sigs.py diff --git a/embuilder.py b/embuilder.py index 7b36a3b6f9479..07c0c6bba103a 100755 --- a/embuilder.py +++ b/embuilder.py @@ -97,6 +97,8 @@ 'libunwind-wasmexcept', 'libnoexit', 'bullet', + 'libstb_image', + 'libwasmfs_no_fs', ] # Additional tasks on top of MINIMAL_TASKS that are necessary for PIC testing on @@ -127,7 +129,6 @@ 'libfetch-mt', 'libwasmfs', 'libwasmfs-debug', - 'libwasmfs_no_fs', 'giflib', 'sdl2', 'sdl2_gfx', diff --git a/system/lib/standalone/standalone.c b/system/lib/standalone/standalone.c index 2576fd8665fec..6c07371e0e0e2 100644 --- a/system/lib/standalone/standalone.c +++ b/system/lib/standalone/standalone.c @@ -179,21 +179,21 @@ void __cxa_throw(void* ptr, void* type, void* destructor) { // WasmFS integration. We stub out file preloading and such, that are not // expected to work anyhow. -size_t _wasmfs_get_num_preloaded_files() { return 0; } +int _wasmfs_get_num_preloaded_files() { return 0; } -size_t _wasmfs_get_num_preloaded_dirs() { return 0; } +int _wasmfs_get_num_preloaded_dirs() { return 0; } -int _wasmfs_get_preloaded_file_size(int index) { return 0; } +size_t _wasmfs_get_preloaded_file_size(uint32_t index) { return 0; } int _wasmfs_get_preloaded_file_mode(int index) { return 0; } -void _wasmfs_copy_preloaded_file_data(int index, void* buffer) {} +void _wasmfs_copy_preloaded_file_data(uint32_t index, uint8_t* buffer) {} -void _wasmfs_get_preloaded_parent_path(int index, void* buffer) {} +void _wasmfs_get_preloaded_parent_path(int index, char* buffer) {} -void _wasmfs_get_preloaded_child_path(int index, void* buffer) {} +void _wasmfs_get_preloaded_child_path(int index, char* buffer) {} -void _wasmfs_get_preloaded_path_name(int index, void* buffer) {} +void _wasmfs_get_preloaded_path_name(int index, char* buffer) {} // Import the VM's fd_write under a different name. Then we can interpose in // between it and WasmFS's fd_write. That is, libc calls fd_write, which WasmFS diff --git a/test/test_other.py b/test/test_other.py index 081ef40d60032..abb7571fee6f3 100644 --- a/test/test_other.py +++ b/test/test_other.py @@ -12712,6 +12712,11 @@ def test_gen_sig_info(self): self.run_process([PYTHON, path_from_root('tools/maint/gen_sig_info.py'), '-o', 'out.js']) self.assertFilesMatch(path_from_root('src/lib/libsigs.js'), 'out.js') + @crossplatform + def test_gen_native_sig_info(self): + self.run_process([PYTHON, path_from_root('tools/maint/gen_native_sig_info.py'), '-o', 'out.py']) + self.assertFilesMatch(path_from_root('tools/native_sigs.py'), 'out.py') + def test_gen_struct_info_env(self): # gen_struct_info.py builds C code in a very specific and low level way. We don't want # EMCC_CFLAGS (or any of the other environment variables that might effect compilation or diff --git a/tools/emscripten.py b/tools/emscripten.py index edf972b0f80d3..2e0c23b8ebb33 100644 --- a/tools/emscripten.py +++ b/tools/emscripten.py @@ -34,6 +34,7 @@ utils, webassembly, ) +from tools.native_sigs import native_sigs from tools.settings import settings, user_settings from tools.shared import DEBUG, asmjs_mangle, in_temp from tools.toolchain_profiler import ToolchainProfiler @@ -1122,113 +1123,17 @@ def create_invoke_wrappers(metadata): def create_pointer_conversion_wrappers(metadata): - # TODO(sbc): Move this into somewhere less static. Maybe it can become - # part of library.js file, even though this metadata relates specifically - # to native (non-JS) functions. - # # The signature format here is similar to the one used for JS libraries # but with the following as the only valid char: # '_' - non-pointer argument (pass through unchanged) # 'p' - pointer/int53 argument (convert to/from BigInt) # 'P' - same as above but allow `undefined` too (requires extra check) - mapping = { - 'sbrk': 'pP', - '_emscripten_stack_alloc': 'pp', - 'emscripten_get_sbrk_ptr': 'p', - 'emscripten_builtin_malloc': 'pp', - 'emscripten_builtin_calloc': 'ppp', - 'wasmfs_create_node_backend': 'pp', - 'malloc': 'pp', - 'realloc': 'ppp', - 'calloc': 'ppp', - 'webidl_malloc': 'pp', - 'memalign': 'ppp', - 'memcmp': '_ppp', - 'memcpy': 'pppp', - '__getTypeName': 'pp', - 'setThrew': '_p', - 'free': '_p', - 'webidl_free': '_p', - '_emscripten_stack_restore': '_p', - 'fflush': '_p', - 'emscripten_stack_get_end': 'p', - 'emscripten_stack_get_base': 'p', - 'pthread_self': 'p', - 'emscripten_stack_get_current': 'p', - '__errno_location': 'p', - 'emscripten_builtin_memalign': 'ppp', - 'emscripten_builtin_free': 'vp', - 'main': '__PP', - '__main_argc_argv': '__PP', - 'emscripten_stack_set_limits': '_pp', - '__set_stack_limits': '_pp', - '__set_thread_state': '_p___', - '__cxa_can_catch': '_ppp', - '__cxa_increment_exception_refcount': '_p', - '__cxa_decrement_exception_refcount': '_p', - '__cxa_get_exception_ptr': 'pp', - '_wasmfs_write_file': '_ppp', - '_wasmfs_mknod': '_p__', - '_wasmfs_symlink': '_pp', - '_wasmfs_chmod': '_p_', - '_wasmfs_lchmod': '_p_', - '_wasmfs_get_cwd': 'p_', - '_wasmfs_identify': '_p', - '_wasmfs_read_file': '_ppp', - '_wasmfs_node_record_dirent': '_pp_', - '__dl_seterr': '_pp', - '_emscripten_run_js_on_main_thread': '__p_p_', - '_emscripten_run_js_on_main_thread_done': '_pp_', - '_emscripten_thread_exit': '_p', - '_emscripten_thread_init': '_p_____', - '_emscripten_thread_free_data': '_p', - '_emscripten_dlsync_self_async': '_p', - '_emscripten_proxy_dlsync': '_p', - '_emscripten_proxy_dlsync_async': '_pp', - '_emscripten_wasm_worker_initialize': '__p_', - '_emscripten_proxy_poll_finish': '_pp_', - '_wasmfs_rename': '_pp', - '_wasmfs_readlink': '_pp', - '_wasmfs_truncate': '_p_', - '_wasmfs_mmap': 'pp____', - '_wasmfs_munmap': '_pp', - '_wasmfs_msync': '_pp_', - '_wasmfs_read': '__pp', - '_wasmfs_pread': '__pp_', - '_wasmfs_utime': '_p__', - '_wasmfs_rmdir': '_p', - '_wasmfs_unlink': '_p', - '_wasmfs_mkdir': '_p_', - '_wasmfs_open': '_p__', - '_wasmfs_mount': '_pp', - '_wasmfs_chdir': '_p', - '_wasmfs_opfs_record_entry': '_pp_', - '_wasmfs_fetch_get_file_url': 'pp', - '_wasmfs_fetch_get_chunk_size': '_p', - 'asyncify_start_rewind': '_p', - 'asyncify_start_unwind': '_p', - '__get_exception_message': '_ppp', - 'stbi_image_free': 'vp', - 'stbi_load': 'ppppp_', - 'stbi_load_from_memory': 'pp_ppp_', - 'strerror': 'p_', - 'emscripten_proxy_finish': '_p', - 'emscripten_proxy_execute_queue': '_p', - '_emval_coro_resume': '_pp', - '_emval_coro_reject': '_pp', - 'emscripten_main_runtime_thread_id': 'p', - '_emscripten_set_offscreencanvas_size_on_thread': '_pp__', - 'fileno': '_p', - '_emscripten_run_callback_on_thread': '_pp_ppp', - '_emscripten_find_dylib': 'ppppp', - } - for function in settings.SIGNATURE_CONVERSIONS: sym, sig = function.split(':') - mapping[sym] = sig + native_sigs[sym] = sig for f in ASAN_C_HELPERS: - mapping[f] = '_pp' + native_sigs[f] = '_pp' wrappers = ''' // Argument name here must shadow the `wasmExports` global so @@ -1251,8 +1156,8 @@ def create_pointer_conversion_wrappers(metadata): sig = ['p' if t == 'p' else '_' for t in sig] sig.insert(1, 'p') sig = ''.join(sig) - mapping[symbol] = sig - sig = mapping.get(symbol) + native_sigs[symbol] = sig + sig = native_sigs.get(symbol) if sig: if settings.MEMORY64: if sig not in sigs_seen: @@ -1266,7 +1171,7 @@ def create_pointer_conversion_wrappers(metadata): wrap_functions.append(symbol) for f in wrap_functions: - sig = mapping[f] + sig = native_sigs[f] wrappers += f"\n wasmExports['{f}'] = makeWrapper_{sig}(wasmExports['{f}']);" wrappers += '\n return wasmExports;\n}' diff --git a/tools/maint/gen_native_sig_info.py b/tools/maint/gen_native_sig_info.py new file mode 100755 index 0000000000000..79625aba0be94 --- /dev/null +++ b/tools/maint/gen_native_sig_info.py @@ -0,0 +1,178 @@ +#!/usr/bin/env python3 +# Copyright 2026 The Emscripten Authors. All rights reserved. +# Emscripten is available under two separate licenses, the MIT license and the +# University of Illinois/NCSA Open Source License. Both these licenses can be +# found in the LICENSE file. + +"""Extract native signature information for use in pointer conversion wrappers. + +It generates a file (or prints) a signature mapping for native functions. +""" + +import argparse +import os +import sys + +__scriptdir__ = os.path.dirname(os.path.abspath(__file__)) +__rootdir__ = os.path.dirname(os.path.dirname(__scriptdir__)) +sys.path.insert(0, __rootdir__) + +from tools import shared, utils, webassembly + +# Overrides to convert 'p' to 'P' (allow undefined) in signatures. +# Maps symbol name to the list of 0-based argument indices that should be 'P'. +signature_overrides = { + 'sbrk': [0], # sbrk(increment) + 'main': [1, 2], # main(argc, argv, envp) +} + + +def apply_overrides(sym, sig): + if sym in signature_overrides: + indices = signature_overrides[sym] + sig_chars = list(sig) + for idx in indices: + sig_idx = idx + 1 + if sig_idx < len(sig_chars) and sig_chars[sig_idx] == 'p': + sig_chars[sig_idx] = 'P' + return ''.join(sig_chars) + return sig + + +# WebIDL functions might not be linked in unless we use webidl binder. +# We can just define them in our dummy file to get their signatures, +# since they are just wrappers with predictable signatures. +# Same for other symbols that are hard to link. +extra_declarations = ''' +#include +#include +extern "C" { + void* webidl_malloc(size_t len) { return nullptr; } + void webidl_free(void* ptr) {} + __attribute__((weak)) uintptr_t __get_tp() { return 0; } + __attribute__((weak)) void __set_stack_limits(void* low, void* high) {} +} +''' + + +def extract_sigs(wasm_file): + sig_info = {} + with webassembly.Module(wasm_file) as mod: + exports = mod.get_exports() + for exp in exports: + # Ignore C++ mangled symbols (starting with '_Z') + if exp.name.startswith('_Z'): + continue + # Ignore `dynCall_` symbols generated by binaryen. + if exp.name.startswith('dynCall_'): + continue + if exp.kind == webassembly.ExternType.FUNC: + sig_info[exp.name] = mod.get_function_type(exp.index) + return sig_info + + +def valuetype_to_chr(t, t64): + if t == webassembly.Type.I32 and t64 == webassembly.Type.I64: + return 'p' + return '_' + + +def functype_to_str(t, t64): + assert len(t.returns) == len(t64.returns) + assert len(t.params) == len(t64.params) + if t.returns: + assert len(t.returns) == 1 + rtn = valuetype_to_chr(t.returns[0], t64.returns[0]) + else: + rtn = '_' + for p, p64 in zip(t.params, t64.params, strict=True): + rtn += valuetype_to_chr(p, p64) + return rtn + + +def run_build(config_flags, explicit_exports, main_args, suffix): + utils.safe_ensure_dirs(utils.path_from_root('out')) + cpp_file = utils.path_from_root('out/gen_native_sig_info.cpp') + # We write the dummy file with extra declarations to ensure they are defined + # and exported (since MAIN_MODULE=1 will export them if they are defined in the main module). + utils.write_file(cpp_file, f'int main({main_args}) {{ return 0; }}\n' + extra_declarations) + + wasm32 = utils.path_from_root(f'out/test_{suffix}32') + wasm64 = utils.path_from_root(f'out/test_{suffix}64') + + flags = config_flags.copy() + + if explicit_exports: + exports_str = ','.join(explicit_exports) + flags.append(f'-sEXPORTED_FUNCTIONS=_main,{exports_str}') + else: + flags += ['-Wl,--whole-archive', '-Wl,--export-all'] + + # Wasm32 build + cmd = [shared.EMXX, cpp_file, '-o', wasm32 + '.js', *flags] + print(f"Building wasm32 for {suffix}...") + shared.check_call(cmd) + + # Wasm64 build + cmd_64 = [shared.EMXX, cpp_file, '-o', wasm64 + '.js', '-m64', *flags] + print(f"Building wasm64 for {suffix}...") + shared.check_call(cmd_64) + + return wasm32 + '.wasm', wasm64 + '.wasm' + + +def main(args): + parser = argparse.ArgumentParser() + default_output = utils.path_from_root('tools/native_sigs.py') + parser.add_argument('-o', '--output', default=default_output, help='Python output file (default: tools/native_sigs.py, use "-" for stdout)') + args = parser.parse_args() + + # Define configurations to cover different sets of symbols. + # We use MAIN_MODULE=1 to export everything that gets linked. + configs = { + 'base': (['-pthread', '-sASYNCIFY', '-sSTB_IMAGE', '--bind', '-sSTACK_OVERFLOW_CHECK=1'], [], 'int argc, char* argv[], char* envp[]'), + 'wasmfs': (['-sWASMFS', '-pthread', '-sSTB_IMAGE', '--bind', '-sSTACK_OVERFLOW_CHECK=1'], [], ''), + 'wasm_workers': (['-sWASM_WORKERS', '-sSTACK_OVERFLOW_CHECK=1'], ['__emscripten_wasm_worker_initialize'], ''), + 'main_module': (['-sMAIN_MODULE', '-pthread', '-Wno-experimental'], [], ''), + } + + merged_sigs = {} + + for name, (flags, exports, main_args) in configs.items(): + wasm32, wasm64 = run_build(flags, exports, main_args, name) + sigs32 = extract_sigs(wasm32) + sigs64 = extract_sigs(wasm64) + + for sym, sig32 in sigs32.items(): + sig64 = sigs64[sym] + type_str = functype_to_str(sig32, sig64) + if sym in merged_sigs: + if merged_sigs[sym] != type_str: + print(f'symbol type mismatch for {sym}: existing={merged_sigs[sym]} vs new={type_str}') + continue + merged_sigs[sym] = type_str + + # Filter results to only include signatures containing pointers ('p') + result_sigs = {} + for sym, sig in merged_sigs.items(): + if 'p' in sig.lower(): + result_sigs[sym] = apply_overrides(sym, sig) + + # Duplicate main signature to __main_argc_argv + assert '__main_argc_argv' not in result_sigs + result_sigs['__main_argc_argv'] = result_sigs['main'] + + content = '# Auto-generated by tools/maint/gen_native_sig_info.py. DO NOT EDIT.\n' + content += 'native_sigs = {\n' + for sym, sig in sorted(result_sigs.items()): + content += f" '{sym}': '{sig}',\n" + content += '}\n' + + if args.output == '-': + print(content, end='') + else: + utils.write_file(args.output, content) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/tools/native_sigs.py b/tools/native_sigs.py new file mode 100644 index 0000000000000..47b8e5b3e3f7e --- /dev/null +++ b/tools/native_sigs.py @@ -0,0 +1,1785 @@ +# Auto-generated by tools/maint/gen_native_sig_info.py. DO NOT EDIT. +native_sigs = { + 'SDL_GL_GetProcAddress': 'pp', + '_IO_feof_unlocked': '_p', + '_IO_ferror_unlocked': '_p', + '_IO_getc': '_p', + '_IO_getc_unlocked': '_p', + '_IO_putc': '__p', + '_IO_putc_unlocked': '__p', + '___cxa_atexit': '_ppp', + '___cxa_finalize': '_p', + '___errno_location': 'p', + '__abort_message': '_pp', + '__absvti2': '_p__', + '__addtf3': '_p____', + '__addvti3': '_p____', + '__asctime_r': 'ppp', + '__ashlti3': '_p___', + '__ashrti3': '_p___', + '__atexit': '_p', + '__atomic_compare_exchange': '_pppp__', + '__atomic_compare_exchange_1': '_pp___', + '__atomic_compare_exchange_16': '_pp____', + '__atomic_compare_exchange_2': '_pp___', + '__atomic_compare_exchange_4': '_pp___', + '__atomic_compare_exchange_8': '_pp___', + '__atomic_exchange': '_pppp_', + '__atomic_exchange_1': '_p__', + '__atomic_exchange_16': '_pp___', + '__atomic_exchange_2': '_p__', + '__atomic_exchange_4': '_p__', + '__atomic_exchange_8': '_p__', + '__atomic_fetch_add_1': '_p__', + '__atomic_fetch_add_16': '_pp___', + '__atomic_fetch_add_2': '_p__', + '__atomic_fetch_add_4': '_p__', + '__atomic_fetch_add_8': '_p__', + '__atomic_fetch_and_1': '_p__', + '__atomic_fetch_and_16': '_pp___', + '__atomic_fetch_and_2': '_p__', + '__atomic_fetch_and_4': '_p__', + '__atomic_fetch_and_8': '_p__', + '__atomic_fetch_nand_1': '_p__', + '__atomic_fetch_nand_16': '_pp___', + '__atomic_fetch_nand_2': '_p__', + '__atomic_fetch_nand_4': '_p__', + '__atomic_fetch_nand_8': '_p__', + '__atomic_fetch_or_1': '_p__', + '__atomic_fetch_or_16': '_pp___', + '__atomic_fetch_or_2': '_p__', + '__atomic_fetch_or_4': '_p__', + '__atomic_fetch_or_8': '_p__', + '__atomic_fetch_sub_1': '_p__', + '__atomic_fetch_sub_16': '_pp___', + '__atomic_fetch_sub_2': '_p__', + '__atomic_fetch_sub_4': '_p__', + '__atomic_fetch_sub_8': '_p__', + '__atomic_fetch_xor_1': '_p__', + '__atomic_fetch_xor_16': '_pp___', + '__atomic_fetch_xor_2': '_p__', + '__atomic_fetch_xor_4': '_p__', + '__atomic_fetch_xor_8': '_p__', + '__atomic_is_lock_free': '_pp', + '__atomic_load': '_ppp_', + '__atomic_load_1': '_p_', + '__atomic_load_16': '_pp_', + '__atomic_load_2': '_p_', + '__atomic_load_4': '_p_', + '__atomic_load_8': '_p_', + '__atomic_store': '_ppp_', + '__atomic_store_1': '_p__', + '__atomic_store_16': '_p___', + '__atomic_store_2': '_p__', + '__atomic_store_4': '_p__', + '__atomic_store_8': '_p__', + '__block_all_sigs': '_p', + '__block_app_sigs': '_p', + '__cancel': 'p', + '__clear_cache': '_pp', + '__clock_gettime': '__p', + '__clock_nanosleep': '___pp', + '__compilerrt_abort_impl': '_p_p', + '__convert_scm_timestamps': '_p_', + '__cosl': '_p____', + '__crypt_blowfish': 'pppp', + '__crypt_des': 'pppp', + '__crypt_md5': 'pppp', + '__crypt_r': 'pppp', + '__crypt_sha256': 'pppp', + '__crypt_sha512': 'pppp', + '__ctype_b_loc': 'p', + '__ctype_get_mb_cur_max': 'p', + '__ctype_tolower_loc': 'p', + '__ctype_toupper_loc': 'p', + '__cxa_allocate_exception': 'pp', + '__cxa_atexit': '_ppp', + '__cxa_can_catch': '_ppp', + '__cxa_current_primary_exception': 'p', + '__cxa_decrement_exception_refcount': '_p', + '__cxa_demangle': 'ppppp', + '__cxa_finalize': '_p', + '__cxa_free_exception': '_p', + '__cxa_get_exception_ptr': 'pp', + '__cxa_guard_abort': '_p', + '__cxa_guard_acquire': '_p', + '__cxa_guard_release': '_p', + '__cxa_increment_exception_refcount': '_p', + '__cxa_init_primary_exception': 'pppp', + '__cxa_rethrow_primary_exception': '_p', + '__cxa_thread_atexit': '_ppp', + '__des_setkey': '_pp', + '__divdc3': '_p____', + '__divmoddi4': '___p', + '__divmodsi4': '___p', + '__divmodti4': '_p____p', + '__divsc3': '_p____', + '__divtc3': '_p________', + '__divtf3': '_p____', + '__divti3': '_p____', + '__dl_invalid_handle': '_p', + '__dl_seterr': '_pp', + '__dl_vseterr': '_pp', + '__dlsym': 'pppp', + '__dn_expand': '_pppp_', + '__dns_parse': '_p_pp', + '__do_cleanup_pop': '_p', + '__do_cleanup_push': '_p', + '__do_des': '___pp__p', + '__duplocale': 'pp', + '__dynamic_cast': 'ppppp', + '__emutls_get_address': 'pp', + '__enable_execute_stack': '_p', + '__env_rm_add': '_pp', + '__eprintf': '_pppp', + '__errno_location': 'p', + '__execvpe': '_ppp', + '__extenddftf2': '_p_', + '__extendsftf2': '_p_', + '__fbufsize': 'pp', + '__fclose_ca': '_p', + '__fdopen': 'p_p', + '__fgetwc_unlocked': '_p', + '__fixdfti': '_p_', + '__fixsfti': '_p_', + '__fixtfti': '_p__', + '__fixunsdfti': '_p_', + '__fixunssfti': '_p_', + '__fixunstfti': '_p__', + '__flbf': '_p', + '__floatditf': '_p_', + '__floatscan': '_pp__', + '__floatsitf': '_p_', + '__floattitf': '_p__', + '__floatunditf': '_p_', + '__floatunsitf': '_p_', + '__floatuntitf': '_p__', + '__fmodeflags': '_p', + '__fopen_rb_ca': 'ppppp', + '__fpending': 'pp', + '__fpurge': '_p', + '__fputwc_unlocked': '__p', + '__freadable': '_p', + '__freadahead': 'pp', + '__freading': '_p', + '__freadptr': 'ppp', + '__freadptrinc': '_pp', + '__freelocale': '_p', + '__fseeko': '_p__', + '__fseeko_unlocked': '_p__', + '__fseterr': '_p', + '__fsetlocking': '_p_', + '__fstat': '__p', + '__fstatat': '__pp_', + '__ftello': '_p', + '__ftello_unlocked': '_p', + '__futimesat': '__pp', + '__fwritable': '_p', + '__fwritex': 'pppp', + '__fwriting': '_p', + '__fxstat': '___p', + '__fxstatat': '___pp_', + '__getTypeName': 'pp', + '__get_exception_message': '_ppp', + '__get_exception_terminate_message': 'pp', + '__get_locale': 'p_p', + '__get_resolv_conf': '_ppp', + '__get_tp': 'p', + '__getdelim': 'ppp_p', + '__getitimer': '__p_', + '__getopt_msg': '_pppp', + '__gettextdomain': 'p', + '__gmtime_r': 'ppp', + '__h_errno_location': 'p', + '__inet_aton': '_pp', + '__init_ssp': '_p', + '__intscan': '_p___', + '__invtrigl_R': '_p__', + '__isalnum_l': '__p', + '__isalpha_l': '__p', + '__isblank_l': '__p', + '__iscntrl_l': '__p', + '__isdigit_l': '__p', + '__isgraph_l': '__p', + '__islower_l': '__p', + '__isoc99_fscanf': '_ppp', + '__isoc99_fwscanf': '_ppp', + '__isoc99_scanf': '_pp', + '__isoc99_sscanf': '_ppp', + '__isoc99_swscanf': '_ppp', + '__isoc99_vfscanf': '_ppp', + '__isoc99_vfwscanf': '_ppp', + '__isoc99_vscanf': '_pp', + '__isoc99_vsscanf': '_ppp', + '__isoc99_vswscanf': '_ppp', + '__isoc99_vwscanf': '_pp', + '__isoc99_wscanf': '_pp', + '__isprint_l': '__p', + '__ispunct_l': '__p', + '__isspace_l': '__p', + '__isupper_l': '__p', + '__iswalnum_l': '__p', + '__iswalpha_l': '__p', + '__iswblank_l': '__p', + '__iswcntrl_l': '__p', + '__iswctype_l': '___p', + '__iswdigit_l': '__p', + '__iswgraph_l': '__p', + '__iswlower_l': '__p', + '__iswprint_l': '__p', + '__iswpunct_l': '__p', + '__iswspace_l': '__p', + '__iswupper_l': '__p', + '__iswxdigit_l': '__p', + '__isxdigit_l': '__p', + '__lctrans': 'ppp', + '__lctrans_cur': 'pp', + '__lctrans_impl': 'ppp', + '__ldexp_cexp': '_pp_', + '__ldexp_cexpf': '_pp_', + '__lgamma_r': '__p', + '__lgammaf_r': '__p', + '__lgammal_r': '_p__p', + '__libc_calloc': 'ppp', + '__libc_free': '_p', + '__libc_malloc': 'pp', + '__libc_realloc': 'ppp', + '__llvm_get_function_addr': 'pp', + '__llvm_profile_begin_bitmap': 'p', + '__llvm_profile_begin_counters': 'p', + '__llvm_profile_begin_covinit': 'p', + '__llvm_profile_begin_data': 'p', + '__llvm_profile_begin_names': 'p', + '__llvm_profile_begin_vnodes': 'p', + '__llvm_profile_begin_vtables': 'p', + '__llvm_profile_begin_vtabnames': 'p', + '__llvm_profile_check_compatibility': '_p_', + '__llvm_profile_counter_entry_size': 'p', + '__llvm_profile_end_bitmap': 'p', + '__llvm_profile_end_counters': 'p', + '__llvm_profile_end_covinit': 'p', + '__llvm_profile_end_data': 'p', + '__llvm_profile_end_names': 'p', + '__llvm_profile_end_vnodes': 'p', + '__llvm_profile_end_vtables': 'p', + '__llvm_profile_end_vtabnames': 'p', + '__llvm_profile_get_counters_size': '_pp', + '__llvm_profile_get_data_size': '_pp', + '__llvm_profile_get_filename': 'p', + '__llvm_profile_get_name_size': '_pp', + '__llvm_profile_get_num_bitmap_bytes': '_pp', + '__llvm_profile_get_num_counters': '_pp', + '__llvm_profile_get_num_data': '_pp', + '__llvm_profile_get_num_vtable': '_pp', + '__llvm_profile_get_padding_sizes_for_counters': '_______pppppp', + '__llvm_profile_get_path_prefix': 'p', + '__llvm_profile_get_size_for_buffer_internal': '_pppppppppppp', + '__llvm_profile_get_vtable_section_size': '_pp', + '__llvm_profile_instrument_memop': '__p_', + '__llvm_profile_instrument_target': '__p_', + '__llvm_profile_instrument_target_value': '__p__', + '__llvm_profile_iterate_data': 'pp', + '__llvm_profile_merge_from_buffer': '_p_', + '__llvm_profile_recursive_mkdir': '_p', + '__llvm_profile_set_file_object': '_p_', + '__llvm_profile_set_filename': '_p', + '__llvm_profile_set_num_value_sites': '_p__', + '__llvm_profile_set_timestamp': '_p', + '__llvm_profile_write_buffer': '_p', + '__llvm_profile_write_buffer_internal': '_ppppppppp', + '__llvm_write_binary_ids': '_p', + '__llvm_write_custom_profile': '_pppppppp', + '__loc_is_allocated': '_p', + '__localtime_r': 'ppp', + '__lock': '_p', + '__lockfile': '_p', + '__lookup_ipliteral': '_pp_', + '__lookup_name': '_ppp__', + '__lookup_serv': '_pp___', + '__lshrti3': '_p___', + '__lxstat': '__pp', + '__madvise': '_pp_', + '__main_argc_argv': '__PP', + '__map_file': 'ppp', + '__math_invalidl': '_p__', + '__memrchr': 'pp_p', + '__memset': 'pp_p', + '__mkostemps': '_p__', + '__mmap': 'ppp____', + '__mo_lookup': 'pppp', + '__modti3': '_p____', + '__mprotect': '_pp_', + '__mremap': 'pppp_p', + '__muldc3': '_p____', + '__mulodi4': '___p', + '__mulosi4': '___p', + '__muloti4': '_p____p', + '__mulsc3': '_p____', + '__multc3': '_p________', + '__multf3': '_p____', + '__multi3': '_p____', + '__mulvti3': '_p____', + '__munmap': '_pp', + '__negti2': '_p__', + '__negvti2': '_p__', + '__newlocale': 'p_pp', + '__nl_langinfo': 'p_', + '__nl_langinfo_l': 'p_p', + '__ofl_add': 'pp', + '__ofl_lock': 'p', + '__overflow': '_p_', + '__p1evll': '_p__p_', + '__pleval': 'ppp', + '__polevll': '_p__p_', + '__posix_getopt': '__pp', + '__powitf2': '_p___', + '__private_cond_signal': '_p_', + '__procfdname': '_p_', + '__pthread_cond_timedwait': '_ppp', + '__pthread_create': '_pppp', + '__pthread_exit': '_p', + '__pthread_join': '_pp', + '__pthread_key_create': '_pp', + '__pthread_mutex_lock': '_p', + '__pthread_mutex_timedlock': '_pp', + '__pthread_mutex_trylock': '_p', + '__pthread_mutex_trylock_owner': '_p', + '__pthread_mutex_unlock': '_p', + '__pthread_once': '_pp', + '__pthread_once_full': '_pp', + '__pthread_rwlock_rdlock': '_p', + '__pthread_rwlock_timedrdlock': '_pp', + '__pthread_rwlock_timedwrlock': '_pp', + '__pthread_rwlock_tryrdlock': '_p', + '__pthread_rwlock_trywrlock': '_p', + '__pthread_rwlock_unlock': '_p', + '__pthread_rwlock_wrlock': '_p', + '__pthread_setcancelstate': '__p', + '__ptsname_r': '__pp', + '__putenv': '_ppp', + '__qsort_r': '_ppppp', + '__rand48_step': '_pp', + '__randname': 'pp', + '__register_locked_file': '_pp', + '__rem_pio2': '__p', + '__rem_pio2_large': '_pp___', + '__rem_pio2f': '__p', + '__rem_pio2l': '___p', + '__res_mkquery': '__p__p_pp_', + '__res_msend': '__pppp_', + '__res_msend_rc': '__pppp_p', + '__res_send': '_p_p_', + '__res_state': 'p', + '__restore_sigs': '_p', + '__rtnetlink_enumerate': '___pp', + '__set_stack_limits': '_pp', + '__set_thread_state': '_p___', + '__shgetc': '_p', + '__shlim': '_p_', + '__shm_mapname': 'ppp', + '__sigaction': '__pp', + '__sinl': '_p_____', + '__small_fprintf': '_ppp', + '__small_printf': '_pp', + '__small_sprintf': '_ppp', + '__small_vfprintf': '_ppp', + '__small_vsnprintf': '_pppp', + '__small_vsprintf': '_ppp', + '__stdio_close': '_p', + '__stdio_read': 'pppp', + '__stdio_seek': '_p__', + '__stdio_write': 'pppp', + '__stdout_write': 'pppp', + '__stpcpy': 'ppp', + '__stpncpy': 'pppp', + '__strcasecmp_l': '_ppp', + '__strchrnul': 'pp_', + '__strcoll_l': '_ppp', + '__strerror_l': 'p_p', + '__strftime_fmt_1': 'ppp_pp_', + '__strftime_l': 'pppppp', + '__strncasecmp_l': '_pppp', + '__strtod_l': '_ppp', + '__strtof_l': '_ppp', + '__strtoimax_internal': '_pp_', + '__strtol_internal': 'ppp_', + '__strtold_l': '_pppp', + '__strtoll_internal': '_pp_', + '__strtoul_internal': 'ppp_', + '__strtoull_internal': '_pp_', + '__strtoumax_internal': '_pp_', + '__strxfrm_l': 'ppppp', + '__subtf3': '_p____', + '__subvti3': '_p____', + '__synccall': '_pp', + '__syscall_accept4': '__pp___', + '__syscall_acct': '_p', + '__syscall_bind': '__p____', + '__syscall_chdir': '_p', + '__syscall_chmod': '_p_', + '__syscall_connect': '__p____', + '__syscall_faccessat': '__p__', + '__syscall_fchmodat2': '__p__', + '__syscall_fchownat': '__p___', + '__syscall_fcntl64': '___p', + '__syscall_fstat64': '__p', + '__syscall_fstatfs64': '__pp', + '__syscall_getcwd': '_pp', + '__syscall_getdents64': '__pp', + '__syscall_getgroups32': '__p', + '__syscall_getpeername': '__pp___', + '__syscall_getresgid32': '_ppp', + '__syscall_getresuid32': '_ppp', + '__syscall_getrusage': '__p', + '__syscall_getsockname': '__pp___', + '__syscall_getsockopt': '____pp_', + '__syscall_ioctl': '___p', + '__syscall_linkat': '__p_p_', + '__syscall_lstat64': '_pp', + '__syscall_madvise': '_pp_', + '__syscall_mincore': '_ppp', + '__syscall_mkdirat': '__p_', + '__syscall_mknodat': '__p__', + '__syscall_mlock': '_pp', + '__syscall_mmap2': 'ppp____', + '__syscall_mprotect': '_pp_', + '__syscall_mremap': '_ppp_p', + '__syscall_msync': '_pp_', + '__syscall_munlock': '_pp', + '__syscall_munmap': '_pp', + '__syscall_newfstatat': '__pp_', + '__syscall_openat': '__p_p', + '__syscall_pipe2': '_p_', + '__syscall_poll': '_p__', + '__syscall_poll_nonblocking': '_p_', + '__syscall_prlimit64': '___pp', + '__syscall_readlinkat': '__ppp', + '__syscall_recvfrom': '__pp_pp', + '__syscall_recvmmsg': '__p__p', + '__syscall_recvmsg': '__p____', + '__syscall_renameat': '__p_p', + '__syscall_ret': 'pp', + '__syscall_rmdir': '_p', + '__syscall_sendmmsg': '__p__p', + '__syscall_sendmsg': '__p_pp_', + '__syscall_sendto': '__pp_p_', + '__syscall_setdomainname': '_pp', + '__syscall_setsockopt': '____p__', + '__syscall_socketpair': '____p__', + '__syscall_stat64': '_pp', + '__syscall_statfs64': '_ppp', + '__syscall_symlinkat': '_p_p', + '__syscall_truncate64': '_p_', + '__syscall_uname': '_p', + '__syscall_unlinkat': '__p_', + '__syscall_utimensat': '__pp_', + '__syscall_wait4': '__p__', + '__sysv_signal': 'p_p', + '__tanl': '_p_____', + '__thrown_object_from_unwind_exception': 'pp', + '__timedwait': '_p__p_', + '__timedwait_cp': '_p__p_', + '__tl_sync': '_p', + '__tm_to_secs': '_p', + '__tm_to_tzname': 'pp', + '__tolower_l': '__p', + '__toread': '_p', + '__toupper_l': '__p', + '__towctrans_l': '__pp', + '__towlower_l': '__p', + '__towrite': '_p', + '__towupper_l': '__p', + '__tre_mem_alloc_impl': 'pp_p_p', + '__tre_mem_destroy': '_p', + '__tre_mem_new_impl': 'p_p', + '__tsearch_balance': '_p', + '__udivmoddi4': '___p', + '__udivmodsi4': '___p', + '__udivmodti4': '_p____p', + '__udivti3': '_p____', + '__uflow': '_p', + '__umodti3': '_p____', + '__unlist_locked_file': '_p', + '__unlock': '_p', + '__unlockfile': '_p', + '__uselocale': 'pp', + '__vfprintf_internal': '_ppppp', + '__wait': '_pp__', + '__wasi_fd_fdstat_get': '__p', + '__wasi_fd_pread': '__pp_p', + '__wasi_fd_pwrite': '__pp_p', + '__wasi_fd_read': '__ppp', + '__wasi_fd_seek': '____p', + '__wasi_fd_write': '__ppp', + '__wasi_timestamp_to_timespec': '_p_', + '__wasm_init_tls': '_p', + '__wasm_setjmp': '_p_p', + '__wasm_setjmp_test': '_pp', + '__wcscoll_l': '_ppp', + '__wcsftime_l': 'pppppp', + '__wcsxfrm_l': 'ppppp', + '__wctrans_l': 'ppp', + '__wctype_l': '_pp', + '__xmknod': '__p_p', + '__xmknodat': '___p_p', + '__xpg_basename': 'pp', + '__xpg_strerror_r': '__pp', + '__xstat': '__pp', + '__year_to_secs': '__p', + '_embind_register_bindings': '_p', + '_emscripten_dlsync_self_async': '_p', + '_emscripten_find_dylib': 'ppppp', + '_emscripten_memcpy_bulkmem': 'pppp', + '_emscripten_memset_bulkmem': 'pp_p', + '_emscripten_proxy_dlsync': '_p', + '_emscripten_proxy_dlsync_async': '_pp', + '_emscripten_run_callback_on_thread': '_pp_ppp', + '_emscripten_run_js_on_main_thread': '__p_p_', + '_emscripten_run_js_on_main_thread_done': '_pp_', + '_emscripten_set_offscreencanvas_size_on_thread': '_pp__', + '_emscripten_stack_alloc': 'pp', + '_emscripten_stack_restore': '_p', + '_emscripten_thread_exit': '_p', + '_emscripten_thread_free_data': '_p', + '_emscripten_thread_init': '_p_____', + '_emscripten_thread_is_valid': '_p', + '_emscripten_thread_mailbox_init': '_p', + '_emscripten_thread_mailbox_shutdown': '_p', + '_emscripten_thread_notify': '_p', + '_emscripten_thread_profiler_init': '_p', + '_emscripten_tls_init': 'p', + '_emscripten_wasm_worker_initialize': '__p_', + '_emval_coro_reject': '_pp', + '_emval_coro_resume': '_pp', + '_mmap_js': '_p____pp', + '_msync_js': '_pp____', + '_munmap_js': '_pp____', + '_pthread_cleanup_pop': '_p_', + '_pthread_cleanup_push': '_ppp', + '_sbrk64': 'p_', + '_wasmfs_chdir': '_p', + '_wasmfs_chmod': '_p_', + '_wasmfs_fetch_get_chunk_size': '_p', + '_wasmfs_fetch_get_file_url': 'pp', + '_wasmfs_get_cwd': 'p', + '_wasmfs_identify': '_p', + '_wasmfs_lchmod': '_p_', + '_wasmfs_lstat': '_pp', + '_wasmfs_mkdir': '_p_', + '_wasmfs_mknod': '_p__', + '_wasmfs_mmap': 'pp____', + '_wasmfs_mount': '_pp', + '_wasmfs_msync': '_pp_', + '_wasmfs_munmap': '_pp', + '_wasmfs_node_record_dirent': '_pp_', + '_wasmfs_open': '_p__', + '_wasmfs_opfs_record_entry': '_pp_', + '_wasmfs_pread': '__pp_', + '_wasmfs_pwrite': '__pp_', + '_wasmfs_read': '__pp', + '_wasmfs_read_file': '_ppp', + '_wasmfs_readdir_finish': '_p', + '_wasmfs_readdir_get': 'pp', + '_wasmfs_readdir_start': 'pp', + '_wasmfs_readlink': '_pp', + '_wasmfs_rename': '_pp', + '_wasmfs_rmdir': '_p', + '_wasmfs_stat': '_pp', + '_wasmfs_symlink': '_pp', + '_wasmfs_truncate': '_p_', + '_wasmfs_unlink': '_p', + '_wasmfs_utime': '_p__', + '_wasmfs_write': '__pp', + '_wasmfs_write_file': '_ppp', + '_webgl1_match_ext_proc_address_without_suffix': 'pp', + 'a64l': 'pp', + 'accept': '__pp', + 'accept4': '__pp_', + 'access': '_p_', + 'acct': '_p', + 'acoshl': '_p__', + 'acosl': '_p__', + 'addmntent': '_pp', + 'alGetProcAddress': 'pp', + 'alcGetProcAddress': 'ppp', + 'aligned_alloc': 'ppp', + 'alphasort': '_pp', + 'asctime': 'pp', + 'asctime_r': 'ppp', + 'asinhl': '_p__', + 'asinl': '_p__', + 'asprintf': '_ppp', + 'asyncify_start_rewind': '_p', + 'asyncify_start_unwind': '_p', + 'at_quick_exit': '_p', + 'atan2l': '_p____', + 'atanhl': '_p__', + 'atanl': '_p__', + 'atexit': '_p', + 'atof': '_p', + 'atoi': '_p', + 'atol': 'pp', + 'atoll': '_p', + 'atomic_flag_clear': '_p', + 'atomic_flag_clear_explicit': '_p_', + 'atomic_flag_test_and_set': '_p', + 'atomic_flag_test_and_set_explicit': '_p_', + 'basename': 'pp', + 'bcmp': '_ppp', + 'bcopy': '_ppp', + 'bind': '__p_', + 'bind_textdomain_codeset': 'ppp', + 'bindtextdomain': 'ppp', + 'brk': '_p', + 'bsd_signal': 'p_p', + 'bsearch': 'pppppp', + 'bulk_free': 'ppp', + 'bzero': '_pp', + 'c16rtomb': 'pp_p', + 'c32rtomb': 'pp_p', + 'cabs': '_p', + 'cabsf': '_p', + 'cabsl': '_pp', + 'cacos': '_pp', + 'cacosf': '_pp', + 'cacosh': '_pp', + 'cacoshf': '_pp', + 'cacoshl': '_pp', + 'cacosl': '_pp', + 'call_once': '_pp', + 'calloc': 'ppp', + 'carg': '_p', + 'cargf': '_p', + 'cargl': '_pp', + 'casin': '_pp', + 'casinf': '_pp', + 'casinh': '_pp', + 'casinhf': '_pp', + 'casinhl': '_pp', + 'casinl': '_pp', + 'catan': '_pp', + 'catanf': '_pp', + 'catanh': '_pp', + 'catanhf': '_pp', + 'catanhl': '_pp', + 'catanl': '_pp', + 'catclose': '_p', + 'catgets': 'pp__p', + 'catopen': 'pp_', + 'cbrtl': '_p__', + 'ccos': '_pp', + 'ccosf': '_pp', + 'ccosh': '_pp', + 'ccoshf': '_pp', + 'ccoshl': '_pp', + 'ccosl': '_pp', + 'ceill': '_p__', + 'cexp': '_pp', + 'cexpf': '_pp', + 'cexpl': '_pp', + 'cfgetispeed': '_p', + 'cfgetospeed': '_p', + 'cfmakeraw': '_p', + 'cfsetispeed': '_p_', + 'cfsetospeed': '_p_', + 'cfsetspeed': '_p_', + 'chdir': '_p', + 'chmod': '_p_', + 'chown': '_p__', + 'chroot': '_p', + 'cimag': '_p', + 'cimagf': '_p', + 'cimagl': '_pp', + 'clearerr': '_p', + 'clearerr_unlocked': '_p', + 'clock_getcpuclockid': '__p', + 'clock_getres': '__p', + 'clock_gettime': '__p', + 'clock_nanosleep': '___pp', + 'clock_settime': '__p', + 'clog': '_pp', + 'clogf': '_pp', + 'clogl': '_pp', + 'closedir': '_p', + 'cnd_broadcast': '_p', + 'cnd_destroy': '_p', + 'cnd_init': '_p', + 'cnd_signal': '_p', + 'cnd_timedwait': '_ppp', + 'cnd_wait': '_pp', + 'confstr': 'p_pp', + 'conj': '_pp', + 'conjf': '_pp', + 'conjl': '_pp', + 'connect': '__p_', + 'copysignl': '_p____', + 'coshl': '_p__', + 'cosl': '_p__', + 'cpow': '_ppp', + 'cpowf': '_ppp', + 'cpowl': '_ppp', + 'cproj': '_pp', + 'cprojf': '_pp', + 'cprojl': '_pp', + 'creal': '_p', + 'crealf': '_p', + 'creall': '_pp', + 'creat': '_p_', + 'crypt': 'ppp', + 'crypt_r': 'pppp', + 'csin': '_pp', + 'csinf': '_pp', + 'csinh': '_pp', + 'csinhf': '_pp', + 'csinhl': '_pp', + 'csinl': '_pp', + 'csqrt': '_pp', + 'csqrtf': '_pp', + 'csqrtl': '_pp', + 'ctan': '_pp', + 'ctanf': '_pp', + 'ctanh': '_pp', + 'ctanhf': '_pp', + 'ctanhl': '_pp', + 'ctanl': '_pp', + 'ctermid': 'pp', + 'ctime': 'pp', + 'ctime_r': 'ppp', + 'dcgettext': 'ppp_', + 'dcngettext': 'ppppp_', + 'dgettext': 'ppp', + 'dirfd': '_p', + 'dirname': 'pp', + 'div': '_p__', + 'dladdr': '_pp', + 'dlclose': '_p', + 'dlerror': 'p', + 'dlopen': 'pp_', + 'dlsym': 'ppp', + 'dn_comp': '_pp_pp', + 'dn_expand': '_pppp_', + 'dn_skipname': '_pp', + 'dngettext': 'ppppp', + 'dprintf': '__pp', + 'duplocale': 'pp', + 'eaccess': '_p_', + 'ecvt': 'p__pp', + 'eglGetProcAddress': 'pp', + 'em_proxying_queue_create': 'p', + 'em_proxying_queue_destroy': '_p', + 'em_task_queue_cancel': '_p', + 'em_task_queue_create': 'pp', + 'em_task_queue_dequeue': '_pp', + 'em_task_queue_destroy': '_p', + 'em_task_queue_enqueue': '_pp', + 'em_task_queue_execute': '_p', + 'em_task_queue_send': '_pp', + 'emscripten_GetProcAddress': 'pp', + 'emscripten_async_run_in_main_runtime_thread_': '__pp', + 'emscripten_async_run_in_main_thread': '_p', + 'emscripten_async_waitable_close': '_p', + 'emscripten_async_waitable_run_in_main_runtime_thread_': 'p_pp', + 'emscripten_atomic_wait_suspending': '_p__', + 'emscripten_builtin_calloc': 'ppp', + 'emscripten_builtin_free': '_p', + 'emscripten_builtin_malloc': 'pp', + 'emscripten_builtin_memalign': 'ppp', + 'emscripten_builtin_memcpy': 'pppp', + 'emscripten_builtin_memset': 'pp_p', + 'emscripten_builtin_mmap': 'ppp____', + 'emscripten_builtin_munmap': '_pp', + 'emscripten_builtin_pthread_create': '_pppp', + 'emscripten_builtin_pthread_detach': '_p', + 'emscripten_builtin_pthread_exit': '_p', + 'emscripten_builtin_pthread_join': '_pp', + 'emscripten_builtin_realloc': 'ppp', + 'emscripten_compute_dom_pk_code': '_p', + 'emscripten_condvar_init': '_p', + 'emscripten_condvar_signal': '_p_', + 'emscripten_condvar_wait': '_pp_', + 'emscripten_condvar_wait_async': '_pppp_', + 'emscripten_condvar_waitinf': '_pp', + 'emscripten_console_errorf': '_pp', + 'emscripten_console_logf': '_pp', + 'emscripten_console_tracef': '_pp', + 'emscripten_console_warnf': '_pp', + 'emscripten_dbg_backtracef': '_pp', + 'emscripten_dbgf': '_pp', + 'emscripten_dispatch_to_thread_': '_p_ppp', + 'emscripten_dispatch_to_thread_args': '_p_ppp', + 'emscripten_dispatch_to_thread_async_': '_p_ppp', + 'emscripten_dispatch_to_thread_async_args': '_p_ppp', + 'emscripten_dlopen': '_p_ppp', + 'emscripten_dlopen_promise': 'pp_', + 'emscripten_dom_pk_code_to_string': 'p_', + 'emscripten_dom_vk_to_string': 'p_', + 'emscripten_errf': '_pp', + 'emscripten_fiber_init': '_ppppppp', + 'emscripten_fiber_init_from_current_context': '_ppp', + 'emscripten_futex_wait': '_p__', + 'emscripten_futex_wake': '_p_', + 'emscripten_get_devicemotion_status': '_p', + 'emscripten_get_deviceorientation_status': '_p', + 'emscripten_get_heap_size': 'p', + 'emscripten_get_mouse_status': '_p', + 'emscripten_get_preloaded_image_data_from_FILE': 'pppp', + 'emscripten_get_sbrk_ptr': 'p', + 'emscripten_lock_busyspin_wait_acquire': '_p_', + 'emscripten_lock_busyspin_waitinf_acquire': '_p', + 'emscripten_lock_init': '_p', + 'emscripten_lock_release': '_p', + 'emscripten_lock_try_acquire': '_p', + 'emscripten_lock_wait_acquire': '_p_', + 'emscripten_lock_waitinf_acquire': '_p', + 'emscripten_log': '__pp', + 'emscripten_longjmp': '_p_', + 'emscripten_main_runtime_thread_id': 'p', + 'emscripten_outf': '_pp', + 'emscripten_proxy_async': '_pppp', + 'emscripten_proxy_callback': '_pppppp', + 'emscripten_proxy_callback_with_ctx': '_pppppp', + 'emscripten_proxy_execute_queue': '_p', + 'emscripten_proxy_finish': '_p', + 'emscripten_proxy_get_system_queue': 'p', + 'emscripten_proxy_promise': 'ppppp', + 'emscripten_proxy_promise_with_ctx': 'ppppp', + 'emscripten_proxy_sync': '_pppp', + 'emscripten_proxy_sync_with_ctx': '_pppp', + 'emscripten_pthread_attr_gettransferredcanvases': '_pp', + 'emscripten_pthread_attr_settransferredcanvases': '_pp', + 'emscripten_scan_stack': '_p', + 'emscripten_semaphore_init': '_p_', + 'emscripten_semaphore_release': '_p_', + 'emscripten_semaphore_try_acquire': '_p_', + 'emscripten_semaphore_wait_acquire': '_p__', + 'emscripten_semaphore_waitinf_acquire': '_p_', + 'emscripten_set_thread_name': '_pp', + 'emscripten_stack_get_base': 'p', + 'emscripten_stack_get_current': 'p', + 'emscripten_stack_get_end': 'p', + 'emscripten_stack_get_free': 'p', + 'emscripten_stack_set_limits': '_pp', + 'emscripten_sync_run_in_main_runtime_thread_': '__pp', + 'emscripten_thread_mailbox_ref': '_p', + 'emscripten_thread_mailbox_send': '_pp', + 'emscripten_thread_mailbox_unref': '_p', + 'emscripten_wait_for_call_i': '_p_p', + 'emscripten_wait_for_call_v': '_p_', + 'emscripten_webgl1_get_proc_address': 'pp', + 'emscripten_webgl_get_proc_address': 'pp', + 'emscripten_webgl_init_context_attributes': '_p', + 'emscripten_wget': '_pp', + 'encrypt': '_p_', + 'endmntent': '_p', + 'erand48': '_p', + 'erfcl': '_p__', + 'erfl': '_p__', + 'err': '__pp', + 'errx': '__pp', + 'ether_aton': 'pp', + 'ether_aton_r': 'ppp', + 'ether_hostton': '_pp', + 'ether_line': '_ppp', + 'ether_ntoa': 'pp', + 'ether_ntoa_r': 'ppp', + 'ether_ntohost': '_pp', + 'euidaccess': '_p_', + 'execl': '_ppp', + 'execle': '_ppp', + 'execlp': '_ppp', + 'execv': '_pp', + 'execve': '_ppp', + 'execvp': '_pp', + 'execvpe': '_ppp', + 'exp10l': '_p__', + 'exp2l': '_p__', + 'expl': '_p__', + 'explicit_bzero': '_pp', + 'expm1l': '_p__', + 'fabsl': '_p__', + 'faccessat': '__p__', + 'fchmodat': '__p__', + 'fchownat': '__p___', + 'fclose': '_p', + 'fcntl': '___p', + 'fcvt': 'p__pp', + 'fdiml': '_p____', + 'fdopen': 'p_p', + 'fdopendir': 'p_', + 'fegetenv': '_p', + 'fegetexceptflag': '_p_', + 'feholdexcept': '_p', + 'feof': '_p', + 'feof_unlocked': '_p', + 'ferror': '_p', + 'ferror_unlocked': '_p', + 'fesetenv': '_p', + 'fesetexceptflag': '_p_', + 'feupdateenv': '_p', + 'fexecve': '__pp', + 'fflush': '_p', + 'fflush_unlocked': '_p', + 'ffsl': '_p', + 'fgetc': '_p', + 'fgetc_unlocked': '_p', + 'fgetln': 'ppp', + 'fgetpos': '_pp', + 'fgets': 'pp_p', + 'fgets_unlocked': 'pp_p', + 'fgetwc': '_p', + 'fgetwc_unlocked': '_p', + 'fgetws': 'pp_p', + 'fgetws_unlocked': 'pp_p', + 'fileno': '_p', + 'fileno_unlocked': '_p', + 'fiprintf': '_ppp', + 'flockfile': '_p', + 'floorl': '_p__', + 'fmal': '_p______', + 'fmaxl': '_p____', + 'fmemopen': 'pppp', + 'fminl': '_p____', + 'fmodl': '_p____', + 'fmtmsg': '_pp_ppp', + 'fnmatch': '_pp_', + 'fopen': 'ppp', + 'fopencookie': 'pppp', + 'forkpty': '_pppp', + 'fpathconf': 'p__', + 'fprintf': '_ppp', + 'fpurge': '_p', + 'fputc': '__p', + 'fputc_unlocked': '__p', + 'fputs': '_pp', + 'fputs_unlocked': '_pp', + 'fputwc': '__p', + 'fputwc_unlocked': '__p', + 'fputws': '_pp', + 'fputws_unlocked': '_pp', + 'fread': 'ppppp', + 'fread_unlocked': 'ppppp', + 'free': '_p', + 'freeaddrinfo': '_p', + 'freeifaddrs': '_p', + 'freelocale': '_p', + 'freopen': 'pppp', + 'frexp': '__p', + 'frexpf': '__p', + 'frexpl': '_p__p', + 'fscanf': '_ppp', + 'fseek': '_pp_', + 'fseeko': '_p__', + 'fsetpos': '_pp', + 'fstat': '__p', + 'fstatat': '__pp_', + 'fstatfs': '__p', + 'fstatvfs': '__p', + 'ftell': 'pp', + 'ftello': '_p', + 'ftime': '_p', + 'ftrylockfile': '_p', + 'funlockfile': '_p', + 'futimens': '__p', + 'futimesat': '__pp', + 'fwide': '_p_', + 'fwprintf': '_ppp', + 'fwrite': 'ppppp', + 'fwrite_unlocked': 'ppppp', + 'fwscanf': '_ppp', + 'gai_strerror': 'p_', + 'gcvt': 'p__p', + 'getFirstValueProfRecord': 'pp', + 'getValueProfDataSize': '_p', + 'getValueProfRecordNext': 'pp', + 'getValueProfRecordNumValueData': '_p', + 'getValueProfRecordValueData': 'pp', + 'get_avphys_pages': 'p', + 'get_current_dir_name': 'p', + 'get_phys_pages': 'p', + 'getc': '_p', + 'getc_unlocked': '_p', + 'getcwd': 'ppp', + 'getdate': 'pp', + 'getdelim': 'ppp_p', + 'getdents': '__pp', + 'getdomainname': '_pp', + 'getentropy': '_pp', + 'getenv': 'pp', + 'getgrent': 'p', + 'getgrgid': 'p_', + 'getgrgid_r': '__pppp', + 'getgrnam': 'pp', + 'getgrnam_r': '_ppppp', + 'getgroups': '__p', + 'gethostbyaddr': 'pp__', + 'gethostbyaddr_r': '_p__ppppp', + 'gethostbyname': 'pp', + 'gethostbyname2': 'pp_', + 'gethostbyname2_r': '_p_ppppp', + 'gethostbyname_r': '_pppppp', + 'gethostent': 'p', + 'gethostid': 'p', + 'gethostname': '_pp', + 'getifaddrs': '_p', + 'getitimer': '__p', + 'getline': 'pppp', + 'getloadavg': '_p_', + 'getlogin': 'p', + 'getlogin_r': '_pp', + 'getmntent': 'pp', + 'getmntent_r': 'pppp_', + 'getnetbyaddr': 'p__', + 'getnetbyname': 'pp', + 'getnetent': 'p', + 'getopt': '__pp', + 'getopt_long': '__pppp', + 'getopt_long_only': '__pppp', + 'getpeername': '__pp', + 'getpwent': 'p', + 'getpwnam': 'pp', + 'getpwnam_r': '_ppppp', + 'getpwuid': 'p_', + 'getpwuid_r': '__pppp', + 'getresgid': '_ppp', + 'getresuid': '_ppp', + 'getrlimit': '__p', + 'getrusage': '__p', + 'gets': 'pp', + 'getservbyname': 'ppp', + 'getservbyname_r': '_pppppp', + 'getservbyport': 'p_p', + 'getservbyport_r': '__ppppp', + 'getservent': 'p', + 'getsockname': '__pp', + 'getsockopt': '____pp', + 'getsubopt': '_ppp', + 'gettext': 'pp', + 'gettimeofday': '_pp', + 'getw': '_p', + 'getwc': '_p', + 'getwc_unlocked': '_p', + 'glfwGetProcAddress': 'pp', + 'glob': '_p_pp', + 'globfree': '_p', + 'gmtime': 'pp', + 'gmtime_r': 'ppp', + 'hasmntopt': 'ppp', + 'hcreate': '_p', + 'hcreate_r': '_pp', + 'hdestroy_r': '_p', + 'herror': '_p', + 'hsearch': 'pp_', + 'hsearch_r': '_p_pp', + 'hstrerror': 'p_', + 'hypotl': '_p____', + 'iconv': 'pppppp', + 'iconv_close': '_p', + 'iconv_open': 'ppp', + 'if_freenameindex': '_p', + 'if_indextoname': 'p_p', + 'if_nameindex': 'p', + 'if_nametoindex': '_p', + 'imaxdiv': '_p__', + 'independent_calloc': 'pppp', + 'independent_comalloc': 'pppp', + 'index': 'pp_', + 'inet_addr': '_p', + 'inet_aton': '_pp', + 'inet_network': '_p', + 'inet_ntoa': 'p_', + 'inet_ntop': 'p_pp_', + 'inet_pton': '__pp', + 'initBufferWriter': '_pp', + 'initstate': 'p_pp', + 'insque': '_pp', + 'ioctl': '___p', + 'iprintf': '_pp', + 'isalnum_l': '__p', + 'isalpha_l': '__p', + 'isblank_l': '__p', + 'iscntrl_l': '__p', + 'isdigit_l': '__p', + 'isgraph_l': '__p', + 'islower_l': '__p', + 'isprint_l': '__p', + 'ispunct_l': '__p', + 'isspace_l': '__p', + 'isupper_l': '__p', + 'iswalnum_l': '__p', + 'iswalpha_l': '__p', + 'iswblank_l': '__p', + 'iswcntrl_l': '__p', + 'iswctype_l': '___p', + 'iswdigit_l': '__p', + 'iswgraph_l': '__p', + 'iswlower_l': '__p', + 'iswprint_l': '__p', + 'iswpunct_l': '__p', + 'iswspace_l': '__p', + 'iswupper_l': '__p', + 'iswxdigit_l': '__p', + 'isxdigit_l': '__p', + 'jrand48': 'pp', + 'l64a': 'pp', + 'labs': 'pp', + 'lchmod': '_p_', + 'lchown': '_p__', + 'lcong48': '_p', + 'ldexpl': '_p___', + 'ldiv': '_ppp', + 'lfind': 'pppppp', + 'lgamma_r': '__p', + 'lgammaf_r': '__p', + 'lgammal': '_p__', + 'lgammal_r': '_p__p', + 'link': '_pp', + 'linkat': '__p_p_', + 'lldiv': '_p__', + 'llvm_gcda_emit_arcs': '__p', + 'llvm_gcda_start_file': '_p__', + 'llvm_gcov_init': '_pp', + 'llvm_register_reset_function': '_p', + 'llvm_register_writeout_function': '_p', + 'localeconv': 'p', + 'localtime': 'pp', + 'localtime_r': 'ppp', + 'log10l': '_p__', + 'log1pl': '_p__', + 'log2l': '_p__', + 'logbl': '_p__', + 'logl': '_p__', + 'lprofApplyPathPrefix': '_pppp_', + 'lprofAtExit': '_p', + 'lprofBufferIOFlush': '_p', + 'lprofBufferIOWrite': '_pp_', + 'lprofBufferWriter': '_pp_', + 'lprofCreateBufferIO': 'pp', + 'lprofCreateBufferIOInternal': 'pp_', + 'lprofDeleteBufferIO': '_p', + 'lprofFindFirstDirSeparator': 'pp', + 'lprofFindLastDirSeparator': 'pp', + 'lprofGetFileContentBuffer': '_p_p', + 'lprofGetPathPrefix': 'ppp', + 'lprofGetVPDataReader': 'p', + 'lprofLockFileHandle': '_p', + 'lprofMergeValueProfData': '_pp', + 'lprofOpenFileEx': 'pp', + 'lprofReleaseBuffer': '_pp', + 'lprofReleaseMemoryPagesToOS': '_pp', + 'lprofUnlockFileHandle': '_p', + 'lprofWriteData': '_pp_', + 'lprofWriteDataImpl': '_pppppppppppppp__', + 'lprofWriteOneBinaryId': '_p_p_', + 'lrand48': 'p', + 'lrint': 'p_', + 'lrintf': 'p_', + 'lrintl': 'p__', + 'lround': 'p_', + 'lroundf': 'p_', + 'lroundl': 'p__', + 'lsearch': 'pppppp', + 'lstat': '_pp', + 'madvise': '_pp_', + 'main': '__PP', + 'mallinfo': '_p', + 'malloc': 'pp', + 'malloc_footprint': 'p', + 'malloc_footprint_limit': 'p', + 'malloc_max_footprint': 'p', + 'malloc_set_footprint_limit': 'pp', + 'malloc_trim': '_p', + 'malloc_usable_size': 'pp', + 'mblen': '_pp', + 'mbrlen': 'pppp', + 'mbrtoc16': 'ppppp', + 'mbrtoc32': 'ppppp', + 'mbrtowc': 'ppppp', + 'mbsinit': '_p', + 'mbsnrtowcs': 'pppppp', + 'mbsrtowcs': 'ppppp', + 'mbstowcs': 'pppp', + 'mbtowc': '_ppp', + 'memalign': 'ppp', + 'memccpy': 'ppp_p', + 'memchr': 'pp_p', + 'memcmp': '_ppp', + 'memcpy': 'pppp', + 'memmem': 'ppppp', + 'memmove': 'pppp', + 'mempcpy': 'pppp', + 'memrchr': 'pp_p', + 'memset': 'pp_p', + 'mincore': '_ppp', + 'mkdir': '_p_', + 'mkdirat': '__p_', + 'mkdtemp': 'pp', + 'mkfifo': '_p_', + 'mkfifoat': '__p_', + 'mknod': '_p__', + 'mknodat': '__p__', + 'mkostemp': '_p_', + 'mkostemps': '_p__', + 'mkstemp': '_p', + 'mkstemps': '_p_', + 'mktemp': 'pp', + 'mktime': '_p', + 'mlock': '_pp', + 'mmap': 'ppp____', + 'modf': '__p', + 'modff': '__p', + 'modfl': '_p__p', + 'mprotect': '_pp_', + 'mrand48': 'p', + 'mremap': 'pppp_p', + 'msync': '_pp_', + 'mtx_destroy': '_p', + 'mtx_init': '_p_', + 'mtx_lock': '_p', + 'mtx_timedlock': '_pp', + 'mtx_trylock': '_p', + 'mtx_unlock': '_p', + 'munlock': '_pp', + 'munmap': '_pp', + 'nan': '_p', + 'nanf': '_p', + 'nanl': '_pp', + 'nanosleep': '_pp', + 'nearbyintl': '_p__', + 'new_dlevent': '_p_', + 'newlocale': 'p_pp', + 'nextafterl': '_p____', + 'nexttowardl': '_p____', + 'nftw': '_pp__', + 'ngettext': 'pppp', + 'nl_langinfo': 'p_', + 'nl_langinfo_l': 'p_p', + 'nrand48': 'pp', + 'ns_get16': '_p', + 'ns_get32': 'pp', + 'ns_initparse': '_p_p', + 'ns_name_uncompress': '_ppppp', + 'ns_parserr': '_p__p', + 'ns_put16': '__p', + 'ns_put32': '_pp', + 'ns_skiprr': '_pp__', + 'open': '_p_p', + 'open_memstream': 'ppp', + 'open_wmemstream': 'ppp', + 'openat': '__p_p', + 'opendir': 'pp', + 'openlog': '_p__', + 'openpty': '_ppppp', + 'pathconf': 'pp_', + 'pclose': '_p', + 'perror': '_p', + 'pipe': '_p', + 'pipe2': '_p_', + 'poll': '_p__', + 'popen': 'ppp', + 'posix_getdents': 'p_pp_', + 'posix_madvise': '_pp_', + 'posix_memalign': '_ppp', + 'posix_spawn': '_pppppp', + 'posix_spawn_file_actions_addchdir_np': '_pp', + 'posix_spawn_file_actions_addclose': '_p_', + 'posix_spawn_file_actions_adddup2': '_p__', + 'posix_spawn_file_actions_addfchdir_np': '_p_', + 'posix_spawn_file_actions_addopen': '_p_p__', + 'posix_spawn_file_actions_destroy': '_p', + 'posix_spawn_file_actions_init': '_p', + 'posix_spawnattr_destroy': '_p', + 'posix_spawnattr_getflags': '_pp', + 'posix_spawnattr_getpgroup': '_pp', + 'posix_spawnattr_getschedparam': '_pp', + 'posix_spawnattr_getschedpolicy': '_pp', + 'posix_spawnattr_getsigdefault': '_pp', + 'posix_spawnattr_getsigmask': '_pp', + 'posix_spawnattr_init': '_p', + 'posix_spawnattr_setflags': '_p_', + 'posix_spawnattr_setpgroup': '_p_', + 'posix_spawnattr_setschedparam': '_pp', + 'posix_spawnattr_setschedpolicy': '_p_', + 'posix_spawnattr_setsigdefault': '_pp', + 'posix_spawnattr_setsigmask': '_pp', + 'pow10l': '_p__', + 'powl': '_p____', + 'ppoll': '_p_pp', + 'pread': 'p_pp_', + 'preadv': 'p_p__', + 'printf': '_pp', + 'pselect': '__ppppp', + 'pthread_atfork': '_ppp', + 'pthread_attr_destroy': '_p', + 'pthread_attr_getdetachstate': '_pp', + 'pthread_attr_getguardsize': '_pp', + 'pthread_attr_getinheritsched': '_pp', + 'pthread_attr_getschedparam': '_pp', + 'pthread_attr_getschedpolicy': '_pp', + 'pthread_attr_getscope': '_pp', + 'pthread_attr_getstack': '_ppp', + 'pthread_attr_getstacksize': '_pp', + 'pthread_attr_init': '_p', + 'pthread_attr_setdetachstate': '_p_', + 'pthread_attr_setguardsize': '_pp', + 'pthread_attr_setinheritsched': '_p_', + 'pthread_attr_setschedparam': '_pp', + 'pthread_attr_setschedpolicy': '_p_', + 'pthread_attr_setscope': '_p_', + 'pthread_attr_setstack': '_ppp', + 'pthread_attr_setstacksize': '_pp', + 'pthread_barrier_destroy': '_p', + 'pthread_barrier_init': '_pp_', + 'pthread_barrier_wait': '_p', + 'pthread_barrierattr_destroy': '_p', + 'pthread_barrierattr_getpshared': '_pp', + 'pthread_barrierattr_init': '_p', + 'pthread_barrierattr_setpshared': '_p_', + 'pthread_cancel': '_p', + 'pthread_cond_broadcast': '_p', + 'pthread_cond_destroy': '_p', + 'pthread_cond_init': '_pp', + 'pthread_cond_signal': '_p', + 'pthread_cond_timedwait': '_ppp', + 'pthread_cond_wait': '_pp', + 'pthread_condattr_destroy': '_p', + 'pthread_condattr_getclock': '_pp', + 'pthread_condattr_getpshared': '_pp', + 'pthread_condattr_init': '_p', + 'pthread_condattr_setclock': '_p_', + 'pthread_condattr_setpshared': '_p_', + 'pthread_create': '_pppp', + 'pthread_detach': '_p', + 'pthread_equal': '_pp', + 'pthread_exit': '_p', + 'pthread_getattr_default_np': '_p', + 'pthread_getattr_np': '_pp', + 'pthread_getcpuclockid': '_pp', + 'pthread_getschedparam': '_ppp', + 'pthread_getspecific': 'p_', + 'pthread_join': '_pp', + 'pthread_key_create': '_pp', + 'pthread_kill': '_p_', + 'pthread_mutex_consistent': '_p', + 'pthread_mutex_destroy': '_p', + 'pthread_mutex_getprioceiling': '_pp', + 'pthread_mutex_init': '_pp', + 'pthread_mutex_lock': '_p', + 'pthread_mutex_setprioceiling': '_p_p', + 'pthread_mutex_timedlock': '_pp', + 'pthread_mutex_trylock': '_p', + 'pthread_mutex_unlock': '_p', + 'pthread_mutexattr_destroy': '_p', + 'pthread_mutexattr_getprioceiling': '_pp', + 'pthread_mutexattr_getprotocol': '_pp', + 'pthread_mutexattr_getpshared': '_pp', + 'pthread_mutexattr_getrobust': '_pp', + 'pthread_mutexattr_gettype': '_pp', + 'pthread_mutexattr_init': '_p', + 'pthread_mutexattr_setprioceiling': '_p_', + 'pthread_mutexattr_setprotocol': '_p_', + 'pthread_mutexattr_setpshared': '_p_', + 'pthread_mutexattr_setrobust': '_p_', + 'pthread_mutexattr_settype': '_p_', + 'pthread_once': '_pp', + 'pthread_rwlock_destroy': '_p', + 'pthread_rwlock_init': '_pp', + 'pthread_rwlock_rdlock': '_p', + 'pthread_rwlock_timedrdlock': '_pp', + 'pthread_rwlock_timedwrlock': '_pp', + 'pthread_rwlock_tryrdlock': '_p', + 'pthread_rwlock_trywrlock': '_p', + 'pthread_rwlock_unlock': '_p', + 'pthread_rwlock_wrlock': '_p', + 'pthread_rwlockattr_destroy': '_p', + 'pthread_rwlockattr_getpshared': '_pp', + 'pthread_rwlockattr_init': '_p', + 'pthread_rwlockattr_setpshared': '_p_', + 'pthread_self': 'p', + 'pthread_setattr_default_np': '_p', + 'pthread_setcancelstate': '__p', + 'pthread_setcanceltype': '__p', + 'pthread_setschedparam': '_p_p', + 'pthread_setschedprio': '_p_', + 'pthread_setspecific': '__p', + 'pthread_sigmask': '__pp', + 'pthread_spin_destroy': '_p', + 'pthread_spin_init': '_p_', + 'pthread_spin_lock': '_p', + 'pthread_spin_trylock': '_p', + 'pthread_spin_unlock': '_p', + 'pthread_timedjoin_np': '_ppp', + 'pthread_tryjoin_np': '_pp', + 'ptsname': 'p_', + 'ptsname_r': '__pp', + 'putc': '__p', + 'putc_unlocked': '__p', + 'putenv': '_p', + 'puts': '_p', + 'putw': '__p', + 'putwc': '__p', + 'putwc_unlocked': '__p', + 'pvalloc': 'pp', + 'pwrite': 'p_pp_', + 'pwritev': 'p_p__', + 'qsort': '_pppp', + 'qsort_r': '_ppppp', + 'rand_r': '_p', + 'random': 'p', + 'read': 'p_pp', + 'readdir': 'pp', + 'readdir_r': '_ppp', + 'readlink': 'pppp', + 'readlinkat': 'p_ppp', + 'readv': 'p_p_', + 'realloc': 'ppp', + 'realloc_in_place': 'ppp', + 'reallocarray': 'pppp', + 'realpath': 'ppp', + 'recv': 'p_pp_', + 'recvfrom': 'p_pp_pp', + 'recvmmsg': '__p__p', + 'recvmsg': 'p_p_', + 'regcomp': '_pp_', + 'regerror': 'p_ppp', + 'regexec': '_pppp_', + 'regfree': '_p', + 'remainderl': '_p____', + 'remove': '_p', + 'remque': '_p', + 'remquo': '___p', + 'remquof': '___p', + 'remquol': '_p____p', + 'rename': '_pp', + 'renameat': '__p_p', + 'res_mkquery': '__p__p_pp_', + 'res_send': '_p_p_', + 'rewind': '_p', + 'rewinddir': '_p', + 'rindex': 'pp_', + 'rintl': '_p__', + 'rmdir': '_p', + 'roundl': '_p__', + 'sbrk': 'pP', + 'scalbln': '__p', + 'scalblnf': '__p', + 'scalblnl': '_p__p', + 'scalbnl': '_p___', + 'scandir': '_pppp', + 'scanf': '_pp', + 'secure_getenv': 'pp', + 'seed48': 'pp', + 'seekdir': '_pp', + 'select': '__pppp', + 'sem_close': '_p', + 'sem_destroy': '_p', + 'sem_getvalue': '_pp', + 'sem_init': '_p__', + 'sem_open': 'pp_p', + 'sem_post': '_p', + 'sem_timedwait': '_pp', + 'sem_trywait': '_p', + 'sem_unlink': '_p', + 'sem_wait': '_p', + 'send': 'p_pp_', + 'sendmmsg': '__p__', + 'sendmsg': 'p_p_', + 'sendto': 'p_pp_p_', + 'serializeValueProfDataFrom': 'ppp', + 'serializeValueProfRecordFrom': '_pp__', + 'setThrew': '_p_', + 'setbuf': '_pp', + 'setbuffer': '_ppp', + 'setdomainname': '_pp', + 'setenv': '_pp_', + 'setgroups': '_pp', + 'setitimer': '__pp', + 'setkey': '_p', + 'setlinebuf': '_p', + 'setlocale': 'p_p', + 'setmntent': 'ppp', + 'setrlimit': '__p', + 'setsockopt': '____p_', + 'setstate': 'pp', + 'setvbuf': '_pp_p', + 'shm_open': '_p__', + 'shm_unlink': '_p', + 'sigaction': '__pp', + 'sigaddset': '_p_', + 'sigaltstack': '_pp', + 'sigandset': '_ppp', + 'sigdelset': '_p_', + 'sigemptyset': '_p', + 'sigfillset': '_p', + 'sigisemptyset': '_p', + 'sigismember': '_p_', + 'signal': 'p_p', + 'sigorset': '_ppp', + 'sigpending': '_p', + 'sigprocmask': '__pp', + 'sigtimedwait': '_ppp', + 'sigwait': '_pp', + 'sigwaitinfo': '_pp', + 'sincos': '__pp', + 'sincosf': '__pp', + 'sincosl': '___pp', + 'sinhl': '_p__', + 'sinl': '_p__', + 'siprintf': '_ppp', + 'snprintf': '_pppp', + 'socketpair': '____p', + 'sprintf': '_ppp', + 'sqrtl': '_p__', + 'srand48': '_p', + 'sscanf': '_ppp', + 'stat': '_pp', + 'statfs': '_pp', + 'statvfs': '_pp', + 'statx': '__p__p', + 'stbi_failure_reason': 'p', + 'stbi_image_free': '_p', + 'stbi_info': '_pppp', + 'stbi_info_from_callbacks': '_ppppp', + 'stbi_info_from_file': '_pppp', + 'stbi_info_from_memory': '_p_ppp', + 'stbi_is_hdr': '_p', + 'stbi_is_hdr_from_callbacks': '_pp', + 'stbi_is_hdr_from_file': '_p', + 'stbi_is_hdr_from_memory': '_p_', + 'stbi_load': 'ppppp_', + 'stbi_load_from_callbacks': 'pppppp_', + 'stbi_load_from_file': 'ppppp_', + 'stbi_load_from_memory': 'pp_ppp_', + 'stbi_loadf': 'ppppp_', + 'stbi_loadf_from_callbacks': 'pppppp_', + 'stbi_loadf_from_file': 'ppppp_', + 'stbi_loadf_from_memory': 'pp_ppp_', + 'stbi_zlib_decode_buffer': '_p_p_', + 'stbi_zlib_decode_malloc': 'pp_p', + 'stbi_zlib_decode_malloc_guesssize': 'pp__p', + 'stbi_zlib_decode_malloc_guesssize_headerflag': 'pp__p_', + 'stbi_zlib_decode_noheader_buffer': '_p_p_', + 'stbi_zlib_decode_noheader_malloc': 'pp_p', + 'stime': '_p', + 'stpcpy': 'ppp', + 'stpncpy': 'pppp', + 'strcasecmp': '_pp', + 'strcasecmp_l': '_ppp', + 'strcasestr': 'ppp', + 'strcat': 'ppp', + 'strchr': 'pp_', + 'strchrnul': 'pp_', + 'strcmp': '_pp', + 'strcoll': '_pp', + 'strcoll_l': '_ppp', + 'strcpy': 'ppp', + 'strcspn': 'ppp', + 'strdup': 'pp', + 'strerror': 'p_', + 'strerror_l': 'p_p', + 'strerror_r': '__pp', + 'strfmon': 'ppppp', + 'strfmon_l': 'pppppp', + 'strftime': 'ppppp', + 'strftime_l': 'pppppp', + 'strlcat': 'pppp', + 'strlcpy': 'pppp', + 'strlen': 'pp', + 'strlwr': 'pp', + 'strncasecmp': '_ppp', + 'strncasecmp_l': '_pppp', + 'strncat': 'pppp', + 'strncmp': '_ppp', + 'strncpy': 'pppp', + 'strndup': 'ppp', + 'strnlen': 'ppp', + 'strpbrk': 'ppp', + 'strrchr': 'pp_', + 'strsep': 'ppp', + 'strsignal': 'p_', + 'strspn': 'ppp', + 'strstr': 'ppp', + 'strtod': '_pp', + 'strtod_l': '_ppp', + 'strtof': '_pp', + 'strtof_l': '_ppp', + 'strtoimax': '_pp_', + 'strtok': 'ppp', + 'strtok_r': 'pppp', + 'strtol': 'ppp_', + 'strtol_l': 'ppp_p', + 'strtold': '_ppp', + 'strtold_l': '_pppp', + 'strtoll': '_pp_', + 'strtoll_l': '_pp_p', + 'strtoul': 'ppp_', + 'strtoul_l': 'ppp_p', + 'strtoull': '_pp_', + 'strtoull_l': '_pp_p', + 'strtoumax': '_pp_', + 'strupr': 'pp', + 'strverscmp': '_pp', + 'strxfrm': 'pppp', + 'strxfrm_l': 'ppppp', + 'swab': '_ppp', + 'swprintf': '_pppp', + 'swscanf': '_ppp', + 'symlink': '_pp', + 'symlinkat': '_p_p', + 'sysconf': 'p_', + 'syslog': '__pp', + 'system': '_p', + 'tanhl': '_p__', + 'tanl': '_p__', + 'tcgetattr': '__p', + 'tcgetwinsize': '__p', + 'tcsetattr': '___p', + 'tcsetwinsize': '__p', + 'tdelete': 'pppp', + 'tdestroy': '_pp', + 'telldir': 'pp', + 'tempnam': 'ppp', + 'textdomain': 'pp', + 'tfind': 'pppp', + 'tgammal': '_p__', + 'thrd_create': '_ppp', + 'thrd_current': 'p', + 'thrd_detach': '_p', + 'thrd_equal': '_pp', + 'thrd_join': '_pp', + 'thrd_sleep': '_pp', + 'time': '_p', + 'timegm': '_p', + 'times': '_p', + 'timespec_get': '_p_', + 'tmpfile': 'p', + 'tmpnam': 'pp', + 'tolower_l': '__p', + 'toupper_l': '__p', + 'towctrans': '__p', + 'towctrans_l': '__pp', + 'towlower_l': '__p', + 'towupper_l': '__p', + 'truncate': '_p_', + 'truncl': '_p__', + 'tsearch': 'pppp', + 'tss_create': '_pp', + 'tss_get': 'p_', + 'tss_set': '__p', + 'ttyname': 'p_', + 'ttyname_r': '__pp', + 'twalk': '_pp', + 'uname': '_p', + 'ungetc': '__p', + 'ungetwc': '__p', + 'unlink': '_p', + 'unlinkat': '__p_', + 'unsetenv': '_p', + 'uselocale': 'pp', + 'utime': '_pp', + 'utimensat': '__pp_', + 'utimes': '_pp', + 'valloc': 'pp', + 'vasprintf': '_ppp', + 'vdprintf': '__pp', + 'verr': '__pp', + 'verrx': '__pp', + 'versionsort': '_pp', + 'vfiprintf': '_ppp', + 'vfprintf': '_ppp', + 'vfscanf': '_ppp', + 'vfwprintf': '_ppp', + 'vfwscanf': '_ppp', + 'vprintf': '_pp', + 'vscanf': '_pp', + 'vsiprintf': '_ppp', + 'vsniprintf': '_pppp', + 'vsnprintf': '_pppp', + 'vsprintf': '_ppp', + 'vsscanf': '_ppp', + 'vswprintf': '_pppp', + 'vswscanf': '_ppp', + 'vsyslog': '__pp', + 'vwarn': '_pp', + 'vwarnx': '_pp', + 'vwprintf': '_pp', + 'vwscanf': '_pp', + 'wait': '_p', + 'wait3': '_p_p', + 'wait4': '__p_p', + 'waitid': '___p_', + 'waitpid': '__p_', + 'warn': '_pp', + 'warnx': '_pp', + 'wasmfs_create_directory': '_p_p', + 'wasmfs_create_fetch_backend': 'pp_', + 'wasmfs_create_file': '_p_p', + 'wasmfs_create_icase_backend': 'pp', + 'wasmfs_create_js_file_backend': 'p', + 'wasmfs_create_jsimpl_backend': 'p', + 'wasmfs_create_memory_backend': 'p', + 'wasmfs_create_node_backend': 'pp', + 'wasmfs_create_opfs_backend': 'p', + 'wasmfs_create_root_dir': 'p', + 'wasmfs_get_backend_by_fd': 'p_', + 'wasmfs_get_backend_by_path': 'pp', + 'wasmfs_unmount': '_p', + 'wcpcpy': 'ppp', + 'wcpncpy': 'pppp', + 'wcrtomb': 'pp_p', + 'wcscasecmp': '_pp', + 'wcscasecmp_l': '_ppp', + 'wcscat': 'ppp', + 'wcschr': 'pp_', + 'wcscmp': '_pp', + 'wcscoll': '_pp', + 'wcscoll_l': '_ppp', + 'wcscpy': 'ppp', + 'wcscspn': 'ppp', + 'wcsdup': 'pp', + 'wcsftime': 'ppppp', + 'wcsftime_l': 'pppppp', + 'wcslen': 'pp', + 'wcsncasecmp': '_ppp', + 'wcsncasecmp_l': '_pppp', + 'wcsncat': 'pppp', + 'wcsncmp': '_ppp', + 'wcsncpy': 'pppp', + 'wcsnlen': 'ppp', + 'wcsnrtombs': 'pppppp', + 'wcspbrk': 'ppp', + 'wcsrchr': 'pp_', + 'wcsrtombs': 'ppppp', + 'wcsspn': 'ppp', + 'wcsstr': 'ppp', + 'wcstod': '_pp', + 'wcstof': '_pp', + 'wcstoimax': '_pp_', + 'wcstok': 'pppp', + 'wcstol': 'ppp_', + 'wcstold': '_ppp', + 'wcstoll': '_pp_', + 'wcstombs': 'pppp', + 'wcstoul': 'ppp_', + 'wcstoull': '_pp_', + 'wcstoumax': '_pp_', + 'wcswcs': 'ppp', + 'wcswidth': '_pp', + 'wcsxfrm': 'pppp', + 'wcsxfrm_l': 'ppppp', + 'wctomb': '_p_', + 'wctrans': 'pp', + 'wctrans_l': 'ppp', + 'wctype': '_p', + 'wctype_l': '_pp', + 'webidl_free': '_p', + 'webidl_malloc': 'pp', + 'wmemchr': 'pp_p', + 'wmemcmp': '_ppp', + 'wmemcpy': 'pppp', + 'wmemmove': 'pppp', + 'wmemset': 'pp_p', + 'wprintf': '_pp', + 'write': 'p_pp', + 'writev': 'p_p_', + 'wscanf': '_pp', +}