From f25289db2015299ece7e7d23204537ce52ec1e79 Mon Sep 17 00:00:00 2001 From: Orkuncakilkaya Date: Thu, 10 Sep 2026 03:31:12 +0300 Subject: [PATCH] feat(gl): OpenGL 4.1 and the ludic.render3d renderer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `Gl.*` binds the whole OpenGL 4.1 core API — every entry point of the platform gl3.h with every GL_* constant, generated by `ludic-dev glgen` with per-call ABI thunks. Windowed builds get an NSOpenGLContext on the existing window at Retina resolution; headless builds render into an offscreen CGL context, so a program that uses Gl.* renders and screenshots identically under the test harness. It links gl.ll, the thunks and OpenGL.framework only when used; every other build stays byte-identical. packages/ludic.render3d is a physically based renderer written on that surface: HDRI image-based lighting, GPU-generated terrain with scanned PBR materials, CDLOD, cascaded shadows, glTF with skinning, instanced vegetation with impostors, procedural grass, water, SSAO, and an HDR pipeline with bloom, auto-exposure and ACES. It also carries this session's work on it: the terrain at half its cost (10.3 -> 5.4 ms of frame), the streaming hitch that got worse the longer you played, a resize that emptied the world, and the packaging that lets a game use the renderer from its own repository — `ludic assets`, the material manifest shipping with the package, and shader lookup falling back to the install root. See changes/ for each, with its numbers. The camping game that drove all of it has moved out to its own repository, Maroon Lake; examples/rendering/smooth.ludic stays as the renderer's example here. Co-Authored-By: Claude Opus 5 --- .gitignore | 7 + LANGUAGE.md | 3 + assets/polyhaven/LICENSE.txt | 3 + changes/gl-render3d.md | 28 + changes/renderer-outside-the-tree.md | 39 + changes/resize-depth-fix.md | 27 + changes/stream-hitch.md | 36 + changes/terrain-perf.md | 54 + docs/language/gl/_section.md | 37 + examples/rendering/gl_triangle.ludic | 49 + examples/rendering/smooth.ludic | 189 + packages/ludic.render3d/FEATURES.md | 118 + packages/ludic.render3d/actor.ludic | 204 + packages/ludic.render3d/assets.manifest | 49 + packages/ludic.render3d/camera.ludic | 101 + packages/ludic.render3d/collide.ludic | 99 + packages/ludic.render3d/daylight.ludic | 162 + packages/ludic.render3d/fmath.ludic | 206 + packages/ludic.render3d/gltf.ludic | 229 + packages/ludic.render3d/grass.ludic | 161 + packages/ludic.render3d/mesh.ludic | 150 + packages/ludic.render3d/overlay.ludic | 335 + packages/ludic.render3d/package.ludic | 7 + packages/ludic.render3d/post.ludic | 307 + packages/ludic.render3d/prof.ludic | 385 + packages/ludic.render3d/programs.ludic | 116 + packages/ludic.render3d/quat.ludic | 95 + packages/ludic.render3d/r3d.ludic | 26 + packages/ludic.render3d/render.ludic | 206 + packages/ludic.render3d/scatter.ludic | 1050 + packages/ludic.render3d/shaders/adapt.frag | 23 + packages/ludic.render3d/shaders/bake.frag | 29 + .../ludic.render3d/shaders/bloom_down.frag | 27 + packages/ludic.render3d/shaders/bloom_up.frag | 13 + .../ludic.render3d/shaders/fullscreen.vert | 7 + packages/ludic.render3d/shaders/grass.vert | 149 + .../ludic.render3d/shaders/heightgen.frag | 110 + packages/ludic.render3d/shaders/ibl_brdf.frag | 36 + .../shaders/ibl_irradiance.frag | 36 + .../ludic.render3d/shaders/ibl_prefilter.frag | 53 + packages/ludic.render3d/shaders/impostor.frag | 66 + packages/ludic.render3d/shaders/impostor.vert | 42 + packages/ludic.render3d/shaders/lighting.glsl | 272 + packages/ludic.render3d/shaders/model.frag | 185 + packages/ludic.render3d/shaders/model.vert | 102 + packages/ludic.render3d/shaders/noise.glsl | 27 + packages/ludic.render3d/shaders/overlay.frag | 14 + packages/ludic.render3d/shaders/overlay.vert | 13 + packages/ludic.render3d/shaders/shadow.frag | 11 + packages/ludic.render3d/shaders/sharpen.frag | 21 + packages/ludic.render3d/shaders/skin.vert | 43 + packages/ludic.render3d/shaders/sky.frag | 40 + packages/ludic.render3d/shaders/ssao.frag | 47 + .../ludic.render3d/shaders/ssao_blur.frag | 19 + packages/ludic.render3d/shaders/ssgi.frag | 66 + .../ludic.render3d/shaders/ternormal.frag | 32 + packages/ludic.render3d/shaders/terrain.frag | 467 + packages/ludic.render3d/shaders/terrain.vert | 50 + .../ludic.render3d/shaders/tershadow.frag | 39 + packages/ludic.render3d/shaders/tersun.frag | 31 + packages/ludic.render3d/shaders/tonemap.frag | 47 + packages/ludic.render3d/shaders/water.frag | 107 + packages/ludic.render3d/shaders/water.vert | 12 + packages/ludic.render3d/shadow.ludic | 250 + packages/ludic.render3d/skin.ludic | 226 + packages/ludic.render3d/sky.ludic | 134 + packages/ludic.render3d/stream.ludic | 315 + packages/ludic.render3d/terrain.ludic | 706 + packages/ludic.render3d/texture.ludic | 472 + packages/ludic.render3d/water.ludic | 125 + runtime/native/cocoa.ll | 317 +- runtime/native/gl.ll | 368 + runtime/native/gl.ludic | 282 + runtime/native/gl_api.ludic | 1387 + runtime/native/gl_thunks.ll | 3163 ++ runtime/native/inflate.ludic | 127 +- runtime/native/input.ludic | 10 +- runtime/native/value.ludic | 28 + selfhost/backend/emit_call.ludic | 14 + selfhost/frontend/parse.ludic | 12 + selfhost/ludicc.seed.ll | 39827 ++++++++-------- selfhost/main.ludic | 7 + tools/ludic-cli/assets.ludic | 73 + tools/ludic-cli/build.ludic | 12 +- tools/ludic-cli/dev.ludic | 6 + tools/ludic-cli/glgen.ludic | 542 + tools/ludic-cli/main.ludic | 3 + tools/ludic-cli/prelude.ludic | 16 + tools/ludic-cli/project.ludic | 23 +- tools/ludic-cli/test.ludic | 10 + 90 files changed, 35316 insertions(+), 19853 deletions(-) create mode 100644 assets/polyhaven/LICENSE.txt create mode 100644 changes/gl-render3d.md create mode 100644 changes/renderer-outside-the-tree.md create mode 100644 changes/resize-depth-fix.md create mode 100644 changes/stream-hitch.md create mode 100644 changes/terrain-perf.md create mode 100644 docs/language/gl/_section.md create mode 100644 examples/rendering/gl_triangle.ludic create mode 100644 examples/rendering/smooth.ludic create mode 100644 packages/ludic.render3d/FEATURES.md create mode 100644 packages/ludic.render3d/actor.ludic create mode 100644 packages/ludic.render3d/assets.manifest create mode 100644 packages/ludic.render3d/camera.ludic create mode 100644 packages/ludic.render3d/collide.ludic create mode 100644 packages/ludic.render3d/daylight.ludic create mode 100644 packages/ludic.render3d/fmath.ludic create mode 100644 packages/ludic.render3d/gltf.ludic create mode 100644 packages/ludic.render3d/grass.ludic create mode 100644 packages/ludic.render3d/mesh.ludic create mode 100644 packages/ludic.render3d/overlay.ludic create mode 100644 packages/ludic.render3d/package.ludic create mode 100644 packages/ludic.render3d/post.ludic create mode 100644 packages/ludic.render3d/prof.ludic create mode 100644 packages/ludic.render3d/programs.ludic create mode 100644 packages/ludic.render3d/quat.ludic create mode 100644 packages/ludic.render3d/r3d.ludic create mode 100644 packages/ludic.render3d/render.ludic create mode 100644 packages/ludic.render3d/scatter.ludic create mode 100644 packages/ludic.render3d/shaders/adapt.frag create mode 100644 packages/ludic.render3d/shaders/bake.frag create mode 100644 packages/ludic.render3d/shaders/bloom_down.frag create mode 100644 packages/ludic.render3d/shaders/bloom_up.frag create mode 100644 packages/ludic.render3d/shaders/fullscreen.vert create mode 100644 packages/ludic.render3d/shaders/grass.vert create mode 100644 packages/ludic.render3d/shaders/heightgen.frag create mode 100644 packages/ludic.render3d/shaders/ibl_brdf.frag create mode 100644 packages/ludic.render3d/shaders/ibl_irradiance.frag create mode 100644 packages/ludic.render3d/shaders/ibl_prefilter.frag create mode 100644 packages/ludic.render3d/shaders/impostor.frag create mode 100644 packages/ludic.render3d/shaders/impostor.vert create mode 100644 packages/ludic.render3d/shaders/lighting.glsl create mode 100644 packages/ludic.render3d/shaders/model.frag create mode 100644 packages/ludic.render3d/shaders/model.vert create mode 100644 packages/ludic.render3d/shaders/noise.glsl create mode 100644 packages/ludic.render3d/shaders/overlay.frag create mode 100644 packages/ludic.render3d/shaders/overlay.vert create mode 100644 packages/ludic.render3d/shaders/shadow.frag create mode 100644 packages/ludic.render3d/shaders/sharpen.frag create mode 100644 packages/ludic.render3d/shaders/skin.vert create mode 100644 packages/ludic.render3d/shaders/sky.frag create mode 100644 packages/ludic.render3d/shaders/ssao.frag create mode 100644 packages/ludic.render3d/shaders/ssao_blur.frag create mode 100644 packages/ludic.render3d/shaders/ssgi.frag create mode 100644 packages/ludic.render3d/shaders/ternormal.frag create mode 100644 packages/ludic.render3d/shaders/terrain.frag create mode 100644 packages/ludic.render3d/shaders/terrain.vert create mode 100644 packages/ludic.render3d/shaders/tershadow.frag create mode 100644 packages/ludic.render3d/shaders/tersun.frag create mode 100644 packages/ludic.render3d/shaders/tonemap.frag create mode 100644 packages/ludic.render3d/shaders/water.frag create mode 100644 packages/ludic.render3d/shaders/water.vert create mode 100644 packages/ludic.render3d/shadow.ludic create mode 100644 packages/ludic.render3d/skin.ludic create mode 100644 packages/ludic.render3d/sky.ludic create mode 100644 packages/ludic.render3d/stream.ludic create mode 100644 packages/ludic.render3d/terrain.ludic create mode 100644 packages/ludic.render3d/texture.ludic create mode 100644 packages/ludic.render3d/water.ludic create mode 100644 runtime/native/gl.ll create mode 100644 runtime/native/gl.ludic create mode 100644 runtime/native/gl_api.ludic create mode 100644 runtime/native/gl_thunks.ll create mode 100644 tools/ludic-cli/assets.ludic create mode 100644 tools/ludic-cli/glgen.ludic diff --git a/.gitignore b/.gitignore index ed4671a4..1a82f70e 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,10 @@ __pycache__/ # archive lands in the root and a blanket `git add -A` will commit it. *.tar.gz *.tgz + +# The CC0 Poly Haven downloads are fetched, not committed (`ludic-dev fetch-assets` +# reads the manifest that ships with the renderer, packages/ludic.render3d/assets.manifest, +# so a game outside this repository fetches the same set with `ludic assets`). +assets/polyhaven/hdri/ +assets/polyhaven/textures/ +assets/polyhaven/models/ diff --git a/LANGUAGE.md b/LANGUAGE.md index 5933f8b9..fd04a112 100644 --- a/LANGUAGE.md +++ b/LANGUAGE.md @@ -1013,6 +1013,9 @@ literal; test any pointer/record/slice with `x == null` / `x != null` (an unset # control quit() print(x) (a value + newline) # convert str(x) -> str (int/bool/fixed -> text) # length len(x) -> int (elements of a slice, or bytes of a string) +# OpenGL Gl.(…) every OpenGL 4.1 core entry point (glBindBuffer -> Gl.bind_buffer, +# GL_* constants as-is) float/double parameters take fixed; buffers are bytes/words +# Gl.open(width,height,title) Gl.swap() Gl.screenshot(path) Gl.program(vs,fs) Gl.vao() Gl.floats(n) … # process arg_count()->int arg(i)->str (the command line; argv[0] included) # exit(code) run(cmd) getenv(name) read_char()->int # file_stderr()->ptr file_stdout()->ptr (handles for file_write) diff --git a/assets/polyhaven/LICENSE.txt b/assets/polyhaven/LICENSE.txt new file mode 100644 index 00000000..634e0f65 --- /dev/null +++ b/assets/polyhaven/LICENSE.txt @@ -0,0 +1,3 @@ +Everything under assets/polyhaven/ is fetched from https://polyhaven.com and is +released by Poly Haven under CC0 1.0 (public domain). Files are not committed; +see manifest.txt for the exact sources. Re-fetch with tools/glgen/fetch_assets.sh. diff --git a/changes/gl-render3d.md b/changes/gl-render3d.md new file mode 100644 index 00000000..45ceb70e --- /dev/null +++ b/changes/gl-render3d.md @@ -0,0 +1,28 @@ +bump: minor +type: feat +**OpenGL for Ludic, and a 3D renderer on it.** `Gl.*` binds the whole OpenGL 4.1 +core API — every `gl*` entry point of the platform `gl3.h` as `Gl.(…)` +with every `GL_*` constant, generated by `ludic-dev glgen` with per-call ABI thunks +(`runtime/native/gl_thunks.ll`; float/double parameters take `fixed`). Windowed +builds get an `NSOpenGLContext` on the existing window at Retina resolution +(`cocoa.ll`); headless builds render into an offscreen CGL context, so a program +that uses `Gl.*` renders and screenshots identically under the test harness. +`Gl.open / swap / screenshot / program / vao / floats …` cover the glue, and the +IEEE-float helpers (`f_add`, `mem_put_f32`, …) let Q16.16 programs fill real +float vertex and uniform data. `Gl.*` links `gl.ll + gl_thunks.ll + OpenGL.framework` +only when used; every other build is byte-identical. + +The `ludic.render3d` package (`packages/ludic.render3d`) is a physically based +renderer written on `Gl.*`: HDRI sky with image-based lighting (irradiance, GGX +prefiltered, split-sum BRDF, sun extracted from the map), GPU-generated terrain +with scanned PBR materials (stochastic anti-tiling, triplanar rock, slope/altitude +splatting), cascaded shadow maps with PCF and world-unit biasing, a glTF loader +for scanned models, instanced vegetation with baked impostors, procedural grass +and lupines with wind and translucency, 4x MSAA with alpha-to-coverage, SSAO, +still water, cloud shadows, aerial perspective, an HDR pipeline with bloom, +auto-exposure, ACES tonemapping, grading, sharpening and grain. See +`examples/rendering/smooth.ludic`, and the Maroon Lake game (git.workshopsoft.io/workshopsoft/maroon-lake) for a +game built on it. The renderer's CC0 materials are fetched with `ludic assets`. + +**16-bit PNGs**: the renderer's texture loader keeps 16-bit samples (normal / +displacement maps) and uploads them as `RGB16` / `R16`. diff --git a/changes/renderer-outside-the-tree.md b/changes/renderer-outside-the-tree.md new file mode 100644 index 00000000..a2095367 --- /dev/null +++ b/changes/renderer-outside-the-tree.md @@ -0,0 +1,39 @@ +bump: minor +type: feat +**A game can use the renderer from outside this repository.** `ludic.render3d` reads two +things from disk at run time — its GLSL, and the scanned CC0 materials — and both were +found only by a path relative to the working directory, so the renderer worked in a +Ludic checkout and nowhere else. A game living in its own repository now needs to copy +neither. + +**The shaders come from the package**, wherever the package is. They belong to +`ludic.render3d` and ship with it, so the renderer looks for them beside the project +first (a Ludic checkout, where they are under `packages/`) and then under the install +root, `$LUDIC_HOME/packages/ludic.render3d` — the same place the compiler already +resolves `import "ludic.render3d/r3d.ludic"` from. Nothing to vendor, and no version of +the shaders that can drift from the version of the code that compiles them. + +**`ludic assets [--force]`** fetches the scanned materials and the HDRI sky into +`assets/polyhaven/` of whatever project you run it in. The list of what to fetch is the +renderer's own — the renderer decides which materials it wants — so it moved out of the +repository's `assets/` and into the package as +`packages/ludic.render3d/assets.manifest`, where it ships with the toolchain. A game +does not keep its own copy of that list and so cannot fall out of step with the +renderer's material set. `ludic dev fetch-assets` is the same command from a checkout. + +**A URL-shaped module built its binary into directories.** `project_name` took +everything after the last dot of the manifest's module path, which for a package +identified the way the package manager identifies them — +`git.host.io/user/name` — is inside the *host*: the build wrote +`build/io/user/name` instead of `build/name`. The last path segment comes first now, and +a dot inside that segment still separates namespace from package, so `ludic.render3d` +still builds as `render3d`. + +**The camping game has moved out** to its own repository — +[Maroon Lake](https://git.workshopsoft.io/workshopsoft/maroon-lake) — taking +`examples/rendering/valley.ludic`, `hiker.ludic`, `camp/`, and 175 MB of survey data and +scanned kit with it. It was here as a demo of the renderer and became a game, and an +engine repository should not be carrying a game's assets. It is now the first consumer +of everything above, which is the point: what the renderer needs a game to be able to do, +it can now do from outside. `examples/rendering/smooth.ludic` stays as the renderer's +example in this tree. diff --git a/changes/resize-depth-fix.md b/changes/resize-depth-fix.md new file mode 100644 index 00000000..1825ced7 --- /dev/null +++ b/changes/resize-depth-fix.md @@ -0,0 +1,27 @@ +bump: patch +type: fix +**Resizing the window (or entering fullscreen) no longer empties the world.** It left +`gl error 1286` — `GL_INVALID_FRAMEBUFFER_OPERATION` — on every frame from there on, with +the terrain, the trees, the grass and the water gone and only the sky drawn. + +The sun-visibility pass added in `changes/terrain-perf.md` borrows the depth buffer the +frame is about to be drawn with, so that rasterising it doubles as a depth prepass. It +was storing that borrowed texture in its `Target`, and a `Target` deletes whatever its +`depth` names when it is freed. On the first resize the sequence was: `post_free` deletes +the frame's depth texture, `post_init` immediately makes the replacement — and GL hands +back the name that was just freed — and then the visibility target, rebuilt for the new +size, deleted that name believing it was its own. The scene framebuffer lost its depth +attachment. What is left is a colour-only framebuffer, which is *complete*, so drawing +carried on with no depth test at all: the sky is a fullscreen quad drawn last, and with +nothing left to fail against it painted over the entire valley. The 1286s came from the +passes whose own attachment now named a texture that no longer existed. + +A borrowed attachment is never written into the target now, and the frame's depth is +attached afresh at the start of each pass — it is a different texture every time the +screen-sized buffers are rebuilt, and one `glFramebufferTexture2D` per pass is cheaper +than any scheme for noticing that it changed. + +`R3D_RESIZE_AT=` rebuilds every screen-sized buffer from that frame on, cycling +through four drawable sizes every few frames. A window cannot be resized in a headless +run, so this is the only way to reach the path; it reproduced the fault in one frame and +now runs twenty resizes, with the fly camera and with the game, without an error. diff --git a/changes/stream-hitch.md b/changes/stream-hitch.md new file mode 100644 index 00000000..6b32bf7c --- /dev/null +++ b/changes/stream-hitch.md @@ -0,0 +1,36 @@ +bump: patch +type: perf +**Ground cover stops re-growing itself.** Walking a streamed world hitched, and the +hitch got worse the longer you played. Measured in the Maroon Lake game, with a new hitch +report rather than guessed at. + +**The chunk cache had a cliff, not a slope.** A stream cached 4096 chunks and then +stopped remembering: past that the chunk was generated, used for one frame and thrown +away, so every ring walk regenerated it, for the rest of the session. It arrives after +enough of the map has been walked — six evictions' worth over seven kilometres, so an +ordinary session reaches it — and it is the point where cover starts visibly re-growing +as you turn. `stream_evict` now drops the half of the cache nobody has asked for in the +longest time (chunks carry the walk that last wanted them) and rebuilds the index over +what is left. Over a 7 km traversal: generation total **9073 ms → 2230 ms**, the worst +single frame's generation **11.4 ms → 3.1 ms**, median frame 10.8 → 9.0 ms. With a cache +deliberately sized to saturate early, the same run goes from 2748 frames generating to +1548, and from a 13.3 ms median to 9.2. `R3D_NOEVICT` restores the old behaviour for +comparison, `R3D_STREAM_CAP=` sets the cache size. + +The other half of that hitch was in the game's own cover generator, and went with it to +the Maroon Lake game's repository: its candidates were paying for a second noise field, four +height samples and a path distance before the drift field that rules out most of the +meadow — 2341 µs → 518 µs per chunk, bit-identical output. Worth repeating in any +generator: a `stream_fill` is called for tens of thousands of candidates per chunk, so +the order of its tests is most of its cost. + +**The hitch report** (`R3D_PROF=1`) is what found both. It prints the slowest frames of +the run with what was in each: CPU versus GPU wait, cover generated, instance bytes +uploaded, the game's own tick, and the renderer phase that took longest. Alongside it, +per-chunk generation cost by stream and band, a census of what the caches hold, and a +stutter figure — the frame time a run spent beyond 1.2x its own median — because a mean +cannot show a hitch and a maximum is one unlucky frame. + +It also found two content bugs in the game it was measured on, which is the report doing +its job: a cover stream whose placement rule never fires still pays full generation cost, +and the census makes that visible — 3364 cached chunks holding zero instances. diff --git a/changes/terrain-perf.md b/changes/terrain-perf.md new file mode 100644 index 00000000..d762a42c --- /dev/null +++ b/changes/terrain-perf.md @@ -0,0 +1,54 @@ +bump: patch +type: perf +**The ground costs half what it did.** Measured in the Maroon Lake game, the terrain was 10.3 ms of +a 22.2 ms frame; it is now 5.4 ms of 16.4 ms — 45 fps to 61 fps at 1080p, with the +frame otherwise unchanged (every viewpoint tested stays above 54 dB PSNR against the +old renderer, with no channel differing by more than 7/255). + +**Measure by frame time, not by the pass timers.** `R3D_PROF`'s per-pass +`GL_TIME_ELAPSED` queries cannot be trusted on this driver: with the ground's shading +work removed the terrain query fell from 10.5 ms to 1.3 ms while the frame time did +not move at all. Every number above and below is a median real frame time, taken by +switching one thing off (`prof_ft_report`); the pass timers are still printed, and are +still useful for spotting a pass that appears out of nowhere, but they cannot size one. +`R3D_NOTERRAIN` skips the ground, `R3D_TNEARONLY` / `R3D_TFARONLY` draw every patch +with one tier's program, and `R3D_RES=x` renders at another size — the three +switches that say whether a cost is the ground, which tier it is in, and whether it is +pixels at all. + +**Each detail tier is its own program.** `terrain.frag` holds a detailed near tier and +a cheap far one and chose between them per pixel, so every pixel of the valley walls +was compiled — and scheduled — for a near path it never ran. CDLOD selection now knows +which tiers a patch can contain: one that never comes within the split draws with +`FAR_ONLY`, one wholly inside it with `NEAR_ONLY`, and only the ring of patches that +straddle the band needs the program that holds both and cross-fades. Pixel-identical, +and it makes the tiers separately measurable: the near tier costs 7.5 ms over a whole +frame, the far tier 2.3 ms. + +**The sun visibility is its own pass** (`tersun.frag`). The same CDLOD patches are +rasterised once into a screen-sized R8 buffer that holds nothing but each ground +pixel's sun visibility, and `terrain.frag` fetches it by fragment coordinate. The pass +costs 0.27 ms, shares the frame's depth buffer so it doubles as a depth prepass, and +takes the cascade read out of the shader that covers the screen. It picks its tier — +filtered PCF near, a single tap far — over the same cross-faded band the ground uses, +so the boundary is not a contour you can find on the hillside. + +**Nothing is sampled for a weight of zero.** The ground sampled all four of its +materials for every pixel and then blended three of them at zero: a meadow pixel took +nine taps of triplanar rock, a cliff pixel nine taps of stochastic grass, and every +pixel in the valley took the snow tile and the four noise fields behind the lake's +shore wash — a wash that is a hairline along one shore within 120 m of the camera. The +survey photograph's classification now runs first, because it is what decides which +materials are present; each material block sits behind its own weight; the ridge field +that ragged the snow line is skipped 160 m below it, where it cannot change anything; +and inside the stochastic blend a cell's rotation, offset and rotated gradients are +computed inside its own test, so a cell whose sharpened weight rounds away costs +nothing. All of it exact where the weight is zero, and it is most of the win. + +Material sampling is what remains (2.8 ms of the 5.4): scanned 2K tiles taken at 16x +anisotropy on ground seen at a grazing angle. `R3D_ANISO=` sets the filter (the +default is unchanged at 16; 4 is worth 1.0 ms and 1 is worth 1.7 ms). + +The shadow pass is 1.2 ms of the frame and has nothing to give: re-using the far +cascades between frames — their windows are snapped to a 14 m and a 64 m grid — is +worth 0.15 ms standing still and nothing while walking, so it is not in the tree. diff --git a/docs/language/gl/_section.md b/docs/language/gl/_section.md new file mode 100644 index 00000000..d4346298 --- /dev/null +++ b/docs/language/gl/_section.md @@ -0,0 +1,37 @@ +--- +id: gl +title: Gl +order: 60 +--- + +OpenGL for Ludic. Gl.* binds the whole OpenGL 4.1 core API: every gl* entry point of the platform gl3.h is a method named by its snake case (glBindBuffer → Gl.bind_buffer, glTexImage2D → Gl.tex_image2d, glDrawElementsInstanced → Gl.draw_elements_instanced), with every GL_* constant available as written. Parameters keep the header's names as labels (glVertexAttribPointer's pointer is called offset, program is prog); GLfloat/GLdouble parameters take fixed, pointer parameters take the raw bytes/words buffers Ludic already has, and 64-bit sizes take long (an int widens). The binding is generated by ludic-dev glgen from the header, with one ABI thunk per entry point. + +A context comes from Gl.open(width, height, title): windowed, an NSOpenGLContext on the game's window at the display's backing resolution (2× on Retina — Gl.width()/Gl.height() are the drawable's pixels); headless, an offscreen context with a framebuffer standing in for the screen (Gl.screen_fbo()), so the same program renders and screenshots under the test harness. Gl.swap() presents, Gl.screenshot(path) writes the screen as a PPM, Gl.check(tag) prints any pending error. + +The glue: Gl.program(vs, fs) / Gl.program5(vs, tcs, tes, gs, fs) compile and link (logs on failure), Gl.uniform(prog, name), Gl.vao(), Gl.buffer(), Gl.texture(), Gl.framebuffer() allocate, and float data is filled from Q16.16 with Gl.floats(n) / Gl.put(buf, i, v) / Gl.bytes_of(n) or from IEEE bits with Gl.put_bits; Gl.f32(v) and Gl.fixed(bits) convert single values. The bare f_add/f_mul/… helpers do IEEE single-precision arithmetic on those bit patterns for programs that want real floats on the CPU. + +Using Gl.* links gl.ll, the thunks and OpenGL.framework; a program that does not is byte-identical to before. The ludic.render3d package is a physically based 3D renderer written on this surface (see examples/rendering/smooth.ludic here, and Maroon Lake for a game built on it). + +```ludic +program Triangle { + property Marker { on: int = 1 } + model Anchor { Marker } + var prog: int = 0 + var vao: int = 0 + handler Boot phase Start { + spawn Anchor {} + if not Gl.open(width: 640, height: 360, title: "GL") { quit() } + prog = Gl.program(vs: "#version 410 core\nvoid main(){ gl_Position = vec4(float(gl_VertexID == 1) * 2.0 - 0.5, float(gl_VertexID == 2) * 2.0 - 0.5, 0.0, 1.0); }\n", + fs: "#version 410 core\nout vec4 o; void main(){ o = vec4(1.0, 0.5, 0.2, 1.0); }\n") + vao = Gl.vao() + } + handler Draw phase Render { + Gl.clear_color(red: 0.1, green: 0.1, blue: 0.15, alpha: 1.0) + Gl.clear(mask: GL_COLOR_BUFFER_BIT) + Gl.use_program(prog: prog) + Gl.bind_vertex_array(array: vao) + Gl.draw_arrays(mode: GL_TRIANGLES, first: 0, count: 3) + Gl.swap() + } +} +``` diff --git a/examples/rendering/gl_triangle.ludic b/examples/rendering/gl_triangle.ludic new file mode 100644 index 00000000..ca88eaf2 --- /dev/null +++ b/examples/rendering/gl_triangle.ludic @@ -0,0 +1,49 @@ +# gl_triangle.ludic — the smallest Gl.* program: one shaded triangle through a +# real OpenGL 4.1 core context. Windowed it draws to the screen each frame; +# headless it renders into an offscreen framebuffer and screenshots it, so the +# test harness can look at the result without a display. +# bin/ludic build examples/rendering/gl_triangle.ludic --headless && echo q | build/gl_triangle_headless +program GlTriangle { + property Marker { on: int = 1 } + model Anchor { Marker } + + var prog: int = 0 + var vao: int = 0 + var frame: int = 0 + + const VS: string = "#version 410 core\nlayout(location=0) in vec2 p; layout(location=1) in vec3 c; out vec3 vc;\nvoid main(){ vc = c; gl_Position = vec4(p, 0.0, 1.0); }\n" + const FS: string = "#version 410 core\nin vec3 vc; out vec4 o;\nvoid main(){ o = vec4(vc, 1.0); }\n" + + handler Boot phase Start { + spawn Anchor {} + if not Gl.open(width: 640, height: 360, title: "Ludic GL") { print("no GL context"); quit() } + print(Gl.get_string(name: GL_VERSION)) + prog = Gl.program(vs: VS, fs: FS) + vao = Gl.vao() + let vbo = Gl.buffer() + Gl.bind_buffer(target: GL_ARRAY_BUFFER, buffer: vbo) + let v = Gl.floats(15) + Gl.put(v, 0, -0.8); Gl.put(v, 1, -0.8); Gl.put(v, 2, 1.0); Gl.put(v, 3, 0.2); Gl.put(v, 4, 0.1) + Gl.put(v, 5, 0.8); Gl.put(v, 6, -0.8); Gl.put(v, 7, 0.1); Gl.put(v, 8, 1.0); Gl.put(v, 9, 0.2) + Gl.put(v, 10, 0.0); Gl.put(v, 11, 0.8); Gl.put(v, 12, 0.2); Gl.put(v, 13, 0.3); Gl.put(v, 14, 1.0) + Gl.buffer_data(target: GL_ARRAY_BUFFER, size: Gl.bytes_of(15), data: v, usage: GL_STATIC_DRAW) + Gl.enable_vertex_attrib_array(index: 0) + Gl.vertex_attrib_pointer(index: 0, size: 2, type: GL_FLOAT, normalized: 0, stride: 20, offset: null) + Gl.enable_vertex_attrib_array(index: 1) + Gl.vertex_attrib_pointer(index: 1, size: 3, type: GL_FLOAT, normalized: 0, stride: 20, offset: Gl.ptr(null, 8)) + Gl.check(tag: "boot") + } + + handler Draw phase Render { + Gl.bind_framebuffer(target: GL_FRAMEBUFFER, framebuffer: Gl.screen_fbo()) + Gl.viewport(x: 0, y: 0, width: Gl.width(), height: Gl.height()) + Gl.clear_color(red: 0.1, green: 0.12, blue: 0.18, alpha: 1.0) + Gl.clear(mask: GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) + Gl.use_program(prog: prog) + Gl.bind_vertex_array(array: vao) + Gl.draw_arrays(mode: GL_TRIANGLES, first: 0, count: 3) + frame += 1 + if frame == 1 { Gl.screenshot(path: "build/gl_triangle.ppm") } + Gl.swap() + } +} diff --git a/examples/rendering/smooth.ludic b/examples/rendering/smooth.ludic new file mode 100644 index 00000000..8a8d05a5 --- /dev/null +++ b/examples/rendering/smooth.ludic @@ -0,0 +1,189 @@ +# smooth.ludic — a synthetic 2 km test ground for the terrain renderer. +# +# The valley scene stands on a real survey (Copernicus GLO-30 resampled to a 4 m grid), +# which carries its own resampling lattice and quantisation. This scene carries none: +# the height field is an analytic function (see SMOOTH in heightgen.frag), so anything +# that still looks like a grid here belongs to the renderer, not the data. +# +# bin/ludic build examples/rendering/smooth.ludic && ./build/smooth +program Smooth { + import "ludic.render3d/r3d.ludic" + + property Marker { on: int = 1 } + model Anchor { Marker } + + var frame: int = 0 + var shot_at: int = 40 + var walk: bool = false + var spin: bool = false + var l_blades: Layer = null + var l_grass_a: Layer = null + var l_grass_b: Layer = null + var s_blades: Stream = null + var s_cards_a: Stream = null + var s_cards_b: Stream = null + var l_trees: Layer = null + + function rnd() -> int { return fr(rng_range(0, 9999), 10000) } + function rnd_range(a: int, b: int) -> int { return f_lerp(a, b, rnd()) } + function smooth(a: int, b: int, x: int) -> int { + let t = f_clamp(f_div(f_sub(x, a), f_sub(b, a)), F_ZERO, F_ONE) + return f_mul(f_mul(t, t), f_sub(fi(3), f_mul(F_TWO, t))) + } + function slope_at(x: int, z: int) -> int { + let e = F_TWO + let dx = f_sub(terrain_height(f_add(x, e), z), terrain_height(f_sub(x, e), z)) + let dz = f_sub(terrain_height(x, f_add(z, e)), terrain_height(x, f_sub(z, e))) + let ny = f_div(fi(4), f_sqrt(f_add(f_add(f_mul(dx, dx), f_mul(dz, dz)), fi(16)))) + return f_sub(F_ONE, ny) + } + function noise01(x: int, z: int, scale: fixed) -> int { + let n = Noise.fbm2(f_fx(x) * scale, f_fx(z) * scale, 4) + return fl(n * 0.5 + 0.5) + } + + # grass only where the ground is grassy: gentle, above the water, below the mountain + function stream_fill(s: Stream, cx: int, cz: int, band: int) -> void { + seed((cx * 73856093) ^ (cz * 19349663) ^ (band * 83492791) ^ (s.kind * 2654435761)) + let size = s.size + let x0 = f_mul(fi(cx), size); let z0 = f_mul(fi(cz), size) + # Candidate spacing. These are metres between attempts, so halving one quadruples the + # work and the instance count: the first pass here was dense enough to bury the scene + # and cost most of the frame. Blades are only placed close to the eye, where they read + # as individual grass; past that the cards carry the cover. + var step = fl(1.0) + if s.kind == 0 { if band == 0 { step = fl(0.22) } else if band == 1 { step = fl(0.45) } else { step = fl(1.1) } } + else { if band == 0 { step = fl(0.9) } else if band == 1 { step = fl(1.8) } else { step = fl(4.0) } } + var z = z0 + while f_ls(z, f_add(z0, size)) { + var x = x0 + while f_ls(x, f_add(x0, size)) { + let px = f_add(x, f_mul(rnd(), step)) + let pz = f_add(z, f_mul(rnd(), step)) + let h = terrain_height(px, pz) + # Grassy ground only: above the water, off the steep parts, below the rim. Every + # test is a smooth ramp — a hard height cut carves the cover into contour rings, + # because the cut lands on a line of constant elevation. + var keep = smooth(fl(0.2), fl(1.6), h) # out of the water + keep = f_mul(keep, smooth(fi(90), fi(45), h)) # below the mountain + keep = f_mul(keep, smooth(fl(0.42), fl(0.16), slope_at(px, pz))) + keep = f_mul(keep, f_add(fl(0.25), f_mul(fl(0.9), noise01(px, pz, 0.02)))) + keep = f_mul(keep, fl(0.75)) + var sc = rnd_range(fl(0.16), fl(0.4)) + if s.kind != 0 { sc = f_mul(rnd_range(fl(1.5), fl(2.5)), f_add(F_ONE, f_mul(fl(0.5), fi(band)))) } + if f_ls(rnd(), keep) { + stream_emit(s, px, f_sub(h, fl(0.03)), pz, sc, f_mul(rnd(), f_mul(F_TWO, F_PI)), rnd(), rnd_range(fl(0.6), F_ONE)) + } + x = f_add(x, step) + } + z = f_add(z, step) + } + } + + function scene_draw() -> void { scatter_draw() } + function scene_draw_casters() -> void { scatter_draw_casters(shadow_cascade_vp(sh_cascade)) } + + handler Boot phase Start { + spawn Anchor {} + # 2 km square, generated analytically + TERRAIN_HALF = 1000 + ter_smooth = true + if not r3d_init(1920, 1080, "Smooth") { quit() } + walk = Os.has_env("R3D_WALK") + spin = Os.has_env("R3D_SPIN") + if Os.has_env("R3D_SHOT") { shot_at = Text.to_int(Os.env("R3D_SHOT")) } + + var cx = fi(0); var cz = fi(260) + if Os.has_env("R3D_CAM_X") { cx = fi(Text.to_int(Os.env("R3D_CAM_X"))) } + if Os.has_env("R3D_CAM_Z") { cz = fi(Text.to_int(Os.env("R3D_CAM_Z"))) } + var ch = fl(1.8); var cp = f_neg(fi(3)); var cy = fi(180) + if Os.has_env("R3D_CAM_H") { ch = fi(Text.to_int(Os.env("R3D_CAM_H"))) } + if Os.has_env("R3D_CAM_PITCH") { cp = fi(Text.to_int(Os.env("R3D_CAM_PITCH"))) } + if Os.has_env("R3D_CAM_YAW") { cy = fi(Text.to_int(Os.env("R3D_CAM_YAW"))) } + cam_set(cx, f_add(terrain_height(cx, cz), ch), cz, cy, cp) + + # a small pond in the middle of the meadow — the plane self-clips to the basin, so + # its extent only has to cover the hollow, not the map + water_init(fl(4.0), F_ZERO, F_ZERO, fi(200), fi(200)) + sky_set_yaw(f_rad(fi(120))) + + # grass: blades underfoot, cards beyond + let dir = r3d_assets + "/models/grass_medium_01" + let ga = gltf_load(dir, "grass_medium_01_1k.gltf", "grass_medium_01_tall_a_LOD0") + let gb = gltf_load(dir, "grass_medium_01_1k.gltf", "grass_medium_01_mid_a_LOD0") + if ga == null or gb == null { print("smooth: no grass models"); return } + # blades are the expensive layer: keep them near, and cap them low + l_blades = layer_new(model_blade(), 400000, true, fl(3.0), F_ZERO, fi(70)) + l_blades.blade = true + l_grass_a = layer_cards(ga, 200000, fl(0.3), fi(260)) + l_grass_b = layer_cards(gb, 200000, fl(0.3), fi(260)) + v3_set(l_grass_a.tint, fl(0.95), F_ONE, fl(0.85)) + v3_set(l_grass_b.tint, fl(0.9), fl(0.98), fl(0.8)) + l_grass_a.rough = fl(1.6); l_grass_b.rough = fl(1.6) + s_blades = stream_new(l_blades, fi(8), fi(60), fi(12), fi(28), fi(60), fi(60)) + s_cards_a = stream_new(l_grass_a, fi(32), fi(240), fi(45), fi(110), fi(240), fi(240)) + s_cards_b = stream_new(l_grass_b, fi(32), fi(240), fi(45), fi(110), fi(240), fi(240)) + s_blades.kind = 0; s_cards_a.kind = 1; s_cards_b.kind = 2 + place_trees() + } + + # scattered firs on the gentle ground, thinning toward the pond and the rim + function place_trees() -> void { + let model = gltf_load(r3d_assets + "/models/fir_tree_01", "fir_tree_01_1k.gltf", "fir_tree_01_c_LOD0") + if model == null { print("smooth: no fir model"); return } + l_trees = layer_new(model, 20000, false, F_ZERO, fi(90), F_ZERO) + layer_set_impostor(l_trees, impostor_bake(model, 12, 512, 1024)) + v3_set(l_trees.tint, fl(0.9), F_ONE, fl(0.85)) + seed(4242) + var z = f_neg(fi(900)) + while f_ls(z, fi(900)) { + var x = f_neg(fi(900)) + while f_ls(x, fi(900)) { + let px = f_add(x, f_mul(rnd(), fi(14))); let pz = f_add(z, f_mul(rnd(), fi(14))) + let h = terrain_height(px, pz) + var keep = smooth(fi(7), fi(14), h) # above the pond shore + keep = f_mul(keep, smooth(fi(120), fi(60), h)) # below the rim + keep = f_mul(keep, smooth(fl(0.45), fl(0.2), slope_at(px, pz))) + keep = f_mul(keep, smooth(fl(0.45), fl(0.75), noise01(px, pz, 0.004))) + if f_ls(rnd(), f_mul(keep, fl(0.5))) { + let sc = rnd_range(fl(0.7), fl(1.35)) + layer_add(l_trees, px, f_sub(h, fl(0.2)), pz, sc, f_mul(rnd(), f_mul(F_TWO, F_PI)), rnd(), F_ZERO) + } + x = f_add(x, fi(14)) + } + z = f_add(z, fi(14)) + } + } + + handler Fly phase Input { + if walk { cam_move(fl(1.0), F_ZERO, F_ZERO, fl(0.003), F_ZERO); return } + if spin { cam_move(F_ZERO, F_ZERO, F_ZERO, fl(0.02), F_ZERO); return } + if not is_windowed() { return } + Input.poll() + var fwd = F_ZERO; var side = F_ZERO; var up = F_ZERO + let speed = fl(0.6) + if Input.key_down(key: 'w') { fwd = speed } + if Input.key_down(key: 's') { fwd = f_neg(speed) } + if Input.key_down(key: 'd') { side = speed } + if Input.key_down(key: 'a') { side = f_neg(speed) } + if Input.key_down(key: 'e') { up = speed } + if Input.key_down(key: 'q') { up = f_neg(speed) } + var dyaw = F_ZERO; var dpitch = F_ZERO + if Input.mouse_down(button: 0) { + dyaw = f_mul(fi(Input.mouse_dx()), fl(-0.004)) + dpitch = f_mul(fi(Input.mouse_dy()), fl(-0.004)) + } + if fwd != 0 or side != 0 or up != 0 or dyaw != 0 or dpitch != 0 { cam_move(fwd, side, up, dyaw, dpitch) } + if Input.key_pressed(key: 'p') { + let gy = terrain_height(cam_pos[0], cam_pos[2]) + print(`R3D_CAM_X={string(f_to_int(cam_pos[0]))} R3D_CAM_Z={string(f_to_int(cam_pos[2]))} R3D_CAM_H={string(f_to_int(f_sub(cam_pos[1], gy)))} R3D_CAM_YAW={string(f_to_int(f_mul(cam_yaw, f_div(fi(180), F_PI))))} R3D_CAM_PITCH={string(f_to_int(f_mul(cam_pitch, f_div(fi(180), F_PI))))}`) + } + } + + handler Draw phase Render { + r3d_frame(fl(Time.elapsed())) + frame += 1 + if frame == shot_at { Gl.screenshot(path: "build/smooth.ppm") } + Gl.swap() + } +} diff --git a/packages/ludic.render3d/FEATURES.md b/packages/ludic.render3d/FEATURES.md new file mode 100644 index 00000000..5ce6c0a6 --- /dev/null +++ b/packages/ludic.render3d/FEATURES.md @@ -0,0 +1,118 @@ +# ludic.render3d — what is implemented, where, and how it compares + +Every item below names the file (and function or shader) that implements it, so +the claim can be checked in the tree. Paths are relative to `packages/ludic.render3d` +unless stated; `Gl.*` lives in `runtime/native/`. + +## The OpenGL surface (`Gl.*`) + +- **Every OpenGL 4.1 core entry point** — 478 of 478 `GLAPI` declarations in the + platform `gl3.h`, generated by `ludic-dev glgen` (`tools/ludic-cli/glgen.ludic`) into + `runtime/native/gl_api.ludic` (`grep -c '^extern function gl_'` = 478) with one ABI + thunk each in `runtime/native/gl_thunks.ll`; **901 `GL_*` constants**. Float and + double parameters take `fixed`; 64-bit sizes take `long`; `GLboolean` returns are + widened. macOS exposes 4.1 core as its ceiling, so this is the whole API the platform has. +- Context on the window at Retina resolution (`runtime/native/cocoa.ll`, + `win_gl_attach`), offscreen CGL context for headless runs (`runtime/native/gl.ll`), + screenshots, shader/program helpers, IEEE-float helpers over Q16.16 (`runtime/native/gl.ludic`). + +## Rendering features (numbered so they can be counted) + +Lighting and materials +1. Cook-Torrance GGX specular, Smith height-correlated visibility, Schlick Fresnel — `shaders/lighting.glsl` `shade()` +2. Diffuse image-based lighting from a convolved irradiance map — `sky.ludic` `sky_precompute`, `shaders/ibl_irradiance.frag` +3. GGX-prefiltered specular environment, 6 roughness levels (importance sampled, mip-filtered) — `shaders/ibl_prefilter.frag` +4. Split-sum BRDF lookup table — `shaders/ibl_brdf.frag` +5. HDRI sky with the sun extracted from the map and its irradiance integrated from the clipped texels — `texture.ludic` `hdr_decode`, `sky.ludic` +6. Sky rotation with all convolutions rebuilt (time-of-azimuth control) — `sky.ludic` `sky_set_yaw` +7. Normal mapping with derivative-reconstructed tangent frames (models) and a heightfield tangent basis (terrain) — `shaders/model.frag` `cotangentFrame`, `shaders/terrain.frag` +8. Distant-grass carpet: the clump cards baked straight down into a tiling tile (alpha = coverage) and draped on the ground beyond the blade rings with stochastic anti-tiling, so the far meadow carries the near cover's clumps and gaps — `scatter.ludic` `carpet_bake`, `shaders/terrain.frag` `sampleCarpet` (replaced the parallax pass, whose sampler slot it took) +9. Stochastic (triangle-grid) anti-tiling texture sampling with rotated taps and `textureGrad` — `shaders/terrain.frag` `sampleMat` +10. Triplanar mapping for steep rock — `shaders/terrain.frag` `sampleTri` +11. Foliage translucency and wrapped diffuse (thin-leaf subsurface approximation) — `shaders/model.frag` `FOLIAGE` +12. Two-sided lighting for thin cards — `shaders/model.frag` `CARD` +13. Ground-bounce fill light (one bounce from the sunlit meadow onto undersides) — `shaders/lighting.glsl` `bounce` +14. Screen-space global illumination: one indirect diffuse bounce gathered from the previous anti-aliased frame, plus ambient occlusion, half resolution, depth-aware blur — `shaders/ssgi.frag`, `shaders/ssao_blur.frag`, `post.ludic` `post_ssao_pass` +15. Specular occlusion from ambient occlusion — `shaders/lighting.glsl` +16. Cloud shadows projected along the sun from an animated cloud layer — `shaders/lighting.glsl` `cloudShadow` +17. Regional vegetation colouring (aspen groves, dry ridges) and slope-aspect colouring — `shaders/lighting.glsl` `regionTint`, `shaders/terrain.frag` + +Shadows +18. Cascaded shadow maps, 5 cascades (16 / 60 / 250 / 1100 / 6000 m) fitted to frustum-slice bounding spheres, texel-snapped, PCF radius widened on the far cascades — `shadow.ludic` `shadow_fit` +19. PCF with rotated Poisson taps and interleaved-gradient noise, normal-offset and world-unit slope bias, cascade edge blending — `shaders/lighting.glsl` `sunShadow` +20. Per-layer caster culling (grass in near cascades, coarse terrain meshes for far cascades) — `scatter.ludic` `scatter_draw_casters`, `terrain.ludic` +21. Sun-facing impostor cards in the shadow pass with mip-biased coverage — `shaders/impostor.vert`, `shaders/impostor.frag` + +Geometry, terrain and world +22. GPU-generated terrain height field (ridged multifractal, fbm) — `shaders/heightgen.frag` +23. Real-world terrain from the Copernicus GLO-30 elevation model with slope-scaled fractal detail; a lake bed carved under the surface the model records — the survey window in the Maroon Lake game (git.workshopsoft.io/workshopsoft/maroon-lake), `shaders/heightgen.frag` `DEM`, `terrain.ludic` `terrain_use_dem`, `terrain_lake` +24. Satellite orthophoto drape (Sentinel-2 true colour) sampled bicubically, blended in past the middle ground, keeping the scanned materials' luminance grain plus three-scale procedural grain — the survey window in the Maroon Lake game (git.workshopsoft.io/workshopsoft/maroon-lake), `shaders/terrain.frag` `u_ortho` +25. Satellite-classified materials and placement: bare ground (cobble shore near, talus far), snow, meadow, dense conifer stands (tree density and forest-floor duff follow the photograph) — `shaders/terrain.frag`, `terrain.ludic` `terrain_ortho_green/scree/forest` +26. Terrain material splatting by slope, altitude and a track mask; height-map CPU read-back for placement queries — `shaders/terrain.frag`, `terrain.ludic` `terrain_height` +27. Snow by altitude and slope, gully snow, forest-floor material under stands — `shaders/terrain.frag` +28. glTF 2.0 loading of photogrammetry models by byte-range reads from the `.bin` — `gltf.ludic` +29. GPU instancing with divisor attributes and per-instance transforms — `scatter.ludic`, `shaders/model.vert` +30. Baked impostors (16-view atlas with coverage and normals, hull-normal blending, LOD switch) — `scatter.ludic` `impostor_bake`, `shaders/impostor.*` +31. Baked branch-card trees: wedge slices of a scanned crown (sectors × height bands) on radial cards over the real trunk mesh — `scatter.ludic` `impostor_bake_wedges`, `model_branch_cards` +32. Card atlases baked from scanned grass clumps and a dense procedural lupine, instanced as crossed cards — `scatter.ludic` `layer_cards`, `model_lupine_dense` +33. Procedural grass blades with wind, dryness and base occlusion; distant blades widen, lie flat to the ground normal and sink into the carpet at the ring's edge — `scatter.ludic` `model_blade`, `shaders/model.vert`, `shaders/model.frag` `BLADE` +34. Wind animation (height-weighted sway, per-instance phase) — `shaders/model.vert` `WIND` +35. Chunk-streamed ground cover with distance bands (blades in four rings, densest underfoot), deterministic per-chunk generation, nearest-first amortised over frames with an instance budget — `stream.ludic` +36. Multi-scale noise clustering for natural placement, forest density by elevation/slope/aspect, avalanche chutes, shoreline scrub — the Maroon Lake game (git.workshopsoft.io/workshopsoft/maroon-lake) +37. Level-of-detail by distance: full scan mesh → branch cards → single impostor — `scatter.ludic` `layer_update` +38. Texture edge dilation for cut-out atlases; 16-bit PNG decoding to RGB16/R16; RGBE HDR decoding — `texture.ludic` +39. Anisotropic filtering and mipmapping on all scanned maps — `texture.ludic` `tex_upload` +40. Still water: planar reflection pass through a reflection matrix with clip-below discard, depth-tinted body, soft shores, ripple normals, foam streaks, sun glitter; the surface writes depth so occlusion and temporal passes see it — `water.ludic`, `shaders/water.frag` + +Anti-aliasing, camera and post-processing +41. Temporal anti-aliasing: Halton-jittered projection, depth reprojection, YCoCg neighbourhood clamping, history ping-pong — `camera.ludic` `cam_set_jitter`, `shaders/taa.frag` +42. Optional MSAA with alpha-to-coverage and per-mip alpha sharpening — `post.ludic`, `shaders/impostor.frag` +43. HDR pipeline (RGBA16F) with NaN/inf sanitising at every stage — `post.ludic`, `shaders/lighting.glsl` `sane` +44. Bloom: 13-tap downsample pyramid with soft threshold, tent upsample — `shaders/bloom_down.frag`, `shaders/bloom_up.frag` +45. Auto-exposure by mean luminance with temporal adaptation — `post.ludic` `post_measure` +46. ACES filmic tonemapping with log-space contrast — `shaders/tonemap.frag` +47. Colour grading: white balance, lift/gain, saturation — `shaders/tonemap.frag` +48. Vignette, dithering, film grain — `shaders/tonemap.frag`, `shaders/sharpen.frag` +49. Luma unsharp sharpening — `shaders/sharpen.frag` +50. Height-based exponential fog / aerial perspective from the prefiltered sky with sun inscatter — `shaders/lighting.glsl` `applyFog` +51. Specular anti-aliasing (highlight cap) and firefly prevention — `shaders/lighting.glsl` +52. Fly camera with mouse look — the Maroon Lake game (git.workshopsoft.io/workshopsoft/maroon-lake) +53. Profiling switches per stage and a frame benchmark — `render.ludic` `r3d_env_flags` + +Characters and moving objects +54. glTF skins: node hierarchy, joints and inverse bind matrices loaded per model, four-influence GPU skinning, poses set per node in the model's frame — `skin.ludic`, `shaders/skin.vert`, `quat.ludic` +55. Actors: models placed and moved per frame (skinned or rigid), lit and cast into every cascade — `actor.ludic` +56. The drawn terrain height on the CPU (cubic B-spline of the texels) for things that stand on it — `terrain.ludic` `terrain_height_smooth` +57. A third-person character controller with a distance-driven procedural gait (walk / run / idle), slope and water limits, and a settling orbit camera — the Maroon Lake game (git.workshopsoft.io/workshopsoft/maroon-lake) +58. A 2D overlay over the finished frame: batched rectangles, images and proportional text from a baked font atlas (`tools/blender/font_build.py`) — `overlay.ludic`, `shaders/overlay.*` +59. Time of day over the HDRI: a solar arc drives the sun's direction and colour, the sky's light scales toward a deep-blue starry night, a moon lights the night, the visible sky turns with the sun and its convolutions rebake when far off, the height-field shadow rebakes as the sun moves, auto-exposure is capped at night — `daylight.ludic`, `shaders/sky.frag`, `shaders/lighting.glsl` +60. One point light (the campfire) in the shading — `shaders/lighting.glsl` `fireLight` +61. Static collision: ground circles in a cell grid with push-out and a segment test — `collide.ludic` +62. Cut-out and emissive actors (a flame's cards) — `actor.ludic`, `shaders/model.frag` `u_emissive` +63. Per-instance skin clones (a herd posed individually), per-part tints and hidden parts on actors, uniform-location caching with frustum and distance culling — `skin.ludic` `skin_clone`, `actor.ludic` +64. A second point / cone light (a torch or flashlight in the hand) — `daylight.ludic` `daylight_hand`, `shaders/lighting.glsl` `handLight` +65. Auto-exposure adapted on the GPU: a 1x1 pass eases last frame's value toward key / mean and the tonemapper samples it, so nothing is read back (a pixel-buffer read still synchronised on Apple's GL) — `post.ludic` `post_measure`, `shaders/adapt.frag` +66. A PPM reader with box-filtered downscale (photo thumbnails) and word-wrapped overlay text — `texture.ludic` `tex_load_ppm`, `overlay.ludic` `ov_text_wrap` +67. The overlay batches a whole frame into one upload and draws per texture range with optional scissor clips (per-change uploads stalled the driver: 40 ms -> 25 ms), plus nine-slice, rotated, line, disc and arc primitives — `overlay.ludic` `ov_flush`, `ov_clip`, `ov_nine`, `ov_sub_rot`, `ov_line`, `ov_disc`, `ov_arc` +68. Weather on the daylight: an overcast factor greys and dims the sun and the sky's light, a fog multiplier thickens the air, a lightning flash — `daylight.ludic` `daylight_weather` + +## Against Unreal Engine 5 and RAGE (RDR2), honestly + +| Technique | UE5 / RAGE | Here | +|---|---|---| +| Physically based shading, IBL, split-sum | both | implemented (1–4) | +| Cascaded shadow maps with PCF | both (UE5 also virtual shadow maps) | implemented (18–21); no virtual shadow maps | +| Temporal AA / upsampling | TSR / TAA | TAA implemented (41), no upscaling | +| Screen-space AO / GI | SSAO, SSGI, Lumen | SSGI + AO implemented (14); no Lumen-class GI, no ray tracing (not available on OpenGL 4.1) | +| Volumetric clouds and fog | both | HDRI sky with cloud shadows and analytic fog; no ray-marched clouds | +| Foliage: impostors, wind, translucency | both | implemented (30–34) | +| Nanite / virtualised geometry | UE5 | not applicable; LOD chain (37) instead | +| Terrain: height fields, layered materials, real-world data | both | implemented (22–27) | +| Water with planar reflection | RAGE planar, UE SSR | planar reflection implemented (40); no screen-space reflection | +| Post: bloom, exposure, tonemap, grading, DoF, motion blur | both | bloom/exposure/tonemap/grading implemented (44–49); no depth of field, no motion blur | +| Streaming world | both | chunk streaming of cover (35); terrain is one 8 km tile | +| Compute shaders, indirect draw, bindless | both | not available in OpenGL 4.1 core on macOS | + +Where the remaining visual gap sits: photogrammetry cards for several meadow +species, ray-traced or probe-based global illumination, virtual shadow maps, and +volumetric clouds. Those are the techniques that separate this from the reference. diff --git a/packages/ludic.render3d/actor.ludic b/packages/ludic.render3d/actor.ludic new file mode 100644 index 00000000..f0c25329 --- /dev/null +++ b/packages/ludic.render3d/actor.ludic @@ -0,0 +1,204 @@ +# ============================================================================ +# actor.ludic — a model placed once and moved every frame (a character, a prop +# that animates): the counterpart of a scatter Layer for the handful of things +# that are not instanced. Skinned models pose through their Skin (skin.ludic); +# rigid ones take the same path with u_skinned = 0. The game draws them from +# scene_draw / scene_draw_casters through actor_draw / actor_draw_casters. +# +# Uniform locations are looked up once per program (glGetUniformLocation by +# name is slow on this driver, and a hundred actors over five cascades made it +# the frame's biggest CPU cost); the scene's lighting is bound once per program +# per pass, and actors outside the view or beyond their cull distance are skipped. +# ============================================================================ + +property Actor { + model: Model, + x: int = 0, # float bits, metres + y: int = 0, + z: int = 0, + yaw: int = 0, # radians; 0 faces -z like the camera + scale: int = 0, + tint: words, + rough: int = 0, + mat: words, # the model matrix + visible: bool = true, + casts: bool = true, + id: int = 0, + cutout: bool = false, # alpha-tested (a flame's cards) + emissive: int = 0, # float bits: self-lit strength + skin: Skin, # this instance's own pose (skin_clone); null: the model's + ptint: words, # 4 per primitive: on flag, r, g, b (a part's own colour) + hide: words, # 1 per primitive: skip it (a cap taken off) + radius: int = 0, # float bits: bounding radius for culling (0 = never culled) + cull: int = 0 # float bits: not drawn beyond this distance (0 = always) +} +# a program and its uniform locations +property AcProg { + prog: int = 0, + l_model: int = -1, + l_bones: int = -1, + l_skin: int = -1, + l_lvp: int = -1, + l_tint: int = -1, + l_rough: int = -1, + l_emis: int = -1, + l_view: int = -1, + l_proj: int = -1, + l_mh: int = -1, + scene_frame: int = -1 # the frame its scene uniforms were bound +} + +var ac_lit: AcProg = null +var ac_lit_cut: AcProg = null +var ac_sh: AcProg = null +var ac_sh_cut: AcProg = null +var ac_actors: []Actor = null +var ac_next_id: int = 0 +var ac_frame: int = 0 + +function ac_prog_new(vs: string, fs: string, defs: string) -> AcProg { + let a = new AcProg + a.prog = r3d_program(vs, fs, defs) + let p = a.prog + a.l_model = gl_uniform(p, "u_model"); a.l_skin = gl_uniform(p, "u_skinned"); a.l_lvp = gl_uniform(p, "u_light_vp") + a.l_bones = gl_uniform(p, "u_bones[0]"); if a.l_bones < 0 { a.l_bones = gl_uniform(p, "u_bones") } + a.l_tint = gl_uniform(p, "u_tint"); a.l_rough = gl_uniform(p, "u_rough_scale"); a.l_emis = gl_uniform(p, "u_emissive") + a.l_view = gl_uniform(p, "u_view"); a.l_proj = gl_uniform(p, "u_proj"); a.l_mh = gl_uniform(p, "u_model_h") + # the samplers never move: units 0, 1, 2 + gl_use_program(p) + gl_uniform1i(gl_uniform(p, "u_diff"), 0); gl_uniform1i(gl_uniform(p, "u_nrm"), 1); gl_uniform1i(gl_uniform(p, "u_arm"), 2) + return a +} +function actor_init() -> void { + ac_lit = ac_prog_new("skin.vert", "model.frag", "") + ac_lit_cut = ac_prog_new("skin.vert", "model.frag", "#define ALPHA_TEST\n") + ac_sh = ac_prog_new("skin.vert", "shadow.frag", "#define SHADOW_PASS\n") + ac_sh_cut = ac_prog_new("skin.vert", "shadow.frag", "#define SHADOW_PASS\n#define ALPHA_TEST\n") + ac_actors = new []Actor +} +function actor_remove(a: Actor) -> void { + if ac_actors == null { return } + let keep = new []Actor + for i in 0 .. len(ac_actors) { if ac_actors[i].id != a.id { push(keep, ac_actors[i]) } } + ac_actors = keep +} +# colour one named part of the model (a material name from the file) +function actor_tint_part(a: Actor, name: string, r: int, g: int, b: int) -> void { + if a.model == null { return } + let n = len(a.model.prims) + if a.ptint == null { a.ptint = words(n * 4); for i in 0 .. n * 4 { a.ptint[i] = 0 } } + for i in 0 .. n { if a.model.prims[i].name == name { a.ptint[i * 4] = 1; a.ptint[i * 4 + 1] = r; a.ptint[i * 4 + 2] = g; a.ptint[i * 4 + 3] = b } } +} +function actor_hide_part(a: Actor, name: string, hidden: bool) -> void { + if a.model == null { return } + let n = len(a.model.prims) + if a.hide == null { a.hide = words(n); for i in 0 .. n { a.hide[i] = 0 } } + var v = 0 + if hidden { v = 1 } + for i in 0 .. n { if a.model.prims[i].name == name { a.hide[i] = v } } +} + +function actor_new(model: Model) -> Actor { + let a = new Actor + a.model = model + a.scale = F_ONE + a.tint = v3_new(F_ONE, F_ONE, F_ONE) + a.rough = F_ONE + a.mat = m4_new() + ac_next_id += 1; a.id = ac_next_id + if model != null { a.radius = f_add(f_max(model.radius, model.height), F_ONE) } + a.cull = fi(450) + if ac_actors == null { ac_actors = new []Actor } + push(ac_actors, a) + return a +} + +function actor_place(a: Actor, x: int, y: int, z: int, yaw: int) -> void { + a.x = x; a.y = y; a.z = z; a.yaw = yaw + m4_trs(a.mat, x, y, z, yaw, a.scale) +} + +# the scene's lighting for a lit program, once per frame +function ac_bind_scene(ap: AcProg) -> void { + if ap.scene_frame == ac_frame { return } + ap.scene_frame = ac_frame + let p = ap.prog + gl_use_program(p) + u_mat4(ap.l_view, cam_view) + u_mat4(ap.l_proj, cam_proj) + u_f(ap.l_mh, F_ZERO) + sky_bind_lighting(p) + shadow_bind(p) + fog_bind(p) +} +function ac_visible(a: Actor, shadow: bool) -> bool { + if not a.visible or a.model == null { return false } + if shadow and not a.casts { return false } + if a.cull != 0 { + let dx = f_sub(a.x, cam_pos[0]); let dz = f_sub(a.z, cam_pos[2]) + let d2 = f_add(f_mul(dx, dx), f_mul(dz, dz)) + var c = a.cull + if shadow { c = f_min(c, fi(300)) } + if f_gt(d2, f_mul(c, c)) { return false } + } + if not shadow and a.radius != 0 { + let r = f_mul(a.radius, a.scale) + if not cam_sphere_visible(a.x, f_add(a.y, r), a.z, f_mul(r, fl(1.5))) { return false } + } + return true +} +function actor_draw_one(a: Actor, ap: AcProg, shadow: bool) -> void { + let p = ap.prog + gl_use_program(p) + u_mat4(ap.l_model, a.mat) + var skinned = F_ZERO + if a.skin != null { skinned = F_ONE; gl_uniform_matrix4fv(ap.l_bones, a.skin.n_joints, 0, a.skin.bones) } + else if a.model.skin != null { skinned = F_ONE; gl_uniform_matrix4fv(ap.l_bones, a.model.skin.n_joints, 0, a.model.skin.bones) } + u_f(ap.l_skin, skinned) + if not shadow { + u_f(ap.l_emis, a.emissive) + u_f(ap.l_rough, a.rough) + } + gl_disable(GL_CULL_FACE) + let model = a.model + for i in 0 .. len(model.prims) { + let pr = model.prims[i] + if a.hide != null and a.hide[i] != 0 { continue } + if not shadow { + if a.ptint != null and a.ptint[i * 4] != 0 { u_f3(ap.l_tint, a.ptint[i * 4 + 1], a.ptint[i * 4 + 2], a.ptint[i * 4 + 3]) } + else { u_v3(ap.l_tint, a.tint) } + } + gl_active_texture(GL_TEXTURE0); gl_bind_texture(GL_TEXTURE_2D, pr.diff) + if not shadow { + gl_active_texture(GL_TEXTURE0 + 1); gl_bind_texture(GL_TEXTURE_2D, pr.nrm) + gl_active_texture(GL_TEXTURE0 + 2); gl_bind_texture(GL_TEXTURE_2D, pr.arm) + } + mesh_draw(pr.mesh) + } +} + +function actor_draw() -> void { + if ac_actors == null { return } + ac_frame += 1 + for i in 0 .. len(ac_actors) { + let a = ac_actors[i] + if not ac_visible(a, false) { continue } + var ap = ac_lit + if a.cutout { ap = ac_lit_cut } + ac_bind_scene(ap) + actor_draw_one(a, ap, false) + } + gl_enable(GL_CULL_FACE) +} +function actor_draw_casters(light_vp: words) -> void { + if ac_actors == null { return } + gl_use_program(ac_sh.prog); u_mat4(ac_sh.l_lvp, light_vp) + gl_use_program(ac_sh_cut.prog); u_mat4(ac_sh_cut.l_lvp, light_vp) + for i in 0 .. len(ac_actors) { + let a = ac_actors[i] + if not ac_visible(a, true) { continue } + var ap = ac_sh + if a.cutout { ap = ac_sh_cut } + actor_draw_one(a, ap, true) + } +} diff --git a/packages/ludic.render3d/assets.manifest b/packages/ludic.render3d/assets.manifest new file mode 100644 index 00000000..54a93cd8 --- /dev/null +++ b/packages/ludic.render3d/assets.manifest @@ -0,0 +1,49 @@ +hdri/kloofendal_48d_partly_cloudy_puresky_4k.hdr https://dl.polyhaven.org/file/ph-assets/HDRIs/hdr/4k/kloofendal_48d_partly_cloudy_puresky_4k.hdr +textures/aerial_grass_rock_diff_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/aerial_grass_rock/aerial_grass_rock_diff_2k.png +textures/aerial_grass_rock_nor_gl_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/aerial_grass_rock/aerial_grass_rock_nor_gl_2k.png +textures/aerial_grass_rock_arm_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/aerial_grass_rock/aerial_grass_rock_arm_2k.png +textures/aerial_grass_rock_disp_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/aerial_grass_rock/aerial_grass_rock_disp_2k.png +textures/grass_path_2_diff_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/grass_path_2/grass_path_2_diff_2k.png +textures/grass_path_2_nor_gl_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/grass_path_2/grass_path_2_nor_gl_2k.png +textures/grass_path_2_arm_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/grass_path_2/grass_path_2_arm_2k.png +textures/forest_leaves_04_diff_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/forest_leaves_04/forest_leaves_04_diff_2k.png +textures/forest_leaves_04_nor_gl_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/forest_leaves_04/forest_leaves_04_nor_gl_2k.png +textures/forest_leaves_04_arm_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/forest_leaves_04/forest_leaves_04_arm_2k.png +textures/gray_rocks_diff_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/gray_rocks/gray_rocks_diff_2k.png +textures/gray_rocks_nor_gl_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/gray_rocks/gray_rocks_nor_gl_2k.png +textures/gray_rocks_arm_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/gray_rocks/gray_rocks_arm_2k.png +textures/snow_02_diff_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/snow_02/snow_02_diff_2k.png +textures/snow_02_nor_gl_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/snow_02/snow_02_nor_gl_2k.png +textures/snow_02_arm_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/snow_02/snow_02_arm_2k.png +models/fir_tree_01/fir_tree_01_1k.gltf https://dl.polyhaven.org/file/ph-assets/Models/gltf/1k/fir_tree_01/fir_tree_01_1k.gltf +models/fir_tree_01/fir_tree_01.bin https://dl.polyhaven.org/file/ph-assets/Models/gltf/1k/fir_tree_01/fir_tree_01.bin +models/fir_tree_01/textures/fir_tree_01_bark_diff_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/fir_tree_01/fir_tree_01_bark_diff_1k.jpg +models/fir_tree_01/textures/fir_tree_01_bark_nor_gl_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/fir_tree_01/fir_tree_01_bark_nor_gl_1k.jpg +models/fir_tree_01/textures/fir_tree_01_bark_arm_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/fir_tree_01/fir_tree_01_bark_arm_1k.jpg +models/fir_tree_01/textures/fir_tree_01_trunk_a_diff_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/fir_tree_01/fir_tree_01_trunk_a_diff_1k.jpg +models/fir_tree_01/textures/fir_tree_01_trunk_a_nor_gl_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/fir_tree_01/fir_tree_01_trunk_a_nor_gl_1k.jpg +models/fir_tree_01/textures/fir_tree_01_trunk_a_arm_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/fir_tree_01/fir_tree_01_trunk_a_arm_1k.jpg +models/fir_tree_01/textures/fir_tree_01_trunk_b_diff_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/fir_tree_01/fir_tree_01_trunk_b_diff_1k.jpg +models/fir_tree_01/textures/fir_tree_01_trunk_b_nor_gl_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/fir_tree_01/fir_tree_01_trunk_b_nor_gl_1k.jpg +models/fir_tree_01/textures/fir_tree_01_trunk_b_arm_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/fir_tree_01/fir_tree_01_trunk_b_arm_1k.jpg +models/fir_tree_01/textures/fir_tree_01_twig_diff_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/fir_tree_01/fir_tree_01_twig_diff_1k.jpg +models/fir_tree_01/textures/fir_tree_01_twig_nor_gl_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/fir_tree_01/fir_tree_01_twig_nor_gl_1k.jpg +models/fir_tree_01/textures/fir_tree_01_twig_arm_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/fir_tree_01/fir_tree_01_twig_arm_1k.jpg +models/grass_medium_01/grass_medium_01_1k.gltf https://dl.polyhaven.org/file/ph-assets/Models/gltf/1k/grass_medium_01/grass_medium_01_1k.gltf +models/grass_medium_01/grass_medium_01.bin https://dl.polyhaven.org/file/ph-assets/Models/gltf/1k/grass_medium_01/grass_medium_01.bin +models/grass_medium_01/textures/grass_medium_01_diff_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/grass_medium_01/grass_medium_01_diff_1k.jpg +models/grass_medium_01/textures/grass_medium_01_nor_gl_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/grass_medium_01/grass_medium_01_nor_gl_1k.jpg +models/grass_medium_01/textures/grass_medium_01_arm_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/grass_medium_01/grass_medium_01_arm_1k.jpg +models/boulder_01/boulder_01_1k.gltf https://dl.polyhaven.org/file/ph-assets/Models/gltf/1k/boulder_01/boulder_01_1k.gltf +models/boulder_01/boulder_01.bin https://dl.polyhaven.org/file/ph-assets/Models/gltf/1k/boulder_01/boulder_01.bin +models/boulder_01/textures/boulder_01_diff_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/boulder_01/boulder_01_diff_1k.jpg +models/boulder_01/textures/boulder_01_nor_gl_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/boulder_01/boulder_01_nor_gl_1k.jpg +models/boulder_01/textures/boulder_01_arm_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/boulder_01/boulder_01_arm_1k.jpg +models/celandine_01/celandine_01_1k.gltf https://dl.polyhaven.org/file/ph-assets/Models/gltf/1k/celandine_01/celandine_01_1k.gltf +models/celandine_01/celandine_01.bin https://dl.polyhaven.org/file/ph-assets/Models/gltf/1k/celandine_01/celandine_01.bin +models/celandine_01/textures/celandine_01_diff_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/celandine_01/celandine_01_diff_1k.jpg +models/celandine_01/textures/celandine_01_nor_gl_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/celandine_01/celandine_01_nor_gl_1k.jpg +models/celandine_01/textures/celandine_01_arm_1k.jpg https://dl.polyhaven.org/file/ph-assets/Models/jpg/1k/celandine_01/celandine_01_arm_1k.jpg +textures/cliff_side_diff_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/cliff_side/cliff_side_diff_2k.png +textures/cliff_side_nor_gl_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/cliff_side/cliff_side_nor_gl_2k.png +textures/cliff_side_arm_2k.png https://dl.polyhaven.org/file/ph-assets/Textures/png/2k/cliff_side/cliff_side_arm_2k.png diff --git a/packages/ludic.render3d/camera.ludic b/packages/ludic.render3d/camera.ludic new file mode 100644 index 00000000..69827155 --- /dev/null +++ b/packages/ludic.render3d/camera.ludic @@ -0,0 +1,101 @@ +# ============================================================================ +# camera.ludic — a first-person fly camera (yaw / pitch, metres) and its view / +# projection matrices. Float bits throughout; see fmath.ludic. +# ============================================================================ + +var cam_pos: words = null # x, y, z +var cam_yaw: int = 0 # radians, 0 = looking down -z +var cam_pitch: int = 0 +var cam_fov: int = 0 # vertical, radians +var cam_near: int = 0 +var cam_far: int = 0 +var cam_aspect: int = 0 +var cam_view: words = null +var cam_proj: words = null +var cam_vp: words = null +var cam_inv_vp: words = null +var cam_inv_proj: words = null +var cam_vp_clean: words = null # view-projection, kept for depth reconstruction +var cam_inv_vp_clean: words = null +var cam_fwd: words = null +var cam_right: words = null +# the view frustum's four side planes (a, b, c, d), float bits: left, right, bottom, top; +# from the clean (unjittered) view-projection, column-major m[col * 4 + row] +var cam_planes: words = null + +function cam_init(aspect: int) -> void { + cam_pos = v3_new(F_ZERO, fi(2), F_ZERO) + cam_view = m4_new(); cam_proj = m4_new(); cam_vp = m4_new(); cam_inv_vp = m4_new(); cam_inv_proj = m4_new() + cam_vp_clean = m4_new(); cam_inv_vp_clean = m4_new() + cam_fwd = v3_new(F_ZERO, F_ZERO, f_neg1()) + cam_right = v3_new(F_ONE, F_ZERO, F_ZERO) + cam_fov = f_rad(fi(42)) + cam_near = fl(0.3) + cam_far = fi(14000) + cam_aspect = aspect + cam_update() +} +function cam_begin_frame(n: int, w: int, h: int) -> void { + cam_update() +} +function cam_set(x: int, y: int, z: int, yaw_deg: int, pitch_deg: int) -> void { + v3_set(cam_pos, x, y, z) + cam_yaw = f_rad(yaw_deg) + cam_pitch = f_rad(pitch_deg) + cam_update() +} +function cam_update() -> void { + let cy = f_cos(cam_yaw); let sy = f_sin(cam_yaw) + let cp = f_cos(cam_pitch); let sp = f_sin(cam_pitch) + v3_set(cam_fwd, f_neg(f_mul(sy, cp)), sp, f_neg(f_mul(cy, cp))) + v3_set(cam_right, cy, F_ZERO, f_neg(sy)) + let at = words(3) + v3_add(at, cam_pos, cam_fwd) + let up = v3_new(F_ZERO, F_ONE, F_ZERO) + m4_look_at(cam_view, cam_pos, at, up) + m4_perspective(cam_proj, cam_fov, cam_aspect, cam_near, cam_far) + m4_mul(cam_vp_clean, cam_proj, cam_view) + m4_inverse(cam_inv_vp_clean, cam_vp_clean) + m4_mul(cam_vp, cam_proj, cam_view) + m4_inverse(cam_inv_vp, cam_vp) + m4_inverse(cam_inv_proj, cam_proj) + free(at); free(up) + cam_planes_update() +} +function cam_planes_update() -> void { + if cam_planes == null { cam_planes = words(16) } + let m = cam_vp_clean + for p in 0 .. 4 { + var r = 0 + if p >= 2 { r = 1 } + var sg = F_ONE + if p == 1 or p == 3 { sg = f_neg(F_ONE) } + var a = f_add(m[3], f_mul(sg, m[r])) + var b = f_add(m[7], f_mul(sg, m[4 + r])) + var c = f_add(m[11], f_mul(sg, m[8 + r])) + var d = f_add(m[15], f_mul(sg, m[12 + r])) + let inv = f_div(F_ONE, f_sqrt(f_add(f_add(f_mul(a, a), f_mul(b, b)), f_mul(c, c)))) + cam_planes[p * 4] = f_mul(a, inv); cam_planes[p * 4 + 1] = f_mul(b, inv) + cam_planes[p * 4 + 2] = f_mul(c, inv); cam_planes[p * 4 + 3] = f_mul(d, inv) + } +} +# is a sphere (float bits) at least partly inside the side planes of the view? +function cam_sphere_visible(x: int, y: int, z: int, r: int) -> bool { + if cam_planes == null { return true } + let nr = f_neg(r) + for p in 0 .. 4 { + let o = p * 4 + let dist = f_add(f_add(f_add(f_mul(cam_planes[o], x), f_mul(cam_planes[o + 1], y)), f_mul(cam_planes[o + 2], z)), cam_planes[o + 3]) + if f_ls(dist, nr) { return false } + } + return true +} +# fly: forward/strafe in metres, turn in radians +function cam_move(fwd: int, strafe: int, up: int, dyaw: int, dpitch: int) -> void { + cam_yaw = f_add(cam_yaw, dyaw) + cam_pitch = f_clamp(f_add(cam_pitch, dpitch), f_neg(fl(1.5)), fl(1.5)) + v3_madd(cam_pos, cam_pos, cam_fwd, fwd) + v3_madd(cam_pos, cam_pos, cam_right, strafe) + cam_pos[1] = f_add(cam_pos[1], up) + cam_update() +} diff --git a/packages/ludic.render3d/collide.ludic b/packages/ludic.render3d/collide.ludic new file mode 100644 index 00000000..fe0e087a --- /dev/null +++ b/packages/ludic.render3d/collide.ludic @@ -0,0 +1,99 @@ +# ============================================================================ +# collide.ludic — the static colliders of the world as circles on the ground +# plane (a trunk, a boulder, a tent), sorted once into 16 m cells over the whole +# terrain. A moving thing asks col_resolve for its position pushed out of every +# circle it overlaps: three by three cells, a few dozen tests, no broad phase +# needed. Float bits, metres. +# ============================================================================ + +const COL_CELL: int = 16 +const COL_CAP: int = 120000 + +var col_x: words = null +var col_z: words = null +var col_r: words = null +var col_n: int = 0 +var col_side: int = 0 # cells per side +var col_start: words = null # per cell: first index into col_sorted (side*side + 1) +var col_sorted: words = null +var col_built: bool = false +var col_out: words = null # the resolved position (x, z) + +function col_add(x: int, z: int, r: int) -> void { + if col_x == null { col_x = words(COL_CAP); col_z = words(COL_CAP); col_r = words(COL_CAP); col_out = words(2) } + if col_n >= COL_CAP { return } + col_x[col_n] = x; col_z[col_n] = z; col_r[col_n] = r + col_n += 1 + col_built = false +} +function col_cell_of(v: int, origin: int) -> int { + var c = f_to_int(f_floor(f_div(f_add(f_sub(v, origin), fi(TERRAIN_HALF)), fi(COL_CELL)))) + if c < 0 { c = 0 } + if c > col_side - 1 { c = col_side - 1 } + return c +} +function col_build() -> void { + col_side = (TERRAIN_HALF * 2) / COL_CELL + let ncell = col_side * col_side + if col_start == null { col_start = words(ncell + 1); col_sorted = words(COL_CAP) } + for i in 0 .. ncell + 1 { col_start[i] = 0 } + for i in 0 .. col_n { col_start[col_cell_of(col_z[i], ter_oz) * col_side + col_cell_of(col_x[i], ter_ox) + 1] += 1 } + for c in 0 .. ncell { col_start[c + 1] += col_start[c] } + let fill = words(ncell) + for c in 0 .. ncell { fill[c] = col_start[c] } + for i in 0 .. col_n { + let c = col_cell_of(col_z[i], ter_oz) * col_side + col_cell_of(col_x[i], ter_ox) + col_sorted[fill[c]] = i + fill[c] += 1 + } + free(fill) + col_built = true + print(`colliders: {col_n}`) +} + +# push (px, pz) with radius pr out of every circle it overlaps; the result is in col_out +function col_resolve(px: int, pz: int, pr: int) -> bool { + col_out[0] = px; col_out[1] = pz + if not col_built or col_n == 0 { return false } + var x = px; var z = pz + var moved = false + let cx = col_cell_of(px, ter_ox); let cz = col_cell_of(pz, ter_oz) + for pass in 0 .. 2 { + for dz in 0 .. 3 { + let zc = cz + dz - 1 + if zc < 0 or zc >= col_side { continue } + for dx in 0 .. 3 { + let xc = cx + dx - 1 + if xc < 0 or xc >= col_side { continue } + let c = zc * col_side + xc + for k in col_start[c] .. col_start[c + 1] { + let i = col_sorted[k] + let ex = f_sub(x, col_x[i]); let ez = f_sub(z, col_z[i]) + let d2 = f_add(f_mul(ex, ex), f_mul(ez, ez)) + let rr = f_add(col_r[i], pr) + if f_ls(d2, f_mul(rr, rr)) { + var d = f_sqrt(d2) + var nx = ex; var nz = ez + if f_ls(d, fl(0.001)) { d = fl(0.001); nx = F_ONE; nz = F_ZERO } + let push = f_sub(rr, d) + x = f_add(x, f_mul(f_div(nx, d), push)) + z = f_add(z, f_mul(f_div(nz, d), push)) + moved = true + } + } + } + } + } + col_out[0] = x; col_out[1] = z + return moved +} +# is the segment from (x0,z0) to (x1,z1) clear of every circle (a camera line of sight)? +function col_clear(x0: int, z0: int, x1: int, z1: int, r: int) -> bool { + let steps = 6 + for s in 0 .. steps + 1 { + let t = fr(s, steps) + let x = f_lerp(x0, x1, t); let z = f_lerp(z0, z1, t) + if col_resolve(x, z, r) { return false } + } + return true +} diff --git a/packages/ludic.render3d/daylight.ludic b/packages/ludic.render3d/daylight.ludic new file mode 100644 index 00000000..e4930e4e --- /dev/null +++ b/packages/ludic.render3d/daylight.ludic @@ -0,0 +1,162 @@ +# ============================================================================ +# daylight.ludic — a time of day over the HDRI sky. The photograph is one late +# morning; the game wants a whole day. The sun's direction and colour follow a +# simple solar arc from the time (`daylight_set`), the sky image turns to keep +# its disc under that sun, the image-based light is scaled toward a deep-blue +# night (`u_ibl_scale`), and after dusk the light becomes a moon so the world +# still has shadows and form. A campfire is the one point light (`u_fire_*`). +# The convolved sky maps are rebuilt only when the sky has turned far from the +# angle they were baked at; the height-field shadow rebakes as the sun moves. +# ============================================================================ + +var day_on: bool = false +var day_hours: int = 0 # float bits, 0 .. 24 +var day_light: int = 0 # 0 night .. 1 full day (float bits) +var day_ibl: words = null # rgb scale on the sky's light +var day_sun_base: words = null # the HDRI's sun radiance, kept +var day_az0: int = 0 # the sun's azimuth at the reference hour (radians, yaw convention) +var day_yaw0: int = 0 # the sky yaw the scene was tuned at +var day_hour0: int = 0 # the hour the photograph was taken (10.5) +var day_dir: int = 0 # +1 / -1: which way the sun travels in yaw +var day_az: int = 0 +var day_el: int = 0 +var day_gen: int = 0 # bumps when the light moved enough to rebake the terrain shadow +var day_baked_az: int = 0 +var day_baked_el: int = 0 +var day_sky_baked: int = 0 # the sky yaw the convolutions were baked at +var fire_pos: words = null +var fire_color: words = null +var day_moon: bool = false +var hand_pos: words = null +var hand_color: words = null +var hand_dir: words = null +var hand_cone: int = 0 +var day_overcast: int = 0 # 0 clear .. 1 a low grey sky (float bits): dims the sun and the sky's light +var day_flash: int = 0 # a lightning flash this frame (0..1): the sun brightens for it +var day_fog_mul: int = 0x3F800000 # multiplies the base fog density (rain and snow thicken the air) +var day_fog_base: int = 0 + +function daylight_init() -> void { + day_ibl = v3_new(F_ONE, F_ONE, F_ONE) + day_sun_base = v3_new(sun_color[0], sun_color[1], sun_color[2]) + fire_pos = v3_new(F_ZERO, fi(-1000), F_ZERO) + fire_color = v3_new(F_ZERO, F_ZERO, F_ZERO) + hand_pos = v3_new(F_ZERO, fi(-1000), F_ZERO); hand_color = v3_new(F_ZERO, F_ZERO, F_ZERO); hand_dir = v3_new(F_ZERO, F_ZERO, f_neg(F_ONE)); hand_cone = f_neg(F_TWO) + day_light = F_ONE +} + +# Start the clock: the scene as tuned (sky yaw `yaw0`) is the photograph's hour `hour0`; +# the sun rises and sets toward `set_yaw` (the direction it should be in at 19:00). +function daylight_start(yaw0: int, hour0: int, set_yaw: int) -> void { + day_yaw0 = yaw0; day_hour0 = hour0 + day_az0 = f_atan2(f_neg(sun_dir[0]), f_neg(sun_dir[2])) + day_sky_baked = yaw0 + # which way does the sun travel? the way that puts it nearest `set_yaw` at 19:00 + let step = f_mul(f_sub(fl(19.0), hour0), f_rad(fi(15))) + let da = f_abs(day_wrap(f_sub(f_add(day_az0, step), set_yaw))) + let db = f_abs(day_wrap(f_sub(f_sub(day_az0, step), set_yaw))) + day_dir = F_ONE + if f_ls(db, da) { day_dir = f_neg(F_ONE) } + day_on = true + day_baked_az = fi(1000) + daylight_set(hour0) +} +function day_wrap(a: int) -> int { + let two_pi = f_mul(F_TWO, F_PI) + var d = a + while f_gt(d, F_PI) { d = f_sub(d, two_pi) } + while f_ls(d, f_neg(F_PI)) { d = f_add(d, two_pi) } + return d +} +function smoothf(a: int, b: int, x: int) -> int { + let t = f_clamp(f_div(f_sub(x, a), f_sub(b, a)), F_ZERO, F_ONE) + return f_mul(f_mul(t, t), f_sub(fi(3), f_mul(F_TWO, t))) +} + +function daylight_set(hours: int) -> void { + var h = f_mod(hours, fi(24)) + if f_ls(h, F_ZERO) { h = f_add(h, fi(24)) } + day_hours = h + # the arc: up at 5:30, highest (about 57 degrees) at 12:45, down at 20:00 + let t = f_mul(f_div(f_sub(h, fl(5.5)), fl(14.5)), F_PI) + let el = f_rad(f_add(fi(-6), f_mul(fi(63), f_sin(t)))) + let az = f_add(day_az0, f_mul(f_mul(f_sub(h, day_hour0), f_rad(fi(15))), day_dir)) + day_az = az; day_el = el + let d = smoothf(f_rad(fi(-8)), f_rad(fi(12)), el) + day_light = d + # the sun, warm and dim near the horizon; past dusk, the moon from across the sky + var laz = az; var lel = f_max(el, f_rad(fi(3))) + var warm_r = F_ONE; var warm_g = F_ONE; var warm_b = F_ONE + let low = smoothf(F_ZERO, f_rad(fi(24)), el) + warm_g = f_lerp(fl(0.55), F_ONE, low); warm_b = f_lerp(fl(0.28), F_ONE, low) + # an overcast sky: the sun goes diffuse and grey, a lightning flash brings it back white + let oc = f_clamp(day_overcast, F_ZERO, F_ONE) + let sunk = f_add(f_sub(F_ONE, f_mul(fl(0.92), oc)), f_mul(fl(2.5), day_flash)) + var sr = f_mul(day_sun_base[0], f_mul(f_mul(d, warm_r), sunk)) + var sg = f_mul(day_sun_base[1], f_mul(f_mul(d, warm_g), sunk)) + var sb = f_mul(day_sun_base[2], f_mul(f_mul(d, warm_b), sunk)) + day_moon = false + if f_ls(el, f_rad(fi(-7))) { + day_moon = true + laz = f_add(az, F_PI) + lel = f_clamp(f_neg(el), f_rad(fi(10)), f_rad(fi(55))) + let m = smoothf(f_rad(fi(-7)), f_rad(fi(-16)), el) + sr = f_mul(day_sun_base[0], f_mul(fl(0.0045), m)) + sg = f_mul(day_sun_base[1], f_mul(fl(0.0060), m)) + sb = f_mul(day_sun_base[2], f_mul(fl(0.0095), m)) + } + let ce = f_cos(lel) + v3_set(sun_dir, f_neg(f_mul(f_sin(laz), ce)), f_sin(lel), f_neg(f_mul(f_cos(laz), ce))) + v3_set(sun_color, sr, sg, sb) + # the sky's light: full by day, a deep blue by night, amber through the dusk + let dusk = f_mul(smoothf(f_rad(fi(-10)), f_rad(fi(2)), el), f_sub(F_ONE, smoothf(f_rad(fi(2)), f_rad(fi(18)), el))) + v3_set(day_ibl, f_lerp(fl(0.020), F_ONE, d), f_lerp(fl(0.026), F_ONE, d), f_lerp(fl(0.045), F_ONE, d)) + day_ibl[0] = f_mul(day_ibl[0], f_add(F_ONE, f_mul(fl(0.35), dusk))) + day_ibl[2] = f_mul(day_ibl[2], f_sub(F_ONE, f_mul(fl(0.25), dusk))) + # clouds: less light, and greyer (the blue and the warmth both fade) + let grey = f_add(f_mul(f_add(day_ibl[0], f_add(day_ibl[1], day_ibl[2])), fl(0.3333)), f_mul(fl(0.6), day_flash)) + let dim = f_sub(F_ONE, f_mul(fl(0.55), oc)) + for i in 0 .. 3 { day_ibl[i] = f_mul(f_lerp(day_ibl[i], grey, f_mul(fl(0.7), oc)), dim) } + if day_fog_base == 0 { day_fog_base = r3d_fog_density } + r3d_fog_density = f_mul(day_fog_base, day_fog_mul) + # exposure: auto-exposure must not turn the night into day + post_exposure_max = f_lerp(fl(4.5), fi(20), d) + # the visible sky turns with the sun (cheap); its convolutions rebake when far off + let sky_yaw_now = f_add(day_yaw0, f_mul(f_mul(f_sub(h, day_hour0), f_rad(fi(15))), day_dir)) + sky_set_rot(sky_yaw_now) + if f_gt(f_abs(day_wrap(f_sub(sky_yaw_now, day_sky_baked))), f_rad(fi(35))) and f_gt(d, fl(0.05)) { + day_sky_baked = sky_yaw_now + sky_precompute() + } + # the terrain's baked shadow follows the light in steps + if f_gt(f_abs(day_wrap(f_sub(laz, day_baked_az))), f_rad(fi(4))) or f_gt(f_abs(f_sub(lel, day_baked_el)), f_rad(fi(3))) { + day_baked_az = laz; day_baked_el = lel + day_gen += 1 + } +} + +# the weather over the valley: overcast 0..1, a fog multiplier, a lightning flash 0..1 +function daylight_weather(overcast: int, fog_mul: int, flash: int) -> void { + day_overcast = overcast; day_fog_mul = fog_mul; day_flash = flash +} +# the campfire: a point light at (x, y, z) of `strength` (0 = out) +function daylight_fire(x: int, y: int, z: int, strength: int) -> void { + v3_set(fire_pos, x, y, z) + v3_set(fire_color, f_mul(fl(9.0), strength), f_mul(fl(4.6), strength), f_mul(fl(1.4), strength)) +} + +# the light in the hand: a point light (cone < -1) or a cone along dir (cone = cos half-angle) +function daylight_hand(x: int, y: int, z: int, dx: int, dy: int, dz: int, cone: int, r: int, g: int, b: int) -> void { + v3_set(hand_pos, x, y, z); v3_set(hand_dir, dx, dy, dz); hand_cone = cone + v3_set(hand_color, r, g, b) +} +function daylight_bind(prog: int) -> void { + u_v3(gl_uniform(prog, "u_hand_pos"), hand_pos) + u_v3(gl_uniform(prog, "u_hand_color"), hand_color) + u_v3(gl_uniform(prog, "u_hand_dir"), hand_dir) + u_f(gl_uniform(prog, "u_hand_cone"), hand_cone) + u_v3(gl_uniform(prog, "u_ibl_scale"), day_ibl) + u_f(gl_uniform(prog, "u_daylight"), day_light) + u_v3(gl_uniform(prog, "u_fire_pos"), fire_pos) + u_v3(gl_uniform(prog, "u_fire_color"), fire_color) +} diff --git a/packages/ludic.render3d/fmath.ludic b/packages/ludic.render3d/fmath.ludic new file mode 100644 index 00000000..e5fd6af3 --- /dev/null +++ b/packages/ludic.render3d/fmath.ludic @@ -0,0 +1,206 @@ +# ============================================================================ +# fmath.ludic — IEEE single-precision math for the renderer. +# +# Ludic's own numbers are Q16.16; a renderer wants the floats the GPU eats. A +# float lives here as its bit pattern in an `int`, arithmetic goes through the +# f_* helpers Gl.* provides (gl.ll), and vectors / matrices are `words` buffers +# of those bit patterns — which is exactly the memory layout glUniform* and +# glBufferData expect, so nothing is converted at upload. +# +# fl(x) a fixed literal as a float fr(n, d) n/d as a float +# v3_* 3-vectors at an index of a words buffer (x, y, z consecutive) +# m4_* 4x4 column-major matrices in a 16-word buffer +# ============================================================================ + +const F_ZERO: int = 0x00000000 +const F_ONE: int = 0x3F800000 +const F_TWO: int = 0x40000000 +const F_HALF: int = 0x3F000000 +const F_PI: int = 0x40490FDB + +function fl(x: fixed) -> int { return fx_to_f32(x) } +function fi(n: int) -> int { return f_from_int(n) } +function fr(n: int, d: int) -> int { return f_div(f_from_int(n), f_from_int(d)) } +function f_neg1() -> int { return f_neg(F_ONE) } +function f_clamp(x: int, lo: int, hi: int) -> int { return f_min(f_max(x, lo), hi) } +function f_lerp(a: int, b: int, t: int) -> int { return f_add(a, f_mul(f_sub(b, a), t)) } +function f_gt(a: int, b: int) -> bool { return f_lt(b, a) != 0 } +function f_ls(a: int, b: int) -> bool { return f_lt(a, b) != 0 } +function f_rad(deg: int) -> int { return f_mul(deg, f_div(F_PI, fi(180))) } +function f_fx(x: int) -> fixed { return f32_to_fx(x) } + +# ---- vectors ---------------------------------------------------------------- +function v3_new(x: int, y: int, z: int) -> words { + let v = words(3) + v[0] = x + v[1] = y + v[2] = z + return v +} +function v3_set(v: words, x: int, y: int, z: int) -> void { v[0] = x; v[1] = y; v[2] = z } +function v3_copy(o: words, a: words) -> void { o[0] = a[0]; o[1] = a[1]; o[2] = a[2] } +function v3_add(o: words, a: words, b: words) -> void { + o[0] = f_add(a[0], b[0]); o[1] = f_add(a[1], b[1]); o[2] = f_add(a[2], b[2]) +} +function v3_sub(o: words, a: words, b: words) -> void { + o[0] = f_sub(a[0], b[0]); o[1] = f_sub(a[1], b[1]); o[2] = f_sub(a[2], b[2]) +} +function v3_scale(o: words, a: words, s: int) -> void { + o[0] = f_mul(a[0], s); o[1] = f_mul(a[1], s); o[2] = f_mul(a[2], s) +} +function v3_madd(o: words, a: words, b: words, s: int) -> void { # o = a + b*s + o[0] = f_add(a[0], f_mul(b[0], s)); o[1] = f_add(a[1], f_mul(b[1], s)); o[2] = f_add(a[2], f_mul(b[2], s)) +} +function v3_dot(a: words, b: words) -> int { + return f_add(f_add(f_mul(a[0], b[0]), f_mul(a[1], b[1])), f_mul(a[2], b[2])) +} +function v3_cross(o: words, a: words, b: words) -> void { + let x = f_sub(f_mul(a[1], b[2]), f_mul(a[2], b[1])) + let y = f_sub(f_mul(a[2], b[0]), f_mul(a[0], b[2])) + let z = f_sub(f_mul(a[0], b[1]), f_mul(a[1], b[0])) + o[0] = x; o[1] = y; o[2] = z +} +function v3_len(a: words) -> int { return f_sqrt(v3_dot(a, a)) } +function v3_normalize(o: words, a: words) -> void { + let l = v3_len(a) + if l == 0 { o[0] = 0; o[1] = 0; o[2] = 0; return } + let inv = f_div(F_ONE, l) + v3_scale(o, a, inv) +} +function v3_dist(a: words, b: words) -> int { + let t = words(3) + v3_sub(t, a, b) + let d = v3_len(t) + free(t) + return d +} + +# ---- matrices (column-major, m[col*4 + row]) ------------------------------------ +function m4_new() -> words { let m = words(16); m4_identity(m); return m } +function m4_identity(m: words) -> void { + for i in 0 .. 16 { m[i] = F_ZERO } + m[0] = F_ONE; m[5] = F_ONE; m[10] = F_ONE; m[15] = F_ONE +} +function m4_copy(o: words, a: words) -> void { for i in 0 .. 16 { o[i] = a[i] } } +# o = a * b (o may not alias a or b) +function m4_mul(o: words, a: words, b: words) -> void { + for c in 0 .. 4 { + for r in 0 .. 4 { + var s = F_ZERO + for k in 0 .. 4 { s = f_add(s, f_mul(a[k * 4 + r], b[c * 4 + k])) } + o[c * 4 + r] = s + } + } +} +function m4_mul_into(a: words, b: words) -> void { # a = a * b + let t = words(16) + m4_mul(t, a, b) + m4_copy(a, t) + free(t) +} +function m4_translation(m: words, x: int, y: int, z: int) -> void { + m4_identity(m) + m[12] = x; m[13] = y; m[14] = z +} +function m4_scaling(m: words, x: int, y: int, z: int) -> void { + m4_identity(m) + m[0] = x; m[5] = y; m[10] = z +} +function m4_rotation_y(m: words, angle: int) -> void { + m4_identity(m) + let c = f_cos(angle); let s = f_sin(angle) + m[0] = c; m[2] = f_neg(s); m[8] = s; m[10] = c +} +function m4_rotation_x(m: words, angle: int) -> void { + m4_identity(m) + let c = f_cos(angle); let s = f_sin(angle) + m[5] = c; m[6] = s; m[9] = f_neg(s); m[10] = c +} +function m4_rotation_z(m: words, angle: int) -> void { + m4_identity(m) + let c = f_cos(angle); let s = f_sin(angle) + m[0] = c; m[1] = s; m[4] = f_neg(s); m[5] = c +} +# a model matrix: translate * rotate_y * uniform scale +function m4_trs(m: words, x: int, y: int, z: int, yaw: int, s: int) -> void { + m4_rotation_y(m, yaw) + for i in 0 .. 12 { m[i] = f_mul(m[i], s) } + m[12] = x; m[13] = y; m[14] = z +} +# OpenGL clip space (z in [-1, 1]); fovy in radians +function m4_perspective(m: words, fovy: int, aspect: int, near: int, far: int) -> void { + for i in 0 .. 16 { m[i] = F_ZERO } + let f = f_div(F_ONE, f_tan(f_mul(fovy, F_HALF))) + m[0] = f_div(f, aspect) + m[5] = f + m[10] = f_div(f_add(far, near), f_sub(near, far)) + m[11] = f_neg(F_ONE) + m[14] = f_div(f_mul(f_mul(F_TWO, far), near), f_sub(near, far)) +} +function m4_ortho(m: words, l: int, r: int, b: int, t: int, n: int, f: int) -> void { + m4_identity(m) + m[0] = f_div(F_TWO, f_sub(r, l)) + m[5] = f_div(F_TWO, f_sub(t, b)) + m[10] = f_div(f_neg(F_TWO), f_sub(f, n)) + m[12] = f_neg(f_div(f_add(r, l), f_sub(r, l))) + m[13] = f_neg(f_div(f_add(t, b), f_sub(t, b))) + m[14] = f_neg(f_div(f_add(f, n), f_sub(f, n))) +} +function m4_look_at(m: words, eye: words, at: words, up: words) -> void { + let fwd = words(3); let side = words(3); let u = words(3); let t = words(3) + v3_sub(t, at, eye) + v3_normalize(fwd, t) + v3_cross(t, fwd, up) + v3_normalize(side, t) + v3_cross(u, side, fwd) + m4_identity(m) + m[0] = side[0]; m[4] = side[1]; m[8] = side[2] + m[1] = u[0]; m[5] = u[1]; m[9] = u[2] + m[2] = f_neg(fwd[0]); m[6] = f_neg(fwd[1]); m[10] = f_neg(fwd[2]) + m[12] = f_neg(v3_dot(side, eye)) + m[13] = f_neg(v3_dot(u, eye)) + m[14] = v3_dot(fwd, eye) + free(fwd); free(side); free(u); free(t) +} +# general 4x4 inverse (cofactor expansion); o may not alias a +function m4_inverse(o: words, a: words) -> bool { + let inv = words(16) + inv[0] = f_add(f_sub(f_add(f_mul(a[5], f_mul(a[10], a[15])), f_neg(f_mul(a[5], f_mul(a[11], a[14])))), f_mul(a[9], f_mul(a[6], a[15]))), f_add(f_mul(a[9], f_mul(a[7], a[14])), f_sub(f_mul(a[13], f_mul(a[6], a[11])), f_mul(a[13], f_mul(a[7], a[10]))))) + inv[4] = f_add(f_sub(f_add(f_neg(f_mul(a[4], f_mul(a[10], a[15]))), f_mul(a[4], f_mul(a[11], a[14]))), f_mul(a[8], f_mul(a[7], a[14]))), f_add(f_mul(a[8], f_mul(a[6], a[15])), f_sub(f_mul(a[12], f_mul(a[7], a[10])), f_mul(a[12], f_mul(a[6], a[11]))))) + inv[8] = f_add(f_sub(f_add(f_mul(a[4], f_mul(a[9], a[15])), f_neg(f_mul(a[4], f_mul(a[11], a[13])))), f_mul(a[8], f_mul(a[5], a[15]))), f_add(f_mul(a[8], f_mul(a[7], a[13])), f_sub(f_mul(a[12], f_mul(a[5], a[11])), f_mul(a[12], f_mul(a[7], a[9]))))) + inv[12] = f_add(f_sub(f_add(f_neg(f_mul(a[4], f_mul(a[9], a[14]))), f_mul(a[4], f_mul(a[10], a[13]))), f_mul(a[8], f_mul(a[6], a[13]))), f_add(f_mul(a[8], f_mul(a[5], a[14])), f_sub(f_mul(a[12], f_mul(a[6], a[9])), f_mul(a[12], f_mul(a[5], a[10]))))) + inv[1] = f_add(f_sub(f_add(f_neg(f_mul(a[1], f_mul(a[10], a[15]))), f_mul(a[1], f_mul(a[11], a[14]))), f_mul(a[9], f_mul(a[3], a[14]))), f_add(f_mul(a[9], f_mul(a[2], a[15])), f_sub(f_mul(a[13], f_mul(a[3], a[10])), f_mul(a[13], f_mul(a[2], a[11]))))) + inv[5] = f_add(f_sub(f_add(f_mul(a[0], f_mul(a[10], a[15])), f_neg(f_mul(a[0], f_mul(a[11], a[14])))), f_mul(a[8], f_mul(a[2], a[15]))), f_add(f_mul(a[8], f_mul(a[3], a[14])), f_sub(f_mul(a[12], f_mul(a[2], a[11])), f_mul(a[12], f_mul(a[3], a[10]))))) + inv[9] = f_add(f_sub(f_add(f_neg(f_mul(a[0], f_mul(a[9], a[15]))), f_mul(a[0], f_mul(a[11], a[13]))), f_mul(a[8], f_mul(a[3], a[13]))), f_add(f_mul(a[8], f_mul(a[1], a[15])), f_sub(f_mul(a[12], f_mul(a[3], a[9])), f_mul(a[12], f_mul(a[1], a[11]))))) + inv[13] = f_add(f_sub(f_add(f_mul(a[0], f_mul(a[9], a[14])), f_neg(f_mul(a[0], f_mul(a[10], a[13])))), f_mul(a[8], f_mul(a[1], a[14]))), f_add(f_mul(a[8], f_mul(a[2], a[13])), f_sub(f_mul(a[12], f_mul(a[1], a[10])), f_mul(a[12], f_mul(a[2], a[9]))))) + inv[2] = f_add(f_sub(f_add(f_mul(a[1], f_mul(a[6], a[15])), f_neg(f_mul(a[1], f_mul(a[7], a[14])))), f_mul(a[5], f_mul(a[2], a[15]))), f_add(f_mul(a[5], f_mul(a[3], a[14])), f_sub(f_mul(a[13], f_mul(a[2], a[7])), f_mul(a[13], f_mul(a[3], a[6]))))) + inv[6] = f_add(f_sub(f_add(f_neg(f_mul(a[0], f_mul(a[6], a[15]))), f_mul(a[0], f_mul(a[7], a[14]))), f_mul(a[4], f_mul(a[3], a[14]))), f_add(f_mul(a[4], f_mul(a[2], a[15])), f_sub(f_mul(a[12], f_mul(a[3], a[6])), f_mul(a[12], f_mul(a[2], a[7]))))) + inv[10] = f_add(f_sub(f_add(f_mul(a[0], f_mul(a[5], a[15])), f_neg(f_mul(a[0], f_mul(a[7], a[13])))), f_mul(a[4], f_mul(a[1], a[15]))), f_add(f_mul(a[4], f_mul(a[3], a[13])), f_sub(f_mul(a[12], f_mul(a[1], a[7])), f_mul(a[12], f_mul(a[3], a[5]))))) + inv[14] = f_add(f_sub(f_add(f_neg(f_mul(a[0], f_mul(a[5], a[14]))), f_mul(a[0], f_mul(a[6], a[13]))), f_mul(a[4], f_mul(a[2], a[13]))), f_add(f_mul(a[4], f_mul(a[1], a[14])), f_sub(f_mul(a[12], f_mul(a[2], a[5])), f_mul(a[12], f_mul(a[1], a[6]))))) + inv[3] = f_add(f_sub(f_add(f_neg(f_mul(a[1], f_mul(a[6], a[11]))), f_mul(a[1], f_mul(a[7], a[10]))), f_mul(a[5], f_mul(a[3], a[10]))), f_add(f_mul(a[5], f_mul(a[2], a[11])), f_sub(f_mul(a[9], f_mul(a[3], a[6])), f_mul(a[9], f_mul(a[2], a[7]))))) + inv[7] = f_add(f_sub(f_add(f_mul(a[0], f_mul(a[6], a[11])), f_neg(f_mul(a[0], f_mul(a[7], a[10])))), f_mul(a[4], f_mul(a[2], a[11]))), f_add(f_mul(a[4], f_mul(a[3], a[10])), f_sub(f_mul(a[8], f_mul(a[2], a[7])), f_mul(a[8], f_mul(a[3], a[6]))))) + inv[11] = f_add(f_sub(f_add(f_neg(f_mul(a[0], f_mul(a[5], a[11]))), f_mul(a[0], f_mul(a[7], a[9]))), f_mul(a[4], f_mul(a[3], a[9]))), f_add(f_mul(a[4], f_mul(a[1], a[11])), f_sub(f_mul(a[8], f_mul(a[3], a[5])), f_mul(a[8], f_mul(a[1], a[7]))))) + inv[15] = f_add(f_sub(f_add(f_mul(a[0], f_mul(a[5], a[10])), f_neg(f_mul(a[0], f_mul(a[6], a[9])))), f_mul(a[4], f_mul(a[1], a[10]))), f_add(f_mul(a[4], f_mul(a[2], a[9])), f_sub(f_mul(a[8], f_mul(a[1], a[6])), f_mul(a[8], f_mul(a[2], a[5]))))) + let det = f_add(f_add(f_mul(a[0], inv[0]), f_mul(a[1], inv[4])), f_add(f_mul(a[2], inv[8]), f_mul(a[3], inv[12]))) + if det == 0 { free(inv); return false } + let id = f_div(F_ONE, det) + for i in 0 .. 16 { o[i] = f_mul(inv[i], id) } + free(inv) + return true +} +# transform a point (w = 1) by m: o = m * (x, y, z, 1), returns w +function m4_xform_point(o: words, m: words, x: int, y: int, z: int) -> int { + o[0] = f_add(f_add(f_mul(m[0], x), f_mul(m[4], y)), f_add(f_mul(m[8], z), m[12])) + o[1] = f_add(f_add(f_mul(m[1], x), f_mul(m[5], y)), f_add(f_mul(m[9], z), m[13])) + o[2] = f_add(f_add(f_mul(m[2], x), f_mul(m[6], y)), f_add(f_mul(m[10], z), m[14])) + return f_add(f_add(f_mul(m[3], x), f_mul(m[7], y)), f_add(f_mul(m[11], z), m[15])) +} + +# ---- uniforms ------------------------------------------------------------------ +function u_mat4(loc: int, m: words) -> void { gl_uniform_matrix4fv(loc, 1, 0, m) } +function u_f(loc: int, v: int) -> void { let t = gl_scratch(); t[0] = v; gl_uniform1fv(loc, 1, t) } +function u_f2(loc: int, x: int, y: int) -> void { let t = gl_scratch(); t[0] = x; t[1] = y; gl_uniform2fv(loc, 1, t) } +function u_f3(loc: int, x: int, y: int, z: int) -> void { let t = gl_scratch(); t[0] = x; t[1] = y; t[2] = z; gl_uniform3fv(loc, 1, t) } +function u_f4(loc: int, x: int, y: int, z: int, w: int) -> void { let t = gl_scratch(); t[0] = x; t[1] = y; t[2] = z; t[3] = w; gl_uniform4fv(loc, 1, t) } +function u_v3(loc: int, v: words) -> void { gl_uniform3fv(loc, 1, v) } +function u_i(loc: int, v: int) -> void { gl_uniform1i(loc, v) } diff --git a/packages/ludic.render3d/gltf.ludic b/packages/ludic.render3d/gltf.ludic new file mode 100644 index 00000000..98ec820a --- /dev/null +++ b/packages/ludic.render3d/gltf.ludic @@ -0,0 +1,229 @@ +# ============================================================================ +# gltf.ludic — a glTF 2.0 loader for scanned models: one named node's mesh, +# each primitive uploaded straight from the .bin (positions, normals, uvs, +# indices) with its baseColor / normal / ARM textures. Only the byte ranges the +# node needs are read, so a 500 MB scan library costs what one tree costs. +# ============================================================================ + +property Prim { + mesh: Mesh, + diff: int = 0, + nrm: int = 0, + arm: int = 0, + name: string # the material's name (a part to tint: "hk_jacket") +} +property Model { + prims: []Prim, + radius: int = 0, # float bits: max horizontal extent from the origin + height: int = 0, # float bits: y extent above ymin + ymin: int = 0, + tris: int = 0, + skin: Skin # the skeleton, for a skinned node (skin.ludic); null for a rigid model +} + +var gltf_dir: string = null +var gltf_bin: pointer = null +var gltf_doc: Val = null +var gltf_count: int = 0 +var gltf_ctype: int = 0 +var gltf_comps: int = 0 +var gltf_tex_paths: []pointer = null +var gltf_tex_ids: words = null +var gltf_tex_n: int = 0 +var gltf_white: int = 0 +var gltf_flat: int = 0 + +# a JSON number as float bits (ints and fixed-point decimals both) +function jnum(v: Val) -> int { + if v.tag == 2 { return fx_to_f32(v.num) } + return f_from_int(v.num) +} +function jint(v: Val, key: pointer, fallback: int) -> int { + if value_has(v, key) == 0 { return fallback } + return value_as_int(value_get(v, key)) +} + +# Materials seen so far, by name: a LOD chain exported from the .blend (tools/glgen/ +# lod_export.py) carries the material names but no images — the blend links textures +# that are not downloaded with it — so its primitives take the textures the LOD0 +# download's material of the same name loaded. +var gltf_mat_names: []string = null +var gltf_mat_diff: words = null +var gltf_mat_nrm: words = null +var gltf_mat_arm: words = null +var gltf_mat_n: int = 0 +function gltf_mat_find(name: string) -> int { + if gltf_mat_names == null { return -1 } + for i in 0 .. gltf_mat_n { if gltf_mat_names[i] == name { return i } } + return -1 +} +function gltf_mat_remember(name: string, diff: int, nrm: int, arm: int) -> void { + if gltf_mat_names == null { gltf_mat_names = new []string; gltf_mat_diff = words(256); gltf_mat_nrm = words(256); gltf_mat_arm = words(256) } + if gltf_mat_find(name) >= 0 or gltf_mat_n >= 256 { return } + push(gltf_mat_names, name); gltf_mat_diff[gltf_mat_n] = diff; gltf_mat_nrm[gltf_mat_n] = nrm; gltf_mat_arm[gltf_mat_n] = arm + gltf_mat_n += 1 +} + +var gltf_cutout: bool = false # the material being loaded is alpha-blended (a cut-out atlas) +function gltf_texture(uri: pointer, srgb: bool) -> int { + if gltf_tex_paths == null { gltf_tex_paths = new []pointer; gltf_tex_ids = words(256) } + var png: string = uri + let n = len(uri) + if n > 4 and uri[n - 4] == '.' and uri[n - 3] == 'j' { png = uri[0 .. n - 4] + ".png" } + let path = gltf_dir + "/" + png + var i = 0 + while i < gltf_tex_n { if gltf_tex_paths[i] == path { return gltf_tex_ids[i] }; i += 1 } + var dil = 0 + if gltf_cutout { dil = 24 } + let id = tex_load_ex(path, srgb, dil) + if gltf_tex_n < 256 { push(gltf_tex_paths, path); gltf_tex_ids[gltf_tex_n] = id; gltf_tex_n += 1 } + return id +} + +# the image uri behind materials[m]..index, or null +function gltf_mat_uri(mat: Val, slot: pointer) -> pointer { + var holder = mat + if slot == "baseColorTexture" or slot == "metallicRoughnessTexture" { + if value_has(mat, "pbrMetallicRoughness") == 0 { return null } + holder = value_get(mat, "pbrMetallicRoughness") + } + if value_has(holder, slot) == 0 { return null } + let ti = value_as_int(value_get(value_get(holder, slot), "index")) + let tex = value_at(value_get(gltf_doc, "textures"), ti) + let src = value_as_int(value_get(tex, "source")) + let img = value_at(value_get(gltf_doc, "images"), src) + return value_as_str(value_get(img, "uri")) +} + +# read one accessor's bytes from the .bin; sets gltf_count / gltf_ctype / gltf_comps +function gltf_accessor(idx: int) -> pointer { + let acc = value_at(value_get(gltf_doc, "accessors"), idx) + let bv = value_at(value_get(gltf_doc, "bufferViews"), jint(acc, "bufferView", 0)) + let off = jint(bv, "byteOffset", 0) + jint(acc, "byteOffset", 0) + gltf_count = jint(acc, "count", 0) + gltf_ctype = jint(acc, "componentType", 5126) + let ty = value_as_str(value_get(acc, "type")) + gltf_comps = 1 + if ty == "VEC2" { gltf_comps = 2 } + if ty == "VEC3" { gltf_comps = 3 } + if ty == "VEC4" { gltf_comps = 4 } + if ty == "MAT2" { gltf_comps = 4 } + if ty == "MAT3" { gltf_comps = 9 } + if ty == "MAT4" { gltf_comps = 16 } # a skin's inverse bind matrices + var csz = 4 + if gltf_ctype == 5123 or gltf_ctype == 5122 { csz = 2 } + if gltf_ctype == 5121 or gltf_ctype == 5120 { csz = 1 } + let n = gltf_count * gltf_comps * csz + let buf = bytes(n + 8) + file_seek(gltf_bin, off, 0) + file_read(gltf_bin, buf, n) + return buf +} + +function gltf_attrib(m: Mesh, attrs: Val, name: pointer, loc: int) -> bool { + if value_has(attrs, name) == 0 { return false } + let data = gltf_accessor(value_as_int(value_get(attrs, name))) + let b = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, b) + gl_buffer_data(GL_ARRAY_BUFFER, gltf_count * gltf_comps * 4, data, GL_STATIC_DRAW) + gl_enable_vertex_attrib_array(loc) + gl_vertex_attrib_pointer(loc, gltf_comps, GL_FLOAT, 0, 0, null) + free(data) + if loc == 0 { m.vbo = b } + return true +} + +function gltf_prim(p: Val) -> Prim { + let pr = new Prim + let m = new Mesh + m.vao = gl_vao() + let attrs = value_get(p, "attributes") + gltf_attrib(m, attrs, "POSITION", 0) + gltf_attrib(m, attrs, "NORMAL", 1) + gltf_attrib(m, attrs, "TEXCOORD_0", 2) + skin_attribs(m, attrs) # JOINTS_0 / WEIGHTS_0 onto 5 / 6, when the mesh has them + let idx = gltf_accessor(value_as_int(value_get(p, "indices"))) + var isz = 4 + m.itype = GL_UNSIGNED_INT + if gltf_ctype == 5123 { isz = 2; m.itype = GL_UNSIGNED_SHORT } + m.ebo = gl_buffer() + gl_bind_buffer(GL_ELEMENT_ARRAY_BUFFER, m.ebo) + gl_buffer_data(GL_ELEMENT_ARRAY_BUFFER, gltf_count * isz, idx, GL_STATIC_DRAW) + free(idx) + m.count = gltf_count + gl_bind_vertex_array(0) + pr.mesh = m + # material textures + if gltf_white == 0 { gltf_white = tex_solid(200, 200, 200, 255); gltf_flat = tex_solid(128, 128, 255, 255) } + pr.diff = gltf_white; pr.nrm = gltf_flat; pr.arm = gltf_white + if value_has(p, "material") != 0 { + let mat = value_at(value_get(gltf_doc, "materials"), value_as_int(value_get(p, "material"))) + gltf_cutout = value_has(mat, "alphaMode") != 0 + let ud = gltf_mat_uri(mat, "baseColorTexture") + let un = gltf_mat_uri(mat, "normalTexture") + let ua = gltf_mat_uri(mat, "metallicRoughnessTexture") + if ud != null { pr.diff = gltf_texture(ud, true) } + if un != null { pr.nrm = gltf_texture(un, false) } + if ua != null { pr.arm = gltf_texture(ua, false) } + var mname: string = null + if value_has(mat, "name") != 0 { mname = value_as_str(value_get(mat, "name")) } + pr.name = mname + if mname != null { + if ud != null { gltf_mat_remember(mname, pr.diff, pr.nrm, pr.arm) } + else { + let k = gltf_mat_find(mname) + if k >= 0 { pr.diff = gltf_mat_diff[k]; pr.nrm = gltf_mat_nrm[k]; pr.arm = gltf_mat_arm[k] } + else { print(`gltf: material {mname} has no textures and none were loaded before it`) } + } + } + } + return pr +} + +# Load the mesh of the node called `node_name` from dir/file. +function gltf_load(dir: string, file: string, node_name: string) -> Model { + gltf_dir = dir + let text = Fs.read_text(dir + "/" + file) + if text == null { print(`gltf: cannot read {dir}/{file}`); return null } + gltf_doc = Json.parse(text) + let buffers = value_get(gltf_doc, "buffers") + let bin_uri = value_as_str(value_get(value_at(buffers, 0), "uri")) + gltf_bin = file_open(dir + "/" + bin_uri, "rb") + if gltf_bin == null { print(`gltf: cannot open {bin_uri}`); return null } + let nodes = value_get(gltf_doc, "nodes") + var mesh_idx = -1 + var skin_idx = -1 + for i in 0 .. value_count(nodes) { + let nd = value_at(nodes, i) + if value_as_str(value_get(nd, "name")) == node_name { mesh_idx = jint(nd, "mesh", -1); skin_idx = jint(nd, "skin", -1) } + } + if mesh_idx < 0 { print(`gltf: no node {node_name} in {file}`); file_close(gltf_bin); return null } + let model = new Model + model.prims = new []Prim + let mesh = value_at(value_get(gltf_doc, "meshes"), mesh_idx) + let prims = value_get(mesh, "primitives") + var r2 = F_ZERO; var ymin = fi(1000); var ymax = fi(-1000) + for i in 0 .. value_count(prims) { + let p = value_at(prims, i) + push(model.prims, gltf_prim(p)) + model.tris += gltf_count / 3 + # bounds from the accessor min/max + let acc = value_at(value_get(gltf_doc, "accessors"), value_as_int(value_get(value_get(p, "attributes"), "POSITION"))) + let mn = value_get(acc, "min"); let mx = value_get(acc, "max") + let x0 = f_abs(jnum(value_at(mn, 0))); let x1 = f_abs(jnum(value_at(mx, 0))) + let z0 = f_abs(jnum(value_at(mn, 2))); let z1 = f_abs(jnum(value_at(mx, 2))) + let rx = f_max(x0, x1); let rz = f_max(z0, z1) + let rr = f_add(f_mul(rx, rx), f_mul(rz, rz)) + if f_gt(rr, r2) { r2 = rr } + let y0 = jnum(value_at(mn, 1)); let y1 = jnum(value_at(mx, 1)) + if f_ls(y0, ymin) { ymin = y0 } + if f_gt(y1, ymax) { ymax = y1 } + } + if skin_idx >= 0 { model.skin = skin_load(skin_idx) } + file_close(gltf_bin) + model.radius = f_sqrt(r2) + model.ymin = ymin + model.height = f_sub(ymax, ymin) + print(`gltf: {node_name}: {len(model.prims)} prims, {model.tris} tris`) + return model +} diff --git a/packages/ludic.render3d/grass.ludic b/packages/ludic.render3d/grass.ludic new file mode 100644 index 00000000..0101e4ee --- /dev/null +++ b/packages/ludic.render3d/grass.ludic @@ -0,0 +1,161 @@ +# ============================================================================ +# grass.ludic — procedural GPU ground cover with continuous density (no rings). +# +# The world is cut into 16 m cells; blade j of a cell always stands in the same place +# (shaders/grass.vert). Draws are per tile: the CPU walks tiles around the camera, +# frustum-culls them, and feeds each visible tile as many blade indices per cell as its +# NEAREST point could need; the vertex stage then keeps only the indices that exist at +# each blade's own distance, so density is one smooth function of distance everywhere. +# Tiles are 16 m near, 64 m in the middle distance and 256 m far, purely to keep the +# draw count down — the cells and their hashes are the same in every tile size. +# ============================================================================ + +const GRASS_CELL: int = 16 +var grass_prog: int = 0 +var grass_mesh: Mesh = null +var grass_on: bool = true +var grass_wind: int = 0 +var grass_s0: int = 0 # float bits: blade spacing at the camera (m) +var grass_d0: int = 0 # the distance at which the spacing has doubled (m) +var grass_radius: int = 0 # no blades past this (m) +var grass_draws: int = 0 +var grass_dbg: int = 0 + +# a blade: `rows` rows of 2 vertices (x across, y along, z bend), attribute 2 = uv +function grass_blade_mesh(rows: int) -> Mesh { + let m = new Mesh + m.vao = gl_vao() + let v = gl_floats(rows * 2 * 5) + var k = 0 + for r in 0 .. rows { + let t = fr(r, rows - 1) + let taper = f_max(f_sub(F_ONE, f_mul(t, f_mul(t, f_sqrt(t)))), fl(0.12)) + let bend = f_mul(f_mul(t, t), fl(0.28)) + for sd in 0 .. 2 { + var x = f_neg(F_HALF) + if sd == 1 { x = F_HALF } + gl_put_bits(v, k, f_mul(x, taper)); gl_put_bits(v, k + 1, t); gl_put_bits(v, k + 2, bend) + gl_put_bits(v, k + 3, fi(sd)); gl_put_bits(v, k + 4, t) + k += 5 + } + } + m.vbo = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, m.vbo) + gl_buffer_data(GL_ARRAY_BUFFER, gl_bytes_of(rows * 2 * 5), v, GL_STATIC_DRAW) + gl_enable_vertex_attrib_array(0); gl_vertex_attrib_pointer(0, 3, GL_FLOAT, 0, 20, null) + gl_enable_vertex_attrib_array(2); gl_vertex_attrib_pointer(2, 2, GL_FLOAT, 0, 20, gl_ptr(null, 12)) + free(v) + let nq = rows - 1 + let idx = words(nq * 6) + for q in 0 .. nq { + let b = q * 2 + idx[q * 6] = b; idx[q * 6 + 1] = b + 1; idx[q * 6 + 2] = b + 2 + idx[q * 6 + 3] = b + 1; idx[q * 6 + 4] = b + 3; idx[q * 6 + 5] = b + 2 + } + m.ebo = gl_buffer() + gl_bind_buffer(GL_ELEMENT_ARRAY_BUFFER, m.ebo) + gl_buffer_data(GL_ELEMENT_ARRAY_BUFFER, nq * 6 * 4, idx, GL_STATIC_DRAW) + free(idx) + m.count = nq * 6 + gl_bind_vertex_array(0) + return m +} + +function grass_init() -> void { + grass_prog = r3d_program("grass.vert", "model.frag", "#define FOLIAGE\n#define BLADE\n") + grass_mesh = grass_blade_mesh(4) + grass_wind = fl(2.4) + grass_s0 = fl(0.11) + grass_d0 = fi(45) + grass_radius = fi(1600) + if Os.has_env("R3D_NOBLADES") { grass_on = false } + if Os.has_env("R3D_GRASS_R") { grass_radius = fi(Text.to_int(Os.env("R3D_GRASS_R"))) } + if Os.has_env("R3D_GRASS_DBG") { grass_dbg = Text.to_int(Os.env("R3D_GRASS_DBG")) } +} + +# indices per 16 m cell that could exist at distance d (the count the shader computes) +function grass_count_at(d: int) -> int { + let spacing = f_mul(grass_s0, f_add(F_ONE, f_div(d, grass_d0))) + let n = f_div(fi(GRASS_CELL * GRASS_CELL), f_mul(spacing, spacing)) + return f_to_int(n) + 1 +} + +# one tile size over one distance band +function grass_tiles(size: int, d_min: int, d_max: int) -> void { + let p = grass_prog + let cells = size / GRASS_CELL + gl_uniform1i(gl_uniform(p, "u_tile_cells"), cells) + let sz = fi(size) + let half = f_mul(sz, F_HALF) + let reach = f_add(d_max, f_mul(half, fl(1.5))) + let tx0 = f_to_int(f_floor(f_div(f_sub(cam_pos[0], reach), sz))) + let tx1 = f_to_int(f_floor(f_div(f_add(cam_pos[0], reach), sz))) + let tz0 = f_to_int(f_floor(f_div(f_sub(cam_pos[2], reach), sz))) + let tz1 = f_to_int(f_floor(f_div(f_add(cam_pos[2], reach), sz))) + let corner_r = f_mul(half, fl(1.42)) + var tz = tz0 + while tz <= tz1 { + var tx = tx0 + while tx <= tx1 { + let ox = f_mul(fi(tx), sz); let oz = f_mul(fi(tz), sz) + let cx = f_add(ox, half); let cz = f_add(oz, half) + let dx = f_sub(cx, cam_pos[0]); let dz = f_sub(cz, cam_pos[2]) + let dc = f_sqrt(f_add(f_mul(dx, dx), f_mul(dz, dz))) + # the tile's nearest and farthest points decide which band it belongs to + let dnear = f_max(f_sub(dc, corner_r), F_ZERO) + if f_ls(dc, d_min) or not f_ls(dnear, d_max) { tx += 1; continue } + let cy = terrain_height(cx, cz) + if cam_sphere_visible(cx, cy, cz, f_add(corner_r, fi(6))) { + let per = grass_count_at(dnear) + if per > 0 { + u_f2(gl_uniform(p, "u_tile"), ox, oz) + gl_uniform1i(gl_uniform(p, "u_per_cell"), per) + mesh_draw_instanced(grass_mesh, per * cells * cells) + grass_draws += 1 + } + } + tx += 1 + } + tz += 1 + } +} + +function grass_draw() -> void { + if not grass_on or ter_reflect or grass_prog == 0 { return } + let p = grass_prog + gl_use_program(p) + u_mat4(gl_uniform(p, "u_view"), cam_view) + u_mat4(gl_uniform(p, "u_proj"), cam_proj) + u_mat4(gl_uniform(p, "u_vp"), cam_vp_clean) + u_f(gl_uniform(p, "u_wind"), grass_wind) + u_f(gl_uniform(p, "u_rough_scale"), F_ONE) + u_v3(gl_uniform(p, "u_tint"), sc_blade_tint) + u_v3(gl_uniform(p, "u_blade_base"), sc_blade_base) + u_v3(gl_uniform(p, "u_blade_tip"), sc_blade_tip) + u_f(gl_uniform(p, "u_cull"), grass_radius) + u_f(gl_uniform(p, "u_model_h"), F_ZERO) + u_f(gl_uniform(p, "u_s0"), grass_s0) + u_f(gl_uniform(p, "u_d0"), grass_d0) + u_f(gl_uniform(p, "u_radius"), grass_radius) + gl_uniform1i(gl_uniform(p, "u_dbg"), grass_dbg) + var orthotex = ter_ortho_tex + var oon = F_ONE + if orthotex == 0 { orthotex = ter_height_tex; oon = F_ZERO } + r3d_bind_2d(p, "u_ortho", 4, orthotex) + u_f(gl_uniform(p, "u_ortho_on"), oon) + var lake = fl(-100000.0) + if ter_lake_ex != 0 { lake = ter_lake_level } + u_f(gl_uniform(p, "u_lake_level"), lake) + u_f(gl_uniform(p, "u_snow_line"), ter_snow_line) + sky_bind_lighting(p) + shadow_bind(p) + fog_bind(p) + u_f(gl_uniform(p, "u_spec_scale"), fl(0.15)) + gl_disable(GL_CULL_FACE) + grass_draws = 0 + gl_bind_vertex_array(grass_mesh.vao) + grass_tiles(16, F_ZERO, fi(300)) + grass_tiles(64, fi(300), fi(1200)) + grass_tiles(256, fi(1200), grass_radius) + gl_enable(GL_CULL_FACE) +} diff --git a/packages/ludic.render3d/mesh.ludic b/packages/ludic.render3d/mesh.ludic new file mode 100644 index 00000000..699a4b94 --- /dev/null +++ b/packages/ludic.render3d/mesh.ludic @@ -0,0 +1,150 @@ +# ============================================================================ +# mesh.ludic — vertex data on the GPU: a Mesh record (VAO + buffers + a draw +# call), and the procedural meshes the renderer needs (a grid for the terrain, +# a full-screen triangle, a unit quad for instanced cards). +# ============================================================================ + +property Mesh { + vao: int = 0, + vbo: int = 0, + ebo: int = 0, + count: int = 0, # indices (ebo != 0) or vertices + mode: int = 4, # GL_TRIANGLES + itype: int = 0x1405 # GL_UNSIGNED_INT +} + +function mesh_draw(m: Mesh) -> void { + gl_bind_vertex_array(m.vao) + if m.ebo != 0 { gl_draw_elements(m.mode, m.count, m.itype, null) } + else { gl_draw_arrays(m.mode, 0, m.count) } +} +function mesh_draw_instanced(m: Mesh, n: int) -> void { + gl_bind_vertex_array(m.vao) + if m.ebo != 0 { gl_draw_elements_instanced(m.mode, m.count, m.itype, null, n) } + else { gl_draw_arrays_instanced(m.mode, 0, m.count, n) } +} + +# A flat n x n vertex grid over [-half, half]^2 in x/z, y = 0. Attribute 0 = (x, z). +# The terrain vertex shader lifts it with the height map. +function mesh_grid(n: int, half: int) -> Mesh { + let m = new Mesh + m.vao = gl_vao() + let nv = n * n + let v = gl_floats(nv * 2) + var k = 0 + for j in 0 .. n { + for i in 0 .. n { + let x = f_sub(f_mul(f_mul(fr(i, n - 1), F_TWO), half), half) + let z = f_sub(f_mul(f_mul(fr(j, n - 1), F_TWO), half), half) + gl_put_bits(v, k, x); gl_put_bits(v, k + 1, z) + k += 2 + } + } + m.vbo = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, m.vbo) + gl_buffer_data(GL_ARRAY_BUFFER, gl_bytes_of(nv * 2), v, GL_STATIC_DRAW) + gl_enable_vertex_attrib_array(0) + gl_vertex_attrib_pointer(0, 2, GL_FLOAT, 0, 8, null) + free(v) + let ni = (n - 1) * (n - 1) * 6 + let idx = words(ni) + k = 0 + for j in 0 .. n - 1 { + for i in 0 .. n - 1 { + let a = j * n + i + idx[k] = a; idx[k + 1] = a + n; idx[k + 2] = a + 1 + idx[k + 3] = a + 1; idx[k + 4] = a + n; idx[k + 5] = a + n + 1 + k += 6 + } + } + m.ebo = gl_buffer() + gl_bind_buffer(GL_ELEMENT_ARRAY_BUFFER, m.ebo) + gl_buffer_data(GL_ELEMENT_ARRAY_BUFFER, ni * 4, idx, GL_STATIC_DRAW) + free(idx) + m.count = ni + gl_bind_vertex_array(0) + return m +} + +# The grid as patches (4 control points per cell) for tessellation shaders. +function mesh_grid_patches(n: int, half: int) -> Mesh { + let m = mesh_grid(n, half) + # rebuild the index buffer as quads + let nq = (n - 1) * (n - 1) * 4 + let idx = words(nq) + var k = 0 + for j in 0 .. n - 1 { + for i in 0 .. n - 1 { + let a = j * n + i + idx[k] = a; idx[k + 1] = a + 1; idx[k + 2] = a + n + 1; idx[k + 3] = a + n + k += 4 + } + } + gl_bind_vertex_array(m.vao) + gl_bind_buffer(GL_ELEMENT_ARRAY_BUFFER, m.ebo) + gl_buffer_data(GL_ELEMENT_ARRAY_BUFFER, nq * 4, idx, GL_STATIC_DRAW) + gl_bind_vertex_array(0) + free(idx) + m.count = nq + m.mode = GL_PATCHES + return m +} + +# A full-screen triangle with no attributes (the vertex shader uses gl_VertexID). +function mesh_fullscreen() -> Mesh { + let m = new Mesh + m.vao = gl_vao() + gl_bind_vertex_array(0) + m.count = 3 + return m +} + +# A unit quad in x/y ([-0.5, 0.5] x [0, 1]) with uv, attribute 0 = xy, 1 = uv. +function mesh_card() -> Mesh { + let m = new Mesh + m.vao = gl_vao() + let v = gl_floats(16) + gl_put(v, 0, -0.5); gl_put(v, 1, 0.0); gl_put(v, 2, 0.0); gl_put(v, 3, 0.0) + gl_put(v, 4, 0.5); gl_put(v, 5, 0.0); gl_put(v, 6, 1.0); gl_put(v, 7, 0.0) + gl_put(v, 8, 0.5); gl_put(v, 9, 1.0); gl_put(v, 10, 1.0); gl_put(v, 11, 1.0) + gl_put(v, 12, -0.5); gl_put(v, 13, 1.0); gl_put(v, 14, 0.0); gl_put(v, 15, 1.0) + m.vbo = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, m.vbo) + gl_buffer_data(GL_ARRAY_BUFFER, 64, v, GL_STATIC_DRAW) + gl_enable_vertex_attrib_array(0) + gl_vertex_attrib_pointer(0, 2, GL_FLOAT, 0, 16, null) + gl_enable_vertex_attrib_array(1) + gl_vertex_attrib_pointer(1, 2, GL_FLOAT, 0, 16, gl_ptr(null, 8)) + free(v) + let idx = words(6) + idx[0] = 0; idx[1] = 1; idx[2] = 2; idx[3] = 0; idx[4] = 2; idx[5] = 3 + m.ebo = gl_buffer() + gl_bind_buffer(GL_ELEMENT_ARRAY_BUFFER, m.ebo) + gl_buffer_data(GL_ELEMENT_ARRAY_BUFFER, 24, idx, GL_STATIC_DRAW) + free(idx) + m.count = 6 + gl_bind_vertex_array(0) + return m +} + +# Attach a per-instance float buffer (n floats per instance, split into vec4 +# attributes from `first_attr`) to a mesh's VAO. Returns the buffer id. +function mesh_instance_buffer(m: Mesh, first_attr: int, floats_per: int, data: pointer, count: int) -> int { + gl_bind_vertex_array(m.vao) + let b = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, b) + gl_buffer_data(GL_ARRAY_BUFFER, gl_bytes_of(floats_per * count), data, GL_STATIC_DRAW) + var a = 0 + var off = 0 + while off < floats_per { + var sz = floats_per - off + if sz > 4 { sz = 4 } + gl_enable_vertex_attrib_array(first_attr + a) + gl_vertex_attrib_pointer(first_attr + a, sz, GL_FLOAT, 0, floats_per * 4, gl_ptr(null, off * 4)) + gl_vertex_attrib_divisor(first_attr + a, 1) + a += 1 + off += 4 + } + gl_bind_vertex_array(0) + return b +} diff --git a/packages/ludic.render3d/overlay.ludic b/packages/ludic.render3d/overlay.ludic new file mode 100644 index 00000000..ef968f1a --- /dev/null +++ b/packages/ludic.render3d/overlay.ludic @@ -0,0 +1,335 @@ +# ============================================================================ +# overlay.ludic — 2D drawing over the finished frame, in screen pixels with the +# origin top-left (the same space Input.mouse_x/y report): filled rectangles, +# textured quads and text from a baked font atlas (tools/blender/font_build.py). +# Quads are batched into one buffer for the whole frame and uploaded ONCE at ov_end; +# a texture change only closes a draw range. (On Apple's GL every glBufferSubData +# flushes the context and waits for the GPU; uploading per texture change made a HUD +# with dozens of changes wait dozens of times a frame: 26 ms -> 40 ms, sampled.) +# ============================================================================ + +const OV_MAX_QUADS: int = 6000 +const OV_FLOATS: int = 8 # x, y, u, v, r, g, b, a + +var ov_prog: int = 0 +var ov_vao: int = 0 +var ov_vbo: int = 0 +var ov_buf: pointer = null +var ov_n: int = 0 +var ov_tex: int = 0 +var ov_white: int = 0 +var ov_font: int = 0 +var ov_font_adv: words = null # 95 float bits, em units +var ov_font_cols: int = 16 +var ov_font_rows: int = 6 +var ov_font_cell: int = 128 # px per cell in the atlas +var ov_font_em: int = 100 # px per em in the atlas +var ov_pad_x: int = 0 # float bits, em +var ov_base_y: int = 0 +var ov_ready: bool = false +var ov_open: bool = false +var ov_dbg: bool = false +const OV_MAX_RANGES: int = 512 +const OV_RANGE_W: int = 7 # texture, first quad, quad count, clip x, y, w, h (w = 0: none) +var ov_ranges: words = null +var ov_nr: int = 0 +var ov_range_start: int = 0 +var ov_clip_x: int = 0 # the current clip rectangle in screen pixels (top-left origin) +var ov_clip_y: int = 0 +var ov_clip_w: int = 0 +var ov_clip_h: int = 0 + +function overlay_init(font_dir: string) -> bool { + ov_prog = gl_program("#version 410 core\n" + r3d_shader_file("overlay.vert"), "#version 410 core\n" + r3d_shader_file("overlay.frag")) + if ov_prog == 0 { print("overlay: program failed"); return false } + ov_vao = gl_vao() + gl_bind_vertex_array(ov_vao) + ov_vbo = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, ov_vbo) + gl_buffer_data(GL_ARRAY_BUFFER, gl_bytes_of(OV_MAX_QUADS * 6 * OV_FLOATS), null, GL_DYNAMIC_DRAW) + gl_enable_vertex_attrib_array(0); gl_vertex_attrib_pointer(0, 2, GL_FLOAT, 0, OV_FLOATS * 4, null) + gl_enable_vertex_attrib_array(1); gl_vertex_attrib_pointer(1, 2, GL_FLOAT, 0, OV_FLOATS * 4, gl_ptr(null, 8)) + gl_enable_vertex_attrib_array(2); gl_vertex_attrib_pointer(2, 4, GL_FLOAT, 0, OV_FLOATS * 4, gl_ptr(null, 16)) + gl_bind_vertex_array(0) + ov_buf = gl_floats(OV_MAX_QUADS * 6 * OV_FLOATS) + ov_ranges = words(OV_MAX_RANGES * OV_RANGE_W) + ov_white = tex_solid(255, 255, 255, 255) + # the font + ov_font_adv = words(95) + for i in 0 .. 95 { ov_font_adv[i] = fl(0.6) } + ov_pad_x = fl(0.14); ov_base_y = fl(0.30) + let meta = Fs.read_text(font_dir + "/font.json") + if meta != null { + let j = Json.parse(meta) + ov_font_cols = jint(j, "cols", 16); ov_font_rows = jint(j, "rows", 6) + ov_font_cell = f_to_int(jnum(value_get(j, "cell"))); ov_font_em = f_to_int(jnum(value_get(j, "em"))) + ov_pad_x = jnum(value_get(j, "pad_x")); ov_base_y = jnum(value_get(j, "base_y")) + let adv = value_get(j, "adv") + for i in 0 .. 95 { if i < value_count(adv) { ov_font_adv[i] = jnum(value_at(adv, i)) } } + ov_font = tex_load_ex(font_dir + "/font.png", false, 0) + } + if ov_font == 0 { print("overlay: no font atlas, text disabled") } + ov_dbg = Os.has_env("R3D_FONTDBG") + ov_ready = true + return true +} + +# start drawing onto the screen: blending on, depth off +function ov_begin() -> void { + if not ov_ready { return } + gl_bind_framebuffer(GL_FRAMEBUFFER, gl_screen_fbo()) + gl_viewport(0, 0, gl_w, gl_h) + gl_disable(GL_DEPTH_TEST) + gl_disable(GL_CULL_FACE) + gl_enable(GL_BLEND) + gl_blend_func(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) + gl_use_program(ov_prog) + u_f2(gl_uniform(ov_prog, "u_screen"), fi(gl_w), fi(gl_h)) + ov_n = 0; ov_nr = 0; ov_range_start = 0 + ov_tex = ov_white + ov_clip_w = 0 + ov_open = true +} +# everything drawn until ov_unclip stays inside this rectangle (a scrolling list) +function ov_clip(x: int, y: int, w: int, h: int) -> void { + ov_close_range() + ov_clip_x = x; ov_clip_y = y; ov_clip_w = w; ov_clip_h = h +} +function ov_unclip() -> void { ov_close_range(); ov_clip_w = 0 } +# close the current draw range (quads since its start, with the current texture) +function ov_close_range() -> void { + let n = ov_n - ov_range_start + if n <= 0 { return } + if ov_nr >= OV_MAX_RANGES { ov_flush(); return } + let o = ov_nr * OV_RANGE_W + ov_ranges[o] = ov_tex; ov_ranges[o + 1] = ov_range_start; ov_ranges[o + 2] = n + ov_ranges[o + 3] = ov_clip_x; ov_ranges[o + 4] = ov_clip_y; ov_ranges[o + 5] = ov_clip_w; ov_ranges[o + 6] = ov_clip_h + ov_nr += 1 + ov_range_start = ov_n +} +# one upload of everything batched so far, then a draw per range +function ov_flush() -> void { + ov_close_range() + if ov_n == 0 { ov_nr = 0; ov_range_start = 0; return } + gl_use_program(ov_prog) + gl_bind_vertex_array(ov_vao) + gl_bind_buffer(GL_ARRAY_BUFFER, ov_vbo) + gl_buffer_data(GL_ARRAY_BUFFER, gl_bytes_of(ov_n * 6 * OV_FLOATS), ov_buf, GL_STREAM_DRAW) + var last = -1 + var clipped = false + for i in 0 .. ov_nr { + let o = i * OV_RANGE_W + let t = ov_ranges[o] + if t != last { + r3d_bind_2d(ov_prog, "u_tex", 0, t) + var is_font = F_ZERO + if t == ov_font { is_font = F_ONE } + u_f(gl_uniform(ov_prog, "u_is_font"), is_font) + last = t + } + if ov_ranges[o + 5] > 0 { + if not clipped { gl_enable(GL_SCISSOR_TEST); clipped = true } + gl_scissor(ov_ranges[o + 3], gl_h - ov_ranges[o + 4] - ov_ranges[o + 6], ov_ranges[o + 5], ov_ranges[o + 6]) + } else if clipped { gl_disable(GL_SCISSOR_TEST); clipped = false } + gl_draw_arrays(GL_TRIANGLES, ov_ranges[o + 1] * 6, ov_ranges[o + 2] * 6) + } + if clipped { gl_disable(GL_SCISSOR_TEST) } + gl_bind_vertex_array(0) + ov_n = 0; ov_nr = 0; ov_range_start = 0 +} +function ov_end() -> void { + if not ov_open { return } + ov_flush() + gl_disable(GL_BLEND) + gl_enable(GL_DEPTH_TEST) + ov_open = false +} +function ov_use_tex(t: int) -> void { + if t != ov_tex { ov_close_range(); ov_tex = t } +} + +# one vertex into the batch +function ov_vert(k: int, x: int, y: int, u: int, v: int, r: int, g: int, b: int, a: int) -> void { + let o = k * OV_FLOATS + gl_put_bits(ov_buf, o, x); gl_put_bits(ov_buf, o + 1, y) + gl_put_bits(ov_buf, o + 2, u); gl_put_bits(ov_buf, o + 3, v) + gl_put_bits(ov_buf, o + 4, r); gl_put_bits(ov_buf, o + 5, g); gl_put_bits(ov_buf, o + 6, b); gl_put_bits(ov_buf, o + 7, a) +} +# a textured quad, float-bit pixel corners and uvs +function ov_quad(x0: int, y0: int, x1: int, y1: int, u0: int, v0: int, u1: int, v1: int, r: int, g: int, b: int, a: int) -> void { + if ov_n >= OV_MAX_QUADS { ov_flush() } + let k = ov_n * 6 + ov_vert(k, x0, y0, u0, v0, r, g, b, a) + ov_vert(k + 1, x1, y0, u1, v0, r, g, b, a) + ov_vert(k + 2, x1, y1, u1, v1, r, g, b, a) + ov_vert(k + 3, x0, y0, u0, v0, r, g, b, a) + ov_vert(k + 4, x1, y1, u1, v1, r, g, b, a) + ov_vert(k + 5, x0, y1, u0, v1, r, g, b, a) + ov_n += 1 +} + +# a filled rectangle at integer pixels; colour as float bits 0..1 +function ov_rect(x: int, y: int, w: int, h: int, r: int, g: int, b: int, a: int) -> void { + ov_use_tex(ov_white) + ov_quad(fi(x), fi(y), fi(x + w), fi(y + h), F_ZERO, F_ZERO, F_ONE, F_ONE, r, g, b, a) +} +function ov_frame(x: int, y: int, w: int, h: int, t: int, r: int, g: int, b: int, a: int) -> void { + ov_rect(x, y, w, t, r, g, b, a) + ov_rect(x, y + h - t, w, t, r, g, b, a) + ov_rect(x, y, t, h, r, g, b, a) + ov_rect(x + w - t, y, t, h, r, g, b, a) +} +# a whole texture at integer pixels +function ov_image(tex: int, x: int, y: int, w: int, h: int, a: int) -> void { + ov_use_tex(tex) + ov_quad(fi(x), fi(y), fi(x + w), fi(y + h), F_ZERO, F_ZERO, F_ONE, F_ONE, F_ONE, F_ONE, F_ONE, a) +} + +# the width in pixels of `s` at `size` pixels per em +function ov_text_w(size: int, s: string) -> int { + var w = F_ZERO + let sp: pointer = s # bytes, not one-character strings + let n = len(sp) + for i in 0 .. n { + var c = sp[i] - 32 + if c < 0 or c > 94 { c = 0 } + w = f_add(w, f_mul(ov_font_adv[c], fi(size))) + } + return f_to_int(w) +} +# text with its top-left at (x, y); returns the pen x after it +function ov_text(x: int, y: int, size: int, s: string, r: int, g: int, b: int, a: int) -> int { + if ov_font == 0 { return x } + ov_use_tex(ov_font) + let k = fr(size, ov_font_em) # atlas px -> screen px + let cell = f_mul(fi(ov_font_cell), k) + var pen = fi(x) + let base = f_add(fi(y), f_mul(fi(size), fl(0.80))) + let px = f_mul(f_mul(ov_pad_x, fi(ov_font_em)), k) + let py = f_mul(f_mul(ov_base_y, fi(ov_font_em)), k) + let sp: pointer = s + let n = len(sp) + for i in 0 .. n { + var c = sp[i] - 32 + if c < 0 or c > 94 { c = 0 } + if c != 0 { + let cx = c - (c / ov_font_cols) * ov_font_cols + let cy = c / ov_font_cols + let u0 = fr(cx, ov_font_cols); let u1 = fr(cx + 1, ov_font_cols) + let v0 = fr(cy, ov_font_rows); let v1 = fr(cy + 1, ov_font_rows) + let x0 = f_sub(pen, px); let y1 = f_add(base, py) + ov_quad(x0, f_sub(y1, cell), f_add(x0, cell), y1, u0, v0, u1, v1, r, g, b, a) + } + pen = f_add(pen, f_mul(ov_font_adv[c], fi(size))) + } + return f_to_int(pen) +} +# text with a soft dark shadow under it (HUD over a bright meadow) +function ov_text_sh(x: int, y: int, size: int, s: string, r: int, g: int, b: int, a: int) -> int { + let d = size / 18 + 1 + ov_text(x + d, y + d, size, s, F_ZERO, F_ZERO, F_ZERO, f_mul(a, fl(0.7))) + return ov_text(x, y, size, s, r, g, b, a) +} +function ov_text_center(cx: int, y: int, size: int, s: string, r: int, g: int, b: int, a: int) -> void { + ov_text(cx - ov_text_w(size, s) / 2, y, size, s, r, g, b, a) +} + +# text wrapped at `maxw` pixels on spaces; returns the y after the last line +function ov_text_wrap(x: int, y: int, size: int, maxw: int, s: string, r: int, g: int, b: int, a: int) -> int { + let sp: pointer = s + let n = len(sp) + var first = 0 + var ly = y + while first < n { + var last_space = -1 + var i = first + var stop = n + while i < n { + if sp[i] == 10 { stop = i; break } + if sp[i] == 32 { last_space = i } + let piece: string = s[first .. i + 1] + if ov_text_w(size, piece) > maxw and last_space > first { stop = last_space; break } + i += 1 + } + let line: string = s[first .. stop] + ov_text(x, ly, size, line, r, g, b, a) + ly += size * 13 / 10 + first = stop + while first < n and (sp[first] == 32 or sp[first] == 10) { first += 1 } + } + return ly +} + +# ---- more shapes for a game's interface ------------------------------------------------- +# a sub-rectangle of a texture (uv corners as float bits) tinted, at integer pixels +function ov_sub(tex: int, x: int, y: int, w: int, h: int, u0: int, v0: int, u1: int, v1: int, r: int, g: int, b: int, a: int) -> void { + ov_use_tex(tex) + ov_quad(fi(x), fi(y), fi(x + w), fi(y + h), u0, v0, u1, v1, r, g, b, a) +} +# a whole texture stretched by nine slices: corners `src` texels wide in a `tw` px square +# texture, drawn `dst` pixels wide, so rounded corners keep their shape at any size +function ov_nine(tex: int, tw: int, src: int, x: int, y: int, w: int, h: int, dst: int, r: int, g: int, b: int, a: int) -> void { + ov_use_tex(tex) + let s = fr(src, tw) + let xs = words(4); let ys = words(4); let us = words(4); let vs = words(4) + xs[0] = fi(x); xs[1] = fi(x + dst); xs[2] = fi(x + w - dst); xs[3] = fi(x + w) + ys[0] = fi(y); ys[1] = fi(y + dst); ys[2] = fi(y + h - dst); ys[3] = fi(y + h) + us[0] = F_ZERO; us[1] = s; us[2] = f_sub(F_ONE, s); us[3] = F_ONE + vs[0] = F_ZERO; vs[1] = s; vs[2] = f_sub(F_ONE, s); vs[3] = F_ONE + for j in 0 .. 3 { + for i in 0 .. 3 { ov_quad(xs[i], ys[j], xs[i + 1], ys[j + 1], us[i], vs[j], us[i + 1], vs[j + 1], r, g, b, a) } + } + free(xs); free(ys); free(us); free(vs) +} +# an arbitrary quad (float-bit pixel corners, clockwise from top-left) of a texture +function ov_quad4(x0: int, y0: int, x1: int, y1: int, x2: int, y2: int, x3: int, y3: int, u0: int, v0: int, u1: int, v1: int, r: int, g: int, b: int, a: int) -> void { + if ov_n >= OV_MAX_QUADS { ov_flush() } + let k = ov_n * 6 + ov_vert(k, x0, y0, u0, v0, r, g, b, a) + ov_vert(k + 1, x1, y1, u1, v0, r, g, b, a) + ov_vert(k + 2, x2, y2, u1, v1, r, g, b, a) + ov_vert(k + 3, x0, y0, u0, v0, r, g, b, a) + ov_vert(k + 4, x2, y2, u1, v1, r, g, b, a) + ov_vert(k + 5, x3, y3, u0, v1, r, g, b, a) + ov_n += 1 +} +# a line of thickness `t` pixels between two points (float-bit pixels) +function ov_line(x0: int, y0: int, x1: int, y1: int, t: int, r: int, g: int, b: int, a: int) -> void { + ov_use_tex(ov_white) + let dx = f_sub(x1, x0); let dy = f_sub(y1, y0) + let l = f_max(f_sqrt(f_add(f_mul(dx, dx), f_mul(dy, dy))), fl(0.001)) + let nx = f_mul(f_div(f_neg(dy), l), f_mul(t, F_HALF)); let ny = f_mul(f_div(dx, l), f_mul(t, F_HALF)) + ov_quad4(f_add(x0, nx), f_add(y0, ny), f_add(x1, nx), f_add(y1, ny), f_sub(x1, nx), f_sub(y1, ny), f_sub(x0, nx), f_sub(y0, ny), F_ZERO, F_ZERO, F_ONE, F_ONE, r, g, b, a) +} +# a sub-rectangle of a texture rotated by `ang` radians about its centre (cx, cy), `w` x `h` pixels +function ov_sub_rot(tex: int, cx: int, cy: int, w: int, h: int, ang: int, u0: int, v0: int, u1: int, v1: int, r: int, g: int, b: int, a: int) -> void { + ov_use_tex(tex) + let c = f_cos(ang); let s = f_sin(ang) + let hw = f_mul(fi(w), F_HALF); let hh = f_mul(fi(h), F_HALF) + let fx = fi(cx); let fy = fi(cy) + # corners: (-hw,-hh) (hw,-hh) (hw,hh) (-hw,hh) rotated + let x0 = f_add(fx, f_sub(f_mul(f_neg(hw), c), f_mul(f_neg(hh), s))); let y0 = f_add(fy, f_add(f_mul(f_neg(hw), s), f_mul(f_neg(hh), c))) + let x1 = f_add(fx, f_sub(f_mul(hw, c), f_mul(f_neg(hh), s))); let y1 = f_add(fy, f_add(f_mul(hw, s), f_mul(f_neg(hh), c))) + let x2 = f_add(fx, f_sub(f_mul(hw, c), f_mul(hh, s))); let y2 = f_add(fy, f_add(f_mul(hw, s), f_mul(hh, c))) + let x3 = f_add(fx, f_sub(f_mul(f_neg(hw), c), f_mul(hh, s))); let y3 = f_add(fy, f_add(f_mul(f_neg(hw), s), f_mul(hh, c))) + ov_quad4(x0, y0, x1, y1, x2, y2, x3, y3, u0, v0, u1, v1, r, g, b, a) +} +# a filled circle approximated by `n` wedges (float-bit centre and radius) +function ov_disc(cx: int, cy: int, rad: int, n: int, r: int, g: int, b: int, a: int) -> void { + ov_use_tex(ov_white) + let step = f_div(f_mul(F_TWO, F_PI), fi(n)) + for i in 0 .. n { + let a0 = f_mul(fi(i), step); let a1 = f_add(a0, step) + let ax = f_add(cx, f_mul(f_cos(a0), rad)); let ay = f_add(cy, f_mul(f_sin(a0), rad)) + let bx = f_add(cx, f_mul(f_cos(a1), rad)); let by = f_add(cy, f_mul(f_sin(a1), rad)) + ov_quad4(cx, cy, ax, ay, bx, by, cx, cy, F_ZERO, F_ZERO, F_ONE, F_ONE, r, g, b, a) + } +} +# a ring: `n` segments of thickness `t`, from angle a0 for `span` radians (float bits) +function ov_arc(cx: int, cy: int, rad: int, t: int, a0: int, span: int, n: int, r: int, g: int, b: int, a: int) -> void { + let step = f_div(span, fi(n)) + for i in 0 .. n { + let b0 = f_add(a0, f_mul(fi(i), step)); let b1 = f_add(b0, step) + ov_line(f_add(cx, f_mul(f_cos(b0), rad)), f_add(cy, f_mul(f_sin(b0), rad)), f_add(cx, f_mul(f_cos(b1), rad)), f_add(cy, f_mul(f_sin(b1), rad)), t, r, g, b, a) + } +} diff --git a/packages/ludic.render3d/package.ludic b/packages/ludic.render3d/package.ludic new file mode 100644 index 00000000..0785df3e --- /dev/null +++ b/packages/ludic.render3d/package.ludic @@ -0,0 +1,7 @@ +# ludic.render3d — a physically based 3D renderer over Gl.* (OpenGL 4.1 core): +# HDRI sky + image-based lighting, a GPU-generated terrain with scanned PBR +# materials, cascaded shadow maps, an HDR pipeline with bloom and ACES. +package "ludic.render3d" +version "0.1.0" +kind source +provides "R3d" diff --git a/packages/ludic.render3d/post.ludic b/packages/ludic.render3d/post.ludic new file mode 100644 index 00000000..f888c3e2 --- /dev/null +++ b/packages/ludic.render3d/post.ludic @@ -0,0 +1,307 @@ +# ============================================================================ +# post.ludic — the HDR frame and what happens to it: a 16-bit float scene +# target, a mip-chain bloom (13-tap down, tent up), and the tonemap composite +# (exposure, ACES, vignette, saturation, contrast, dither) to the screen. +# ============================================================================ + +const BLOOM_LEVELS: int = 6 + +var post_hdr: Target = null +var post_ms_fbo: int = 0 # 4x multisampled scene target, resolved into post_hdr +var post_ms_samples: int = 1 # temporal AA carries the edges; R3D_MSAA=n to compare +var post_bloom: []Target = null +var post_p_down: int = 0 +var post_p_up: int = 0 +var post_p_tone: int = 0 +var post_fs: Mesh = null +var post_exposure: int = 0 +var post_bloom_strength: int = 0 +var post_vignette: int = 0 +var post_saturation: int = 0 +var post_contrast: int = 0 +var post_w: int = 0 +var post_h: int = 0 +var post_auto: bool = true +var post_key: int = 0 # target mean luminance after exposure (float bits) +var post_lum: words = null +var post_mips: int = 0 +var post_adapt: int = 0 # smoothed exposure (float bits) +var post_exposure_max: int = 0x41A00000 # 20: the ceiling auto-exposure may reach (night lowers it) + +var post_ao: Target = null +var post_ao_blur: Target = null +var post_p_ao: int = 0 +var post_p_ao_blur: int = 0 +var post_ao_radius: int = 0 +var post_ao_intensity: int = 0 +var post_ao_strength: int = 0 +var post_gi_strength: int = 0x3ECCCCCD # 0.4 +var post_no_gi: bool = false +var post_ldr: Target = null +var post_depth_copy: Target = null +var post_prev: Target = null # last frame's scene colour, for the SSGI bounce only +var post_scene: Target = null # this frame's scene colour before the water, for refraction +var post_frame: int = 0 +var post_color: int = 0 # the HDR colour the rest of post reads # the resolved depth, copied so passes can read it while drawing into the frame +var post_p_sharp: int = 0 +var post_sharpen: int = 0 +var post_grain: int = 0 + +# the screen-sized targets go away before post_init makes them at a new size +function post_free() -> void { + if post_hdr == null { return } + target_free(post_hdr); target_free(post_ao); target_free(post_ao_blur); target_free(post_ldr) + target_free(post_depth_copy); target_free(post_prev); target_free(post_scene) + for i in 0 .. len(post_bloom) { target_free(post_bloom[i]) } + post_hdr = null +} +function post_init(w: int, h: int) -> void { + post_w = w; post_h = h + post_hdr = target_new(w, h, GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT, true, GL_LINEAR) + if post_ms_samples > 1 { + post_ms_fbo = gl_framebuffer() + gl_bind_framebuffer(GL_FRAMEBUFFER, post_ms_fbo) + let ids = gl_scratch() + gl_gen_renderbuffers(1, ids) + gl_bind_renderbuffer(GL_RENDERBUFFER, ids[0]) + gl_renderbuffer_storage_multisample(GL_RENDERBUFFER, post_ms_samples, GL_RGBA16F, w, h) + gl_framebuffer_renderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, ids[0]) + gl_gen_renderbuffers(1, ids) + gl_bind_renderbuffer(GL_RENDERBUFFER, ids[0]) + gl_renderbuffer_storage_multisample(GL_RENDERBUFFER, post_ms_samples, GL_DEPTH_COMPONENT32F, w, h) + gl_framebuffer_renderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, ids[0]) + let st = gl_check_framebuffer_status(GL_FRAMEBUFFER) + if st != GL_FRAMEBUFFER_COMPLETE { print(`r3d: msaa framebuffer incomplete {st}`); post_ms_fbo = 0 } + gl_bind_framebuffer(GL_FRAMEBUFFER, 0) + } + post_bloom = new []Target + var bw = w / 2; var bh = h / 2 + for i in 0 .. BLOOM_LEVELS { + push(post_bloom, target_new(max(bw, 1), max(bh, 1), GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT, false, GL_LINEAR)) + bw = bw / 2; bh = bh / 2 + } + if post_p_down == 0 { + post_p_down = r3d_program("fullscreen.vert", "bloom_down.frag", "") + post_p_up = r3d_program("fullscreen.vert", "bloom_up.frag", "") + post_p_tone = r3d_program("fullscreen.vert", "tonemap.frag", "") + } + # Full resolution, not half. The occlusion is reconstructed from depth differences, + # so on a surface seen at a grazing angle its gradient is steep in screen space; at + # half resolution that aliased into wide, screen-crossing bands which the bilinear + # upsample in the tonemapper then stretched over the whole ground. They read as thin + # transparent black bars, appear only where there is depth (never on the sky), and + # are nothing to do with the shadow map or the reflection. + post_ao = target_new(w, h, GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT, false, GL_LINEAR) + post_ao_blur = target_new(w, h, GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT, false, GL_LINEAR) + if post_p_ao == 0 { post_p_ao = r3d_program("fullscreen.vert", "ssgi.frag", ""); post_p_ao_blur = r3d_program("fullscreen.vert", "ssao_blur.frag", "") } + post_ldr = target_new(w, h, GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, false, GL_LINEAR) + post_depth_copy = target_new(w, h, GL_R8, GL_RED, GL_UNSIGNED_BYTE, true, GL_NEAREST) + post_prev = target_new(w, h, GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT, false, GL_LINEAR) + post_scene = target_new(w, h, GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT, false, GL_LINEAR) + if post_p_sharp == 0 { post_p_sharp = r3d_program("fullscreen.vert", "sharpen.frag", "") } + post_sharpen = fl(1.2) + post_grain = fl(0.025) + post_ao_radius = fl(0.7) + post_ao_intensity = fl(1.4) + post_ao_strength = fl(0.8) + post_fs = mesh_fullscreen() + post_exposure = fl(0.36) + post_bloom_strength = fl(0.06) + post_vignette = fl(0.35) + post_saturation = fl(1.04) + post_contrast = fl(1.12) + post_key = fl(0.19) + post_lum = words(4) + var m = 1; var sz = max(w, h) + while sz > 1 { sz = sz / 2; m += 1 } + post_mips = m + post_adapt = F_ZERO +} + +# Mean scene luminance from the HDR mip chain -> exposure = key / mean, eased over +# frames. The value comes back through a pixel buffer one frame late: a direct +# glGetTexImage waits for the GPU to finish the whole frame, which serialised the +# CPU and the GPU. With the fly-camera demo that cost little (the CPU had nothing +# else to do); with the game's animals, HUD and rules on the CPU it doubled the frame +# (60 ms -> 28 ms when the read went asynchronous, measured 2026-09-09). +# ... and even that asynchronous read blocked on Apple's GL (glGetTexImage into a pixel +# buffer still synchronised the texture: 50% of the CPU's frame waiting, sampled), so +# the adaptation now stays on the GPU: a 1x1 pass (adapt.frag) eases last frame's value +# toward key / mean and the tonemapper samples it. The CPU never waits for the picture. +var post_adapt_t: []Target = null +var post_adapt_i: int = 0 +var post_p_adapt: int = 0 +var post_adapt_reset: bool = true +function post_measure() -> void { + gl_bind_texture(GL_TEXTURE_2D, post_hdr.color) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR) + gl_generate_mipmap(GL_TEXTURE_2D) + if post_adapt_t == null { + post_adapt_t = new []Target + for k in 0 .. 2 { push(post_adapt_t, target_new(1, 1, GL_R32F, GL_RED, GL_FLOAT, false, GL_NEAREST)) } + post_adapt_reset = true + } + if post_p_adapt == 0 { post_p_adapt = r3d_program("fullscreen.vert", "adapt.frag", "") } + let next = 1 - post_adapt_i + target_bind(post_adapt_t[next]) + gl_disable(GL_DEPTH_TEST) + gl_use_program(post_p_adapt) + r3d_bind_2d(post_p_adapt, "u_scene", 0, post_hdr.color) + r3d_bind_2d(post_p_adapt, "u_prev", 1, post_adapt_t[post_adapt_i].color) + u_f(gl_uniform(post_p_adapt, "u_lod"), fi(post_mips - 1)) + u_f(gl_uniform(post_p_adapt, "u_key"), post_key) + u_f(gl_uniform(post_p_adapt, "u_max"), post_exposure_max) + u_f(gl_uniform(post_p_adapt, "u_rate"), fl(0.08)) + var reset = F_ZERO + if post_adapt_reset { reset = F_ONE; post_adapt_reset = false } + u_f(gl_uniform(post_p_adapt, "u_reset"), reset) + mesh_draw(post_fs) + post_adapt_i = next + gl_bind_texture(GL_TEXTURE_2D, post_hdr.color) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) +} + +function post_begin_scene() -> void { + target_bind(post_hdr) + if post_ms_fbo != 0 { gl_bind_framebuffer(GL_FRAMEBUFFER, post_ms_fbo); gl_enable(GL_MULTISAMPLE) } + gl_enable(GL_DEPTH_TEST) + gl_depth_func(GL_LESS) + gl_depth_mask(1) + gl_enable(GL_CULL_FACE) + gl_cull_face(GL_BACK) + gl_clear_color(0.0, 0.0, 0.0, 1.0) + gl_clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) +} + +# resolve the multisampled scene into the plain HDR target (colour + depth) +function post_resolve() -> void { + if post_ms_fbo != 0 { + gl_bind_framebuffer(GL_READ_FRAMEBUFFER, post_ms_fbo) + gl_bind_framebuffer(GL_DRAW_FRAMEBUFFER, post_hdr.fbo) + gl_blit_framebuffer(0, 0, post_w, post_h, 0, 0, post_w, post_h, GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT, GL_NEAREST) + } + # the depth copy every pass after this may read while the frame is still being drawn into + gl_bind_framebuffer(GL_READ_FRAMEBUFFER, post_hdr.fbo) + gl_bind_framebuffer(GL_DRAW_FRAMEBUFFER, post_depth_copy.fbo) + gl_blit_framebuffer(0, 0, post_w, post_h, 0, 0, post_w, post_h, GL_DEPTH_BUFFER_BIT, GL_NEAREST) + gl_bind_framebuffer(GL_FRAMEBUFFER, 0) +} + +# There is no temporal anti-aliasing. It was reprojecting every pixel through the +# scene depth, which on water is the surface plane while the pixel's content is the +# reflection behind it — so the mirror image was fetched from the wrong place and, at +# 0.92 history, dragged several frames behind the camera as it turned. Geometry edges +# and the alpha-tested vegetation are covered by the 4x MSAA + alpha-to-coverage the +# scene already renders with, and the projection is no longer jittered, so nothing is +# left needing a temporal resolve. + +# The lake bed, as drawn, before any water goes over it. Water reads this to refract and +# then absorb it, which is what makes the surface read as a body of water rather than a +# sheet laid over the ground: the bottom is seen THROUGH the water, tinted and dimmed by +# how far the light travelled, instead of being the dry terrain showing through an alpha. +function post_capture_scene() -> void { + gl_bind_framebuffer(GL_READ_FRAMEBUFFER, post_hdr.fbo) + gl_bind_framebuffer(GL_DRAW_FRAMEBUFFER, post_scene.fbo) + gl_blit_framebuffer(0, 0, post_w, post_h, 0, 0, post_w, post_h, GL_COLOR_BUFFER_BIT, GL_NEAREST) + gl_bind_framebuffer(GL_FRAMEBUFFER, post_hdr.fbo) + gl_viewport(0, 0, post_w, post_h) +} + +# Keep a copy of the finished scene colour: the SSGI bounce reads last frame's colour. +function post_capture_prev() -> void { + gl_bind_framebuffer(GL_READ_FRAMEBUFFER, post_hdr.fbo) + gl_bind_framebuffer(GL_DRAW_FRAMEBUFFER, post_prev.fbo) + gl_blit_framebuffer(0, 0, post_w, post_h, 0, 0, post_w, post_h, GL_COLOR_BUFFER_BIT, GL_NEAREST) + gl_bind_framebuffer(GL_FRAMEBUFFER, 0) + post_frame += 1 +} + +function post_ssao_pass() -> void { + gl_disable(GL_DEPTH_TEST) + gl_disable(GL_BLEND) + target_bind(post_ao) + gl_use_program(post_p_ao) + r3d_bind_2d(post_p_ao, "u_depth", 0, post_hdr.depth) + r3d_bind_2d(post_p_ao, "u_prev_color", 1, post_prev.color) + u_f(gl_uniform(post_p_ao, "u_frame"), fi(post_frame % 64)) + u_mat4(gl_uniform(post_p_ao, "u_inv_proj"), cam_inv_proj) + u_mat4(gl_uniform(post_p_ao, "u_proj"), cam_proj) + u_f2(gl_uniform(post_p_ao, "u_texel"), fr(1, post_w), fr(1, post_h)) + u_f(gl_uniform(post_p_ao, "u_radius"), post_ao_radius) + u_f(gl_uniform(post_p_ao, "u_intensity"), post_ao_intensity) + mesh_draw(post_fs) + target_bind(post_ao_blur) + gl_use_program(post_p_ao_blur) + r3d_bind_2d(post_p_ao_blur, "u_ao", 0, post_ao.color) + r3d_bind_2d(post_p_ao_blur, "u_depth", 1, post_hdr.depth) + u_f2(gl_uniform(post_p_ao_blur, "u_texel"), fr(1, post_ao.w), fr(1, post_ao.h)) + mesh_draw(post_fs) +} + +function post_bloom_pass() -> void { + gl_disable(GL_DEPTH_TEST) + gl_disable(GL_BLEND) + var src = post_color + var sw = post_w; var sh = post_h + gl_use_program(post_p_down) + for i in 0 .. BLOOM_LEVELS { + let t = post_bloom[i] + target_bind(t) + r3d_bind_2d(post_p_down, "u_src", 0, src) + u_f2(gl_uniform(post_p_down, "u_texel"), fr(1, sw), fr(1, sh)) + var th = f_neg1() + if i == 0 { th = fl(1.2) } + u_f(gl_uniform(post_p_down, "u_threshold"), th) + mesh_draw(post_fs) + src = t.color; sw = t.w; sh = t.h + } + gl_use_program(post_p_up) + gl_enable(GL_BLEND) + gl_blend_func(GL_ONE, GL_ONE) + var i = BLOOM_LEVELS - 1 + while i > 0 { + let from = post_bloom[i] + let to = post_bloom[i - 1] + target_bind(to) + r3d_bind_2d(post_p_up, "u_src", 0, from.color) + u_f2(gl_uniform(post_p_up, "u_texel"), fr(1, from.w), fr(1, from.h)) + u_f(gl_uniform(post_p_up, "u_radius"), F_ONE) + mesh_draw(post_fs) + i -= 1 + } + gl_disable(GL_BLEND) +} + +function post_tonemap(color_tex: int) -> void { + if post_auto { post_measure() } + target_bind(post_ldr) + gl_disable(GL_DEPTH_TEST) + gl_use_program(post_p_tone) + r3d_bind_2d(post_p_tone, "u_hdr", 0, color_tex) + r3d_bind_2d(post_p_tone, "u_bloom", 1, post_bloom[0].color) + r3d_bind_2d(post_p_tone, "u_ao", 2, post_ao_blur.color) + u_f(gl_uniform(post_p_tone, "u_ao_strength"), post_ao_strength) + u_f(gl_uniform(post_p_tone, "u_gi_strength"), post_gi_strength) + u_f(gl_uniform(post_p_tone, "u_exposure"), post_exposure) + var auto = F_ZERO + if post_auto and post_adapt_t != null { auto = F_ONE; r3d_bind_2d(post_p_tone, "u_adapt", 3, post_adapt_t[post_adapt_i].color) } + u_f(gl_uniform(post_p_tone, "u_auto"), auto) + u_f(gl_uniform(post_p_tone, "u_bloom_strength"), post_bloom_strength) + u_f(gl_uniform(post_p_tone, "u_vignette"), post_vignette) + u_f(gl_uniform(post_p_tone, "u_saturation"), post_saturation) + u_f(gl_uniform(post_p_tone, "u_contrast"), post_contrast) + u_f3(gl_uniform(post_p_tone, "u_wb"), fl(1.02), F_ONE, fl(0.97)) + u_f3(gl_uniform(post_p_tone, "u_lift"), fl(0.004), fl(0.004), fl(0.012)) + u_f3(gl_uniform(post_p_tone, "u_gain"), fl(0.99), fl(0.995), fl(1.0)) + mesh_draw(post_fs) + # sharpen + grain onto the screen + gl_bind_framebuffer(GL_FRAMEBUFFER, gl_screen) + gl_viewport(0, 0, gl_w, gl_h) + gl_use_program(post_p_sharp) + r3d_bind_2d(post_p_sharp, "u_src", 0, post_ldr.color) + u_f2(gl_uniform(post_p_sharp, "u_texel"), fr(1, post_w), fr(1, post_h)) + u_f(gl_uniform(post_p_sharp, "u_amount"), post_sharpen) + u_f(gl_uniform(post_p_sharp, "u_grain"), post_grain) + u_f(gl_uniform(post_p_sharp, "u_time"), r3d_time) + mesh_draw(post_fs) +} diff --git a/packages/ludic.render3d/prof.ludic b/packages/ludic.render3d/prof.ludic new file mode 100644 index 00000000..897c5904 --- /dev/null +++ b/packages/ludic.render3d/prof.ludic @@ -0,0 +1,385 @@ +# ============================================================================ +# prof.ludic — per-pass GPU timing (R3D_PROF=1). +# +# Wall-clock timing of this renderer is useless at pass granularity: run-to-run +# variance on a laptop GPU is ±15%, which is larger than most passes. GL_TIME_ELAPSED +# queries measure what the GPU actually spent inside each pass, and averaging a few +# hundred frames inside ONE run cancels the run-to-run noise entirely. +# +# Each slot owns a small ring of query objects. A query is read back only after +# enough frames have passed that its result is certainly available, so profiling +# never introduces the very stall it is trying to measure. +# ============================================================================ + +const PROF_SLOTS: int = 16 +const PROF_RING: int = 4 # frames of latency before a result is read + +var prof_on: bool = false +var prof_names: []pointer = null +var prof_ids: words = null # PROF_SLOTS * PROF_RING query objects +var prof_ns: []long = null # accumulated nanoseconds per slot +var prof_hits: []long = null # samples accumulated per slot +var prof_n: int = 0 # slots in use +var prof_frame: int = 0 +var prof_active: int = -1 # slot whose query is currently open +var prof_scratch: words = null + +function prof_init() -> void { + prof_on = Os.has_env("R3D_PROF") + if not prof_on { return } + prof_names = new []pointer + prof_ns = new []long + prof_hits = new []long + prof_ids = words(PROF_SLOTS * PROF_RING) + prof_scratch = words(4) + gl_gen_queries(PROF_SLOTS * PROF_RING, prof_ids) + prof_n = 0 + prof_frame = 0 + prof_active = -1 +} + +# the slot index for `name`, registering it on first sight (order = frame order) +function prof_slot(name: pointer) -> int { + var i = 0 + while i < prof_n { + if prof_names[i] == name { return i } + i += 1 + } + if prof_n >= PROF_SLOTS { return -1 } + push(prof_names, name) + push(prof_ns, 0) + push(prof_hits, 0) + prof_n += 1 + return prof_n - 1 +} + +function prof_begin(name: pointer) -> void { + if not prof_on { return } + if prof_active >= 0 { return } # GL_TIME_ELAPSED queries cannot nest + let s = prof_slot(name) + if s < 0 { return } + prof_active = s + gl_begin_query(GL_TIME_ELAPSED, prof_ids[s * PROF_RING + (prof_frame % PROF_RING)]) +} + +function prof_end() -> void { + if not prof_on { return } + if prof_active < 0 { return } + gl_end_query(GL_TIME_ELAPSED) + prof_active = -1 +} + +# Collect the queries issued PROF_RING-1 frames ago — long finished, so no stall. +function prof_collect() -> void { + if not prof_on { return } + prof_frame += 1 + if prof_frame < PROF_RING { return } + let slot_frame = (prof_frame + 1) % PROF_RING + var s = 0 + while s < prof_n { + let q = prof_ids[s * PROF_RING + slot_frame] + gl_get_query_objectiv(q, GL_QUERY_RESULT_AVAILABLE, prof_scratch) + if prof_scratch[0] != 0 { + gl_get_query_objectui64v(q, GL_QUERY_RESULT, prof_scratch) + # the low 32 bits are ample: a pass is far below 4 seconds + prof_ns[s] = prof_ns[s] + prof_scratch[0] + prof_hits[s] = prof_hits[s] + 1 + } + s += 1 + } +} + +function prof_report() -> void { + if not prof_on { return } + print("") + print("GPU time per pass (mean over the run):") + var total = 0 + var s = 0 + while s < prof_n { + if prof_hits[s] > 0 { total = total + prof_ns[s] / prof_hits[s] } + s += 1 + } + s = 0 + while s < prof_n { + if prof_hits[s] > 0 { + let us = prof_ns[s] / prof_hits[s] / 1000 + var pct = 0 + if total > 0 { pct = (prof_ns[s] / prof_hits[s]) * 100 / total } + print(` {Text.pad_right(prof_names[s], 22)} {Text.pad_left(string(us), 7)} us {string(pct)}%`) + } + s += 1 + } + print(` {Text.pad_right("TOTAL", 22)} {Text.pad_left(string(total / 1000), 7)} us`) +} + +# ---- streaming work per frame (R3D_PROF=1) ---------------------------------- +# Stutter while walking is not visible in an average: the cover for a newly entered +# chunk is generated in whichever frame the camera crosses a 32 m cell, so one frame +# in fifty does all the work. `Time.delta` here is a fixed 60 Hz timestep and there is +# no finer wall clock in the runtime, so measure the WORK instead — instances generated +# per frame is exactly what the hitch is made of, and it needs no clock at all. +var prof_gen: []int = null +var prof_gen_cur: int = 0 +var prof_ft: []long = null # real frame times, microseconds +var prof_last_us: long = 0 + +function prof_gen_add(n: int) -> void { + if not prof_on { return } + prof_gen_cur += n +} + +# Per-chunk generation, so a hitch can be pinned on a stream and a band rather than on +# "streaming". One chunk is generated atomically, so the worst chunk is the worst frame. +var prof_chunk_us: []long = null +var prof_chunk_kind: []int = null +var prof_chunk_band: []int = null +var prof_chunk_n: []int = null +var prof_gen_us_cur: long = 0 +var prof_gen_us: []long = null # generation microseconds per frame +# CPU work that only happens on some frames — which is what a hitch is made of. +var prof_layer_us_cur: long = 0 # rebuilding and uploading instance buffers +var prof_bake_us_cur: long = 0 # the height-field shadow rebake +var prof_layer_us: []long = null +var prof_bake_us: []long = null +var prof_dt: []long = null # frame time, aligned with the arrays above +var prof_up_cur: long = 0 # instance bytes uploaded this frame +var prof_up: []long = null +# Where a frame's time went at the coarsest useful split: work this process did, and +# time spent waiting for the GPU to finish it. Headless drains the GPU inside swap, so +# the two are cleanly separable there. +var prof_pre_swap: long = 0 +var prof_cpu_us: []long = null +function prof_before_swap() -> void { if prof_on { prof_pre_swap = gl_now_us() } } + +# The single most expensive CPU phase of each frame, and what it was. A hitch is one +# phase running long on one frame, so recording the worst one per frame is enough to +# name it without keeping a timeline. +var prof_mark_last: long = 0 +var prof_mark_best: long = 0 +var prof_mark_name: pointer = null +var prof_mark_us: []long = null +var prof_mark_who: []pointer = null +function prof_mark_start() -> void { if prof_on { prof_mark_last = gl_now_us(); prof_mark_best = 0; prof_mark_name = null } } +function prof_cpu_mark(name: pointer) -> void { + if not prof_on { return } + let now = gl_now_us() + let d = now - prof_mark_last + prof_mark_last = now + if d > prof_mark_best { prof_mark_best = d; prof_mark_name = name } +} + +# the game's own per-frame work, kept apart from the renderer's +var prof_game_us_cur: long = 0 +var prof_game_us: []long = null +function prof_game_add(us: long) -> void { if prof_on { prof_game_us_cur = prof_game_us_cur + us } } + +function prof_layer_add(us: long, bytes: long) -> void { + if not prof_on { return } + prof_layer_us_cur = prof_layer_us_cur + us + prof_up_cur = prof_up_cur + bytes +} +function prof_bake_add(us: long) -> void { if prof_on { prof_bake_us_cur = prof_bake_us_cur + us } } + +function prof_chunk(kind: int, band: int, count: int, us: long) -> void { + if not prof_on { return } + if prof_chunk_us == null { + prof_chunk_us = new []int; prof_chunk_kind = new []int + prof_chunk_band = new []int; prof_chunk_n = new []int + } + push(prof_chunk_us, us); push(prof_chunk_kind, kind) + push(prof_chunk_band, band); push(prof_chunk_n, count) + prof_gen_us_cur += us +} + +function prof_chunk_report() -> void { + if not prof_on or prof_chunk_us == null { return } + print("") + print("chunk generation (one chunk is atomic, so the worst chunk is the worst frame):") + # totals per (kind, band) + var kinds = new []int + var bands = new []int + var tot = new []long + var cnt = new []int + var mx = new []long + var i = 0 + while i < len(prof_chunk_us) { + var f = -1 + var j = 0 + while j < len(kinds) { if kinds[j] == prof_chunk_kind[i] and bands[j] == prof_chunk_band[i] { f = j }; j += 1 } + if f < 0 { + push(kinds, prof_chunk_kind[i]); push(bands, prof_chunk_band[i]) + push(tot, 0); push(cnt, 0); push(mx, 0) + f = len(kinds) - 1 + } + tot[f] = tot[f] + prof_chunk_us[i] + cnt[f] = cnt[f] + 1 + if prof_chunk_us[i] > mx[f] { mx[f] = prof_chunk_us[i] } + i += 1 + } + var k = 0 + while k < len(kinds) { + print(` kind {string(kinds[k])} band {string(bands[k])}: {string(cnt[k])} chunks, mean {string(tot[k] / cnt[k])} us, worst {string(mx[k])} us, total {string(tot[k] / 1000)} ms`) + k += 1 + } + # the per-frame distribution of generation time: this is the hitch itself + if prof_gen_us == null or len(prof_gen_us) < 16 { return } + let sorted = new []long + var a = 8 + while a < len(prof_gen_us) { push(sorted, prof_gen_us[a]); a += 1 } + var x = 1 + while x < len(sorted) { + let v = sorted[x] + var y = x - 1 + while y >= 0 and sorted[y] > v { sorted[y + 1] = sorted[y]; y -= 1 } + sorted[y + 1] = v + x += 1 + } + let n = len(sorted) + var busy = 0 + var t: long = 0 + var z = 0 + while z < n { if sorted[z] > 0 { busy += 1 }; t += sorted[z]; z += 1 } + print(` generation per frame (us): p95 {string(sorted[(n * 95) / 100])} p99 {string(sorted[(n * 99) / 100])} worst {string(sorted[n - 1])} frames that generated: {string(busy)} of {string(n)} total {string(t / 1000)} ms`) +} + +function prof_gen_frame() -> void { + if not prof_on { return } + if prof_gen == null { + prof_gen = new []int; prof_ft = new []long + prof_gen_us = new []long; prof_layer_us = new []long + prof_bake_us = new []long; prof_dt = new []long; prof_up = new []long + prof_cpu_us = new []long; prof_game_us = new []long + prof_mark_us = new []long; prof_mark_who = new []pointer + } + push(prof_gen, prof_gen_cur) + prof_gen_cur = 0 + let now = gl_now_us() + var dtf: long = 0 + if prof_last_us != 0 { push(prof_ft, now - prof_last_us); dtf = now - prof_last_us } + prof_last_us = now + # everything the frame just ended spent on work it only does sometimes + push(prof_dt, dtf) + push(prof_gen_us, prof_gen_us_cur) + push(prof_layer_us, prof_layer_us_cur) + push(prof_bake_us, prof_bake_us_cur) + push(prof_up, prof_up_cur) + var cpu: long = 0 + if prof_pre_swap != 0 and dtf != 0 { cpu = prof_pre_swap - (now - dtf) } + push(prof_cpu_us, cpu) + push(prof_game_us, prof_game_us_cur) + push(prof_mark_us, prof_mark_best) + if prof_mark_name == null { push(prof_mark_who, "-") } else { push(prof_mark_who, prof_mark_name) } + prof_gen_us_cur = 0; prof_layer_us_cur = 0; prof_bake_us_cur = 0; prof_up_cur = 0; prof_game_us_cur = 0 +} + +# the distribution of REAL frame times: stutter lives in the tail, not the mean +function prof_ft_report() -> void { + if not prof_on { return } + if prof_ft == null or len(prof_ft) < 16 { return } + let sorted = new []long + var i = 8 + while i < len(prof_ft) { push(sorted, prof_ft[i]); i += 1 } + var a = 1 + while a < len(sorted) { + let v = sorted[a] + var b = a - 1 + while b >= 0 and sorted[b] > v { sorted[b + 1] = sorted[b]; b -= 1 } + sorted[b + 1] = v + a += 1 + } + let n = len(sorted) + let med = sorted[n / 2] + var over = 0 + var j = 0 + while j < n { if sorted[j] > med * 2 { over += 1 }; j += 1 } + print("") + print("REAL frame time (us):") + print(` median {string(med)} p95 {string(sorted[(n * 95) / 100])} p99 {string(sorted[(n * 99) / 100])} worst {string(sorted[n - 1])}`) + # A hitch is not the mean moving: it is the count of frames that took noticeably + # longer than the frame before them. 1.3x median is about where it stops being smooth. + var o13 = 0 + var o15 = 0 + var q = 0 + while q < n { + if sorted[q] * 10 > med * 13 { o13 += 1 } + if sorted[q] * 2 > med * 3 { o15 += 1 } + q += 1 + } + # How much time the run spent being slower than itself: the sum of every frame's + # excess over 1.2x the median. One number that goes down when hitching goes down, and + # that a handful of unlucky frames cannot dominate the way a maximum can. + var excess: long = 0 + q = 0 + while q < n { + let lim = (med * 12) / 10 + if sorted[q] > lim { excess = excess + (sorted[q] - lim) } + q += 1 + } + print(` fps at median {string(1000000 / med)} frames over 1.3x median: {string(o13)}, over 1.5x: {string(o15)}, over 2x: {string(over)} — of {string(n)}`) + print(` stutter: {string(excess / 1000)} ms of frame time beyond 1.2x median over the run`) + print(` streaming totals over the run: walk {string(stream_us_walk / 1000)} ms (generate {string(stream_us_gen / 1000)} ms, gather {string(stream_us_gather / 1000)} ms), {string(stream_walks)} stream-walks`) +} + +# The slowest frames of the run, with the once-in-a-while CPU work that landed in them. +# An average never shows a hitch; this is the list of the frames you actually felt. +function prof_hitch_report() -> void { + if not prof_on or prof_dt == null or len(prof_dt) < 32 { return } + let n = len(prof_dt) + # median, for a sense of what "slow" means here + let sorted = new []long + var i = 8 + while i < n { push(sorted, prof_dt[i]); i += 1 } + var a = 1 + while a < len(sorted) { + let v = sorted[a] + var b = a - 1 + while b >= 0 and sorted[b] > v { sorted[b + 1] = sorted[b]; b -= 1 } + sorted[b + 1] = v + a += 1 + } + let med = sorted[len(sorted) / 2] + print("") + print(`the 20 slowest frames (median {string(med / 1000)}.{string((med / 100) % 10)} ms), and what was in them:`) + print(" frame dt cpu gpu-wait cover-gen game uploaded slowest CPU phase") + var shown = 0 + var cut: long = sorted[len(sorted) - 1] + while shown < 20 and cut > med { + # the next slowest frame at or below `cut` + var best = -1 + var bestv: long = -1 + var k = 8 + while k < n { + if prof_dt[k] <= cut and prof_dt[k] > bestv { bestv = prof_dt[k]; best = k } + k += 1 + } + if best < 0 { return } + print(` {Text.pad_left(string(best), 6)} {Text.pad_left(string(prof_dt[best]), 6)}us {Text.pad_left(string(prof_cpu_us[best]), 7)}us {Text.pad_left(string(prof_dt[best] - prof_cpu_us[best]), 8)}us {Text.pad_left(string(prof_gen_us[best]), 7)}us {Text.pad_left(string(prof_game_us[best]), 7)}us {Text.pad_left(string(prof_up[best] / 1024), 7)}KB {Text.pad_right(prof_mark_who[best], 18)} {Text.pad_left(string(prof_mark_us[best]), 7)}us`) + cut = bestv - 1 + shown += 1 + } +} + +function prof_gen_report() -> void { + if not prof_on { return } + if prof_gen == null or len(prof_gen) < 8 { return } + let sorted = new []int + var i = 8 # skip the first frames: one-off initial fill + while i < len(prof_gen) { push(sorted, prof_gen[i]); i += 1 } + var a = 1 + while a < len(sorted) { + let v = sorted[a] + var b = a - 1 + while b >= 0 and sorted[b] > v { sorted[b + 1] = sorted[b]; b -= 1 } + sorted[b + 1] = v + a += 1 + } + let n = len(sorted) + var total = 0 + var busy = 0 + var j = 0 + while j < n { total += sorted[j]; if sorted[j] > 0 { busy += 1 }; j += 1 } + print("") + print("ground cover generated per frame (the source of walking stutter):") + print(` frames that generated anything: {string(busy)} of {string(n)}`) + print(` median {string(sorted[n / 2])} p95 {string(sorted[(n * 95) / 100])} worst {string(sorted[n - 1])} total {string(total)}`) +} diff --git a/packages/ludic.render3d/programs.ludic b/packages/ludic.render3d/programs.ludic new file mode 100644 index 00000000..0dcef821 --- /dev/null +++ b/packages/ludic.render3d/programs.ludic @@ -0,0 +1,116 @@ +# ============================================================================ +# programs.ludic — GLSL from files. A shader file carries no #version line; the +# loader prepends "#version 410 core", any per-variant defines, and the shared +# noise.glsl + lighting.glsl chunks for fragment stages, then compiles it. +# ============================================================================ + +# Where the renderer's own files are. The shaders belong to this package and ship with +# it — in the Ludic checkout they are under packages/, and in an installed toolchain +# under $LUDIC_HOME/packages/ — so a game built outside the Ludic tree does not have to +# copy them in. The scanned CC0 materials are the other half: too large to ship with a +# toolchain and redistributable from their origin, so they are fetched into the project +# (`ludic assets`) and read from there. +var r3d_root: string = "packages/ludic.render3d" # where shaders/ lives +var r3d_assets: string = "assets/polyhaven" # where the CC0 assets live +var r3d_root_found: bool = false +# defines prepended to EVERY program (set before any is built): renderer-wide switches +var r3d_global_defs: string = "" +var r3d_noise_src: string = null +var r3d_lighting_src: string = null + +function r3d_set_paths(root: string, assets: string) -> void { r3d_root = root; r3d_assets = assets } + +# The install root, as the compiler computes it: $LUDIC_HOME, else the directory of the +# `ludic` on PATH. A game running from its own tree finds this package there. +function r3d_home() -> string { + let env = Os.env("LUDIC_HOME") + if env != null and env != "" { return env } + return `{Os.env("HOME")}/.ludic` +} + +# Settle r3d_root on first use: the package as checked out beside the project, else the +# copy that ships with the toolchain. +function r3d_find_root() -> void { + if r3d_root_found { return } + r3d_root_found = true + if Fs.exists(`{r3d_root}/shaders/lighting.glsl`) { return } + let home = r3d_home() + let alt = `{home}/packages/ludic.render3d` + if Fs.exists(`{alt}/shaders/lighting.glsl`) { r3d_root = alt; return } + print(`r3d: cannot find the renderer's shaders (looked in {r3d_root}/shaders and {alt}/shaders)`) +} + +function r3d_shader_file(name: string) -> string { + r3d_find_root() + let path = `{r3d_root}/shaders/{name}` + let s = Fs.read_text(path) + if s == null { print(`r3d: missing shader {path}`); return "" } + return s +} + +function r3d_shader_src(name: string, defines: string, is_frag: bool) -> string { + if r3d_noise_src == null { r3d_noise_src = r3d_shader_file("noise.glsl") } + if r3d_lighting_src == null { r3d_lighting_src = r3d_shader_file("lighting.glsl") } + var s = "#version 410 core\n" + r3d_global_defs + defines + if is_frag { s = s + r3d_noise_src + r3d_lighting_src } + return s + r3d_shader_file(name) +} + +# Build a program with tessellation control/evaluation between vertex and fragment. +function r3d_program_tess(vs: string, tcs: string, tes: string, fs: string, defines: string) -> int { + let p = gl_program5(r3d_shader_src(vs, defines, false), r3d_shader_src(tcs, defines, false), + r3d_shader_src(tes, defines, false), null, r3d_shader_src(fs, defines, true)) + if p == 0 { print(`r3d: tess program failed: {vs} + {tcs} + {tes} + {fs}`) } + return p +} + +# Build a program from a vertex + fragment file pair (defines apply to both). +function r3d_program(vs: string, fs: string, defines: string) -> int { + let p = gl_program(r3d_shader_src(vs, defines, false), r3d_shader_src(fs, defines, true)) + if p == 0 { print(`r3d: program failed: {vs} + {fs}`) } + return p +} + +# Bind a texture to a unit and point a sampler uniform at it. +function r3d_bind_tex(prog: int, name: string, unit: int, target: int, tex: int) -> void { + gl_active_texture(GL_TEXTURE0 + unit) + gl_bind_texture(target, tex) + gl_uniform1i(gl_get_uniform_location(prog, name), unit) +} +function r3d_bind_2d(prog: int, name: string, unit: int, tex: int) -> void { r3d_bind_tex(prog, name, unit, GL_TEXTURE_2D, tex) } + +# A framebuffer with one colour texture (and optionally a depth texture). +property Target { + fbo: int = 0, + color: int = 0, + depth: int = 0, + w: int = 0, + h: int = 0 +} +function target_new(w: int, h: int, ifmt: int, fmt: int, ty: int, with_depth: bool, filter: int) -> Target { + let t = new Target + t.w = w; t.h = h + t.fbo = gl_framebuffer() + gl_bind_framebuffer(GL_FRAMEBUFFER, t.fbo) + t.color = tex_target(w, h, ifmt, fmt, ty, filter) + gl_framebuffer_texture2d(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, t.color, 0) + if with_depth { + t.depth = tex_target(w, h, GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT, GL_NEAREST) + gl_framebuffer_texture2d(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, t.depth, 0) + } + let st = gl_check_framebuffer_status(GL_FRAMEBUFFER) + if st != GL_FRAMEBUFFER_COMPLETE { print(`r3d: framebuffer incomplete {st} ({w}x{h})`) } + gl_bind_framebuffer(GL_FRAMEBUFFER, 0) + return t +} +function target_free(t: Target) -> void { + if t == null { return } + let ids = gl_scratch() + ids[0] = t.fbo; gl_delete_framebuffers(1, ids) + ids[0] = t.color; gl_delete_textures(1, ids) + if t.depth != 0 { ids[0] = t.depth; gl_delete_textures(1, ids) } +} +function target_bind(t: Target) -> void { + gl_bind_framebuffer(GL_FRAMEBUFFER, t.fbo) + gl_viewport(0, 0, t.w, t.h) +} diff --git a/packages/ludic.render3d/quat.ludic b/packages/ludic.render3d/quat.ludic new file mode 100644 index 00000000..4dc2f749 --- /dev/null +++ b/packages/ludic.render3d/quat.ludic @@ -0,0 +1,95 @@ +# ============================================================================ +# quat.ludic — unit quaternions (x, y, z, w) as 4-word float-bit buffers, for +# skeletal poses. Same conventions as fmath.ludic: float bits in words, column- +# major matrices, o may alias its inputs unless stated. +# ============================================================================ + +function q_new() -> words { let q = words(4); q_identity(q); return q } +function q_identity(q: words) -> void { q[0] = F_ZERO; q[1] = F_ZERO; q[2] = F_ZERO; q[3] = F_ONE } +function q_set(q: words, x: int, y: int, z: int, w: int) -> void { q[0] = x; q[1] = y; q[2] = z; q[3] = w } +function q_copy(o: words, a: words) -> void { o[0] = a[0]; o[1] = a[1]; o[2] = a[2]; o[3] = a[3] } +# the idx-th quaternion of a packed buffer +function q_load(o: words, src: words, idx: int) -> void { for i in 0 .. 4 { o[i] = src[idx * 4 + i] } } +function q_store(dst: words, idx: int, a: words) -> void { for i in 0 .. 4 { dst[idx * 4 + i] = a[i] } } + +# a rotation of `angle` radians about the unit axis (ax, ay, az) +function q_axis_angle(o: words, ax: int, ay: int, az: int, angle: int) -> void { + let h = f_mul(angle, F_HALF) + let s = f_sin(h) + o[0] = f_mul(ax, s); o[1] = f_mul(ay, s); o[2] = f_mul(az, s); o[3] = f_cos(h) +} +# o = a * b (apply b first, then a); o may alias a or b +function q_mul(o: words, a: words, b: words) -> void { + let ax = a[0]; let ay = a[1]; let az = a[2]; let aw = a[3] + let bx = b[0]; let by = b[1]; let bz = b[2]; let bw = b[3] + let x = f_sub(f_add(f_add(f_mul(aw, bx), f_mul(ax, bw)), f_mul(ay, bz)), f_mul(az, by)) + let y = f_add(f_add(f_sub(f_mul(aw, by), f_mul(ax, bz)), f_mul(ay, bw)), f_mul(az, bx)) + let z = f_add(f_sub(f_add(f_mul(aw, bz), f_mul(ax, by)), f_mul(ay, bx)), f_mul(az, bw)) + let w = f_sub(f_sub(f_sub(f_mul(aw, bw), f_mul(ax, bx)), f_mul(ay, by)), f_mul(az, bz)) + o[0] = x; o[1] = y; o[2] = z; o[3] = w +} +function q_conj(o: words, a: words) -> void { o[0] = f_neg(a[0]); o[1] = f_neg(a[1]); o[2] = f_neg(a[2]); o[3] = a[3] } +function q_normalize(q: words) -> void { + let l = f_sqrt(f_add(f_add(f_mul(q[0], q[0]), f_mul(q[1], q[1])), f_add(f_mul(q[2], q[2]), f_mul(q[3], q[3])))) + if l == 0 { q_identity(q); return } + let inv = f_div(F_ONE, l) + for i in 0 .. 4 { q[i] = f_mul(q[i], inv) } +} +# normalised linear blend from a to b (shortest arc), fine for the small steps a pose takes +function q_nlerp(o: words, a: words, b: words, t: int) -> void { + var d = f_add(f_add(f_mul(a[0], b[0]), f_mul(a[1], b[1])), f_add(f_mul(a[2], b[2]), f_mul(a[3], b[3]))) + var sg = F_ONE + if f_ls(d, F_ZERO) { sg = f_neg(F_ONE) } + for i in 0 .. 4 { o[i] = f_lerp(a[i], f_mul(b[i], sg), t) } + q_normalize(o) +} +# rotate the vector v by q: o = q v q* +function q_rotate(o: words, q: words, v: words) -> void { + let qx = q[0]; let qy = q[1]; let qz = q[2]; let qw = q[3] + # t = 2 * cross(q.xyz, v) + let tx = f_mul(F_TWO, f_sub(f_mul(qy, v[2]), f_mul(qz, v[1]))) + let ty = f_mul(F_TWO, f_sub(f_mul(qz, v[0]), f_mul(qx, v[2]))) + let tz = f_mul(F_TWO, f_sub(f_mul(qx, v[1]), f_mul(qy, v[0]))) + # o = v + w t + cross(q.xyz, t) + let x = f_add(f_add(v[0], f_mul(qw, tx)), f_sub(f_mul(qy, tz), f_mul(qz, ty))) + let y = f_add(f_add(v[1], f_mul(qw, ty)), f_sub(f_mul(qz, tx), f_mul(qx, tz))) + let z = f_add(f_add(v[2], f_mul(qw, tz)), f_sub(f_mul(qx, ty), f_mul(qy, tx))) + o[0] = x; o[1] = y; o[2] = z +} +# pitch about X, yaw about Y, roll about Z, composed as yaw * pitch * roll +var q_scratch: words = null +function q_euler(o: words, pitch: int, yaw: int, roll: int) -> void { + if q_scratch == null { q_scratch = words(16) } + let qx = q_scratch; let qy = mem_off(q_scratch, 16); let qz = mem_off(q_scratch, 32); let t = mem_off(q_scratch, 48) + q_axis_angle(qx, F_ONE, F_ZERO, F_ZERO, pitch) + q_axis_angle(qy, F_ZERO, F_ONE, F_ZERO, yaw) + q_axis_angle(qz, F_ZERO, F_ZERO, F_ONE, roll) + q_mul(t, qy, qx) + q_mul(o, t, qz) +} +# the rotation matrix of q (column-major, translation cleared) +function q_to_m4(m: words, q: words) -> void { + let x = q[0]; let y = q[1]; let z = q[2]; let w = q[3] + let xx = f_mul(x, x); let yy = f_mul(y, y); let zz = f_mul(z, z) + let xy = f_mul(x, y); let xz = f_mul(x, z); let yz = f_mul(y, z) + let wx = f_mul(w, x); let wy = f_mul(w, y); let wz = f_mul(w, z) + m[0] = f_sub(F_ONE, f_mul(F_TWO, f_add(yy, zz))) + m[1] = f_mul(F_TWO, f_add(xy, wz)) + m[2] = f_mul(F_TWO, f_sub(xz, wy)) + m[3] = F_ZERO + m[4] = f_mul(F_TWO, f_sub(xy, wz)) + m[5] = f_sub(F_ONE, f_mul(F_TWO, f_add(xx, zz))) + m[6] = f_mul(F_TWO, f_add(yz, wx)) + m[7] = F_ZERO + m[8] = f_mul(F_TWO, f_add(xz, wy)) + m[9] = f_mul(F_TWO, f_sub(yz, wx)) + m[10] = f_sub(F_ONE, f_mul(F_TWO, f_add(xx, yy))) + m[11] = F_ZERO + m[12] = F_ZERO; m[13] = F_ZERO; m[14] = F_ZERO; m[15] = F_ONE +} +# m = translate(t) * rotate(q) * scale(s) +function m4_trs_q(m: words, tx: int, ty: int, tz: int, q: words, sx: int, sy: int, sz: int) -> void { + q_to_m4(m, q) + for r in 0 .. 3 { m[r] = f_mul(m[r], sx); m[4 + r] = f_mul(m[4 + r], sy); m[8 + r] = f_mul(m[8 + r], sz) } + m[12] = tx; m[13] = ty; m[14] = tz +} diff --git a/packages/ludic.render3d/r3d.ludic b/packages/ludic.render3d/r3d.ludic new file mode 100644 index 00000000..8dd59e71 --- /dev/null +++ b/packages/ludic.render3d/r3d.ludic @@ -0,0 +1,26 @@ +# ============================================================================ +# ludic.render3d — a physically based 3D renderer on Gl.* (OpenGL 4.1 core). +# Import this one file; the game supplies scene_draw() / scene_draw_casters(). +# ============================================================================ +import "fmath.ludic" +import "prof.ludic" +import "programs.ludic" +import "texture.ludic" +import "mesh.ludic" +import "camera.ludic" +import "sky.ludic" +import "daylight.ludic" +import "terrain.ludic" +import "collide.ludic" +import "overlay.ludic" +import "shadow.ludic" +import "post.ludic" +import "quat.ludic" +import "gltf.ludic" +import "skin.ludic" +import "scatter.ludic" +import "actor.ludic" +import "stream.ludic" +import "grass.ludic" +import "water.ludic" +import "render.ludic" diff --git a/packages/ludic.render3d/render.ludic b/packages/ludic.render3d/render.ludic new file mode 100644 index 00000000..b611d326 --- /dev/null +++ b/packages/ludic.render3d/render.ludic @@ -0,0 +1,206 @@ +# ============================================================================ +# render.ludic — the frame. Shadow cascades, the HDR scene pass (terrain, the +# scene's objects, the sky), bloom, and the tonemapped composite to the screen. +# The scene (what the game places in the world) hooks in through scene_draw / +# scene_draw_casters, which the demo defines. +# ============================================================================ + +var r3d_sky_prog: int = 0 +var r3d_fog_density: int = 0 +var r3d_fog_falloff: int = 0 +var r3d_time: int = 0 +var r3d_ready: bool = false +# set before r3d_init to build the landscape from a real height map +var r3d_dem_path: string = null +var r3d_dem_min: int = 0 +var r3d_dem_max: int = 0 +var r3d_dem_base: int = 0 +var r3d_dem_ox: int = 0 +var r3d_dem_oz: int = 0 +var r3d_ortho_path: string = null +var r3d_debug: bool = false +var r3d_debug_shadow: bool = false +var r3d_debug_max: bool = false + +var r3d_cloud_shadow: int = 0x3F000000 # 0.5 + +var r3d_clip_y: int = 0xCF000000 # -2^31: no clipping +function fog_bind(prog: int) -> void { + u_f(gl_uniform(prog, "u_clip_y"), r3d_clip_y) + u_f(gl_uniform(prog, "u_spec_scale"), F_ONE) + u_f(gl_uniform(prog, "u_fog_density"), r3d_fog_density) + u_f(gl_uniform(prog, "u_fog_height_falloff"), r3d_fog_falloff) + var cs = r3d_cloud_shadow + if Os.has_env("R3D_NOCLOUD") { cs = F_ZERO } + u_f(gl_uniform(prog, "u_cloud_shadow"), cs) + u_f(gl_uniform(prog, "u_time"), r3d_time) +} + +# profiling switches (environment): R3D_NOSHADOW R3D_NOGI R3D_MSAA=n R3D_NOBLADES R3D_NOCARDS R3D_NOTREES R3D_NEAR=m +var r3d_test_frame: int = 0 +var r3d_test_resize: int = 0 +var r3d_no_shadow: bool = false +var r3d_no_trees: bool = false +var r3d_no_refl: bool = false +function r3d_env_flags() -> void { + r3d_no_shadow = Os.has_env("R3D_NOSHADOW") + r3d_no_trees = Os.has_env("R3D_NOTREES") + r3d_no_refl = Os.has_env("R3D_NOREFL") + if Os.has_env("R3D_DEBUG") { r3d_debug = true } + if Os.has_env("R3D_DBGSHADOW") { r3d_debug_shadow = true } + if Os.has_env("R3D_NOGI") { post_gi_strength = F_ZERO; post_ao_strength = F_ZERO; post_no_gi = true } + if Os.has_env("R3D_MSAA") { post_ms_samples = Text.to_int(Os.env("R3D_MSAA")) } + sc_skip_blade = Os.has_env("R3D_NOBLADES") + sc_skip_card = Os.has_env("R3D_NOCARDS") + sc_dbg_lod = Os.has_env("R3D_LODDBG") + if Os.has_env("R3D_ANISO") { + let a = Text.to_int(Os.env("R3D_ANISO")) + tex_anisotropy = 1.0 + if a >= 2 { tex_anisotropy = 2.0 } + if a >= 4 { tex_anisotropy = 4.0 } + if a >= 8 { tex_anisotropy = 8.0 } + if a >= 16 { tex_anisotropy = 16.0 } + } +} +function r3d_init(w: int, h: int, title: string) -> bool { + r3d_env_flags() + if not gl_open(w, h, title) { print("r3d: no OpenGL context"); return false } + if Os.has_env("R3D_NOVSYNC") { gl_vsync(0) } + var renderer: string = gl_get_string(GL_RENDERER) + print(`r3d: {gl_w}x{gl_h} on {renderer}`) + prof_init() + cam_init(fr(gl_w, gl_h)) + if not sky_load(r3d_assets + "/hdri/kloofendal_48d_partly_cloudy_puresky_4k.hdr") { return false } + daylight_init() + if r3d_dem_path != null { terrain_use_dem(r3d_dem_path, r3d_dem_min, r3d_dem_max, r3d_dem_base, r3d_dem_ox, r3d_dem_oz) } + if r3d_ortho_path != null { terrain_use_ortho(r3d_ortho_path) } + terrain_init() + shadow_init() + post_init(gl_w, gl_h) + scatter_init() + actor_init() + grass_init() + r3d_sky_prog = r3d_program("fullscreen.vert", "sky.frag", "") + r3d_fog_density = fl(0.00014) + r3d_fog_falloff = fl(0.002) + r3d_ready = true + gl_check("r3d init") + return true +} + +function r3d_draw_sky() -> void { + gl_depth_func(GL_LEQUAL) + gl_depth_mask(0) + gl_disable(GL_CULL_FACE) + let p = r3d_sky_prog + gl_use_program(p) + r3d_bind_2d(p, "u_sky", 0, sky_tex) + sky_bind_rot(p) + sky_bind_lighting(p) + u_mat4(gl_uniform(p, "u_inv_vp"), cam_inv_vp) + u_f(gl_uniform(p, "u_sky_gain"), fl(0.95)) + u_f(gl_uniform(p, "u_sky_sat"), fl(1.35)) + u_f(gl_uniform(p, "u_time"), r3d_time) + mesh_draw(sky_fullscreen) + gl_depth_mask(1) + gl_depth_func(GL_LESS) +} + +# the drawable changed size: the camera's aspect and every screen-sized target follow +function r3d_resize() -> void { + cam_aspect = fr(gl_w, gl_h) + cam_update() + post_free() + post_init(gl_w, gl_h) + if water_refl != null { target_free(water_refl); water_refl = null } + print(`r3d: resized to {gl_w}x{gl_h}`) +} +function r3d_frame(time: int) -> void { + if not r3d_ready { return } + if gl_resize_check() { r3d_resize() } + # R3D_RESIZE_AT=: rebuild every screen-sized buffer mid-run, as a window resize + # or a fullscreen change does. Headless has no window to resize, and this path is where + # a stale attachment or a texture freed twice shows up. + r3d_test_frame += 1 + if r3d_test_resize == 0 and Os.has_env("R3D_RESIZE_AT") { r3d_test_resize = Text.to_int(Os.env("R3D_RESIZE_AT")) } + # R3D_RESIZE_AT=: from frame n on, rebuild every screen-sized buffer every few + # frames at a different size, as dragging a window edge or entering fullscreen does. + if r3d_test_resize > 0 and r3d_test_frame >= r3d_test_resize and r3d_test_frame % 4 == 0 { + let step = (r3d_test_frame / 4) % 4 + var w = 1920; var h = 1080 + if step == 1 { w = 1440; h = 810 } + if step == 2 { w = 2560; h = 1440 } + if step == 3 { w = 1281; h = 721 } + gl_w = w; gl_h = h + r3d_resize() + } + r3d_time = time + # the frame's counters close here, before any of its own work: the window each of them + # covers is exactly one frame, from this point to the same point next time + prof_gen_frame() + prof_mark_start() + cam_begin_frame(post_frame, gl_w, gl_h) + # the height-field shadow rebakes as the light moves in steps (daylight), or with the sky yaw when there is no clock + if (not day_on and ter_shadow_yaw != sky_yaw) or ter_shadow_gen != day_gen { + ter_shadow_gen = day_gen + let t_bk = gl_now_us() + terrain_bake_shadow() + prof_bake_add(gl_now_us() - t_bk) + } + scatter_begin_frame() + prof_cpu_mark("shadow rebake") + stream_update_all() + prof_cpu_mark("streaming") + if not r3d_no_shadow { prof_begin("shadow"); shadow_pass(); prof_end() } + prof_cpu_mark("shadow pass") + if water_on and not r3d_no_refl { prof_begin("water reflection"); water_reflection_pass(); prof_end() } + prof_cpu_mark("reflection") + post_begin_scene() + prof_begin("terrain sun") + terrain_sun_prepare() + prof_end() + prof_begin("terrain") + terrain_draw() + prof_end() + prof_cpu_mark("terrain") + prof_begin("scene (vegetation)") + scene_draw() + prof_end() + prof_cpu_mark("vegetation") + prof_begin("grass") + grass_draw() + prof_end() + prof_cpu_mark("grass") + prof_begin("sky") + r3d_draw_sky() + prof_end() + prof_begin("resolve MSAA") + post_resolve() + prof_end() + # transparent water over the resolved frame: it tests against the frame's own + # depth and reads a copy of it for the depth tint and soft shores + if water_on { + prof_begin("water surface") + post_capture_scene() + target_bind(post_hdr) + gl_enable(GL_DEPTH_TEST) + gl_depth_func(GL_LESS) + water_draw(post_depth_copy.depth) + prof_end() + } + post_color = post_hdr.color + if not post_no_gi { prof_begin("SSAO/GI"); post_ssao_pass(); prof_end() } + if r3d_debug_max { tex_max(post_hdr.color, post_hdr.w, post_hdr.h, "hdr") } + prof_begin("bloom") + post_bloom_pass() + prof_end() + prof_begin("tonemap+exposure") + post_tonemap(post_color) + prof_end() + prof_cpu_mark("post") + prof_begin("prev-colour copy") + post_capture_prev() + prof_end() + prof_collect() + gl_check("frame") +} diff --git a/packages/ludic.render3d/scatter.ludic b/packages/ludic.render3d/scatter.ludic new file mode 100644 index 00000000..b22428a6 --- /dev/null +++ b/packages/ludic.render3d/scatter.ludic @@ -0,0 +1,1050 @@ +# ============================================================================ +# scatter.ludic — instanced vegetation and props. A Layer is one model placed +# many times (position, scale, yaw, seed, wind weight per instance). Each frame +# the instances are split by distance: the near ones draw as the full scanned +# mesh, the far ones as impostor cards baked from that mesh at load. +# ============================================================================ + +const INST_FLOATS: int = 8 + +property Impostor { + albedo: int = 0, + normal: int = 0, + tiles: int = 16, + radius: int = 0, + height: int = 0 +} +property Layer { + model: Model, + imp: Impostor, + foliage: bool = false, + wind: int = 0, # float bits + tint: words, + inst: words, # INST_FLOATS per instance + count: int = 0, + cap: int = 0, + near: int = 0, # float bits; instances beyond it draw as impostors (or not at all) + cull: int = 0, # float bits; instances beyond it are skipped (0 = never) + buf: int = 0, + n_near: int = 0, + imp_buf: int = 0, + sh_buf: int = 0, # every instance, for shadow casting (no cull, no LOD split) + n_sh: int = 0, + n_far: int = 0, + scratch: words, + last_cam: words, + rough: int = 0, + blade: bool = false, + flower: bool = false, + card: bool = false, + cheap: bool = false, # distant cover: no shadows, no wind, flat lighting + atlas: Impostor, + streamed: bool = false, # fed by a Stream: already frustum-culled per chunk, no split needed + grounded: bool = false, # the vertex shader stands each instance on the drawn terrain + view_gen: int = -1, # sc_view_gen this layer's partition was built for + # static layers with many instances are sorted into a cell grid once, and only the + # cells inside the view frustum (and within cull) are partitioned each frame + gcell: int = 0, # cell size (float bits); 0 = no grid + gx0: int = 0, + gz0: int = 0, + gnx: int = 0, + gnz: int = 0, + gstart: words, # per cell: first index into gsorted (ncell + 1 entries) + gsorted: words, # the instances, grouped by cell + gymin: words, # per cell height range (float bits) + gymax: words, + vis: words, # the instances gathered from visible cells this frame + n_vis: int = 0, + # A LOD chain: lods[k] is drawn for instances within lod_dist[k] (and beyond lod_dist[k-1]); + # past the last level the impostor takes over (or, if the last distance is 0, the last + # level runs out to the cull distance). lod_card[k] = 1 marks a level that is the layer's + # crossed card carrying its atlas (cover keeps its baked card as the far level). + lods: []Model, + n_lods: int = 0, + lod_dist: words, + lod_card: words, + lod_buf: words, + n_lod: words, + lvl: words # scratch: the level chosen per gathered instance +} + +# Two crossed unit quads (x in [-0.5, 0.5], y in [0, 1]), attribute 0 = pos, +# 1 = the quad's facing normal, 2 = uv. Scaled per layer to the atlas card size. +function model_cross_card() -> Model { + let model = new Model + model.prims = new []Prim + let pr = new Prim + let m = new Mesh + m.vao = gl_vao() + let v = gl_floats(8 * 8) + var k = 0 + for q in 0 .. 2 { + for c in 0 .. 4 { + var sx = f_neg(F_HALF); var sy = F_ZERO; var u = F_ZERO; var vv = F_ZERO + if c == 1 or c == 2 { sx = F_HALF; u = F_ONE } + if c == 2 or c == 3 { sy = F_ONE; vv = F_ONE } + if q == 0 { gl_put_bits(v, k, sx); gl_put_bits(v, k + 1, sy); gl_put_bits(v, k + 2, F_ZERO); gl_put_bits(v, k + 3, F_ZERO); gl_put_bits(v, k + 4, F_ZERO); gl_put_bits(v, k + 5, f_neg1()) } + else { gl_put_bits(v, k, F_ZERO); gl_put_bits(v, k + 1, sy); gl_put_bits(v, k + 2, sx); gl_put_bits(v, k + 3, f_neg1()); gl_put_bits(v, k + 4, F_ZERO); gl_put_bits(v, k + 5, F_ZERO) } + gl_put_bits(v, k + 6, u); gl_put_bits(v, k + 7, vv) + k += 8 + } + } + m.vbo = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, m.vbo) + gl_buffer_data(GL_ARRAY_BUFFER, gl_bytes_of(64), v, GL_STATIC_DRAW) + gl_enable_vertex_attrib_array(0); gl_vertex_attrib_pointer(0, 3, GL_FLOAT, 0, 32, null) + gl_enable_vertex_attrib_array(1); gl_vertex_attrib_pointer(1, 3, GL_FLOAT, 0, 32, gl_ptr(null, 12)) + gl_enable_vertex_attrib_array(2); gl_vertex_attrib_pointer(2, 2, GL_FLOAT, 0, 32, gl_ptr(null, 24)) + free(v) + let idx = words(12) + idx[0] = 0; idx[1] = 1; idx[2] = 2; idx[3] = 0; idx[4] = 2; idx[5] = 3 + idx[6] = 4; idx[7] = 5; idx[8] = 6; idx[9] = 4; idx[10] = 6; idx[11] = 7 + m.ebo = gl_buffer() + gl_bind_buffer(GL_ELEMENT_ARRAY_BUFFER, m.ebo) + gl_buffer_data(GL_ELEMENT_ARRAY_BUFFER, 48, idx, GL_STATIC_DRAW) + free(idx) + m.count = 12 + gl_bind_vertex_array(0) + pr.mesh = m + if gltf_white == 0 { gltf_white = tex_solid(200, 200, 200, 255); gltf_flat = tex_solid(128, 128, 255, 255) } + pr.diff = gltf_white; pr.nrm = gltf_flat; pr.arm = gltf_white + push(model.prims, pr) + model.radius = F_HALF; model.height = F_ONE; model.tris = 4 + return model +} + +# A card layer: crossed cards carrying a single-tile atlas baked from `scan`. +function layer_cards(scan: Model, cap: int, wind: int, cull: int) -> Layer { + let l = layer_new(model_cross_card(), cap, true, wind, F_ZERO, cull) + l.card = true + l.atlas = impostor_bake(scan, 1, 512, 512) + return l +} + +# A lupine spike (1 m tall): a stem of two crossed quads (uv.x in [0,1]) and +# seven tiers of crossed floret quads (uv.x in [1,2]), coloured in the shader. +function model_lupine() -> Model { + let model = new Model + model.prims = new []Prim + let pr = new Prim + let m = new Mesh + m.vao = gl_vao() + # quads: stem x2 + tiers 12 x 2 + 3 leaves = 29 quads + let nq = 29 + let v = gl_floats(nq * 4 * 8) + let idx = words(nq * 6) + var k = 0 + var qi = 0 + for q in 0 .. nq { + var w = fl(0.012); var y0 = F_ZERO; var y1 = fl(0.62); var ukind = F_ZERO + var ang = F_ZERO + if q >= 2 and q < 26 { + let tier = (q - 2) / 2 + let t = fr(tier, 12) + w = f_mul(fl(0.05), f_sub(fl(1.1), t)) + y0 = f_add(fl(0.27), f_mul(t, fl(0.36))) + y1 = f_add(y0, fl(0.045)) + ukind = F_ONE + ang = f_mul(fr(tier, 12), fl(2.1)) + if (q & 1) == 1 { ang = f_add(ang, f_mul(F_PI, F_HALF)) } + } else if q >= 26 { + # a rosette of three leaves near the ground + w = fl(0.09); y0 = fl(0.02); y1 = fl(0.2); ukind = F_TWO + ang = f_mul(fr(q - 26, 3), f_mul(F_TWO, F_PI)) + } else { + if (q & 1) == 1 { ang = f_add(ang, f_mul(F_PI, F_HALF)) } + } + let cx = f_mul(f_cos(ang), w); let cz = f_mul(f_sin(ang), w) + for c in 0 .. 4 { + var sx = f_neg1(); var sy = y0; var u = F_ZERO + if c == 1 or c == 2 { sx = F_ONE; u = F_ONE } + if c == 2 or c == 3 { sy = y1 } + gl_put_bits(v, k, f_mul(cx, sx)); gl_put_bits(v, k + 1, sy); gl_put_bits(v, k + 2, f_mul(cz, sx)) + gl_put_bits(v, k + 3, f_neg(cz)); gl_put_bits(v, k + 4, fl(0.2)); gl_put_bits(v, k + 5, cx) + gl_put_bits(v, k + 6, f_add(ukind, u)) + var vv = sy + if ukind == F_ONE { vv = f_div(f_sub(sy, fl(0.27)), fl(0.4)) } + if ukind == F_TWO { vv = f_div(f_sub(sy, fl(0.02)), fl(0.18)) } + gl_put_bits(v, k + 7, vv) + k += 8 + } + let b = q * 4 + idx[qi] = b; idx[qi + 1] = b + 1; idx[qi + 2] = b + 2; idx[qi + 3] = b; idx[qi + 4] = b + 2; idx[qi + 5] = b + 3 + qi += 6 + } + m.vbo = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, m.vbo) + gl_buffer_data(GL_ARRAY_BUFFER, gl_bytes_of(nq * 4 * 8), v, GL_STATIC_DRAW) + gl_enable_vertex_attrib_array(0); gl_vertex_attrib_pointer(0, 3, GL_FLOAT, 0, 32, null) + gl_enable_vertex_attrib_array(1); gl_vertex_attrib_pointer(1, 3, GL_FLOAT, 0, 32, gl_ptr(null, 12)) + gl_enable_vertex_attrib_array(2); gl_vertex_attrib_pointer(2, 2, GL_FLOAT, 0, 32, gl_ptr(null, 24)) + free(v) + m.ebo = gl_buffer() + gl_bind_buffer(GL_ELEMENT_ARRAY_BUFFER, m.ebo) + gl_buffer_data(GL_ELEMENT_ARRAY_BUFFER, nq * 6 * 4, idx, GL_STATIC_DRAW) + free(idx) + m.count = nq * 6 + gl_bind_vertex_array(0) + pr.mesh = m + if gltf_white == 0 { gltf_white = tex_solid(200, 200, 200, 255); gltf_flat = tex_solid(128, 128, 255, 255) } + pr.diff = gltf_white; pr.nrm = gltf_flat; pr.arm = gltf_white + push(model.prims, pr) + model.radius = fl(0.08); model.height = fl(0.65); model.tris = nq * 2 + return model +} + +# A dense lupine for baking into a card: a stem, ~220 small floret quads in a +# tapering spiral (uv.x in [1,2]) and five leaves (uv.x in [2,3]). +function model_lupine_dense() -> Model { + let model = new Model + model.prims = new []Prim + let pr = new Prim + let m = new Mesh + m.vao = gl_vao() + let nfl = 220 + let nq = 2 + nfl + 5 + let v = gl_floats(nq * 4 * 8) + let idx = words(nq * 6) + var k = 0 + var qi = 0 + seed(5) + for q in 0 .. nq { + var w = fl(0.008); var y0 = F_ZERO; var y1 = fl(0.66); var ukind = F_ZERO + var ang = F_ZERO; var ox = F_ZERO; var oz = F_ZERO; var tilt = F_ZERO + if q >= 2 and q < 2 + nfl { + let t = fr(q - 2, nfl) + let yy = f_add(fl(0.28), f_mul(t, fl(0.4))) + ang = f_mul(fi(q), fl(2.39996)) # golden angle spiral + let rad = f_mul(fl(0.055), f_sub(fl(1.05), t)) + ox = f_mul(f_cos(ang), rad); oz = f_mul(f_sin(ang), rad) + w = f_mul(fl(0.028), f_sub(fl(1.1), f_mul(t, fl(0.5)))) + y0 = f_sub(yy, fl(0.016)); y1 = f_add(yy, fl(0.016)) + ukind = F_ONE + tilt = fl(0.6) + } else if q >= 2 + nfl { + w = fl(0.05); y0 = fl(0.03); y1 = fl(0.16); ukind = F_TWO + ang = f_mul(fr(q - 2 - nfl, 5), f_mul(F_TWO, F_PI)) + ox = f_mul(f_cos(ang), fl(0.05)); oz = f_mul(f_sin(ang), fl(0.05)) + } else { + if (q & 1) == 1 { ang = f_mul(F_PI, F_HALF) } + } + # the quad faces outward (its normal along the spiral radius), leaning out by `tilt` + let nx = f_cos(ang); let nz = f_sin(ang) + let tx = f_neg(nz); let tz = nx # tangent (quad width direction) + for c in 0 .. 4 { + var sx = f_neg1(); var sy = y0; var u = F_ZERO + if c == 1 or c == 2 { sx = F_ONE; u = F_ONE } + if c == 2 or c == 3 { sy = y1 } + var lean = F_ZERO + if c == 2 or c == 3 { lean = f_mul(tilt, w) } + gl_put_bits(v, k, f_add(f_add(ox, f_mul(tx, f_mul(sx, w))), f_mul(nx, lean))) + gl_put_bits(v, k + 1, sy) + gl_put_bits(v, k + 2, f_add(f_add(oz, f_mul(tz, f_mul(sx, w))), f_mul(nz, lean))) + gl_put_bits(v, k + 3, nx); gl_put_bits(v, k + 4, fl(0.35)); gl_put_bits(v, k + 5, nz) + gl_put_bits(v, k + 6, f_add(ukind, u)) + var vv = sy + if ukind == F_ONE { vv = f_div(f_sub(sy, fl(0.27)), fl(0.42)) } + if ukind == F_TWO { vv = f_div(f_sub(sy, fl(0.03)), fl(0.19)) } + gl_put_bits(v, k + 7, vv) + k += 8 + } + let b = q * 4 + idx[qi] = b; idx[qi + 1] = b + 1; idx[qi + 2] = b + 2; idx[qi + 3] = b; idx[qi + 4] = b + 2; idx[qi + 5] = b + 3 + qi += 6 + } + m.vbo = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, m.vbo) + gl_buffer_data(GL_ARRAY_BUFFER, gl_bytes_of(nq * 4 * 8), v, GL_STATIC_DRAW) + gl_enable_vertex_attrib_array(0); gl_vertex_attrib_pointer(0, 3, GL_FLOAT, 0, 32, null) + gl_enable_vertex_attrib_array(1); gl_vertex_attrib_pointer(1, 3, GL_FLOAT, 0, 32, gl_ptr(null, 12)) + gl_enable_vertex_attrib_array(2); gl_vertex_attrib_pointer(2, 2, GL_FLOAT, 0, 32, gl_ptr(null, 24)) + free(v) + m.ebo = gl_buffer() + gl_bind_buffer(GL_ELEMENT_ARRAY_BUFFER, m.ebo) + gl_buffer_data(GL_ELEMENT_ARRAY_BUFFER, nq * 6 * 4, idx, GL_STATIC_DRAW) + free(idx) + m.count = nq * 6 + gl_bind_vertex_array(0) + pr.mesh = m + if gltf_white == 0 { gltf_white = tex_solid(200, 200, 200, 255); gltf_flat = tex_solid(128, 128, 255, 255) } + pr.diff = gltf_white; pr.nrm = gltf_flat; pr.arm = gltf_white + push(model.prims, pr) + model.radius = fl(0.11); model.height = fl(0.68); model.tris = nq * 2 + return model +} + +# A procedural grass blade (1 m tall, 5 cm wide, curved): 5 rows of 2 vertices. +function model_blade() -> Model { + let model = new Model + model.prims = new []Prim + let pr = new Prim + let m = new Mesh + m.vao = gl_vao() + let rows = 5 + let v = gl_floats(rows * 2 * 8) + var k = 0 + for r in 0 .. rows { + let t = fr(r, rows - 1) + # never a zero-width tip: a sliver triangle extrapolates its attributes wildly + let taper = f_max(f_sub(F_ONE, f_mul(t, f_mul(t, f_sqrt(t)))), fl(0.12)) + let hw = f_mul(fl(0.05), taper) + let bend = f_mul(f_mul(t, t), fl(0.28)) + for sd in 0 .. 2 { + var x = f_neg(hw) + if sd == 1 { x = hw } + gl_put_bits(v, k, x); gl_put_bits(v, k + 1, t); gl_put_bits(v, k + 2, bend) + gl_put_bits(v, k + 3, F_ZERO); gl_put_bits(v, k + 4, fl(0.3)); gl_put_bits(v, k + 5, F_ONE) + gl_put_bits(v, k + 6, fi(sd)); gl_put_bits(v, k + 7, t) + k += 8 + } + } + m.vbo = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, m.vbo) + gl_buffer_data(GL_ARRAY_BUFFER, gl_bytes_of(rows * 2 * 8), v, GL_STATIC_DRAW) + gl_enable_vertex_attrib_array(0); gl_vertex_attrib_pointer(0, 3, GL_FLOAT, 0, 32, null) + gl_enable_vertex_attrib_array(1); gl_vertex_attrib_pointer(1, 3, GL_FLOAT, 0, 32, gl_ptr(null, 12)) + gl_enable_vertex_attrib_array(2); gl_vertex_attrib_pointer(2, 2, GL_FLOAT, 0, 32, gl_ptr(null, 24)) + free(v) + let ni = (rows - 1) * 6 + let idx = words(ni) + k = 0 + for r in 0 .. rows - 1 { + let a = r * 2 + idx[k] = a; idx[k + 1] = a + 1; idx[k + 2] = a + 2 + idx[k + 3] = a + 1; idx[k + 4] = a + 3; idx[k + 5] = a + 2 + k += 6 + } + m.ebo = gl_buffer() + gl_bind_buffer(GL_ELEMENT_ARRAY_BUFFER, m.ebo) + gl_buffer_data(GL_ELEMENT_ARRAY_BUFFER, ni * 4, idx, GL_STATIC_DRAW) + free(idx) + m.count = ni + gl_bind_vertex_array(0) + pr.mesh = m + if gltf_white == 0 { gltf_white = tex_solid(200, 200, 200, 255); gltf_flat = tex_solid(128, 128, 255, 255) } + pr.diff = gltf_white; pr.nrm = gltf_flat; pr.arm = gltf_white + push(model.prims, pr) + model.radius = fl(0.05); model.height = F_ONE; model.tris = ni / 3 + return model +} + +var sc_prog: int = 0 +var sc_prog_fol: int = 0 +var sc_prog_wind: int = 0 +var sc_prog_blade: int = 0 +var sc_prog_flower: int = 0 +var sc_prog_card: int = 0 +var sc_prog_card_shadow: int = 0 +var sc_prog_card_cheap: int = 0 +var sc_blade_base: words = null +var sc_blade_tip: words = null +var sc_blade_tint: words = null +var sc_prog_shadow: int = 0 +var sc_prog_shadow_wind: int = 0 +var sc_prog_shadow_fol: int = 0 # foliage meshes: alpha-tested casters +var sc_imp_prog: int = 0 +var sc_imp_prog_shadow: int = 0 +var sc_bake_prog: int = 0 +var sc_bake_card_prog: int = 0 +var sc_bake_flower_prog: int = 0 +var sc_card: Mesh = null +var sc_ident_buf: int = 0 +var sc_layers: []Layer = null +var sc_debug_dump: bool = false +var sc_printed: bool = false +var sc_a2c: bool = true + +function scatter_init() -> void { + sc_prog = r3d_program("model.vert", "model.frag", "") + sc_prog_fol = r3d_program("model.vert", "model.frag", "#define FOLIAGE\n#define WIND\n#define ALPHA_TEST\n") + sc_prog_wind = r3d_program("model.vert", "model.frag", "#define WIND\n") + sc_prog_blade = r3d_program("model.vert", "model.frag", "#define FOLIAGE\n#define WIND\n#define BLADE\n") + sc_prog_flower = r3d_program("model.vert", "model.frag", "#define FOLIAGE\n#define WIND\n#define FLOWER\n") + sc_prog_card = r3d_program("model.vert", "model.frag", "#define FOLIAGE\n#define WIND\n#define CARD\n") + sc_prog_card_shadow = r3d_program("model.vert", "model.frag", "#define SHADOW_PASS\n#define WIND\n#define CARD\n") + sc_prog_card_cheap = r3d_program("model.vert", "model.frag", "#define CARD\n#define CHEAP\n") + # a dry alpine meadow: brown-olive roots, straw with a little green at the tips + sc_blade_base = v3_new(fl(0.045), fl(0.06), fl(0.025)) + sc_blade_tip = v3_new(fl(0.22), fl(0.27), fl(0.13)) + sc_blade_tint = v3_new(F_ONE, F_ONE, F_ONE) + sc_prog_shadow = r3d_program("model.vert", "shadow.frag", "#define SHADOW_PASS\n") + sc_prog_shadow_wind = r3d_program("model.vert", "shadow.frag", "#define SHADOW_PASS\n#define WIND\n") + sc_prog_shadow_fol = r3d_program("model.vert", "shadow.frag", "#define SHADOW_PASS\n#define WIND\n#define ALPHA_TEST\n") + sc_imp_prog = r3d_program("impostor.vert", "impostor.frag", "") + sc_imp_prog_shadow = r3d_program("impostor.vert", "impostor.frag", "#define SHADOW_PASS\n") + sc_bake_prog = r3d_program("model.vert", "bake.frag", "") + sc_bake_flower_prog = r3d_program("model.vert", "bake.frag", "#define FLOWER\n") + sc_bake_card_prog = r3d_program("model.vert", "bake.frag", "#define CARD\n") + sc_card = mesh_card() + # a single identity instance, for baking + let one = gl_floats(INST_FLOATS) + for i in 0 .. INST_FLOATS { gl_put_bits(one, i, F_ZERO) } + gl_put_bits(one, 3, F_ONE); gl_put_bits(one, 5, F_ONE) + sc_ident_buf = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, sc_ident_buf) + gl_buffer_data(GL_ARRAY_BUFFER, INST_FLOATS * 4, one, GL_STATIC_DRAW) + free(one) + sc_layers = new []Layer +} + +# attach a GL instance buffer to a VAO at attributes 3, 4 +function scatter_attach(vao: int, buf: int) -> void { + gl_bind_vertex_array(vao) + gl_bind_buffer(GL_ARRAY_BUFFER, buf) + gl_enable_vertex_attrib_array(3) + gl_vertex_attrib_pointer(3, 4, GL_FLOAT, 0, INST_FLOATS * 4, null) + gl_vertex_attrib_divisor(3, 1) + gl_enable_vertex_attrib_array(4) + gl_vertex_attrib_pointer(4, 4, GL_FLOAT, 0, INST_FLOATS * 4, gl_ptr(null, 16)) + gl_vertex_attrib_divisor(4, 1) + gl_bind_vertex_array(0) +} + +function layer_new(model: Model, cap: int, foliage: bool, wind: int, near: int, cull: int) -> Layer { + let l = new Layer + l.model = model + l.cap = cap + l.foliage = foliage + l.wind = wind + l.near = near + l.cull = cull + l.tint = v3_new(F_ONE, F_ONE, F_ONE) + l.inst = words(cap * INST_FLOATS) + l.scratch = words(cap * INST_FLOATS) + l.last_cam = v3_new(fi(100000), F_ZERO, F_ZERO) + l.buf = gl_buffer() + l.imp_buf = gl_buffer() + l.sh_buf = gl_buffer() + l.rough = F_ONE + for i in 0 .. len(model.prims) { scatter_attach(model.prims[i].mesh.vao, l.buf) } + push(sc_layers, l) + return l +} + +function layer_add(l: Layer, x: int, y: int, z: int, scale: int, yaw: int, seed: int, wind: int) -> void { + if l.count >= l.cap { return } + let o = l.count * INST_FLOATS + l.inst[o] = x; l.inst[o + 1] = y; l.inst[o + 2] = z; l.inst[o + 3] = scale + l.inst[o + 4] = f_sin(yaw); l.inst[o + 5] = f_cos(yaw); l.inst[o + 6] = seed; l.inst[o + 7] = wind + l.count += 1 +} + +# ---- impostors --------------------------------------------------------------------- +var sc_bake_flower: bool = false +function impostor_bake(model: Model, tiles: int, tw: int, th: int) -> Impostor { + let im = new Impostor + im.tiles = tiles + im.radius = f_mul(model.radius, fl(1.02)) + im.height = model.height + let aw = tiles * tw + im.albedo = tex_target(aw, th, GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, GL_LINEAR) + im.normal = tex_target(aw, th, GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, GL_LINEAR) + let fbo = gl_framebuffer() + gl_bind_framebuffer(GL_FRAMEBUFFER, fbo) + gl_framebuffer_texture2d(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, im.albedo, 0) + gl_framebuffer_texture2d(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, GL_TEXTURE_2D, im.normal, 0) + let ids = gl_scratch() + gl_gen_renderbuffers(1, ids) + let rb = ids[0] + gl_bind_renderbuffer(GL_RENDERBUFFER, rb) + gl_renderbuffer_storage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, aw, th) + gl_framebuffer_renderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rb) + let bufs = words(2) + bufs[0] = GL_COLOR_ATTACHMENT0; bufs[1] = GL_COLOR_ATTACHMENT1 + gl_draw_buffers(2, bufs) + gl_viewport(0, 0, aw, th) + gl_clear_color(0.0, 0.0, 0.0, 0.0) + gl_clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) + gl_enable(GL_DEPTH_TEST) + gl_depth_func(GL_LESS) + gl_disable(GL_CULL_FACE) + gl_disable(GL_BLEND) + # the model's prims temporarily take the identity instance + for i in 0 .. len(model.prims) { scatter_attach(model.prims[i].mesh.vao, sc_ident_buf) } + let view = m4_new(); let proj = m4_new() + let eye = words(3); let at = words(3); let up = v3_new(F_ZERO, F_ONE, F_ZERO) + let cy = f_add(model.ymin, f_mul(model.height, F_HALF)) + let r = im.radius + let hh = f_mul(model.height, F_HALF) + var bake = sc_bake_prog + if sc_bake_flower { bake = sc_bake_flower_prog } + gl_use_program(bake) + for t in 0 .. tiles { + let a = f_mul(f_mul(F_TWO, F_PI), fr(t, tiles)) + v3_set(at, F_ZERO, cy, F_ZERO) + # a touch of elevation (the viewer usually looks slightly down at a tree) + v3_set(eye, f_mul(f_sin(a), f_mul(r, fi(4))), f_add(cy, f_mul(r, fl(0.5))), f_neg(f_mul(f_cos(a), f_mul(r, fi(4))))) + m4_look_at(view, eye, at, up) + m4_ortho(proj, f_neg(r), r, f_neg(hh), hh, fl(0.1), f_mul(r, fi(9))) + u_mat4(gl_uniform(bake, "u_view"), view) + u_mat4(gl_uniform(bake, "u_proj"), proj) + u_f(gl_uniform(bake, "u_wind"), F_ZERO) + gl_viewport(t * tw, 0, tw, th) + for i in 0 .. len(model.prims) { + let pr = model.prims[i] + r3d_bind_2d(bake, "u_diff", 0, pr.diff) + r3d_bind_2d(bake, "u_arm", 2, pr.arm) + mesh_draw_instanced(pr.mesh, 1) + } + } + free(view); free(proj); free(eye); free(at); free(up); free(bufs) + gl_bind_framebuffer(GL_FRAMEBUFFER, 0) + ids[0] = fbo + gl_delete_framebuffers(1, ids) + ids[0] = rb + gl_delete_renderbuffers(1, ids) + gl_bind_texture(GL_TEXTURE_2D, im.albedo) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR) + gl_generate_mipmap(GL_TEXTURE_2D) + gl_bind_texture(GL_TEXTURE_2D, im.normal) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR) + gl_generate_mipmap(GL_TEXTURE_2D) + gl_check("impostor bake") + if sc_debug_dump { tex_dump_alpha = true; tex_dump(im.albedo, aw, th, "build/atlas_alpha.ppm"); tex_dump_alpha = false } + return im +} + +# Give a layer a LOD chain. `dists` (float bits) are the outer distances of each level; +# the last one becomes the layer's `near` so the impostor (if any) starts there. +function layer_set_lods(l: Layer, models: []Model, dists: words) -> void { + l.lods = models + l.n_lods = len(models) + l.lod_dist = words(l.n_lods); l.lod_card = words(l.n_lods); l.lod_buf = words(l.n_lods); l.n_lod = words(l.n_lods) + for k in 0 .. l.n_lods { + l.lod_dist[k] = dists[k]; l.lod_card[k] = 0; l.n_lod[k] = 0 + l.lod_buf[k] = gl_buffer() + let m = models[k] + for i in 0 .. len(m.prims) { scatter_attach(m.prims[i].mesh.vao, l.lod_buf[k]) } + } + l.model = models[0] + l.near = dists[l.n_lods - 1] + if l.lvl == null { l.lvl = words(l.cap) } +} +# mark level k as the layer's crossed card (drawn with the card program and its atlas) +function layer_lod_card(l: Layer, k: int) -> void { l.lod_card[k] = 1 } + +function layer_set_impostor(l: Layer, im: Impostor) -> void { + l.imp = im + scatter_attach(sc_card.vao, l.imp_buf) +} + +# ---- per frame ----------------------------------------------------------------------- +# Partitions and gathers are redone only when the view changed enough to matter: the +# camera moved 1.5 m or turned about 2.5 degrees. Everything culled by the frustum keys +# off this one counter, so a turn re-gathers the streams and the grids together. +var sc_view_gen: int = 1 +var sc_view_pos: words = null +var sc_view_fwd: words = null +function scatter_begin_frame() -> void { + if sc_view_pos == null { sc_view_pos = v3_new(fi(100000), F_ZERO, F_ZERO); sc_view_fwd = v3_new(F_ZERO, F_ZERO, f_neg(F_ONE)) } + if f_gt(v3_dist(sc_view_pos, cam_pos), fl(1.5)) or f_ls(v3_dot(sc_view_fwd, cam_fwd), fl(0.999)) { + sc_view_gen += 1 + v3_copy(sc_view_pos, cam_pos) + v3_copy(sc_view_fwd, cam_fwd) + } +} + +# Sort a static layer's instances into square cells (call once, after placement; a +# large layer that was never gridded gets a 96 m grid on its first update). The +# shadow buffer is uploaded here once — casters are never culled by the view. +function layer_grid_build(l: Layer, cell: int) -> void { + if l.count == 0 { return } + var minx = l.inst[0]; var maxx = minx; var minz = l.inst[2]; var maxz = minz + for i in 0 .. l.count { + let o = i * INST_FLOATS + minx = f_min(minx, l.inst[o]); maxx = f_max(maxx, l.inst[o]) + minz = f_min(minz, l.inst[o + 2]); maxz = f_max(maxz, l.inst[o + 2]) + } + l.gcell = cell; l.gx0 = minx; l.gz0 = minz + l.gnx = f_to_int(f_div(f_sub(maxx, minx), cell)) + 1 + l.gnz = f_to_int(f_div(f_sub(maxz, minz), cell)) + 1 + let ncell = l.gnx * l.gnz + l.gstart = words(ncell + 1) + l.gymin = words(ncell); l.gymax = words(ncell) + let cellof = words(l.count) + for c in 0 .. ncell + 1 { l.gstart[c] = 0 } + for i in 0 .. l.count { + let o = i * INST_FLOATS + let ix = f_to_int(f_div(f_sub(l.inst[o], minx), cell)) + let iz = f_to_int(f_div(f_sub(l.inst[o + 2], minz), cell)) + let c = iz * l.gnx + ix + cellof[i] = c + if l.gstart[c + 1] == 0 { l.gymin[c] = l.inst[o + 1]; l.gymax[c] = l.inst[o + 1] } + else { l.gymin[c] = f_min(l.gymin[c], l.inst[o + 1]); l.gymax[c] = f_max(l.gymax[c], l.inst[o + 1]) } + l.gstart[c + 1] += 1 + } + for c in 0 .. ncell { l.gstart[c + 1] += l.gstart[c] } + let fill = words(ncell) + for c in 0 .. ncell { fill[c] = l.gstart[c] } + l.gsorted = words(l.count * INST_FLOATS) + for i in 0 .. l.count { + let c = cellof[i] + let q = fill[c] * INST_FLOATS + fill[c] += 1 + let o = i * INST_FLOATS + for k in 0 .. INST_FLOATS { l.gsorted[q + k] = l.inst[o + k] } + } + free(cellof); free(fill) + if l.vis == null { l.vis = words(l.cap * INST_FLOATS) } + l.n_sh = l.count + gl_bind_buffer(GL_ARRAY_BUFFER, l.sh_buf) + gl_buffer_data(GL_ARRAY_BUFFER, l.count * INST_FLOATS * 4, l.inst, GL_STATIC_DRAW) +} + +# gather the instances of the cells the camera can see (and that are within cull) +function layer_grid_gather(l: Layer) -> void { + let cell = l.gcell + let half = f_mul(cell, F_HALF) + let reach = f_add(l.cull, f_mul(cell, fl(0.71))) + var n = 0 + for iz in 0 .. l.gnz { + let wz = f_add(f_add(l.gz0, f_mul(fi(iz), cell)), half) + for ix in 0 .. l.gnx { + let c = iz * l.gnx + ix + let cnt = l.gstart[c + 1] - l.gstart[c] + if cnt == 0 { continue } + let wx = f_add(f_add(l.gx0, f_mul(fi(ix), cell)), half) + if l.cull != 0 { + let dx = f_sub(wx, cam_pos[0]); let dz = f_sub(wz, cam_pos[2]) + if f_gt(f_sqrt(f_add(f_mul(dx, dx), f_mul(dz, dz))), reach) { continue } + } + let hy = f_mul(f_sub(l.gymax[c], l.gymin[c]), F_HALF) + let cy = f_add(l.gymin[c], hy) + # pad by the tallest instance (scale 2 of the model's height) so crowns at the frame's edge stay + let r = f_add(f_sqrt(f_add(f_mul(f_mul(half, half), F_TWO), f_mul(hy, hy))), f_add(f_mul(l.model.height, F_TWO), fi(4))) + if not cam_sphere_visible(wx, cy, wz, r) { continue } + mem_copy(mem_off(l.vis, n * INST_FLOATS * 4), mem_off(l.gsorted, l.gstart[c] * INST_FLOATS * 4), cnt * INST_FLOATS * 4) + n += cnt + } + } + l.n_vis = n +} + +# Sort the gathered instances into their LOD levels (counting sort into the scratch), +# the impostor bucket last, and upload one buffer per level. +function layer_partition_lods(l: Layer, src: words, total: int) -> void { + let n = l.n_lods + let counts = words(n + 2) + for k in 0 .. n + 2 { counts[k] = 0 } + let cull2 = f_mul(l.cull, l.cull) + let open = l.lod_dist[n - 1] == 0 # the last level runs out to the cull distance + for i in 0 .. total { + let o = i * INST_FLOATS + let dx = f_sub(src[o], cam_pos[0]); let dz = f_sub(src[o + 2], cam_pos[2]) + let d2 = f_add(f_mul(dx, dx), f_mul(dz, dz)) + var lv = n + 1 # n + 1 = dropped + if l.cull == 0 or not f_gt(d2, cull2) { + let d = f_sqrt(d2) + lv = n # n = the impostor bucket + var k = 0 + while k < n { if l.lod_dist[k] != 0 and f_ls(d, l.lod_dist[k]) { lv = k; k = n } else { k += 1 } } + if lv == n and open { lv = n - 1 } + if lv == n and l.imp == null { lv = n + 1 } + } + l.lvl[i] = lv + counts[lv] += 1 + } + # prefix offsets (in instances) per bucket + let start = words(n + 2) + var acc = 0 + for k in 0 .. n + 2 { start[k] = acc; acc += counts[k] } + let fill = words(n + 2) + for k in 0 .. n + 2 { fill[k] = start[k] } + let tmp = l.scratch + for i in 0 .. total { + let lv = l.lvl[i] + if lv > n { continue } + let q = fill[lv] * INST_FLOATS + fill[lv] += 1 + let o = i * INST_FLOATS + for k in 0 .. INST_FLOATS { tmp[q + k] = src[o + k] } + } + for k in 0 .. n { + l.n_lod[k] = counts[k] + if counts[k] > 0 { + gl_bind_buffer(GL_ARRAY_BUFFER, l.lod_buf[k]) + gl_buffer_data(GL_ARRAY_BUFFER, counts[k] * INST_FLOATS * 4, mem_off(tmp, start[k] * INST_FLOATS * 4), GL_DYNAMIC_DRAW) + } + } + l.n_near = counts[0] + l.n_far = counts[n] + if sc_dbg_lod and total > 1000 { print(`lod partition: total {total} dropped {counts[n + 1]} far {counts[n]} l0 {counts[0]} l1 {counts[1]} l2 {counts[2]} l3 {counts[3]} dist0 {f_fx(l.lod_dist[0])} dist3 {f_fx(l.lod_dist[n - 1])} cull {f_fx(l.cull)} cam {f_fx(cam_pos[0])} {f_fx(cam_pos[2])} first {f_fx(src[0])} {f_fx(src[2])}`) } + if l.n_far > 0 { + gl_bind_buffer(GL_ARRAY_BUFFER, l.imp_buf) + gl_buffer_data(GL_ARRAY_BUFFER, l.n_far * INST_FLOATS * 4, mem_off(tmp, start[n] * INST_FLOATS * 4), GL_DYNAMIC_DRAW) + } + # casters: the whole (gathered) set from the shadow buffer, unless the impostor casts + if l.gcell == 0 { + l.n_sh = total + if total > 0 { gl_bind_buffer(GL_ARRAY_BUFFER, l.sh_buf); gl_buffer_data(GL_ARRAY_BUFFER, total * INST_FLOATS * 4, src, GL_DYNAMIC_DRAW) } + } + free(counts); free(start); free(fill) +} + +# split the instances by distance to the camera (only when the view changed) +var sc_freeze: bool = false # a secondary pass (reflection) reuses the partition +function layer_update(l: Layer) -> void { + if sc_freeze { return } + if l.view_gen == sc_view_gen { return } + l.view_gen = sc_view_gen + let t_lu = gl_now_us() + let n_lu = l.count + # A streamed layer's instances were already gathered per visible chunk: no split, no + # per-instance loop — one upload, and the same buffer casts its shadows. + if l.streamed and l.imp == null and l.near == 0 and l.n_lods <= 1 { + l.n_near = l.count; l.n_far = 0; l.n_sh = l.count + gl_bind_buffer(GL_ARRAY_BUFFER, l.buf) + gl_buffer_data(GL_ARRAY_BUFFER, l.count * INST_FLOATS * 4, l.inst, GL_DYNAMIC_DRAW) + prof_layer_add(gl_now_us() - t_lu, l.count * INST_FLOATS * 4) + return + } + if l.gcell == 0 and not l.streamed and l.count > 2000 { layer_grid_build(l, fi(96)) } + var src = l.inst + var total = l.count + if l.gcell != 0 { layer_grid_gather(l); src = l.vis; total = l.n_vis } + let near2 = f_mul(l.near, l.near) + let cull2 = f_mul(l.cull, l.cull) + var nn = 0 + var nf = 0 + let far_off = l.cap * INST_FLOATS # far instances fill the scratch from its end backwards + let tmp = l.scratch + if l.n_lods > 1 { + layer_partition_lods(l, src, total) + prof_layer_add(gl_now_us() - t_lu, total * INST_FLOATS * 4) + return + } + var i = 0 + while i < total { + let o = i * INST_FLOATS + let dx = f_sub(src[o], cam_pos[0]) + let dz = f_sub(src[o + 2], cam_pos[2]) + let d2 = f_add(f_mul(dx, dx), f_mul(dz, dz)) + if l.cull != 0 and f_gt(d2, cull2) { i += 1; continue } + if l.near == 0 or f_ls(d2, near2) { + let q = nn * INST_FLOATS + for k in 0 .. INST_FLOATS { tmp[q + k] = src[o + k] } + nn += 1 + } else if l.imp != null { + nf += 1 + let q = far_off - nf * INST_FLOATS + for k in 0 .. INST_FLOATS { tmp[q + k] = src[o + k] } + } + i += 1 + } + l.n_near = nn + l.n_far = nf + if l.imp != null and nn > 0 and sc_debug_dump { print(`near full-mesh instances: {nn} (first at {f_fx(tmp[0])} {f_fx(tmp[1])} {f_fx(tmp[2])})`) } + if sc_debug_dump and l.imp != null { + print(`layer: near {nn} far {nf}`) + for k in 0 .. nn { let q = k * INST_FLOATS; print(` near {f_fx(tmp[q])} {f_fx(tmp[q + 1])} {f_fx(tmp[q + 2])} s {f_fx(tmp[q + 3])}`) } + } + # Every instance, unculled and unsplit, for the shadow pass. What the camera draws is + # allowed to change with distance; what casts must not, or shadows blink in and out as + # you walk. This is the whole set, drawn one way, into every cascade. + if l.gcell == 0 { + l.n_sh = l.count + if l.count > 0 { + gl_bind_buffer(GL_ARRAY_BUFFER, l.sh_buf) + gl_buffer_data(GL_ARRAY_BUFFER, l.count * INST_FLOATS * 4, l.inst, GL_DYNAMIC_DRAW) + } + } + gl_bind_buffer(GL_ARRAY_BUFFER, l.buf) + gl_buffer_data(GL_ARRAY_BUFFER, nn * INST_FLOATS * 4, tmp, GL_DYNAMIC_DRAW) + if nf > 0 { + gl_bind_buffer(GL_ARRAY_BUFFER, l.imp_buf) + gl_buffer_data(GL_ARRAY_BUFFER, nf * INST_FLOATS * 4, mem_off(tmp, (far_off - nf * INST_FLOATS) * 4), GL_DYNAMIC_DRAW) + } + prof_layer_add(gl_now_us() - t_lu, (nn + nf + l.n_sh) * INST_FLOATS * 4) +} + +function layer_program(l: Layer, shadow: bool, card: bool) -> int { + if card { + if shadow { return sc_prog_card_shadow } + if l.cheap { return sc_prog_card_cheap } + return sc_prog_card + } + if shadow { + if l.foliage and not l.blade and not l.flower { return sc_prog_shadow_fol } + if l.wind != 0 { return sc_prog_shadow_wind } + return sc_prog_shadow + } + if l.blade { return sc_prog_blade } + if l.flower { return sc_prog_flower } + if l.foliage { return sc_prog_fol } + if l.wind != 0 { return sc_prog_wind } + return sc_prog +} + +var sc_dbg_blade: int = 0 +# R3D_LODDBG=1 tints each LOD level (red, green, blue, yellow) and impostors magenta +var sc_dbg_level: int = -1 +var sc_dbg_lod: bool = false +var sc_dbg_tint: words = null +# `full` casts the layer's entire instance list out of sh_buf instead of the near +# partition out of l.buf. A layer with no impostor (the tree crowns' branch cards) has +# no cheap stand-in to cast from, so without this its shadow simply began at the near +# distance — which is the crown shadow that appeared as you walked up to a tree. +function layer_draw_near(l: Layer, shadow: bool, light_vp: words, full: bool) -> void { + if l.n_lods > 1 { + # a LOD chain: every level from its own bucket (casters are what is drawn) + for k in 0 .. l.n_lods { sc_dbg_level = k; layer_draw_model(l, l.lods[k], l.lod_buf[k], l.n_lod[k], l.lod_card[k] == 1, shadow, light_vp) } + sc_dbg_level = -1 + return + } + var vb = l.buf + var cnt = l.n_near + if full and not l.streamed { vb = l.sh_buf; cnt = l.n_sh } + layer_draw_model(l, l.model, vb, cnt, l.card, shadow, light_vp) +} + +# draw `cnt` instances of `model` out of instance buffer `vb`, as a mesh or as the layer's card +function layer_draw_model(l: Layer, model: Model, vb: int, cnt: int, card: bool, shadow: bool, light_vp: words) -> void { + if cnt == 0 { return } + let p = layer_program(l, shadow, card) + gl_use_program(p) + var ground = F_ZERO + if l.grounded { ground = F_ONE } + u_f(gl_uniform(p, "u_ground"), ground) + if l.grounded { terrain_bind_height(p) } + u_f(gl_uniform(p, "u_time"), r3d_time) + u_f(gl_uniform(p, "u_wind"), l.wind) + var mh = F_ZERO + if not card and l.foliage { mh = model.height } + u_f(gl_uniform(p, "u_model_h"), mh) + if not card and l.foliage and not shadow and sc_a2c { gl_enable(GL_SAMPLE_ALPHA_TO_COVERAGE) } + if card { + u_f(gl_uniform(p, "u_card_w"), f_mul(l.atlas.radius, F_TWO)); u_f(gl_uniform(p, "u_card_h"), l.atlas.height) + r3d_bind_2d(p, "u_diff", 0, l.atlas.albedo) + r3d_bind_2d(p, "u_nrm", 1, l.atlas.normal) + gl_enable(GL_SAMPLE_ALPHA_TO_COVERAGE) + } + if shadow { u_mat4(gl_uniform(p, "u_light_vp"), light_vp) } + else { + u_mat4(gl_uniform(p, "u_view"), cam_view) + u_mat4(gl_uniform(p, "u_proj"), cam_proj) + u_v3(gl_uniform(p, "u_tint"), l.tint) + if sc_dbg_lod and sc_dbg_level >= 0 { + if sc_dbg_tint == null { sc_dbg_tint = v3_new(F_ONE, F_ONE, F_ONE) } + let k = sc_dbg_level + var r = F_ZERO; var g = F_ZERO; var b = F_ZERO + if k == 0 { r = fi(3) } else if k == 1 { g = fi(3) } else if k == 2 { b = fi(3) } else { r = fi(3); g = fi(3) } + v3_set(sc_dbg_tint, r, g, b) + u_v3(gl_uniform(p, "u_tint"), sc_dbg_tint) + } + u_f(gl_uniform(p, "u_rough_scale"), l.rough) + if l.blade { u_v3(gl_uniform(p, "u_blade_base"), sc_blade_base); u_v3(gl_uniform(p, "u_blade_tip"), sc_blade_tip) } + u_f(gl_uniform(p, "u_cull"), l.cull) + sky_bind_lighting(p) + shadow_bind(p) + fog_bind(p) + if l.foliage { u_f(gl_uniform(p, "u_spec_scale"), fl(0.05)) } + } + gl_disable(GL_CULL_FACE) + for i in 0 .. len(model.prims) { + let pr = model.prims[i] + scatter_attach(pr.mesh.vao, vb) + if not card { + r3d_bind_2d(p, "u_diff", 0, pr.diff) + if not shadow { r3d_bind_2d(p, "u_nrm", 1, pr.nrm); r3d_bind_2d(p, "u_arm", 2, pr.arm) } + } + mesh_draw_instanced(pr.mesh, cnt) + } + gl_disable(GL_SAMPLE_ALPHA_TO_COVERAGE) +} + +function layer_draw_far(l: Layer, shadow: bool, light_vp: words) -> void { + if l.n_far == 0 or l.imp == null { return } + var p = sc_imp_prog + if shadow { p = sc_imp_prog_shadow } + gl_use_program(p) + let im = l.imp + u_f(gl_uniform(p, "u_radius"), im.radius) + u_f(gl_uniform(p, "u_height"), im.height) + u_f(gl_uniform(p, "u_tiles"), fi(im.tiles)) + r3d_bind_2d(p, "u_atlas_albedo", 0, im.albedo) + if shadow { + u_mat4(gl_uniform(p, "u_light_vp"), light_vp) + u_v3(gl_uniform(p, "u_face_dir"), sun_dir) + if r3d_debug_shadow and not sc_printed { sc_printed = true; print(`imp shadow prog {p} face_dir loc {gl_uniform(p, "u_face_dir")} sun {f_fx(sun_dir[0])} {f_fx(sun_dir[1])} {f_fx(sun_dir[2])} cam {f_fx(cam_pos[0])} {f_fx(cam_pos[1])} {f_fx(cam_pos[2])} n_far {l.n_far}`) } + u_v3(gl_uniform(p, "u_cam_pos"), cam_pos) + } else { + u_mat4(gl_uniform(p, "u_view"), cam_view) + u_mat4(gl_uniform(p, "u_proj"), cam_proj) + u_v3(gl_uniform(p, "u_tint"), l.tint) + if sc_dbg_lod { if sc_dbg_tint == null { sc_dbg_tint = v3_new(F_ONE, F_ONE, F_ONE) }; v3_set(sc_dbg_tint, fi(3), F_ZERO, fi(3)); u_v3(gl_uniform(p, "u_tint"), sc_dbg_tint) } + r3d_bind_2d(p, "u_atlas_normal", 1, im.normal) + sky_bind_lighting(p) + shadow_bind(p) + fog_bind(p) + if l.foliage { u_f(gl_uniform(p, "u_spec_scale"), fl(0.05)) } + } + gl_disable(GL_CULL_FACE) + if not shadow and sc_a2c { gl_enable(GL_SAMPLE_ALPHA_TO_COVERAGE) } + scatter_attach(sc_card.vao, l.imp_buf) + mesh_draw_instanced(sc_card, l.n_far) + gl_disable(GL_SAMPLE_ALPHA_TO_COVERAGE) +} + +# Cast from the impostor card, always, for every instance in the layer. The lit pass may +# swap a scanned mesh in up close; the shadow must not, or a tree's shadow changes shape +# as you approach it. The card is also far the cheaper of the two, which is what pays for +# casting the whole set into all five cascades. +function layer_draw_shadow(l: Layer, light_vp: words) -> void { + if l.n_sh == 0 or l.imp == null { return } + let p = sc_imp_prog_shadow + gl_use_program(p) + let im = l.imp + u_f(gl_uniform(p, "u_radius"), im.radius) + u_f(gl_uniform(p, "u_height"), im.height) + u_f(gl_uniform(p, "u_tiles"), fi(im.tiles)) + r3d_bind_2d(p, "u_atlas_albedo", 0, im.albedo) + u_mat4(gl_uniform(p, "u_light_vp"), light_vp) + u_v3(gl_uniform(p, "u_face_dir"), sun_dir) + u_v3(gl_uniform(p, "u_cam_pos"), cam_pos) + gl_disable(GL_CULL_FACE) + scatter_attach(sc_card.vao, l.sh_buf) + mesh_draw_instanced(sc_card, l.n_sh) +} + +var sc_skip_blade: bool = false +var sc_skip_flower: bool = false +var sc_skip_card: bool = false +function scatter_draw() -> void { + for i in 0 .. len(sc_layers) { + let l = sc_layers[i] + if sc_skip_blade and l.blade { continue } + if sc_skip_flower and l.flower { continue } + if sc_skip_card and l.card { continue } + if r3d_no_trees and l.imp != null and not l.card { continue } + layer_update(l) + layer_draw_near(l, false, null, false) + layer_draw_far(l, false, null) + } + gl_enable(GL_CULL_FACE) +} +# Nothing here is keyed off the cascade. Every skip that used to be — ground cover past +# the 250 m cascade, blades past the nearest, the scanned mesh past the second — made a +# whole class of caster vanish at a fixed distance, which is exactly the popping. A layer +# with an impostor now casts its entire instance list from the card in every cascade; +# only layers that have no impostor at all fall back to the mesh. +function scatter_draw_casters(light_vp: words) -> void { + for i in 0 .. len(sc_layers) { + let l = sc_layers[i] + if sc_skip_blade and l.blade { continue } + if sc_skip_card and l.card { continue } + if r3d_no_trees and l.imp != null and not l.card { continue } + layer_update(l) + if l.imp != null { + layer_draw_shadow(l, light_vp) + # Shadow LOD (the practice in every production engine: a caster uses a low mesh LOD, + # the billboard only far away). The card alone is a side-view silhouette and a + # crown of drooping needle cards is mostly slivers from the side, so the sun, which + # sees the crown from above, cast a trunk line with a few blobs. The near levels + # now also cast their LOD2 mesh, alpha-tested, on top of the card. + if l.n_lods > 2 { + for k in 0 .. 3 { layer_draw_model(l, l.lods[2], l.lod_buf[k], l.n_lod[k], false, true, light_vp) } + } + } + else { layer_draw_near(l, true, light_vp, true) } + } +} + + +# --------------------------------------------------------------------------- +# The distant-grass carpet: the clump cards rendered straight down into one tiling +# tile, so the ground beyond the blade rings carries the same clumps, colours and +# gaps as the near cover instead of a lawn scan (the far-field trick the big open +# worlds use: geometry up close, an authored ground texture that matches it beyond). +# Returns an RGBA8 texture (alpha = coverage), repeat-wrapped and mipmapped. +var cb_state: int = 12345 +function cb_rnd() -> int { + cb_state = (cb_state * 1103515245 + 12345) & 0x7FFFFFFF + return fr((cb_state >> 8) & 0xFFFF, 65536) +} +function carpet_bake(layers: []Layer, count: int, tile: int, res: int) -> int { + let tex = tex_target(res, res, GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, GL_LINEAR) + let fbo = gl_framebuffer() + gl_bind_framebuffer(GL_FRAMEBUFFER, fbo) + gl_framebuffer_texture2d(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0) + let ids = gl_scratch() + gl_gen_renderbuffers(1, ids) + let rb = ids[0] + gl_bind_renderbuffer(GL_RENDERBUFFER, rb) + gl_renderbuffer_storage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, res, res) + gl_framebuffer_renderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rb) + let bufs = words(1) + bufs[0] = GL_COLOR_ATTACHMENT0 + gl_draw_buffers(1, bufs) + gl_viewport(0, 0, res, res) + gl_clear_color(0.0, 0.0, 0.0, 0.0) + gl_clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) + gl_enable(GL_DEPTH_TEST) + gl_depth_func(GL_LESS) + gl_disable(GL_CULL_FACE) + gl_disable(GL_BLEND) + # the clumps, and eight wrapped copies so the tile's edges continue + let half = f_mul(tile, F_HALF) + let n9 = count * 9 + let inst = gl_floats(n9 * INST_FLOATS) + cb_state = 977 + var k = 0 + for i in 0 .. count { + let x = f_sub(f_mul(cb_rnd(), tile), half) + let z = f_sub(f_mul(cb_rnd(), tile), half) + let sc = f_add(fl(1.5), cb_rnd()) + let yaw = f_mul(cb_rnd(), f_mul(F_TWO, F_PI)) + let sd = cb_rnd() + for oz in 0 .. 3 { + for ox in 0 .. 3 { + let px = f_add(x, f_mul(fi(ox - 1), tile)) + let pz = f_add(z, f_mul(fi(oz - 1), tile)) + gl_put_bits(inst, k, px); gl_put_bits(inst, k + 1, F_ZERO); gl_put_bits(inst, k + 2, pz); gl_put_bits(inst, k + 3, sc) + gl_put_bits(inst, k + 4, f_sin(yaw)); gl_put_bits(inst, k + 5, f_cos(yaw)); gl_put_bits(inst, k + 6, sd); gl_put_bits(inst, k + 7, F_ZERO) + k += INST_FLOATS + } + } + } + let buf = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, buf) + gl_buffer_data(GL_ARRAY_BUFFER, gl_bytes_of(n9 * INST_FLOATS), inst, GL_STATIC_DRAW) + free(inst) + # straight down: the window is exactly one tile + let view = m4_new(); let proj = m4_new() + let eye = v3_new(F_ZERO, fi(6), F_ZERO); let at = v3_new(F_ZERO, F_ZERO, F_ZERO); let up = v3_new(F_ZERO, F_ZERO, f_neg1()) + m4_look_at(view, eye, at, up) + m4_ortho(proj, f_neg(half), half, f_neg(half), half, fl(0.1), fi(12)) + let bake = sc_bake_card_prog + gl_use_program(bake) + u_mat4(gl_uniform(bake, "u_view"), view) + u_mat4(gl_uniform(bake, "u_proj"), proj) + u_f(gl_uniform(bake, "u_wind"), F_ZERO) + u_f(gl_uniform(bake, "u_time"), F_ZERO) + for li in 0 .. len(layers) { + let l = layers[li] + if l.atlas == null { continue } + u_f(gl_uniform(bake, "u_card_w"), f_mul(l.atlas.radius, F_TWO)); u_f(gl_uniform(bake, "u_card_h"), l.atlas.height) + r3d_bind_2d(bake, "u_diff", 0, l.atlas.albedo) + r3d_bind_2d(bake, "u_arm", 2, l.atlas.normal) + for i in 0 .. len(l.model.prims) { + let pr = l.model.prims[i] + scatter_attach(pr.mesh.vao, buf) + mesh_draw_instanced(pr.mesh, n9) + } + } + free(view); free(proj); free(eye); free(at); free(up); free(bufs) + gl_bind_framebuffer(GL_FRAMEBUFFER, 0) + ids[0] = fbo + gl_delete_framebuffers(1, ids) + ids[0] = rb + gl_delete_renderbuffers(1, ids) + ids[0] = buf + gl_delete_buffers(1, ids) + gl_bind_texture(GL_TEXTURE_2D, tex) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR) + gl_tex_parameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, tex_anisotropy) + gl_generate_mipmap(GL_TEXTURE_2D) + gl_check("carpet bake") + return tex +} diff --git a/packages/ludic.render3d/shaders/adapt.frag b/packages/ludic.render3d/shaders/adapt.frag new file mode 100644 index 00000000..c08b288d --- /dev/null +++ b/packages/ludic.render3d/shaders/adapt.frag @@ -0,0 +1,23 @@ +// auto-exposure on the GPU: the scene's mean luminance from the top of its mip chain, +// eased toward from the previous frame's value, written to a 1x1 texture the tonemapper +// reads. Nothing comes back to the CPU (a readback there waited for the whole frame's +// GPU work and serialised the two: 34 ms -> the sum of both, measured 2026-09-09). +in vec2 v_uv; +out vec4 o_color; +uniform sampler2D u_scene; +uniform sampler2D u_prev; +uniform float u_lod; +uniform float u_key; +uniform float u_max; +uniform float u_rate; +uniform float u_reset; +void main() { + vec3 c = textureLod(u_scene, vec2(0.5), u_lod).rgb; + c = clamp(c, vec3(0.0), vec3(1.0e5)); + float lum = dot(c, vec3(0.2126, 0.7152, 0.0722)); + float target = clamp(u_key / max(lum, 0.001), 0.02, u_max); + float prev = texture(u_prev, vec2(0.5)).r; + float e = mix(prev, target, u_rate); + if (u_reset > 0.5 || !(prev > 0.0)) e = target; + o_color = vec4(e, 0.0, 0.0, 1.0); +} diff --git a/packages/ludic.render3d/shaders/bake.frag b/packages/ludic.render3d/shaders/bake.frag new file mode 100644 index 00000000..7688f19d --- /dev/null +++ b/packages/ludic.render3d/shaders/bake.frag @@ -0,0 +1,29 @@ +// impostor bake: albedo + coverage, and the model-frame normal +in vec3 v_wpos; +in vec3 v_nrm; +in vec2 v_uv; +in float v_seed; +layout(location = 0) out vec4 o_albedo; +layout(location = 1) out vec4 o_normal; +uniform sampler2D u_diff; +uniform sampler2D u_arm; +void main() { + vec4 d = texture(u_diff, v_uv); + if (d.a < 0.5) discard; // cut-out cards (needles, blades, leaves) bake with their shape + vec3 N = normalize(v_nrm); + if (!gl_FrontFacing) N = -N; +#ifdef FLOWER + float vy = clamp(v_uv.y, 0.0, 1.0); + if (v_uv.x >= 2.0) d.rgb = vec3(0.035, 0.09, 0.02) * (0.7 + 0.6 * vy); + else if (v_uv.x >= 1.0) { + float f = fract(v_uv.x); + vec3 violet = vec3(0.06, 0.03, 0.3); + vec3 lip = vec3(0.4, 0.3, 0.68); + // each floret: a dark keel at the base, a pale standard at the top edge + d.rgb = mix(violet, lip, smoothstep(0.35, 1.0, vy) * 0.6 + 0.25 * smoothstep(0.3, 0.0, abs(f - 0.5))); + d.rgb *= 0.85 + 0.15 * vy; + } else d.rgb = vec3(0.08, 0.17, 0.03); +#endif + o_albedo = vec4(d.rgb, 1.0); + o_normal = vec4(N * 0.5 + 0.5, texture(u_arm, v_uv).r); +} diff --git a/packages/ludic.render3d/shaders/bloom_down.frag b/packages/ludic.render3d/shaders/bloom_down.frag new file mode 100644 index 00000000..0623a2d4 --- /dev/null +++ b/packages/ludic.render3d/shaders/bloom_down.frag @@ -0,0 +1,27 @@ +// 13-tap downsample (Jimenez), with a soft threshold on the first level +in vec2 v_uv; +out vec4 o_color; +uniform sampler2D u_src; +uniform vec2 u_texel; +uniform float u_threshold; // <0: no threshold +void main() { + vec2 t = u_texel; + vec3 a = texture(u_src, v_uv + t * vec2(-2, 2)).rgb, b = texture(u_src, v_uv + t * vec2(0, 2)).rgb, c = texture(u_src, v_uv + t * vec2(2, 2)).rgb; + vec3 d = texture(u_src, v_uv + t * vec2(-2, 0)).rgb, e = texture(u_src, v_uv).rgb, f = texture(u_src, v_uv + t * vec2(2, 0)).rgb; + vec3 g = texture(u_src, v_uv + t * vec2(-2, -2)).rgb, h = texture(u_src, v_uv + t * vec2(0, -2)).rgb, i = texture(u_src, v_uv + t * vec2(2, -2)).rgb; + vec3 j = texture(u_src, v_uv + t * vec2(-1, 1)).rgb, k = texture(u_src, v_uv + t * vec2(1, 1)).rgb; + vec3 l = texture(u_src, v_uv + t * vec2(-1, -1)).rgb, m = texture(u_src, v_uv + t * vec2(1, -1)).rgb; + a = min(a, vec3(4096.0)); b = min(b, vec3(4096.0)); c = min(c, vec3(4096.0)); d = min(d, vec3(4096.0)); e = min(e, vec3(4096.0)); + f = min(f, vec3(4096.0)); g = min(g, vec3(4096.0)); h = min(h, vec3(4096.0)); i = min(i, vec3(4096.0)); j = min(j, vec3(4096.0)); + k = min(k, vec3(4096.0)); l = min(l, vec3(4096.0)); m = min(m, vec3(4096.0)); + vec3 col = e * 0.125 + (a + c + g + i) * 0.03125 + (b + d + f + h) * 0.0625 + (j + k + l + m) * 0.125; + if (u_threshold >= 0.0) { + float br = max(col.r, max(col.g, col.b)); + float knee = u_threshold * 0.5; + float soft = clamp(br - u_threshold + knee, 0.0, 2.0 * knee); + soft = soft * soft / (4.0 * knee + 1e-4); + float contrib = max(soft, br - u_threshold) / max(br, 1e-4); + col *= contrib; + } + o_color = vec4(sane(col), 1.0); +} diff --git a/packages/ludic.render3d/shaders/bloom_up.frag b/packages/ludic.render3d/shaders/bloom_up.frag new file mode 100644 index 00000000..d777fcdc --- /dev/null +++ b/packages/ludic.render3d/shaders/bloom_up.frag @@ -0,0 +1,13 @@ +// 3x3 tent upsample, added onto the destination (blend ONE ONE) +in vec2 v_uv; +out vec4 o_color; +uniform sampler2D u_src; +uniform vec2 u_texel; +uniform float u_radius; +void main() { + vec2 t = u_texel * u_radius; + vec3 s = texture(u_src, v_uv + t * vec2(-1, 1)).rgb + texture(u_src, v_uv + t * vec2(0, 1)).rgb * 2.0 + texture(u_src, v_uv + t * vec2(1, 1)).rgb + + texture(u_src, v_uv + t * vec2(-1, 0)).rgb * 2.0 + texture(u_src, v_uv).rgb * 4.0 + texture(u_src, v_uv + t * vec2(1, 0)).rgb * 2.0 + + texture(u_src, v_uv + t * vec2(-1, -1)).rgb + texture(u_src, v_uv + t * vec2(0, -1)).rgb * 2.0 + texture(u_src, v_uv + t * vec2(1, -1)).rgb; + o_color = vec4(s / 16.0, 1.0); +} diff --git a/packages/ludic.render3d/shaders/fullscreen.vert b/packages/ludic.render3d/shaders/fullscreen.vert new file mode 100644 index 00000000..e5477e8b --- /dev/null +++ b/packages/ludic.render3d/shaders/fullscreen.vert @@ -0,0 +1,7 @@ +// full-screen triangle from gl_VertexID; uv in [0,1], z = 1 (the far plane) +out vec2 v_uv; +void main() { + vec2 p = vec2((gl_VertexID == 1) ? 3.0 : -1.0, (gl_VertexID == 2) ? 3.0 : -1.0); + v_uv = p * 0.5 + 0.5; + gl_Position = vec4(p, 1.0, 1.0); +} diff --git a/packages/ludic.render3d/shaders/grass.vert b/packages/ludic.render3d/shaders/grass.vert new file mode 100644 index 00000000..a9c37917 --- /dev/null +++ b/packages/ludic.render3d/shaders/grass.vert @@ -0,0 +1,149 @@ +// Procedural ground-cover blades, generated on the GPU, with NO distance rings. +// +// The world is cut into 16 m cells. Blade j of a cell always stands at the same place +// (a hash of the cell and j), so a blade never moves. How many of a cell's blades exist +// is a smooth function of the blade's own distance to the camera: cell area over the +// square of a spacing that grows linearly with distance. Thinning removes the highest +// indices first, and a blade shrinks before it goes, so density is continuous in space +// and in time and nothing can form a boundary. Draws are per tile (CPU-side frustum +// culling, grass.ludic); a tile only decides how many indices to feed the shader. +layout(location = 0) in vec3 a_pos; // x: -0.5..0.5 across, y: 0..1 along the blade, z: bend +layout(location = 2) in vec2 a_uv; +uniform mat4 u_view; +uniform mat4 u_proj; +uniform mat4 u_vp; +uniform vec3 u_cam_pos; +uniform float u_time; +uniform sampler2D u_ts_height; +uniform vec2 u_ts_origin; +uniform float u_ts_half; +uniform sampler2D u_ortho; +uniform float u_ortho_on; +uniform float u_lake_level; +uniform float u_snow_line; +uniform float u_wind; +uniform vec2 u_tile; // world xz of this tile's corner +uniform int u_tile_cells; // 16 m cells per tile side +uniform int u_per_cell; // indices drawn per cell in this tile +uniform float u_s0; // blade spacing at the camera (m) +uniform float u_d0; // distance at which the spacing has doubled (m) +uniform float u_radius; // no blades past this +uniform int u_dbg; // R3D_GRASS_DBG: 1 lift blades 0.3 m, 2 light as ground everywhere, 3 both +out vec3 v_wpos; +out vec3 v_nrm; +out vec2 v_uv; +out float v_seed; +out vec2 v_rot; +out float v_hull; + +const float CELL = 16.0; +float hash1(vec2 p) { return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123); } +// An integer hash (PCG) for the per-blade values. The sine hash advanced linearly with +// the blade index, so a cell's blades fell into diagonal rows, and the rows read as +// streaks across the meadow with an edge wherever they thinned out. +uint pcg(uint v) { uint s = v * 747796405u + 2891336453u; uint w = ((s >> ((s >> 28u) + 4u)) ^ s) * 277803737u; return (w >> 22u) ^ w; } +float bladeHash(ivec2 cell, int j, int k) { + uint h = pcg(uint(cell.x + 32768) * 73856093u ^ uint(cell.y + 32768) * 19349663u ^ uint(j) * 83492791u ^ uint(k) * 2654435761u); + return float(h) * (1.0 / 4294967295.0); +} +float heightSmooth(sampler2D tex, vec2 uv) { + vec2 res = vec2(textureSize(tex, 0)); + vec2 t = uv * res - 0.5; + vec2 f = fract(t); + vec2 i = floor(t); + vec2 w0 = (1.0 - f) * (1.0 - f) * (1.0 - f) / 6.0; + vec2 w1 = (4.0 - 6.0 * f * f + 3.0 * f * f * f) / 6.0; + vec2 w3 = f * f * f / 6.0; + vec2 w2 = 1.0 - w0 - w1 - w3; + vec2 s0 = w0 + w1, s1 = w2 + w3; + vec2 o0 = (i - 1.0 + w1 / s0 + 0.5) / res; + vec2 o1 = (i + 1.0 + w3 / s1 + 0.5) / res; + return (texture(tex, vec2(o0.x, o0.y)).r * s0.x + texture(tex, vec2(o1.x, o0.y)).r * s1.x) * s0.y + + (texture(tex, vec2(o0.x, o1.y)).r * s0.x + texture(tex, vec2(o1.x, o1.y)).r * s1.x) * s1.y; +} +void cull() { gl_Position = vec4(0.0, 0.0, 2.0, 1.0); v_wpos = vec3(0.0); v_nrm = vec3(0.0, 1.0, 0.0); v_uv = vec2(0.0); v_seed = 0.0; v_rot = vec2(0.0, 1.0); v_hull = 1.0; } + +void main() { + int i = gl_InstanceID; + int c = i / u_per_cell; + int j = i - c * u_per_cell; + vec2 cell = u_tile + vec2(float(c % u_tile_cells), float(c / u_tile_cells)) * CELL; + vec2 cid = floor(cell / CELL + 0.5); + ivec2 ci = ivec2(cid); + float fj = float(j); + // this blade's fixed place in its cell + vec2 hv = vec2(bladeHash(ci, j, 0), bladeHash(ci, j, 1)); + vec2 xz = cell + hv * CELL; + vec2 d2 = xz - u_cam_pos.xz; + float dist = length(d2); + if (dist >= u_radius) { cull(); return; } + // how many of this cell's blades exist at this distance: area over spacing^2, spacing + // growing linearly with distance. j beyond that count does not exist; the last fifth + // of the count shrinks to nothing so a blade never pops. + float spacing = u_s0 * (1.0 + dist / u_d0); + float count = CELL * CELL / (spacing * spacing) * (1.0 - smoothstep(u_radius * 0.7, u_radius, dist)); + if (fj >= count) { cull(); return; } + float life = 1.0 - smoothstep(0.8, 1.0, fj / max(count, 1.0)); + // the ground under it + vec2 huv = (xz - u_ts_origin) / (2.0 * u_ts_half) + 0.5; + if (huv.x < 0.0 || huv.x > 1.0 || huv.y < 0.0 || huv.y > 1.0) { cull(); return; } + vec4 ht = texture(u_ts_height, huv); + vec4 croot = u_vp * vec4(xz.x, ht.r, xz.y, 1.0); + if (croot.w < -1.0 || abs(croot.x) > croot.w * 1.25 + 1.5 || abs(croot.y) > croot.w * 1.4 + 1.5) { cull(); return; } + vec3 gn = normalize(ht.gba); + float h3 = bladeHash(ci, j, 2), h4 = bladeHash(ci, j, 3); + float ok = (1.0 - smoothstep(0.30, 0.55, 1.0 - gn.y)) * smoothstep(0.0, 0.6, ht.r - u_lake_level - 0.15) * smoothstep(u_snow_line - 80.0, u_snow_line - 200.0, ht.r); + if (u_ortho_on > 0.5) { + vec3 oc = textureLod(u_ortho, huv, 1.5).rgb; + ok *= 0.25 + 0.75 * smoothstep(0.0, 0.02, oc.g - max(oc.r, oc.b)); + } + if (h4 > ok) { cull(); return; } + // the root on the drawn surface: the CDLOD mesh follows the B-spline to within + // centimetres near the camera, so the smooth sample is the drawn height + bool far = dist > 300.0; + float h = far ? ht.r : heightSmooth(u_ts_height, huv); + if (far) h += 0.03; + if ((u_dbg & 1) != 0) h += 0.3; + // the blade: sized so that coverage stays level as the spacing grows + float seed = hv.x * 0.7 + hv.y * 0.3; + float ang = hv.y * 6.2831853; + float s = sin(ang), c_ = cos(ang); + float grow = spacing / u_s0; // 1 at the camera, growing with distance + float tall = mix(0.18, 0.42, h3) * mix(0.8, 1.2, hash1(cid * 0.1)) * (1.0 + 0.35 * smoothstep(1.0, 12.0, grow)) * life; + float bw = 0.028 * mix(1.0, 0.45 * grow, smoothstep(1.0, 4.0, grow)); + if (far) { bw = max(bw, spacing * 0.35); tall = min(tall, spacing * 0.3); } + vec3 p = vec3(a_pos.x * bw, a_pos.y * tall, a_pos.z * tall * (0.6 + 0.8 * h4)); + vec3 n = vec3(0.0, 0.3, 1.0); + float gust = sin(xz.x * 0.09 + u_time * 1.1) * 0.5 + sin(xz.y * 0.13 - u_time * 0.8 + xz.x * 0.05) * 0.5; + float ph = u_time * 1.7 + seed * 6.2831 + xz.x * 0.05 + xz.y * 0.07; + float sway = (sin(ph) * 0.6 + sin(ph * 2.3 + 1.0) * 0.4 + gust) * u_wind; + float hgt = max(p.y, 0.0); + p.x += sway * hgt * hgt * 0.35; + p.z += sway * hgt * hgt * 0.15 * cos(ph * 0.7); + p = vec3(c_ * p.x + s * p.z, p.y, -s * p.x + c_ * p.z); + n = normalize(vec3(c_ * n.x + s * n.z, n.y, -s * n.x + c_ * n.z)); + // stand on the ground: rotate the blade's frame from world-up to the surface normal + { + vec3 up = vec3(0.0, 1.0, 0.0); + vec3 k = cross(up, gn); + float sk = length(k), ck = gn.y; + if (sk > 1e-4) { + k /= sk; + p = p * ck + cross(k, p) * sk + k * dot(k, p) * (1.0 - ck); + n = normalize(n * ck + cross(k, n) * sk + k * dot(k, n) * (1.0 - ck)); + } + } + // Blades are lit with the ground's normal from a few metres out. Lit by their own + // facing, the wind's sine field bent them in bands and the lit/unlit sides flipped in + // those bands: light and dark rows across the whole meadow. Ground-normal lighting is + // what open-world grass does (the blade's own normal only matters within arm's reach). + n = normalize(mix(n, gn, smoothstep(2.0, 12.0, dist))); + vec3 w = vec3(xz.x, h - 0.02, xz.y) + p; + v_wpos = w; + v_nrm = n; + v_uv = far ? vec2(a_uv.x, 0.45 + 0.2 * a_uv.y) : a_uv; + v_seed = seed; + v_rot = vec2(s, c_); + v_hull = (dist > 2.0 || far || (u_dbg & 2) != 0) ? -1.0 : 1.0; // no back-face flip, no rounding past arm's reach + gl_Position = u_proj * u_view * vec4(w, 1.0); +} diff --git a/packages/ludic.render3d/shaders/heightgen.frag b/packages/ludic.render3d/shaders/heightgen.frag new file mode 100644 index 00000000..668e1702 --- /dev/null +++ b/packages/ludic.render3d/shaders/heightgen.frag @@ -0,0 +1,110 @@ +// world height (metres) for the texel's x/z; R32F target +in vec2 v_uv; +out vec4 o; +uniform float u_half; +#ifdef DEM +uniform sampler2D u_dem; // 16-bit height map of a real place (Copernicus GLO-30) +uniform float u_dem_min; +uniform float u_dem_max; +uniform float u_dem_base; // the elevation that becomes y = 0 +uniform vec2 u_origin; // world x/z of the map's centre +uniform vec4 u_lake; // a lake: centre x/z, half extents (zero = none) +uniform float u_lake_level; // its surface height; the model records the surface, the bed is carved below it +// The DEM is Copernicus GLO-30 — 30 m data resampled onto this 4 m grid — so the stored +// field is piecewise linear with a slope discontinuity every ~7 texels. Differencing it +// for a shading normal turns each kink into a ridge, and on steep ground, where the same +// kink spans a large height change, they read as a regular corrugation running across +// the slope. Smoothing across that lattice removes them and discards no real detail: +// there is none below 30 m in the source, and the fractal detail below supplies the fine +// relief. Kernel is a separable gaussian sampled at 3-texel spacing (~12 m each side). +float demRaw(vec2 uv) { return texture(u_dem, uv).r; } +// u_dem_blur texels of separable gaussian (0 = the survey as it is). The 30 m Copernicus +// model needed ~3 texels to hide its resampling lattice; 2 m lidar needs none. +uniform float u_dem_blur; +float demH(vec2 uv) { + if (u_dem_blur <= 0.0) return mix(u_dem_min, u_dem_max, demRaw(uv)); + vec2 t = u_dem_blur / vec2(textureSize(u_dem, 0)); + float c = demRaw(uv); + float e = demRaw(uv + vec2(t.x, 0.0)) + demRaw(uv - vec2(t.x, 0.0)) + + demRaw(uv + vec2(0.0, t.y)) + demRaw(uv - vec2(0.0, t.y)); + float d = demRaw(uv + t) + demRaw(uv - t) + + demRaw(uv + vec2(t.x, -t.y)) + demRaw(uv + vec2(-t.x, t.y)); + float f = demRaw(uv + 2.0 * vec2(t.x, 0.0)) + demRaw(uv - 2.0 * vec2(t.x, 0.0)) + + demRaw(uv + 2.0 * vec2(0.0, t.y)) + demRaw(uv - 2.0 * vec2(0.0, t.y)); + float h = (12.0 * c + 6.0 * e + 3.0 * d + 2.0 * f) / (12.0 + 24.0 + 12.0 + 8.0); + return mix(u_dem_min, u_dem_max, h); +} +#endif +float bump(vec2 p, vec2 c, float r) { float d = length(p - c) / r; return exp(-d * d * 2.0); } +void main() { +#ifdef DEM + vec2 xz = (v_uv - 0.5) * 2.0 * u_half + u_origin; + float e = 1.0 / 2048.0; + float h = demH(v_uv) - u_dem_base; + // the basin mask keys off the UNSMOOTHED sample: the lake is only ~1 m below its shore + // in the model, and the 12 m blur above averages the shore with the flat water beside + // it, dragging it under the outline threshold — the camera's own bank was carved 7 m down + float raw = demRaw(v_uv) * (u_dem_max - u_dem_min) + u_dem_min - u_dem_base; + // the survey carries its own relief at this resolution; only the foot track is added + h -= 0.25 * smoothstep(6.0, 1.5, pathDist(xz)); + if (u_lake.z > 0.0) { + // the elevation model samples the water surface as flat ground: inside the lake's + // outline sink it into a bed, deepest in the middle, with a gentle gravel ramp at the shore + vec2 q = (xz - u_lake.xy) / u_lake.zw; + float inside = smoothstep(1.0, 0.8, dot(q, q)); + // the lidar records the lake as a flat surface exactly at its level: everything at or + // just above that level inside the outline is lake bed + float basin = smoothstep(u_lake_level + 0.6, u_lake_level - 0.3, raw) * inside; + float bed = u_lake_level - 0.4 - (5.0 + 3.0 * (1.0 - dot(q, q)) + 1.5 * fbm(xz * 0.02, 3)) * basin * basin; // a gentle gravel ramp, then the drop + h = mix(h, bed, basin); + } + o = vec4(h, 0.0, 0.0, 1.0); +#elif defined(SMOOTH) + // A purpose-built test ground: 2 km square, analytically smooth everywhere. No survey + // data, so no resampling lattice and no quantised source — if a grid still shows on + // this, the cause is in the renderer rather than the elevation model. + vec2 xz = (v_uv - 0.5) * 2.0 * u_half; + float d = length(xz); + // meadow: a gentle roll a few metres either side of 8 m, two octaves only + float h = 8.0 + 4.5 * fbm(xz * 0.0018, 3) + 1.4 * fbm(xz * 0.007, 3); + // a small pond in the middle: a smooth basin ~90 m across, floor about 5 m down + float pond = exp(-dot(xz, xz) / (2.0 * 70.0 * 70.0)); + h -= 13.0 * pond; + // the rim mountain, 200 m above the meadow, starting well outside the grass + h += smoothstep(620.0, 980.0, d) * (200.0 + 90.0 * fbm(xz * 0.0025 + 4.0, 4)); + o = vec4(h, 0.0, 0.0, 1.0); +#else + vec2 xz = (v_uv - 0.5) * 2.0 * u_half; + float d = length(xz); + // the meadow falls away northward (-z) from the rise the camera stands on, into a broad valley + float base = 0.055 * xz.y + 4.0 * fbm(xz * 0.008, 5) + 1.2 * fbm(xz * 0.04, 4) + 0.15 * fbm(xz * 0.35, 3); + // soft valley floor with a stream + float floorY = -22.0; + float k = 12.0; + base = floorY + k * log(1.0 + exp((base - floorY) / k)); + float sb = smoothstep(6.0, 0.0, abs(xz.x - 150.0 - 90.0 * sin(xz.y * 0.006 + 1.0))) * smoothstep(-220.0, -400.0, xz.y); + base -= 1.6 * sb; + // the track sits slightly worn in + base -= 0.25 * smoothstep(6.0, 1.5, pathDist(xz)); + float h = base; + // far ridge across the valley, forested hills + float back = smoothstep(-550.0, -1000.0, xz.y); + h += back * (90.0 + 160.0 * ridged(xz * 0.0025 + 5.0, 6)); + // the great snow mountain to the north-west, and its shoulder + float m1 = bump(xz, vec2(-820.0, -520.0), 520.0); + float m2 = bump(xz, vec2(-1150.0, -900.0), 600.0); + float m3 = bump(xz, vec2(-560.0, -150.0), 260.0); + float mtn = max(m1 * 620.0, max(m2 * 720.0, m3 * 180.0)); + h += mtn * (0.45 + 0.55 * ridged(xz * 0.0018 + 11.0, 7)) + 40.0 * (m1 + m2) * ridged(xz * 0.008 + 3.0, 5); + // hills to the east, lower and rounder + float e1 = bump(xz, vec2(760.0, -420.0), 420.0); + float e2 = bump(xz, vec2(950.0, 150.0), 380.0); + h += (e1 * 170.0 + e2 * 120.0) * (0.6 + 0.4 * fbm(xz * 0.004 + 9.0, 5)); + // the outer rim so nothing ends at a flat edge + h += smoothstep(750.0, 1024.0, d) * (120.0 + 120.0 * ridged(xz * 0.003, 5)); + // a rocky knoll on the right of the meadow + float knoll = 14.0 * bump(xz, vec2(230.0, -40.0), 70.0); + h += knoll * (0.6 + 0.4 * fbm(xz * 0.05, 4)); + o = vec4(h, 0.0, 0.0, 1.0); +#endif +} diff --git a/packages/ludic.render3d/shaders/ibl_brdf.frag b/packages/ludic.render3d/shaders/ibl_brdf.frag new file mode 100644 index 00000000..6bac1510 --- /dev/null +++ b/packages/ludic.render3d/shaders/ibl_brdf.frag @@ -0,0 +1,36 @@ +in vec2 v_uv; +out vec4 o_color; +vec2 hammersley(uint i, uint n) { + uint b = i; + b = (b << 16u) | (b >> 16u); + b = ((b & 0x55555555u) << 1u) | ((b & 0xAAAAAAAAu) >> 1u); + b = ((b & 0x33333333u) << 2u) | ((b & 0xCCCCCCCCu) >> 2u); + b = ((b & 0x0F0F0F0Fu) << 4u) | ((b & 0xF0F0F0F0u) >> 4u); + b = ((b & 0x00FF00FFu) << 8u) | ((b & 0xFF00FF00u) >> 8u); + return vec2(float(i) / float(n), float(b) * 2.3283064365386963e-10); +} +void main() { + float NoV = max(v_uv.x, 1e-3); + float rough = max(v_uv.y, 0.02); + vec3 v = vec3(sqrt(1.0 - NoV * NoV), 0.0, NoV); + float a = rough * rough; + float A = 0.0, B = 0.0; + const uint N = 512u; + for (uint i = 0u; i < N; i++) { + vec2 x = hammersley(i, N); + float phi = 2.0 * PI * x.x; + float ct = sqrt((1.0 - x.y) / (1.0 + (a * a - 1.0) * x.y)); + float st = sqrt(1.0 - ct * ct); + vec3 h = vec3(cos(phi) * st, sin(phi) * st, ct); + vec3 l = 2.0 * dot(v, h) * h - v; + float NoL = max(l.z, 0.0), NoH = max(h.z, 0.0), VoH = max(dot(v, h), 0.0); + if (NoL > 0.0) { + float G = V_Smith(NoV, NoL, a) * 4.0 * NoL * NoV; // Smith G from the visibility term + float Gv = G * VoH / max(NoH * NoV, 1e-4); + float Fc = pow(1.0 - VoH, 5.0); + A += (1.0 - Fc) * Gv; + B += Fc * Gv; + } + } + o_color = vec4(clamp(A / float(N), 0.0, 1.0), clamp(B / float(N), 0.0, 1.0), 0.0, 1.0); +} diff --git a/packages/ludic.render3d/shaders/ibl_irradiance.frag b/packages/ludic.render3d/shaders/ibl_irradiance.frag new file mode 100644 index 00000000..b64dcc08 --- /dev/null +++ b/packages/ludic.render3d/shaders/ibl_irradiance.frag @@ -0,0 +1,36 @@ +in vec2 v_uv; +out vec4 o_color; +uniform sampler2D u_sky; +uniform float u_sun_clip; // clamp the sun's radiance so it does not alias the convolution +vec3 dirFromUV(vec2 uv) { + float phi = (uv.x - 0.5) * 2.0 * PI; + float theta = uv.y * PI; + return vec3(sin(theta) * sin(phi), cos(theta), -sin(theta) * cos(phi)); +} +vec2 hammersley(uint i, uint n) { + uint b = i; + b = (b << 16u) | (b >> 16u); + b = ((b & 0x55555555u) << 1u) | ((b & 0xAAAAAAAAu) >> 1u); + b = ((b & 0x33333333u) << 2u) | ((b & 0xCCCCCCCCu) >> 2u); + b = ((b & 0x0F0F0F0Fu) << 4u) | ((b & 0xF0F0F0F0u) >> 4u); + b = ((b & 0x00FF00FFu) << 8u) | ((b & 0xFF00FF00u) >> 8u); + return vec2(float(i) / float(n), float(b) * 2.3283064365386963e-10); +} +void main() { + vec3 n = dirFromUV(v_uv); + vec3 up = abs(n.y) < 0.999 ? vec3(0, 1, 0) : vec3(1, 0, 0); + vec3 t = normalize(cross(up, n)); + vec3 b = cross(n, t); + vec3 acc = vec3(0.0); + const uint N = 512u; + for (uint i = 0u; i < N; i++) { + vec2 h = hammersley(i, N); + float phi = 2.0 * PI * h.x; + float ct = sqrt(1.0 - h.y); // cosine-weighted + float st = sqrt(h.y); + vec3 d = t * (cos(phi) * st) + b * (sin(phi) * st) + n * ct; + vec3 c = textureLod(u_sky, skyUV(d), 5.0).rgb; + acc += min(c, vec3(u_sun_clip)); + } + o_color = vec4(acc / float(N), 1.0); +} diff --git a/packages/ludic.render3d/shaders/ibl_prefilter.frag b/packages/ludic.render3d/shaders/ibl_prefilter.frag new file mode 100644 index 00000000..792232e2 --- /dev/null +++ b/packages/ludic.render3d/shaders/ibl_prefilter.frag @@ -0,0 +1,53 @@ +in vec2 v_uv; +out vec4 o_color; +uniform sampler2D u_sky; +uniform float u_rough; +uniform float u_sun_clip; +uniform float u_sky_w; +vec3 dirFromUV(vec2 uv) { + float phi = (uv.x - 0.5) * 2.0 * PI; + float theta = uv.y * PI; + return vec3(sin(theta) * sin(phi), cos(theta), -sin(theta) * cos(phi)); +} +vec2 hammersley(uint i, uint n) { + uint b = i; + b = (b << 16u) | (b >> 16u); + b = ((b & 0x55555555u) << 1u) | ((b & 0xAAAAAAAAu) >> 1u); + b = ((b & 0x33333333u) << 2u) | ((b & 0xCCCCCCCCu) >> 2u); + b = ((b & 0x0F0F0F0Fu) << 4u) | ((b & 0xF0F0F0F0u) >> 4u); + b = ((b & 0x00FF00FFu) << 8u) | ((b & 0xFF00FF00u) >> 8u); + return vec2(float(i) / float(n), float(b) * 2.3283064365386963e-10); +} +void main() { + vec3 n = dirFromUV(v_uv); + vec3 v = n; + if (u_rough < 0.02) { o_color = vec4(textureLod(u_sky, skyUV(n), 0.0).rgb, 1.0); return; } + vec3 up = abs(n.y) < 0.999 ? vec3(0, 1, 0) : vec3(1, 0, 0); + vec3 t = normalize(cross(up, n)); + vec3 b = cross(n, t); + float a = u_rough * u_rough; + vec3 acc = vec3(0.0); + float wsum = 0.0; + const uint N = 256u; + for (uint i = 0u; i < N; i++) { + vec2 x = hammersley(i, N); + float phi = 2.0 * PI * x.x; + float ct = sqrt((1.0 - x.y) / (1.0 + (a * a - 1.0) * x.y)); + float st = sqrt(1.0 - ct * ct); + vec3 h = t * (cos(phi) * st) + b * (sin(phi) * st) + n * ct; + vec3 l = 2.0 * dot(v, h) * h - v; + float NoL = dot(n, l); + if (NoL > 0.0) { + float NoH = max(ct, 0.0); + float D = D_GGX(NoH, a); + float pdf = D * NoH / (4.0 * max(dot(v, h), 1e-4)) + 1e-4; + float saTexel = 4.0 * PI / (u_sky_w * u_sky_w * 0.5); + float saSample = 1.0 / (float(N) * pdf); + float mip = clamp(0.5 * log2(saSample / saTexel) + 1.0, 0.0, 8.0); + vec3 c = textureLod(u_sky, skyUV(l), mip).rgb; + acc += min(c, vec3(u_sun_clip)) * NoL; + wsum += NoL; + } + } + o_color = vec4(acc / max(wsum, 1e-4), 1.0); +} diff --git a/packages/ludic.render3d/shaders/impostor.frag b/packages/ludic.render3d/shaders/impostor.frag new file mode 100644 index 00000000..f26ac71f --- /dev/null +++ b/packages/ludic.render3d/shaders/impostor.frag @@ -0,0 +1,66 @@ +in vec2 v_uv; +in vec3 v_wpos; +in float v_seed; +in float v_tile; +in float v_yaw; +out vec4 o_color; +uniform sampler2D u_atlas_albedo; +uniform sampler2D u_atlas_normal; +uniform mat4 u_view; +uniform float u_tiles; +uniform vec3 u_tint; +uniform float u_radius; +void main() { + if (v_wpos.y < u_clip_y) discard; + vec2 uv = vec2((v_tile + v_uv.x) / u_tiles, v_uv.y); +#ifdef SHADOW_PASS + // the map's texels are coarse: read a finer mip so the crown's coverage is not averaged away + vec4 a = texture(u_atlas_albedo, uv, -3.0); + if (a.a < 0.22) discard; +#else + vec4 a = texture(u_atlas_albedo, uv); + float rawA = a.a; + a.rgb /= max(a.a, 1e-3); // the atlas mips are premultiplied by coverage + // alpha-to-coverage, sharpened per mip so the silhouette stays crisp at any distance + float cov = (a.a - 0.3) / max(fwidth(a.a), 1e-4) + 0.5; + if (cov < 0.02) discard; + a.a = clamp(cov, 0.0, 1.0); +#endif +#ifdef SHADOW_PASS + return; +#else + // The normal atlas is cleared to black where nothing was drawn, and its mips average + // that black into every silhouette texel — decoded, a half-covered texel pointed away + // from everything and shaded near black, so each tree wore a dark outline. Dividing by + // the same coverage restores the normal (and the AO in .a) of the covered part. + vec4 nn = texture(u_atlas_normal, uv) / max(rawA, 1e-3); + vec3 n = clamp(nn.rgb, 0.0, 1.0) * 2.0 - 1.0; + // the tile was baked from angle tile*2pi/tiles around the canonical tree; rotate by the instance yaw + float s = sin(v_yaw), c = cos(v_yaw); + n = vec3(c * n.x + s * n.z, n.y, -s * n.x + c * n.z); + n = normalize(n); + // canopy hull normal: a rounded shell over the card, blended with the baked detail + float far = smoothstep(200.0, 1200.0, length(v_wpos - u_cam_pos)); + vec2 q = vec2(v_uv.x * 2.0 - 1.0, v_uv.y * 2.0 - 1.0); + vec3 toCam = normalize(u_cam_pos - v_wpos); toCam.y = 0.0; toCam = normalize(toCam); + vec3 right = vec3(-toCam.z, 0.0, toCam.x); + vec3 hull = normalize(right * q.x * 0.8 + vec3(0.0, 1.0, 0.0) * (q.y * 0.6 + 0.35) + toCam * 0.7); + n = normalize(mix(hull, n, mix(0.65, 0.35, far))); + float dist = length(v_wpos - u_cam_pos); + float viewDepth = -(u_view * vec4(v_wpos, 1.0)).z; + vec3 alb = a.rgb * u_tint * (0.85 + 0.3 * fract(v_seed * 7.13)) * regionTint(v_wpos, 0.4); + // a distant stand reads as a dark mass, not as bright separate sprites + alb = mix(alb, alb * vec3(0.72, 0.78, 0.72), far); + // the card itself is the caster: look up the shadow a little toward the sun so it does not self-shadow + float shadow = sunShadow(v_wpos + u_sun_dir * u_radius * 0.7, vec3(0, 1, 0), viewDepth); + // crowns are dense: darken toward the centre of the card as a cheap interior occlusion + float interior = 1.0 - 0.45 * smoothstep(0.9, 0.3, abs(q.x)) * smoothstep(1.0, 0.2, v_uv.y); + // ground contact: the lowest part of anything sitting on the ground is occluded by it + // (a boulder's underside, a trunk's base); without it a far boulder is a sticker on the grass + interior *= mix(0.55, 1.0, smoothstep(0.0, 0.3, v_uv.y)); + vec3 col = shade(v_wpos, n, alb, 0.85, 0.0, clamp(nn.a, 0.0, 1.0) * 0.8 * interior, shadow * interior, viewDepth); + col += alb * skyIrradiance(vec3(0, 1, 0)) * 0.06; + col = applyFog(col, v_wpos, dist); + o_color = vec4(sane(col), a.a); +#endif +} diff --git a/packages/ludic.render3d/shaders/impostor.vert b/packages/ludic.render3d/shaders/impostor.vert new file mode 100644 index 00000000..5e0a7980 --- /dev/null +++ b/packages/ludic.render3d/shaders/impostor.vert @@ -0,0 +1,42 @@ +// camera-facing (around y) card per instance, showing the atlas tile nearest the view angle +layout(location = 0) in vec2 a_xy; // [-0.5, 0.5] x [0, 1] +layout(location = 1) in vec2 a_uv; +layout(location = 3) in vec4 i_pos; // x y z scale +layout(location = 4) in vec4 i_rot; // sin cos seed wind +uniform mat4 u_view; +uniform mat4 u_proj; +uniform mat4 u_light_vp; +uniform vec3 u_cam_pos; +uniform vec3 u_face_dir; // direction the cards face (to the camera, or the sun in the shadow pass) +uniform float u_radius; +uniform float u_height; +uniform float u_tiles; +out vec2 v_uv; +out vec3 v_wpos; +out float v_seed; +out float v_tile; +out float v_yaw; +void main() { + vec3 center = i_pos.xyz; +#ifdef SHADOW_PASS + vec3 toCam = normalize(vec3(u_face_dir.x, 0.0, u_face_dir.z)); +#else + vec3 toCam = u_cam_pos - center; toCam.y = 0.0; toCam = normalize(toCam); +#endif + vec3 right = vec3(-toCam.z, 0.0, toCam.x); + float yaw = atan(i_rot.x, i_rot.y); + // angle of the viewer around the (rotated) tree, in tile units + float ang = atan(toCam.x, -toCam.z) - yaw; + float t = floor(fract(ang / 6.2831853) * u_tiles + 0.5); + v_tile = mod(t, u_tiles); + v_yaw = yaw; + vec3 w = center + right * (a_xy.x * 2.0 * u_radius * i_pos.w) + vec3(0.0, a_xy.y * u_height * i_pos.w, 0.0); + v_wpos = w; + v_uv = a_uv; + v_seed = i_rot.z; +#ifdef SHADOW_PASS + gl_Position = u_light_vp * vec4(w, 1.0); +#else + gl_Position = u_proj * u_view * vec4(w, 1.0); +#endif +} diff --git a/packages/ludic.render3d/shaders/lighting.glsl b/packages/ludic.render3d/shaders/lighting.glsl new file mode 100644 index 00000000..6595b6ce --- /dev/null +++ b/packages/ludic.render3d/shaders/lighting.glsl @@ -0,0 +1,272 @@ +// ---- PBR + IBL + cascaded shadows + aerial perspective (shared) --------------------- +uniform sampler2D u_irradiance; // equirect, diffuse-convolved sky +uniform sampler2DArray u_prefilter; // equirect, GGX-prefiltered sky per roughness level +uniform sampler2D u_brdf; // split-sum BRDF LUT +#define CASCADES 5 +uniform sampler2DArrayShadow u_shadow; // CASCADES layers +float shadowTap(vec2 uv, int c, float ref) { return texture(u_shadow, vec4(uv, float(c), ref)); } +uniform mat4 u_cascade_vp[CASCADES]; +uniform float u_cascade_split[CASCADES]; // view-space far distance of each cascade +uniform float u_cascade_range[CASCADES]; // light-frustum depth extent of each cascade (m) +uniform float u_cascade_texel[CASCADES]; // shadow texel size of each cascade (m) +uniform vec3 u_sun_dir; // toward the sun +uniform vec3 u_sun_color; // radiance +uniform vec3 u_cam_pos; +uniform float u_prefilter_levels; +uniform float u_fog_density; +uniform float u_fog_height_falloff; +uniform float u_clip_y; // planar-reflection pass: discard everything below this height +uniform float u_spec_scale; // 1 for surfaces; foliage crowns get a fraction: needles are + // tiny rough cylinders, not sheets, and a crown of card quads + // seen at grazing angles otherwise mirrors the sky and frosts + +const float PI = 3.14159265359; +// never let a NaN or an infinity reach the frame: it would smear through the bloom pyramid +vec3 sane(vec3 c) { return (any(isnan(c)) || any(isinf(c))) ? vec3(0.0) : c; } + +vec2 equirectUV(vec3 d) { + return vec2(atan(d.x, -d.z) / (2.0 * PI) + 0.5, acos(clamp(d.y, -1.0, 1.0)) / PI); +} +// the HDRI itself is read through a yaw rotation (u_sky_rot = sin, cos), so the sun can be +// placed where the scene wants it; the convolved maps are built through the same rotation +uniform vec2 u_sky_rot; +vec2 skyUV(vec3 d) { + vec3 r = vec3(u_sky_rot.y * d.x + u_sky_rot.x * d.z, d.y, -u_sky_rot.x * d.x + u_sky_rot.y * d.z); + return equirectUV(r); +} +// The HDRI is a pure sky: below the horizon it is a flat bright grey, not ground. Anything +// whose normal points down — the underside of a needle card, the lower half of a crown — +// was lighting itself from that grey and came out white. Below the horizon the light is +// what the ground reflects: the horizon sky times a meadow albedo. +const vec3 GROUND_ALB = vec3(0.30, 0.34, 0.14); +// the time of day (daylight.ludic): the sky's light scaled toward night, and the campfire +uniform vec3 u_ibl_scale; +uniform float u_daylight; +uniform vec3 u_fire_pos; +uniform vec3 u_fire_color; +uniform vec3 u_hand_pos; // a torch or flashlight in the hand +uniform vec3 u_hand_color; +uniform vec3 u_hand_dir; +uniform float u_hand_cone; // cos of the half-angle; <= -1: a point light +vec3 skyIrradianceRaw(vec3 n) { return texture(u_irradiance, equirectUV(n)).rgb * u_ibl_scale; } +vec3 skyIrradiance(vec3 n) { + vec3 up = skyIrradianceRaw(vec3(n.x, max(n.y, 0.0), n.z)); + vec3 ground = skyIrradianceRaw(normalize(vec3(n.x, 0.15, n.z) + vec3(1e-4, 0.0, 0.0))) * GROUND_ALB; + return mix(ground, up, smoothstep(-0.25, 0.2, n.y)); +} +vec3 skyPrefilteredRaw(vec3 r, float rough) { + float lv = rough * (u_prefilter_levels - 1.0); + float l0 = floor(lv); + float l1 = min(l0 + 1.0, u_prefilter_levels - 1.0); + vec2 uv = equirectUV(r); + return mix(texture(u_prefilter, vec3(uv, l0)).rgb, texture(u_prefilter, vec3(uv, l1)).rgb, lv - l0) * u_ibl_scale; +} +// the campfire: one warm point light, out by twelve metres +vec3 fireLight(vec3 wpos, vec3 n, vec3 albedo) { + vec3 d = u_fire_pos - wpos; + float r2 = max(dot(d, d), 0.04); + vec3 l = d * inversesqrt(r2); + float att = smoothstep(14.0, 5.0, sqrt(r2)) / (0.6 + r2); + return albedo / PI * u_fire_color * max(dot(n, l), 0.0) * att; +} +vec3 handLight(vec3 wpos, vec3 n, vec3 albedo) { + vec3 d = u_hand_pos - wpos; + float r2 = max(dot(d, d), 0.04); + vec3 l = d * inversesqrt(r2); + float att = smoothstep(26.0, 6.0, sqrt(r2)) / (0.5 + r2 * 0.35); + if (u_hand_cone > -1.0) { + float c = dot(-l, u_hand_dir); + att *= smoothstep(u_hand_cone, u_hand_cone + 0.12, c); + } + return albedo / PI * u_hand_color * max(dot(n, l), 0.0) * att; +} +vec3 skyPrefiltered(vec3 r, float rough) { + vec3 up = skyPrefilteredRaw(vec3(r.x, max(r.y, 0.0), r.z), rough); + vec3 ground = skyPrefilteredRaw(normalize(vec3(r.x, 0.15, r.z) + vec3(1e-4, 0.0, 0.0)), max(rough, 0.6)) * GROUND_ALB; + return mix(ground, up, smoothstep(-0.2, 0.15, r.y)); +} + +float D_GGX(float NoH, float a) { float a2 = a * a; float d = NoH * NoH * (a2 - 1.0) + 1.0; return a2 / (PI * d * d); } +float V_Smith(float NoV, float NoL, float a) { + float a2 = a * a; + float gv = NoL * sqrt(NoV * NoV * (1.0 - a2) + a2); + float gl = NoV * sqrt(NoL * NoL * (1.0 - a2) + a2); + return 0.5 / max(gv + gl, 1e-4); +} +vec3 F_Schlick(float VoH, vec3 f0) { float f = pow(1.0 - VoH, 5.0); return f0 + (1.0 - f0) * f; } +vec3 F_SchlickRough(float NoV, vec3 f0, float rough) { return f0 + (max(vec3(1.0 - rough), f0) - f0) * pow(1.0 - NoV, 5.0); } + +// interleaved-gradient noise for rotated PCF taps +float ign(vec2 p) { return fract(52.9829189 * fract(0.06711056 * p.x + 0.00583715 * p.y)); } + +float cascadeRange(int c) { return u_cascade_range[c]; } +float cascadeTexel(int c) { return u_cascade_texel[c]; } + +// biasWorld in metres; the receiver is pushed along its normal by a texel first +float shadowSample(int c, vec3 wpos, float biasWorld) { + vec4 lp = u_cascade_vp[c] * vec4(wpos, 1.0); + vec3 p = lp.xyz / lp.w * 0.5 + 0.5; + if (p.x < 0.0 || p.x > 1.0 || p.y < 0.0 || p.y > 1.0 || p.z > 1.0) return 1.0; + float bias = biasWorld / cascadeRange(c); + float texel = 1.0 / 2048.0; + float r = ign(gl_FragCoord.xy) * 6.2831853; + float cs = cos(r), sn = sin(r); + mat2 rot = mat2(cs, sn, -sn, cs); + float s = 0.0; + const vec2 taps[8] = vec2[8](vec2(-0.7071, 0.7071), vec2(-0.0, -0.875), vec2(0.5303, 0.5303), vec2(-0.625, -0.0), + vec2(0.3536, -0.3536), vec2(-0.0, 0.375), vec2(-0.1768, -0.1768), vec2(0.125, 0.0)); + // the far cascades' texels are metres wide: a wider filter turns their staircase into a penumbra + float rad = texel * ((c >= 4) ? 2.6 : (c == 3) ? 2.0 : 1.5); + for (int i = 0; i < 8; i++) { + vec2 off = rot * taps[i] * rad; + s += shadowTap(p.xy + off, c, p.z - bias); + } + return s / 8.0; +} + +// one cascade's lookup, with a normal offset and a slope-scaled depth bias +float shadowSlope(int c, vec3 wpos, vec3 n, float tanT) { + float tx = cascadeTexel(c); + float filt = (c >= 4) ? 2.6 : ((c == 3) ? 2.0 : 1.5); // matches shadowSample's rad + vec3 wp = wpos + n * tx * (2.5 + 1.5 * tanT); + return shadowSample(c, wp, tx * (1.0 + filt * tanT) + 0.02); +} + +// The baked height-field shadow (tershadow.frag): R = the lowest lit height over this +// ground texel, G = distance to the occluder that set it. Any receiver — ground, crown, +// card, water — compares its own height, so everything agrees on where the hill's +// shadow falls. The penumbra widens with the occluder's distance like a real one. +uniform sampler2D u_tershadow; +uniform vec2 u_ts_origin; +uniform float u_ts_half; +uniform float u_ts_on; +uniform sampler2D u_ts_height; +// the ground's normal under a world position (4 m texels): cover standing on the ground +// is lit with this beyond a few tens of metres, so a hillside and the grass on it agree +vec3 terrainNormalAt(vec3 wpos) { + vec2 uv = (wpos.xz - u_ts_origin) / (2.0 * u_ts_half) + 0.5; + float step = 1.0 / float(textureSize(u_ts_height, 0).x); + float world = step * 2.0 * u_ts_half; + float hl = texture(u_ts_height, uv - vec2(step, 0)).r, hr = texture(u_ts_height, uv + vec2(step, 0)).r; + float hd = texture(u_ts_height, uv - vec2(0, step)).r, hu = texture(u_ts_height, uv + vec2(0, step)).r; + return normalize(vec3(hl - hr, 2.0 * world, hd - hu)); +} +float terrainShadow(vec3 wpos) { + if (u_ts_on < 0.5) return 1.0; + vec2 uv = (wpos.xz - u_ts_origin) / (2.0 * u_ts_half) + 0.5; + if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) return 1.0; + vec2 s = texture(u_tershadow, uv).rg; + float w = 0.6 + 0.02 * s.y; + return smoothstep(-w, w, wpos.y + 0.25 - s.x); +} + +uniform int u_force_cascade; +// the far-field version: one hardware 2x2 tap in the cascade, no rotated disc, no blend +float sunShadowCheap(vec3 wpos, vec3 n, float viewDepth) { + int c = CASCADES - 1; + for (int i = 0; i < CASCADES - 1; i++) { if (viewDepth < u_cascade_split[i]) { c = i; break; } } + float tx = cascadeTexel(c); + vec4 lp = u_cascade_vp[c] * vec4(wpos + n * tx * 2.5, 1.0); + vec3 p = lp.xyz / lp.w * 0.5 + 0.5; + float s = 1.0; + if (p.x >= 0.0 && p.x <= 1.0 && p.y >= 0.0 && p.y <= 1.0 && p.z <= 1.0) s = shadowTap(p.xy, c, p.z - (tx * 2.0 + 0.02) / cascadeRange(c)); + return min(s, terrainShadow(wpos)); +} +float sunShadow(vec3 wpos, vec3 n, float viewDepth) { + int c = CASCADES - 1; + if (u_force_cascade >= 0) { float tx0 = cascadeTexel(u_force_cascade); return shadowSample(u_force_cascade, wpos + n * tx0 * 1.5, tx0 * 1.5 + 0.02); } + for (int i = 0; i < CASCADES - 1; i++) { if (viewDepth < u_cascade_split[i]) { c = i; break; } } + float NoL = max(dot(n, u_sun_dir), 0.0); + // Depth across one shadow texel changes by texel * tan(theta) on a surface lit at + // theta from its normal, and the PCF disc reaches `filt` texels out, so the bias must + // cover the drop over the whole filter rather than a single texel. The old form used + // (1 - NoL): at NoL = 0.2 that is 0.8 where tan(theta) is 4.9, six times short. With + // the caster and receiver now the same mesh, that shortfall is what let the terrain + // shadow itself along its own triangle edges — a faint grid over the whole slope. + float tanT = min(sqrt(max(1.0 - NoL * NoL, 0.0)) / max(NoL, 0.05), 10.0); + float s = shadowSlope(c, wpos, n, tanT); + // blend across the cascade edge + float edge = u_cascade_split[c]; + float f = smoothstep(edge * 0.85, edge, viewDepth); + if (f > 0.0 && c < CASCADES - 1) { + s = mix(s, shadowSlope(c + 1, wpos, n, tanT), f); + } + return min(s, terrainShadow(wpos)); +} + +// patchy sunlight: a cloud layer projected along the sun onto the ground +uniform float u_cloud_shadow; // strength +uniform float u_time; +// the mask is baked into the height-field shadow texture's B (tershadow.frag); the +// projection along the sun and the drift are a uv shift +float cloudShadow(vec3 wpos) { + if (u_cloud_shadow <= 0.0 || u_ts_on < 0.5) return 1.0; + float h = 1400.0 - wpos.y; + vec2 c = wpos.xz + u_sun_dir.xz / max(u_sun_dir.y, 0.1) * h; + c += vec2(u_time * 3.0, u_time * 1.2); + vec2 uv = (c - u_ts_origin) / (2.0 * u_ts_half) + 0.5; + if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) return 1.0; + return 1.0 - u_cloud_shadow * texture(u_tershadow, uv).b; +} + +// regional vegetation colour: aspen groves and drier ridges read lighter and yellower than +// the dark spruce and the lush hollows (a slow noise over the world, shaped by elevation) +vec3 regionTint(vec3 wpos, float strength) { + float n = fbm(wpos.xz * 0.0018 + 4.0, 3) * 0.5 + 0.5; + float aspen = smoothstep(0.52, 0.7, n) * smoothstep(520.0, 250.0, wpos.y); + float dry = smoothstep(0.35, 0.15, fbm(wpos.xz * 0.004 + 9.0, 3) * 0.5 + 0.5); + vec3 t = vec3(1.0); + t = mix(t, vec3(1.25, 1.3, 0.85), aspen * strength); + t = mix(t, vec3(1.15, 1.05, 0.7), dry * strength * 0.6); + return t; +} + +// direct + image-based lighting for one surface +vec3 shade(vec3 wpos, vec3 n, vec3 albedo, float rough, float metal, float ao, float shadow, float viewDepth) { + vec3 v = normalize(u_cam_pos - wpos); + vec3 l = u_sun_dir; + vec3 h = normalize(v + l); + float NoV = max(dot(n, v), 1e-2); + float NoL = max(dot(n, l), 0.0); + float NoH = max(dot(n, h), 0.0); + float VoH = max(dot(v, h), 0.0); + rough = clamp(rough, 0.045, 1.0); + float a = rough * rough; + vec3 f0 = mix(vec3(0.04), albedo, metal); + vec3 F = F_Schlick(VoH, f0); + vec3 spec = min(D_GGX(NoH, a) * V_Smith(NoV, NoL, a), 12.0) * F * u_spec_scale; // cap the highlight: no half-float overflow, no fireflies + vec3 kd = (1.0 - F) * (1.0 - metal); + vec3 direct = (kd * albedo / PI + spec) * u_sun_color * NoL * shadow * cloudShadow(wpos); + // IBL + vec3 Fr = F_SchlickRough(NoV, f0, rough); + vec3 kdi = (1.0 - Fr) * (1.0 - metal); + vec3 irr = skyIrradiance(n); + vec3 diffuseIBL = kdi * albedo * irr; + vec3 r = reflect(-v, n); + vec3 pre = skyPrefiltered(r, rough); + vec2 brdf = texture(u_brdf, vec2(NoV, rough)).rg; + vec3 specIBL = pre * (Fr * brdf.x + brdf.y) * u_spec_scale; + // one bounce off the sunlit ground onto whatever faces it (a warm fill from below) + vec3 groundAlb = vec3(0.16, 0.2, 0.07); + vec3 bounce = kdi * albedo * groundAlb * (u_sun_color * max(u_sun_dir.y, 0.0) / PI + irr) * clamp(0.5 - 0.5 * n.y, 0.0, 1.0) * 0.5; + // specular occlusion from ao + float so = clamp(pow(NoV + ao, exp2(-16.0 * rough - 1.0)) - 1.0 + ao, 0.0, 1.0); + // check for NaN before min(): on this GPU min(NaN, x) returns x, which would hide the fault as a hot pixel + vec3 c = direct + (diffuseIBL * ao + specIBL * so) + bounce * ao + (fireLight(wpos, n, albedo) + handLight(wpos, n, albedo)) * ao; + if (any(isnan(direct)) || any(isnan(diffuseIBL)) || any(isnan(specIBL)) || isnan(so)) return vec3(0.0); + return sane(min(c, vec3(4096.0))); +} + +// aerial perspective: exponential height fog toward the horizon sky, with sun inscatter +vec3 applyFog(vec3 col, vec3 wpos, float dist) { + vec3 dir = normalize(wpos - u_cam_pos); + float hf = u_fog_height_falloff; + float t = dir.y * hf; + float integ = (abs(t) > 1e-4) ? (1.0 - exp(-dist * t)) / t : dist * (1.0 - 0.5 * dist * t); + float fogAmt = u_fog_density * exp(-u_cam_pos.y * hf) * integ; + float f = 1.0 - exp(-fogAmt); + vec3 fogCol = skyPrefiltered(vec3(dir.x, max(dir.y, 0.02), dir.z), 0.6); + float sunAmt = pow(max(dot(dir, u_sun_dir), 0.0), 8.0); + fogCol += u_sun_color * 0.02 * sunAmt; + return mix(col, fogCol, clamp(f, 0.0, 1.0)); +} diff --git a/packages/ludic.render3d/shaders/model.frag b/packages/ludic.render3d/shaders/model.frag new file mode 100644 index 00000000..9f40e465 --- /dev/null +++ b/packages/ludic.render3d/shaders/model.frag @@ -0,0 +1,185 @@ +in vec3 v_wpos; +in vec3 v_nrm; +in vec2 v_uv; +in float v_seed; +in vec2 v_rot; +in float v_hull; +uniform float u_model_h; +out vec4 o_color; +uniform sampler2D u_diff; +uniform sampler2D u_nrm; +uniform sampler2D u_arm; +uniform mat4 u_view; +uniform vec3 u_tint; +uniform float u_rough_scale; +uniform float u_emissive; // self-lit (a flame): albedo added back after shading +#ifdef BLADE +uniform vec3 u_blade_base; +uniform vec3 u_blade_tip; +#endif +#ifdef CARD +uniform float u_cull; // the layer's cull distance (m); 0 = none +#endif + +mat3 cotangentFrame(vec3 N, vec3 p, vec2 uv) { + vec3 dp1 = dFdx(p), dp2 = dFdy(p); + vec2 duv1 = dFdx(uv), duv2 = dFdy(uv); + vec3 dp2perp = cross(dp2, N), dp1perp = cross(N, dp1); + vec3 T = dp2perp * duv1.x + dp1perp * duv2.x; + vec3 B = dp2perp * duv1.y + dp1perp * duv2.y; + float invmax = inversesqrt(max(dot(T, T), dot(B, B)) + 1e-12); + return mat3(T * invmax, B * invmax, N); +} + +void main() { + if (v_wpos.y < u_clip_y) discard; + vec3 N = normalize(v_nrm); + if (!gl_FrontFacing && v_hull >= 0.0) N = -N; +#ifdef CARD + // a baked card: albedo with coverage (premultiplied mips), normal in the card's own frame + vec4 ca = texture(u_diff, v_uv); + float rawA = ca.a; + ca.rgb /= max(ca.a, 1e-3); +#ifdef SHADOW_PASS + if (ca.a < 0.3) discard; + float cardAlpha = 1.0; + return; +#else + float cov = (ca.a - 0.4) / max(fwidth(ca.a), 1e-4) + 0.5; + if (cov < 0.02) discard; + float cardAlpha = clamp(cov, 0.0, 1.0); +#endif +#endif + float dist = length(v_wpos - u_cam_pos); + float viewDepth = -(u_view * vec4(v_wpos, 1.0)).z; +#if defined(CARD) && !defined(SHADOW_PASS) + // A clump card at 400 m is a two-pixel disc of pure leaf colour on whatever the ground + // is doing — on dark scree it glows. Dissolve toward the cull distance: the carpet + // drape on the ground carries the meadow's colour from there on. + if (u_cull > 1.0) cardAlpha *= 1.0 - smoothstep(u_cull * 0.55, u_cull, dist); + if (cardAlpha < 0.02) discard; +#endif + vec3 alb; + vec3 n; + vec3 arm; + float meshAlpha = 1.0; +#ifdef BLADE + // a procedural blade: dark at the root, lighter at the tip; some blades gone to seed + float t = clamp(v_uv.y, 0.0, 1.0); + alb = mix(u_blade_base, u_blade_tip, t * t) * regionTint(v_wpos, 0.35); + float dry = smoothstep(0.7, 0.8, fract(v_seed * 3.17)); + alb = mix(alb, vec3(0.40, 0.36, 0.13) * (0.45 + 0.55 * t), dry * 0.75); + float patchy = fbm(v_wpos.xz * 0.045, 3) * 0.5 + 0.5; + alb *= mix(vec3(0.7, 0.8, 0.55), vec3(1.1, 1.05, 0.85), patchy); + // a far tuft is a patch of the meadow, darker than a lit blade tip and never straw + if (v_hull < 0.0) alb = mix(u_blade_base, u_blade_tip, 0.45) * regionTint(v_wpos, 0.35) * mix(vec3(0.7, 0.8, 0.55), vec3(1.1, 1.05, 0.85), patchy) * 0.72; + // a rounded cross-section reads softer than a flat card + vec3 side = normalize(cross(N, vec3(0.0, 1.0, 0.0)) + vec3(1e-4)); + n = (v_hull < 0.0) ? N : normalize(N + side * (v_uv.x * 2.0 - 1.0) * 0.6); + arm = vec3(mix(0.2, 1.0, t * t), 0.85, 0.0); +#elif defined(CARD) + // thin grass is lit from either side: face the card toward the sun before shading + if (dot(N, u_sun_dir) < 0.0) N = -N; + // the normal atlas is premultiplied by coverage like the albedo (see impostor.frag) + vec4 cn = texture(u_nrm, v_uv) / max(rawA, 1e-3); + cn = clamp(cn, 0.0, 1.0); + vec3 bn = cn.rgb * 2.0 - 1.0; + // the card frame: right along the quad, up, and out of the quad + vec3 T = normalize(cross(vec3(0.0, 1.0, 0.0), N) + vec3(1e-5)); + n = normalize(T * -bn.x + vec3(0.0, 1.0, 0.0) * bn.y + N * max(abs(bn.z), 0.25)); + n = normalize(mix(n, normalize(N + vec3(0.0, 0.8, 0.0)), 0.35)); + // A clump is a few pixels at 100 m: what the eye reads there is the hillside's shading, + // and a card facing the sun on a slope facing away from it glows against the ground + // like a sticker. Light it with the ground's own normal as it recedes (as the blades + // already do), so cover and terrain darken together. +#ifdef CHEAP + n = terrainNormalAt(v_wpos); +#else + n = normalize(mix(n, terrainNormalAt(v_wpos), smoothstep(25.0, 90.0, dist))); +#endif + alb = ca.rgb * 1.05 * regionTint(v_wpos, 0.8); + arm = vec3(mix(0.5, 1.0, clamp(v_uv.y, 0.0, 1.0)) * (0.6 + 0.4 * cn.a), 0.85, 0.0); +#elif defined(FLOWER) + // a lupine: green stem (uv.x < 1), violet florets above (uv.x in [1,2]), tinted per plant + float hue = fract(v_seed * 5.71); + float vy = clamp(v_uv.y, 0.0, 1.0); + vec3 violet = mix(vec3(0.07, 0.03, 0.32), vec3(0.28, 0.06, 0.36), hue); + vec3 tipc = mix(violet, vec3(0.5, 0.3, 0.7), 0.3); + if (v_uv.x >= 2.0) { + alb = vec3(0.05, 0.13, 0.025) * (0.7 + 0.6 * vy); + } else if (v_uv.x >= 1.0) { + float f = fract(v_uv.x); + alb = mix(violet, tipc, vy) * (0.65 + 0.35 * abs(f * 2.0 - 1.0)); + // florets as little lobes: darker between them, a paler lip on each + float lobe = 0.55 + 0.45 * abs(sin(vy * 9.0 + f * 6.0)); + alb = mix(alb * lobe, vec3(0.55, 0.45, 0.75), 0.18 * smoothstep(0.6, 1.0, lobe)); + } else { + alb = vec3(0.07, 0.16, 0.03); + } + vec3 side = normalize(cross(N, vec3(0.0, 1.0, 0.0)) + vec3(1e-4)); + n = normalize(N + side * (fract(v_uv.x) * 2.0 - 1.0) * 0.7); + arm = vec3(0.9, 0.7, 0.0); +#else + vec4 d = texture(u_diff, v_uv); +#ifdef ALPHA_TEST + // A needle sprig's alpha averages away in the mips, so a plain 0.5 test strips the + // crown bare past 50 m. Scale the alpha back up by the mip level (Castano's alpha + // mipmaps, done at sample time) and sharpen the edge with its screen derivative, then + // let alpha-to-coverage resolve it. + float lod = textureQueryLod(u_diff, v_uv).x; + float a = min(d.a * (1.0 + 0.45 * max(lod, 0.0)), 1.0); + float cov = (a - 0.4) / max(fwidth(a), 1e-4) + 0.5; + if (cov < 0.02) discard; + meshAlpha = clamp(cov, 0.0, 1.0); +#endif + vec3 tn = texture(u_nrm, v_uv).rgb * 2.0 - 1.0; + mat3 tbn = cotangentFrame(N, v_wpos, v_uv); + n = normalize(tbn * tn); + arm = texture(u_arm, v_uv).rgb; + n = normalize(mix(n, N, smoothstep(30.0, 120.0, dist))); + alb = d.rgb; + // a crown's interior is occluded by its own cards + if (u_model_h > 2.0) arm.r *= mix(0.5, 1.0, v_hull); +#endif + alb *= u_tint * (0.85 + 0.3 * fract(v_seed * 7.13)); +#ifdef CARD + // a card is its own caster: look up the shadow a little above and in front of it, and let + // light bleed through the thin clump as real grass does +#ifdef CHEAP + float shadow = cloudShadow(v_wpos) * terrainShadow(v_wpos); +#else + float shadow = mix(1.0, sunShadow(v_wpos + N * 0.1 + vec3(0.0, 0.2, 0.0), N, viewDepth), 0.55); +#endif +#else + float shadow = sunShadow(v_wpos, N, viewDepth); +#endif +#ifdef FOLIAGE + // leaves and needles are matte at every angle: no grazing Fresnel on a two-sided card + float roughF = 1.0; +#else + float roughF = clamp(arm.g * u_rough_scale, 0.35, 1.0); +#endif + vec3 col = shade(v_wpos, n, alb, roughF, 0.0, arm.r, shadow, viewDepth); +#ifdef FOLIAGE + // thin-leaf translucency: light leaking through toward the viewer, and a wrapped diffuse + vec3 v = normalize(u_cam_pos - v_wpos); + float back = pow(max(dot(-v, u_sun_dir), 0.0), 3.0); + float wrap = max(dot(N, u_sun_dir) * 0.5 + 0.5, 0.0); + // Only a thin leaf a few metres away is translucent. A clump card at 200 m is a whole + // bush in two pixels, and giving it the leaf's glow toward the sun painted the + // backlit hillsides with lime discs. The term fades out with distance. + float thin = 1.0 - smoothstep(30.0, 140.0, dist); + // a dense crown of cards is not a thin leaf: much less light comes through it + if (u_model_h > 2.0) thin *= 0.3; + col += alb * u_sun_color * (0.14 * back + 0.05 * wrap) * thin * shadow * cloudShadow(v_wpos); + col += alb * skyIrradiance(vec3(0, 1, 0)) * 0.12 * arm.r; +#endif + col += alb * u_emissive; + if (any(isnan(col))) col = vec3(0.0); + col = applyFog(col, v_wpos, dist); +#ifdef CARD + o_color = vec4(sane(col), cardAlpha); +#else + o_color = vec4(sane(col), meshAlpha); +#endif +} diff --git a/packages/ludic.render3d/shaders/model.vert b/packages/ludic.render3d/shaders/model.vert new file mode 100644 index 00000000..03cd774a --- /dev/null +++ b/packages/ludic.render3d/shaders/model.vert @@ -0,0 +1,102 @@ +// instanced glTF model: attribute 3 = (x, y, z, scale), 4 = (sin yaw, cos yaw, seed, wind) +layout(location = 0) in vec3 a_pos; +layout(location = 1) in vec3 a_nrm; +layout(location = 2) in vec2 a_uv; +layout(location = 3) in vec4 i_pos; +layout(location = 4) in vec4 i_rot; +uniform mat4 u_view; +uniform mat4 u_proj; +uniform mat4 u_light_vp; +uniform float u_time; +uniform float u_wind; +uniform float u_card_w; +uniform float u_card_h; +#ifdef BLADE +uniform vec3 u_cam_pos; +uniform float u_cull; // the blade ring's edge (m) +#endif +// Ground cover is placed on the CPU from a bilinear read of the 4 m height texels, but +// the terrain is drawn from a B-spline of the same texels — two different surfaces, +// up to half a metre apart on rough ground, which buried blades and floated cards. +// Cover layers (u_ground) read the surface the terrain actually draws, so they always +// stand on it, at any tessellation level, with no hand-tuned lift. +uniform float u_ground; +uniform sampler2D u_ts_height; +uniform vec2 u_ts_origin; +uniform float u_ts_half; +float heightSmooth(sampler2D tex, vec2 uv) { + vec2 res = vec2(textureSize(tex, 0)); + vec2 t = uv * res - 0.5; + vec2 f = fract(t); + vec2 i = floor(t); + vec2 w0 = (1.0 - f) * (1.0 - f) * (1.0 - f) / 6.0; + vec2 w1 = (4.0 - 6.0 * f * f + 3.0 * f * f * f) / 6.0; + vec2 w3 = f * f * f / 6.0; + vec2 w2 = 1.0 - w0 - w1 - w3; + vec2 s0 = w0 + w1, s1 = w2 + w3; + vec2 o0 = (i - 1.0 + w1 / s0 + 0.5) / res; + vec2 o1 = (i + 1.0 + w3 / s1 + 0.5) / res; + return (texture(tex, vec2(o0.x, o0.y)).r * s0.x + texture(tex, vec2(o1.x, o0.y)).r * s1.x) * s0.y + + (texture(tex, vec2(o0.x, o1.y)).r * s0.x + texture(tex, vec2(o1.x, o1.y)).r * s1.x) * s1.y; +} +out vec3 v_wpos; +out vec3 v_nrm; +out vec2 v_uv; +out float v_seed; +out vec2 v_rot; +// Crown hull: a tree's needle cards are lit as if they were the surface of a rounded +// crown (normal from the crown's centre), not each as a flat top-lit quad, and the +// cards near the trunk are darkened as the crown's interior. This is how game trees +// have been shaded since SpeedTree; without it a card crown reads as frosted. +uniform float u_model_h; // the model's height (m), 0 = not a crown +out float v_hull; // 0 at the crown's axis .. 1 at its rim +void main() { + float s = i_rot.x, c = i_rot.y; + vec3 p = a_pos * i_pos.w; +#ifdef CARD + p = vec3(p.x * u_card_w, p.y * u_card_h, p.z * u_card_w); +#endif + vec3 n = a_nrm; +#ifdef BLADE + // distant blades: wider so a thinner field keeps its coverage, lit like the ground + // they stand on, and sunk into the carpet texture at the ring's edge instead of popping + float bd = distance(u_cam_pos.xz, i_pos.xz); + p.x *= 1.0 + 2.5 * smoothstep(12.0, 90.0, bd); + p.y *= 1.0 - smoothstep(u_cull * 0.72, u_cull, bd); + n = normalize(mix(n, vec3(0.0, 1.0, 0.0), smoothstep(15.0, 70.0, bd))); +#endif + v_rot = vec2(s, c); + p = vec3(c * p.x + s * p.z, p.y, -s * p.x + c * p.z); + n = vec3(c * n.x + s * n.z, n.y, -s * n.x + c * n.z); +#ifdef WIND + // sway grows with height above the base; gust phase from the instance seed + float hgt = max(p.y, 0.0); + float ph = u_time * 1.7 + i_rot.z * 6.2831 + i_pos.x * 0.05 + i_pos.z * 0.07; + float sway = (sin(ph) * 0.6 + sin(ph * 2.3 + 1.0) * 0.4) * u_wind * i_rot.w; + p.x += sway * hgt * hgt * 0.35; + p.z += sway * hgt * hgt * 0.15 * cos(ph * 0.7); +#endif + v_hull = 1.0; + if (u_model_h > 2.0) { + vec3 cc = vec3(0.0, u_model_h * i_pos.w * 0.55, 0.0); + vec3 rel = p - cc; + float rr = length(rel.xz) / max(u_model_h * i_pos.w * 0.28, 0.1); + v_hull = clamp(rr, 0.0, 1.0); + vec3 hull = normalize(vec3(rel.x, rel.y * 0.5, rel.z) + vec3(0.0, 0.15, 0.0)); + n = normalize(mix(n, hull, 0.7)); + } + vec3 w = p + i_pos.xyz; + if (u_ground > 0.5) { + vec2 huv = (i_pos.xz - u_ts_origin) / (2.0 * u_ts_half) + 0.5; + w.y = heightSmooth(u_ts_height, huv) - 0.03 + p.y; + } + v_wpos = w; + v_nrm = n; + v_uv = a_uv; + v_seed = i_rot.z; +#ifdef SHADOW_PASS + gl_Position = u_light_vp * vec4(w, 1.0); +#else + gl_Position = u_proj * u_view * vec4(w, 1.0); +#endif +} diff --git a/packages/ludic.render3d/shaders/noise.glsl b/packages/ludic.render3d/shaders/noise.glsl new file mode 100644 index 00000000..1ba2ff99 --- /dev/null +++ b/packages/ludic.render3d/shaders/noise.glsl @@ -0,0 +1,27 @@ +// ---- shared noise (value / gradient / fbm / ridged) ---------------------------- +float hash1(vec2 p) { return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123); } +vec2 hash2(vec2 p) { p = vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3))); return fract(sin(p) * 43758.5453123) * 2.0 - 1.0; } +float gnoise(vec2 p) { + vec2 i = floor(p), f = fract(p); + vec2 u = f * f * (3.0 - 2.0 * f); + return mix(mix(dot(hash2(i + vec2(0, 0)), f - vec2(0, 0)), dot(hash2(i + vec2(1, 0)), f - vec2(1, 0)), u.x), + mix(dot(hash2(i + vec2(0, 1)), f - vec2(0, 1)), dot(hash2(i + vec2(1, 1)), f - vec2(1, 1)), u.x), u.y); +} +float fbm(vec2 p, int oct) { + float a = 0.5, s = 0.0, n = 0.0; + mat2 r = mat2(0.8, 0.6, -0.6, 0.8) * 2.02; + for (int i = 0; i < oct; i++) { s += a * gnoise(p); n += a; a *= 0.5; p = r * p; } + return s / n; +} +float ridged(vec2 p, int oct) { + float a = 0.5, s = 0.0, w = 1.0; + mat2 r = mat2(0.8, 0.6, -0.6, 0.8) * 2.1; + for (int i = 0; i < oct; i++) { float n = 1.0 - abs(gnoise(p)); n = n * n * w; w = clamp(n * 1.5, 0.0, 1.0); s += a * n; a *= 0.5; p = r * p; } + return s; +} +// the dirt track: distance from a winding curve through the meadow +float pathDist(vec2 xz) { + float cx = 40.0 * sin(xz.y * 0.011) + 18.0 * sin(xz.y * 0.031 + 1.7) - 30.0; + float cx2 = -180.0 + 25.0 * sin(xz.y * 0.017 + 0.4) + (xz.y * 0.35); + return min(abs(xz.x - cx), abs(xz.x - cx2) + 1.0); +} diff --git a/packages/ludic.render3d/shaders/overlay.frag b/packages/ludic.render3d/shaders/overlay.frag new file mode 100644 index 00000000..6ea8067c --- /dev/null +++ b/packages/ludic.render3d/shaders/overlay.frag @@ -0,0 +1,14 @@ +// 2D overlay: a texture times a colour; the font atlas is white glyphs on alpha +in vec2 v_uv; +in vec4 v_col; +uniform sampler2D u_tex; +uniform float u_is_font; +out vec4 o_color; +void main() { + vec4 t = texture(u_tex, v_uv); + if (u_is_font > 0.5) { + o_color = vec4(v_col.rgb, v_col.a * t.a); + } else { + o_color = vec4(v_col.rgb * t.rgb, v_col.a * t.a); + } +} diff --git a/packages/ludic.render3d/shaders/overlay.vert b/packages/ludic.render3d/shaders/overlay.vert new file mode 100644 index 00000000..47053cdd --- /dev/null +++ b/packages/ludic.render3d/shaders/overlay.vert @@ -0,0 +1,13 @@ +// 2D overlay (overlay.ludic): pixels with the origin top-left, straight to clip space +layout(location = 0) in vec2 a_pos; +layout(location = 1) in vec2 a_uv; +layout(location = 2) in vec4 a_col; +uniform vec2 u_screen; +out vec2 v_uv; +out vec4 v_col; +void main() { + vec2 p = a_pos / u_screen * 2.0 - 1.0; + gl_Position = vec4(p.x, -p.y, 0.0, 1.0); + v_uv = a_uv; + v_col = a_col; +} diff --git a/packages/ludic.render3d/shaders/shadow.frag b/packages/ludic.render3d/shaders/shadow.frag new file mode 100644 index 00000000..2e36007b --- /dev/null +++ b/packages/ludic.render3d/shaders/shadow.frag @@ -0,0 +1,11 @@ +#ifdef ALPHA_TEST +// foliage meshes are cut-out cards: their shadow must have the card's shape, not the quad's +in vec2 v_uv; +uniform sampler2D u_diff; +void main() { + float lod = textureQueryLod(u_diff, v_uv).x; + if (texture(u_diff, v_uv).a * (1.0 + 0.45 * max(lod, 0.0)) < 0.45) discard; +} +#else +void main() { } +#endif diff --git a/packages/ludic.render3d/shaders/sharpen.frag b/packages/ludic.render3d/shaders/sharpen.frag new file mode 100644 index 00000000..657d712c --- /dev/null +++ b/packages/ludic.render3d/shaders/sharpen.frag @@ -0,0 +1,21 @@ +// luma unsharp mask + film grain, on the final LDR image +in vec2 v_uv; +out vec4 o_color; +uniform sampler2D u_src; +uniform vec2 u_texel; +uniform float u_amount; +uniform float u_grain; +float hash(vec2 p) { return fract(sin(dot(p, vec2(12.9898, 78.233))) * 43758.5453); } +float luma(vec3 c) { return dot(c, vec3(0.299, 0.587, 0.114)); } +void main() { + vec3 c = texture(u_src, v_uv).rgb; + vec3 n = texture(u_src, v_uv + vec2(0, u_texel.y)).rgb, s = texture(u_src, v_uv - vec2(0, u_texel.y)).rgb; + vec3 e = texture(u_src, v_uv + vec2(u_texel.x, 0)).rgb, w = texture(u_src, v_uv - vec2(u_texel.x, 0)).rgb; + float lc = luma(c); + float lb = (luma(n) + luma(s) + luma(e) + luma(w) + lc * 4.0) / 8.0; + float d = clamp((lc - lb) * u_amount, -0.08, 0.08); + vec3 col = c * (1.0 + d / max(lc, 1e-3)); + float g = (hash(v_uv * 1731.0 + fract(u_time)) - 0.5) * u_grain; + col += g * (0.6 + 0.4 * (1.0 - lc)); + o_color = vec4(clamp(col, 0.0, 1.0), 1.0); +} diff --git a/packages/ludic.render3d/shaders/skin.vert b/packages/ludic.render3d/shaders/skin.vert new file mode 100644 index 00000000..59b9faa5 --- /dev/null +++ b/packages/ludic.render3d/shaders/skin.vert @@ -0,0 +1,43 @@ +// a skinned glTF model (skin.ludic / actor.ludic): four joint influences per vertex +// blended on the GPU, then one model matrix. Writes the same varyings as model.vert so +// model.frag (lit) and shadow.frag (casters) shade it unchanged. +layout(location = 0) in vec3 a_pos; +layout(location = 1) in vec3 a_nrm; +layout(location = 2) in vec2 a_uv; +layout(location = 5) in vec4 a_joints; // integer indices, read as floats +layout(location = 6) in vec4 a_weights; +uniform mat4 u_model; +uniform mat4 u_bones[48]; +uniform float u_skinned; // 0: a rigid model on the same path +uniform mat4 u_view; +uniform mat4 u_proj; +uniform mat4 u_light_vp; +out vec3 v_wpos; +out vec3 v_nrm; +out vec2 v_uv; +out float v_seed; +out vec2 v_rot; +out float v_hull; +void main() { + mat4 m = u_model; + if (u_skinned > 0.5) { + mat4 sk = a_weights.x * u_bones[int(a_joints.x + 0.5)] + + a_weights.y * u_bones[int(a_joints.y + 0.5)] + + a_weights.z * u_bones[int(a_joints.z + 0.5)] + + a_weights.w * u_bones[int(a_joints.w + 0.5)]; + m = u_model * sk; + } + vec4 w = m * vec4(a_pos, 1.0); + v_wpos = w.xyz; + v_nrm = normalize(mat3(m) * a_nrm); + v_uv = a_uv; + // model.frag scales the albedo by 0.85 + 0.3 * fract(seed * 7.13); this seed makes that 1 + v_seed = 0.0701; + v_rot = vec2(0.0, 1.0); + v_hull = 1.0; +#ifdef SHADOW_PASS + gl_Position = u_light_vp * w; +#else + gl_Position = u_proj * u_view * w; +#endif +} diff --git a/packages/ludic.render3d/shaders/sky.frag b/packages/ludic.render3d/shaders/sky.frag new file mode 100644 index 00000000..4eb74a0b --- /dev/null +++ b/packages/ludic.render3d/shaders/sky.frag @@ -0,0 +1,40 @@ +in vec2 v_uv; +out vec4 o_color; +uniform sampler2D u_sky; +uniform mat4 u_inv_vp; +uniform float u_sky_gain; +uniform float u_sky_sat; +// a star: one hash per cell of the direction, a few of them bright, a slow twinkle +float starField(vec3 dir, float t) { + vec3 p = dir * 230.0; + vec3 c = floor(p); + vec3 f = p - c - 0.5; + float h = fract(sin(dot(c, vec3(12.9898, 78.233, 37.719))) * 43758.5453); + float h2 = fract(h * 91.7); + float bright = smoothstep(0.972, 1.0, h); + float disc = smoothstep(0.42, 0.0, length(f)); + float twinkle = 0.7 + 0.3 * sin(t * (1.5 + 3.0 * h2) + h2 * 40.0); + return bright * disc * twinkle * (0.5 + h2); +} +void main() { + vec4 a = u_inv_vp * vec4(v_uv * 2.0 - 1.0, 1.0, 1.0); + vec3 dir = normalize(a.xyz / a.w - u_cam_pos); + // level 0: the equirect seam (atan wraps) would otherwise pick the smallest mip along one column + vec3 col = min(textureLod(u_sky, skyUV(dir), 0.0).rgb, vec3(4096.0)) * u_sky_gain; + float l = dot(col, vec3(0.2126, 0.7152, 0.0722)); + col = max(mix(vec3(l), col, u_sky_sat), vec3(0.0)); + // the photograph's sky dims with the day (daylight.ludic); the night adds its own + col *= u_ibl_scale; + float night = 1.0 - smoothstep(0.0, 0.45, u_daylight); + if (night > 0.0) { + vec3 nightCol = mix(vec3(0.012, 0.016, 0.034), vec3(0.003, 0.004, 0.010), clamp(dir.y, 0.0, 1.0)); + float stars = starField(dir, u_time) * smoothstep(-0.02, 0.15, dir.y); + nightCol += stars * vec3(0.55, 0.6, 0.7) * night; + col += nightCol * night; + } + // below the horizon the HDRI ground is replaced by the fog colour + float below = smoothstep(0.0, -0.08, dir.y); + vec3 fogCol = skyPrefiltered(vec3(dir.x, 0.02, dir.z), 0.6); + col = mix(col, fogCol, below); + o_color = vec4(sane(col), 1.0); +} diff --git a/packages/ludic.render3d/shaders/ssao.frag b/packages/ludic.render3d/shaders/ssao.frag new file mode 100644 index 00000000..b1dbcde2 --- /dev/null +++ b/packages/ludic.render3d/shaders/ssao.frag @@ -0,0 +1,47 @@ +// screen-space ambient occlusion from the resolved depth (half resolution) +in vec2 v_uv; +out vec4 o_color; +uniform sampler2D u_depth; +uniform mat4 u_inv_proj; +uniform mat4 u_proj; +uniform vec2 u_texel; +uniform float u_radius; // world metres +uniform float u_intensity; +vec3 viewPos(vec2 uv) { + float d = texture(u_depth, uv).r; + vec4 p = u_inv_proj * vec4(uv * 2.0 - 1.0, d * 2.0 - 1.0, 1.0); + return p.xyz / p.w; +} +void main() { + vec3 P = viewPos(v_uv); + if (-P.z > 900.0) { o_color = vec4(1.0); return; } + // normal from the depth's neighbourhood (take the smaller difference on each axis) + vec3 Pr = viewPos(v_uv + vec2(u_texel.x, 0.0)), Pl = viewPos(v_uv - vec2(u_texel.x, 0.0)); + vec3 Pu = viewPos(v_uv + vec2(0.0, u_texel.y)), Pd = viewPos(v_uv - vec2(0.0, u_texel.y)); + vec3 dx = (abs(Pr.z - P.z) < abs(P.z - Pl.z)) ? Pr - P : P - Pl; + vec3 dy = (abs(Pu.z - P.z) < abs(P.z - Pd.z)) ? Pu - P : P - Pd; + vec3 N = normalize(cross(dx, dy)); + float noise = ign(gl_FragCoord.xy); + float ao = 0.0; + const int S = 12; + float radius = u_radius * (1.0 + 0.01 * -P.z); + for (int i = 0; i < S; i++) { + float a = (float(i) + noise) * 2.3999632; // golden angle spiral + float r = sqrt((float(i) + 0.5 + noise) / float(S)); + vec3 dir = vec3(cos(a) * r, sin(a) * r, sqrt(max(0.0, 1.0 - r * r))); + // hemisphere around N + vec3 up = abs(N.z) < 0.999 ? vec3(0, 0, 1) : vec3(1, 0, 0); + vec3 t = normalize(cross(up, N)), b = cross(N, t); + vec3 s = P + (t * dir.x + b * dir.y + N * dir.z) * radius * (0.2 + 0.8 * r); + vec4 c = u_proj * vec4(s, 1.0); + vec2 suv = c.xy / c.w * 0.5 + 0.5; + if (suv.x < 0.0 || suv.x > 1.0 || suv.y < 0.0 || suv.y > 1.0) continue; + float sz = viewPos(suv).z; + float rangeCheck = smoothstep(0.0, 1.0, radius / max(abs(P.z - sz), 1e-3)); + ao += (sz >= s.z + 0.02 * radius ? 1.0 : 0.0) * rangeCheck; + } + ao = 1.0 - u_intensity * ao / float(S); + // contact occlusion is a near-field effect: fade it out with distance + ao = mix(clamp(ao, 0.0, 1.0), 1.0, smoothstep(120.0, 350.0, -P.z)); + o_color = vec4(ao, -P.z, 0.0, 1.0); +} diff --git a/packages/ludic.render3d/shaders/ssao_blur.frag b/packages/ludic.render3d/shaders/ssao_blur.frag new file mode 100644 index 00000000..0a2521f6 --- /dev/null +++ b/packages/ludic.render3d/shaders/ssao_blur.frag @@ -0,0 +1,19 @@ +// depth-aware 4x4 blur of the ao (a) and indirect bounce (rgb) +in vec2 v_uv; +out vec4 o_color; +uniform sampler2D u_ao; +uniform sampler2D u_depth; +uniform vec2 u_texel; +void main() { + float cd = texture(u_depth, v_uv).r; + vec4 sum = vec4(0.0); + float wsum = 0.0; + for (int y = -2; y < 2; y++) for (int x = -2; x < 2; x++) { + vec2 o = vec2(float(x) + 0.5, float(y) + 0.5) * u_texel; + vec4 s = texture(u_ao, v_uv + o); + float sd = texture(u_depth, v_uv + o).r; + float w = exp(-abs(sd - cd) * 4000.0); + sum += s * w; wsum += w; + } + o_color = sum / max(wsum, 1e-4); +} diff --git a/packages/ludic.render3d/shaders/ssgi.frag b/packages/ludic.render3d/shaders/ssgi.frag new file mode 100644 index 00000000..40770718 --- /dev/null +++ b/packages/ludic.render3d/shaders/ssgi.frag @@ -0,0 +1,66 @@ +// screen-space ambient occlusion + one indirect diffuse bounce (SSGI) from the previous +// frame's lit colour; half resolution, denoised over time by the TAA history it feeds +in vec2 v_uv; +out vec4 o_color; +uniform sampler2D u_depth; +uniform sampler2D u_prev_color; // last frame's anti-aliased HDR colour +uniform mat4 u_inv_proj; +uniform mat4 u_proj; +uniform vec2 u_texel; +uniform float u_radius; +uniform float u_intensity; +uniform float u_frame; +vec3 viewPos(vec2 uv) { + float d = texture(u_depth, uv).r; + vec4 p = u_inv_proj * vec4(uv * 2.0 - 1.0, d * 2.0 - 1.0, 1.0); + return p.xyz / p.w; +} +void main() { + vec3 P = viewPos(v_uv); + if (-P.z > 900.0) { o_color = vec4(0.0, 0.0, 0.0, 1.0); return; } + vec3 Pr = viewPos(v_uv + vec2(u_texel.x, 0.0)), Pl = viewPos(v_uv - vec2(u_texel.x, 0.0)); + vec3 Pu = viewPos(v_uv + vec2(0.0, u_texel.y)), Pd = viewPos(v_uv - vec2(0.0, u_texel.y)); + vec3 dx = (abs(Pr.z - P.z) < abs(P.z - Pl.z)) ? Pr - P : P - Pl; + vec3 dy = (abs(Pu.z - P.z) < abs(P.z - Pd.z)) ? Pu - P : P - Pd; + vec3 N = normalize(cross(dx, dy)); + // A fixed per-pixel dither, not a per-frame one. Advancing the sequence every frame + // spreads the sampling error over time, which is only an improvement if something + // then averages the frames; with no temporal anti-aliasing left it is just noise that + // changes every frame, and it was the largest single source of the flicker on movement. + float noise = ign(gl_FragCoord.xy); + float ao = 0.0; + vec3 gi = vec3(0.0); + float giW = 0.0; + const int S = 8; + float radius = u_radius * (1.0 + 0.01 * -P.z); + vec3 up = abs(N.z) < 0.999 ? vec3(0, 0, 1) : vec3(1, 0, 0); + vec3 t = normalize(cross(up, N)), b = cross(N, t); + for (int i = 0; i < S; i++) { + float a = (float(i) + noise) * 2.3999632; + float r = sqrt((float(i) + 0.5 + noise) / float(S)); + vec3 dir = vec3(cos(a) * r, sin(a) * r, sqrt(max(0.0, 1.0 - r * r))); + vec3 wdir = t * dir.x + b * dir.y + N * dir.z; + vec3 s = P + wdir * radius * (0.2 + 0.8 * r); + vec4 c = u_proj * vec4(s, 1.0); + vec2 suv = c.xy / c.w * 0.5 + 0.5; + if (suv.x < 0.0 || suv.x > 1.0 || suv.y < 0.0 || suv.y > 1.0) continue; + vec3 sp = viewPos(suv); + float rangeCheck = smoothstep(0.0, 1.0, radius / max(abs(P.z - sp.z), 1e-3)); + bool occluded = sp.z >= s.z + 0.02 * radius; + ao += (occluded ? 1.0 : 0.0) * rangeCheck; + // the occluder's lit colour bounces back toward P (weighted by how squarely it faces P) + if (occluded) { + vec3 toS = sp - P; + float d2 = max(dot(toS, toS), 1e-3); + float cosP = max(dot(N, toS) * inversesqrt(d2), 0.0); + vec3 col = sane(texture(u_prev_color, suv).rgb); + gi += col * cosP * rangeCheck; + giW += 1.0; + } + } + ao = 1.0 - u_intensity * ao / float(S); + float fade = smoothstep(120.0, 350.0, -P.z); + ao = mix(clamp(ao, 0.0, 1.0), 1.0, fade); + gi = (giW > 0.0 ? gi / float(S) : vec3(0.0)) * (1.0 - fade); + o_color = vec4(gi, ao); +} diff --git a/packages/ludic.render3d/shaders/ternormal.frag b/packages/ludic.render3d/shaders/ternormal.frag new file mode 100644 index 00000000..25355982 --- /dev/null +++ b/packages/ludic.render3d/shaders/ternormal.frag @@ -0,0 +1,32 @@ +// Second generation pass: copy the height into R and bake the B-spline surface normal into +// GBA, once, at texel resolution. terrain.frag used to differentiate the bicubic height +// per pixel — four bicubic reads, sixteen taps — for a quantity that never changes. +in vec2 v_uv; +out vec4 o; +uniform sampler2D u_src; +uniform float u_half; +float heightSmooth(sampler2D tex, vec2 uv) { + vec2 res = vec2(textureSize(tex, 0)); + vec2 t = uv * res - 0.5; + vec2 f = fract(t); + vec2 i = floor(t); + vec2 w0 = (1.0 - f) * (1.0 - f) * (1.0 - f) / 6.0; + vec2 w1 = (4.0 - 6.0 * f * f + 3.0 * f * f * f) / 6.0; + vec2 w3 = f * f * f / 6.0; + vec2 w2 = 1.0 - w0 - w1 - w3; + vec2 s0 = w0 + w1, s1 = w2 + w3; + vec2 o0 = (i - 1.0 + w1 / s0 + 0.5) / res; + vec2 o1 = (i + 1.0 + w3 / s1 + 0.5) / res; + return (texture(tex, vec2(o0.x, o0.y)).r * s0.x + texture(tex, vec2(o1.x, o0.y)).r * s1.x) * s0.y + + (texture(tex, vec2(o0.x, o1.y)).r * s0.x + texture(tex, vec2(o1.x, o1.y)).r * s1.x) * s1.y; +} +void main() { + float step = 1.0 / float(textureSize(u_src, 0).x); + float world = step * 2.0 * u_half; + float hl = heightSmooth(u_src, v_uv - vec2(step, 0)); + float hr = heightSmooth(u_src, v_uv + vec2(step, 0)); + float hd = heightSmooth(u_src, v_uv - vec2(0, step)); + float hu = heightSmooth(u_src, v_uv + vec2(0, step)); + vec3 n = normalize(vec3(hl - hr, 2.0 * world, hd - hu)); + o = vec4(texture(u_src, v_uv).r, n); +} diff --git a/packages/ludic.render3d/shaders/terrain.frag b/packages/ludic.render3d/shaders/terrain.frag new file mode 100644 index 00000000..fe2447aa --- /dev/null +++ b/packages/ludic.render3d/shaders/terrain.frag @@ -0,0 +1,467 @@ +in vec3 v_wpos; +in vec2 v_huv; +out vec4 o_color; +#ifdef TFAST_2 +#define fbm(p, o) 0.1 +#define ridged(p, o) 0.3 +#define gnoise(p) 0.1 +#endif +uniform sampler2D u_height; +uniform float u_half; +uniform float u_texel; // height-map texel size in uv +uniform sampler2D u_grass_d; uniform sampler2D u_grass_n; uniform sampler2D u_grass_a; +uniform sampler2D u_ortho; +uniform sampler2D u_sunshadow; // the sun visibility this pixel already has (tersun.frag) +uniform float u_ortho_on; +uniform sampler2D u_rock_d; uniform sampler2D u_rock_n; uniform sampler2D u_rock_a; +uniform sampler2D u_snow_d; uniform sampler2D u_carpet; // the clump cards baked straight down (alpha = coverage) +uniform float u_carpet_on; +uniform float u_snow_line; +uniform float u_lake_level; // the ground just above the water is wet and dark +uniform vec2 u_origin; // world offset of the terrain grid + +// The ground's own sun shadow comes from the baked height-field map (tershadow.frag), +// applied inside sunShadow() for every receiver in the scene. +// bicubic (B-spline) sample through four bilinear taps: the 10 m photo pixels stop reading as squares +vec3 orthoSmooth(vec2 uv) { + vec2 res = vec2(textureSize(u_ortho, 0)); + vec2 t = uv * res - 0.5; + vec2 f = fract(t); + vec2 i = floor(t); + vec2 w0 = (1.0 - f) * (1.0 - f) * (1.0 - f) / 6.0, w1 = (4.0 - 6.0 * f * f + 3.0 * f * f * f) / 6.0; + vec2 w3 = f * f * f / 6.0, w2 = 1.0 - w0 - w1 - w3; + vec2 s0 = w0 + w1, s1 = w2 + w3; + vec2 o0 = (i - 1.0 + w1 / s0 + 0.5) / res, o1 = (i + 1.0 + w3 / s1 + 0.5) / res; + return (texture(u_ortho, vec2(o0.x, o0.y)).rgb * s0.x + texture(u_ortho, vec2(o1.x, o0.y)).rgb * s1.x) * s0.y + + (texture(u_ortho, vec2(o0.x, o1.y)).rgb * s0.x + texture(u_ortho, vec2(o1.x, o1.y)).rgb * s1.x) * s1.y; +} +uniform mat4 u_view; + +// B-spline bicubic sample of the height field, through four bilinear taps. The height +// texture is only C0 under bilinear filtering: its slope jumps at every texel edge, and +// the mesh chords across each triangle, so the geometry and the normal were reading two +// different surfaces and the shading kinked along every triangle diagonal. Both stages +// call this, so they now agree on one smooth surface. +float heightSmooth(sampler2D tex, vec2 uv) { + vec2 res = vec2(textureSize(tex, 0)); + vec2 t = uv * res - 0.5; + vec2 f = fract(t); + vec2 i = floor(t); + vec2 w0 = (1.0 - f) * (1.0 - f) * (1.0 - f) / 6.0; + vec2 w1 = (4.0 - 6.0 * f * f + 3.0 * f * f * f) / 6.0; + vec2 w3 = f * f * f / 6.0; + vec2 w2 = 1.0 - w0 - w1 - w3; + vec2 s0 = w0 + w1, s1 = w2 + w3; + vec2 o0 = (i - 1.0 + w1 / s0 + 0.5) / res; + vec2 o1 = (i + 1.0 + w3 / s1 + 0.5) / res; + return (texture(tex, vec2(o0.x, o0.y)).r * s0.x + texture(tex, vec2(o1.x, o0.y)).r * s1.x) * s0.y + + (texture(tex, vec2(o0.x, o1.y)).r * s0.x + texture(tex, vec2(o1.x, o1.y)).r * s1.x) * s1.y; +} +// baked at generation (ternormal.frag) into the height texture's GBA +vec3 terrainNormal(vec2 uv) { + return normalize(texture(u_height, uv).gba); +} + +// stochastic (triangle-grid) sampling: three randomly offset / rotated taps blended by +// barycentric weights, so a scanned tile never repeats visibly +void triGrid(vec2 uv, out float w1, out float w2, out float w3, out vec2 v1, out vec2 v2, out vec2 v3) { + const mat2 skew = mat2(1.0, 0.0, -0.57735027, 1.15470054); + vec2 sk = skew * (uv * 3.4641016); + vec2 base = floor(sk); + vec3 t = vec3(fract(sk), 0.0); + t.z = 1.0 - t.x - t.y; + if (t.z > 0.0) { w1 = t.z; w2 = t.y; w3 = t.x; v1 = base; v2 = base + vec2(0, 1); v3 = base + vec2(1, 0); } + else { w1 = -t.z; w2 = 1.0 - t.y; w3 = 1.0 - t.x; v1 = base + vec2(1, 1); v2 = base + vec2(1, 0); v3 = base + vec2(0, 1); } +} +// The per-cell rotation must be applied to the DERIVATIVES as well as the coordinate. +// Handing textureGrad the gradients of the unrotated uv makes every cell sample with a +// footprint pointing the wrong way, so each one lands on a slightly different mip and +// anisotropy — and that per-cell difference is exactly the faint lattice over every +// surface. Returning the rotation lets the caller transform its gradients to match. +mat2 cellRot(vec2 cell) { + float a = hash1(cell) * 6.2831853; + float c = cos(a), s = sin(a); + return mat2(c, s, -s, c); +} +vec2 rotUV(vec2 uv, vec2 cell) { + return cellRot(cell) * uv + hash2(cell + 3.7) * 4.0; +} +// A tap whose weight rounds away is a tap not worth taking. The barycentric weights are +// raised to the fourth power to sharpen the blend, which leaves one of the three +// dominant over most of the plane and the other two often at a few thousandths; taking +// only the ones that carry any of the result, and renormalising over those, is +// indistinguishable from taking all three and is most of what this shader used to spend +// on the ground. TRI_EPS is the weight below which a tap cannot move an 8-bit channel. +#define TRI_EPS 0.004 +vec4 sampleCarpet(vec2 uv, vec2 dx, vec2 dy) { + float w1, w2, w3; vec2 v1, v2, v3; + triGrid(uv * 0.3, w1, w2, w3, v1, v2, v3); + vec3 w = pow(vec3(w1, w2, w3), vec3(4.0)); w /= (w.x + w.y + w.z); + vec4 acc = vec4(0.0); + float wsum = 0.0; + if (w.x > TRI_EPS) { mat2 C = cellRot(v1); acc += textureGrad(u_carpet, rotUV(uv, v1), C * dx, C * dy) * w.x; wsum += w.x; } + if (w.y > TRI_EPS) { mat2 C = cellRot(v2); acc += textureGrad(u_carpet, rotUV(uv, v2), C * dx, C * dy) * w.y; wsum += w.y; } + if (w.z > TRI_EPS) { mat2 C = cellRot(v3); acc += textureGrad(u_carpet, rotUV(uv, v3), C * dx, C * dy) * w.z; wsum += w.z; } + return acc / max(wsum, 1e-4); +} +// Stochastic (triangle-grid) sampling: three randomly offset / rotated taps blended by +// barycentric weights, so a scanned tile never repeats visibly. The gradients are +// rotated per cell to match each tap's own rotation — handing textureGrad the gradients +// of the unrotated uv makes every cell sample with a footprint pointing the wrong way, +// landing on a different mip and anisotropy. +// one cell of the triangle grid: its rotation, its offset, and its three maps +void matTap(sampler2D d, sampler2D nm, sampler2D am, vec2 uv, vec2 dx, vec2 dy, vec2 cell, float wt, + inout vec3 alb, inout vec3 nsum, inout vec3 arm, inout float wsum) { + mat2 R = cellRot(cell); + vec2 u = R * uv + hash2(cell + 3.7) * 4.0; + vec2 gx = R * dx, gy = R * dy; + alb += textureGrad(d, u, gx, gy).rgb * wt; + nsum += (textureGrad(nm, u, gx, gy).rgb * 2.0 - 1.0) * wt; + arm += textureGrad(am, u, gx, gy).rgb * wt; + wsum += wt; +} +// Stochastic (triangle-grid) sampling: three randomly offset / rotated taps blended by +// barycentric weights, so a scanned tile never repeats visibly. The gradients are +// rotated per cell to match each tap's own rotation — handing textureGrad the gradients +// of the unrotated uv makes every cell sample with a footprint pointing the wrong way, +// landing on a different mip and anisotropy. +// +// The weights are sharpened to the fourth power, which leaves one cell dominant over +// most of the plane and the other two at a few thousandths. Everything a cell needs — +// its rotation (a hash, a sine and a cosine), its offset, its two rotated gradients — +// is computed inside its own test, so a cell that cannot move the result costs nothing. +void sampleMat(sampler2D d, sampler2D nm, sampler2D am, vec2 uv, vec2 dx, vec2 dy, out vec3 alb, out vec3 nrm, out vec3 arm) { + float w1, w2, w3; vec2 v1, v2, v3; + triGrid(uv * 0.3, w1, w2, w3, v1, v2, v3); + vec3 w = pow(vec3(w1, w2, w3), vec3(4.0)); w /= (w.x + w.y + w.z); + alb = vec3(0.0); arm = vec3(0.0); + vec3 nsum = vec3(0.0); + float wsum = 0.0; + if (w.x > TRI_EPS) { matTap(d, nm, am, uv, dx, dy, v1, w.x, alb, nsum, arm, wsum); } + if (w.y > TRI_EPS) { matTap(d, nm, am, uv, dx, dy, v2, w.y, alb, nsum, arm, wsum); } + if (w.z > TRI_EPS) { matTap(d, nm, am, uv, dx, dy, v3, w.z, alb, nsum, arm, wsum); } + float iw = 1.0 / max(wsum, 1e-4); + alb *= iw; arm *= iw; + // rotate the tangent normals back with their taps + nrm = normalize(nsum); +} + +void samplePlain(sampler2D d, sampler2D nm, sampler2D am, vec2 uv, vec2 dx, vec2 dy, out vec3 alb, out vec3 nrm, out vec3 arm) { + alb = textureGrad(d, uv, dx, dy).rgb; + nrm = textureGrad(nm, uv, dx, dy).rgb * 2.0 - 1.0; + arm = textureGrad(am, uv, dx, dy).rgb; +} +// triplanar sample for steep rock +void sampleTri(sampler2D d, sampler2D nm, sampler2D am, vec3 p, vec3 dpx, vec3 dpy, vec3 n, float scale, out vec3 alb, out vec3 nrm, out vec3 arm) { + vec3 w = pow(abs(n), vec3(4.0)); w /= (w.x + w.y + w.z); + // The fourth power leaves ground facing one axis almost entirely on that axis's plane: + // a slope has to be within a few degrees of a diagonal before a second projection + // carries anything, and the third almost never does. + vec3 a0, n0, r0; + alb = vec3(0.0); arm = vec3(0.0); + vec3 nsum = vec3(0.0); + float wsum = 0.0; + if (w.x > TRI_EPS) { + samplePlain(d, nm, am, p.zy * scale, dpx.zy * scale, dpy.zy * scale, a0, n0, r0); + alb += a0 * w.x; arm += r0 * w.x; + nsum += vec3(n0.xy + n.zy, abs(n0.z) * n.x).zyx * w.x; + wsum += w.x; + } + if (w.y > TRI_EPS) { + samplePlain(d, nm, am, p.xz * scale, dpx.xz * scale, dpy.xz * scale, a0, n0, r0); + alb += a0 * w.y; arm += r0 * w.y; + nsum += vec3(n0.xy + n.xz, abs(n0.z) * n.y).xzy * w.y; + wsum += w.y; + } + if (w.z > TRI_EPS) { + samplePlain(d, nm, am, p.xy * scale, dpx.xy * scale, dpy.xy * scale, a0, n0, r0); + alb += a0 * w.z; arm += r0 * w.z; + nsum += vec3(n0.xy + n.xy, abs(n0.z) * n.z) * w.z; + wsum += w.z; + } + float iw = 1.0 / max(wsum, 1e-4); + alb *= iw; arm *= iw; + nrm = normalize(nsum); +} + +vec3 dbg_n; vec3 dbg_alb; float dbg_shadow; vec3 dbg_mat; +// cheap = the far tier: single taps, noise at its mean, one shadow tap. Same code, same +// mean colour, so the tier boundary cannot show as a ring. +float fbmC(bool cheap, vec2 q, int o) { return cheap ? 0.0 : fbm(q, o); } +float ridgedC(bool cheap, vec2 q, int o) { return cheap ? 0.35 : ridged(q, o); } +float gnoiseC(bool cheap, vec2 q) { return cheap ? 0.0 : gnoise(q); } +vec3 orthoC(bool cheap, vec2 uv) { return cheap ? textureLod(u_ortho, uv, 1.0).rgb : orthoSmooth(uv); } +vec4 carpetC(bool cheap, vec2 uv, vec2 dx, vec2 dy) { return cheap ? textureGrad(u_carpet, uv, dx, dy) : sampleCarpet(uv, dx, dy); } +void matC(bool cheap, sampler2D d, sampler2D nm, sampler2D am, vec2 uv, vec2 dx, vec2 dy, out vec3 alb, out vec3 nrm, out vec3 arm) { + if (cheap) samplePlain(d, nm, am, uv, dx, dy, alb, nrm, arm); else sampleMat(d, nm, am, uv, dx, dy, alb, nrm, arm); +} +void triC(bool cheap, sampler2D d, sampler2D nm, sampler2D am, vec3 p, vec3 dpx, vec3 dpy, vec3 n, float scale, out vec3 alb, out vec3 nrm, out vec3 arm) { + if (cheap) { samplePlain(d, nm, am, p.xz * scale, dpx.xz * scale, dpy.xz * scale, alb, nrm, arm); nrm = normalize(vec3(nrm.x, 1.0, nrm.y) + vec3(0.0, 1e-3, 0.0)); } + else sampleTri(d, nm, am, p, dpx, dpy, n, scale, alb, nrm, arm); +} +vec3 groundShade(vec3 p, vec3 N, float slope, float dist, float viewDepth, bool cheap) { + // ---- material weights ---- + float macro = fbmC(cheap, p.xz * 0.02, 2); + // a foot track: two metres wide, worn into whatever the ground is, not a painted band + float pathW = 0.6 * smoothstep(3.0 + 0.8 * macro, 1.0, pathDist(p.xz)) * smoothstep(0.35, 0.1, slope); + float rockW = max(smoothstep(0.30, 0.55, slope + 0.1 * macro), 0.9 * smoothstep(170.0, 300.0, p.y + 30.0 * macro)); + // The ridge field places the snow line's raggedness and nothing else. Both terms below + // are zero more than 160 m under the snow line whatever it returns (macro and ridgeN + // can lift the test height by at most 100 m), which is the whole valley floor. + float snowW = 0.0; + if (p.y > u_snow_line - 160.0) { + float ridgeN = ridgedC(cheap, p.xz * 0.0018 + 11.0, 2); + snowW = smoothstep(u_snow_line - 60.0, u_snow_line + 60.0, p.y + 60.0 * macro + 40.0 * ridgeN) * smoothstep(0.55, 0.15, slope); + // wind-packed snow lingers in the gullies of the steep faces too + snowW = max(snowW, 0.6 * smoothstep(u_snow_line - 120.0, u_snow_line, p.y) * smoothstep(0.45, 0.2, slope) * smoothstep(0.55, 0.75, ridgeN)); + } + float grassW = 1.0 - max(pathW, max(rockW, snowW)); + + // ---- what the photograph says is here ------------------------------------------- + // This classification used to sit between the material samples, which meant every + // pixel sampled every material before anything knew which of them it would use. It + // runs first now: it costs three filtered taps of the survey image and it decides + // whether the scanned grass, rock and snow are needed at all. + vec3 oc = vec3(0.0); + float forestW = 0.0; // dense conifer: the ground under it is duff, not meadow + float screeC = 0.0; // bare ground: talus, moraine gravel, the lake's cobble shore + float snowC = 0.0; + bool orthoOn = u_ortho_on > 0.5; +#ifdef TFAST_4 + orthoOn = false; +#endif + if (orthoOn) { + oc = orthoC(cheap, v_huv); + // (classified from a ~40 m blur: thresholding the raw 10 m pixels drew hard squares) + vec3 ocf = textureLod(u_ortho, v_huv, 2.0).rgb; + float gx = ocf.g - max(ocf.r, ocf.b); + // (the photograph is sampled linear: sRGB 72 is 0.06, 92 is 0.11) + forestW = smoothstep(0.12, 0.06, max(ocf.r, max(ocf.g, ocf.b))) * smoothstep(0.004, 0.012, gx) * smoothstep(u_lake_level + 0.8, u_lake_level + 1.8, p.y); + // Classify from a ~60 m blur, never from the pixels: the survey's 10 m pixels carry + // a foot trail as a broken line of bare ground, and thresholding them painted it + // across the meadow as tan dashes (and, on the CPU, lined boulders up along it). + vec3 ocl = textureLod(u_ortho, v_huv, 2.5).rgb; + float mxc = max(ocl.r, max(ocl.g, ocl.b)), mnc = min(ocl.r, min(ocl.g, ocl.b)); + float greenEx = ocl.g - max(ocl.r, ocl.b); + screeC = smoothstep(0.008, -0.002, greenEx) * smoothstep(0.06, 0.12, mxc) * (1.0 - smoothstep(0.55, 0.75, mxc)) * smoothstep(u_lake_level + 0.2, u_lake_level + 1.2, p.y); + snowC = smoothstep(0.08, 0.04, mxc - mnc) * smoothstep(0.55, 0.8, mxc); + } + // snow lingering in the high gullies is drawn further down, but whether it can be + // there at all is known now, and it is the third caller of the snow sample + float gullyGate = smoothstep(450.0, 650.0, p.y) * smoothstep(0.75, 0.35, slope); + + // ---- samples --------------------------------------------------------------------- + // World-space derivatives, taken once and in unbranched control flow: every sample + // below is in a branch and takes its gradients from these. + vec3 dpx = dFdx(p), dpy = dFdy(p); + vec3 gA = vec3(0.3, 0.4, 0.2), gN = vec3(0.0, 0.0, 1.0), gR = vec3(1.0, 0.8, 0.0); + vec3 rA = vec3(0.3), rN = vec3(0.0, 1.0, 0.0), rR = vec3(1.0, 0.8, 0.0); + vec3 sA = vec3(0.86, 0.88, 0.92), sN = vec3(0.0, 0.0, 1.0), sR = vec3(1.0, 0.55, 0.0); + vec3 pA, pN, pR; + vec2 uvg = p.xz * 0.28; + vec2 duvgx = dpx.xz * 0.28, duvgy = dpy.xz * 0.28; + // the grass carries the path too (the track is worn into it), and the forest duff + float needGrass = max(grassW, pathW); + float needRock = max(rockW, screeC); + float needSnow = max(snowW, max(snowC, gullyGate)); +#ifdef TFAST_3 + needGrass = 0.0; needRock = 0.0; +#endif + if (needGrass > 0.002) { + // dry / lush variation across the meadow (read only here and by the carpet below) + float lush = fbmC(cheap, p.xz * 0.006 + 2.0, 2) * 0.5 + 0.5; + matC(cheap, u_grass_d, u_grass_n, u_grass_a, uvg, duvgx, duvgy, gA, gN, gR); + // tint the grass by lushness + gA *= mix(vec3(0.42, 0.55, 0.3), vec3(0.28, 0.55, 0.25), lush) * 0.5; + // sun-facing slopes (south, +z) dry out lighter and warmer; shaded faces stay deep green + gA *= mix(vec3(0.85, 0.92, 0.9), vec3(1.12, 1.06, 0.82), smoothstep(-0.35, 0.35, N.z)); + // beyond the blade rings the ground itself carries the clumps: the same cards, seen from above + // Also under the near blades, at reduced weight: the ground seen between standing + // blades must carry the same hue as the carpet that replaces them further out, or + // the field turns from grey-beige to green along a line that walks with the viewer. + float carpetW = mix(0.55, 1.0, smoothstep(8.0, 45.0, dist)) * smoothstep(0.7, 0.35, slope) * grassW; +#ifdef TFAST_3 + carpetW = 0.0; +#endif + if (u_carpet_on > 0.5 && carpetW > 0.002) { + vec4 cp = carpetC(cheap, p.xz / 6.0, dpx.xz / 6.0, dpy.xz / 6.0); + // the standing blades in front of it are self-shaded: the carpet is held darker to match them + vec3 cc = cp.rgb * vec3(0.5, 0.57, 0.45) * mix(vec3(0.85, 0.92, 0.9), vec3(1.1, 1.05, 0.85), smoothstep(-0.35, 0.35, N.z)) * (0.75 + 0.35 * lush); + gA = mix(gA, cc, max(cp.a, 0.35) * carpetW * 0.97); + } + // Subalpine forest floor: dark duff where the stands are dense. The photograph-driven + // term marks duff only where the survey actually shows dense conifer, and is the same + // at any distance — ground shading must not depend on where the viewer is. + gA = mix(gA, vec3(0.045, 0.06, 0.025), forestW * 0.85); + } + pA = gA * vec3(0.95, 0.82, 0.62); // the same ground, worn to earth + pN = gN; pR = vec3(0.9, 0.85, 0.0); + // the scanned cliff face on the steep, high slopes; scree below + // The cliff sample and the relief/cliff blend that used to sit here wrote rA/rN/rR + // and were then overwritten wholesale by the rock sample below — they never reached + // the screen (removing them is pixel-identical). Deleting them frees the two sampler + // slots the histogram LUT needs; this shader was at the hardware limit of 16. + if (needRock > 0.002) { + triC(cheap, u_rock_d, u_rock_n, u_rock_a, p, dpx, dpy, N, 0.12, rA, rN, rR); + // macro rock structure for the mountains: a coarse second tile, strata darkening, blue-grey shade side + vec2 uv2 = p.xz * 0.006 + p.y * 0.002; + vec3 rA2 = textureGrad(u_rock_d, uv2, dpx.xz * 0.006 + dpx.y * 0.002, dpy.xz * 0.006 + dpy.y * 0.002).rgb; + vec3 rN2 = textureGrad(u_rock_n, p.zy * 0.01, dpx.zy * 0.01, dpy.zy * 0.01).rgb * 2.0 - 1.0; + rA = mix(rA, rA * rA2 * 2.2, 0.35) * (0.9 + 0.2 * fbmC(cheap, vec2(p.y * 0.03, p.x * 0.004 + p.z * 0.004), 3)); + // the Bells' sedimentary strata: near-horizontal bands, tilted a little, sharper on the cliffs + float strata = 0.5 + 0.5 * sin(p.y * 0.45 + p.x * 0.012 + 3.0 * fbmC(cheap, p.xz * 0.01, 2)); + rA *= mix(1.0, 0.75 + 0.5 * smoothstep(0.35, 0.65, strata), 0.5 * smoothstep(0.3, 0.6, slope)); + rN = normalize(rN + vec3(rN2.x, 0.0, rN2.y) * 0.6 * smoothstep(80.0, 400.0, dist)); + // the Bells are maroon mudstone: warm red-brown rock with grey scree below + rA *= mix(vec3(0.14, 0.08, 0.06), vec3(0.24, 0.15, 0.11), fbmC(cheap, p.xz * 0.003, 2) * 0.5 + 0.5); + } + if (needSnow > 0.002) { + sA = textureGrad(u_snow_d, p.xz * 0.25, dpx.xz * 0.25, dpy.xz * 0.25).rgb * 0.8; + } + // ---- blend (height-ish: sharpen with the weights) ---- + vec3 alb = gA * grassW + pA * pathW + rA * rockW + sA * snowW; + // the photographed surface (a satellite image of this ground) takes over with distance, + // keeping the scanned materials' fine luminance detail so the middle ground still has grain + float screeMix = 0.0; + if (orthoOn) { + if (screeC > 0.002) { + // near the camera the scanned rocks take the scree at cobble scale (the far talus keeps the coarse tile) + float pebW = smoothstep(220.0, 40.0, dist); + vec3 pebA = vec3(0.36, 0.35, 0.33), pebN = vec3(0.0, 0.0, 1.0); + if (pebW > 0.002) { + pebA = textureGrad(u_rock_d, p.xz * 0.55, dpx.xz * 0.55, dpy.xz * 0.55).rgb * vec3(0.36, 0.35, 0.33); + pebN = textureGrad(u_rock_n, p.xz * 0.55, dpx.xz * 0.55, dpy.xz * 0.55).rgb * 2.0 - 1.0; + } + vec3 screeA = mix(rA * vec3(1.25, 1.2, 1.15), pebA * (0.75 + 0.5 * fbmC(cheap, p.xz * 0.15, 2)), pebW); + // the 10 m photo pixels blur turf and gravel together on the shore: keep grass showing between the cobbles + alb = mix(alb, screeA, screeC * (1.0 - rockW) * mix(0.55, 0.9, smoothstep(30.0, 200.0, dist))); + rN = normalize(mix(rN, normalize(vec3(pebN.x, 1.0, pebN.y)), screeC * pebW * 0.8)); + screeMix = screeC; + } + alb = mix(alb, sA, snowC * 0.9); + float lumA = dot(alb, vec3(0.3, 0.59, 0.11)); + // How much of the photograph shows through. This was smoothstep(260, 800, dist) — + // ground colour cross-fading toward the survey image as it receded from the camera. + // The photograph has shadows and dark vegetation baked into it from the day it was + // flown, so grass that was plain up close grew dark patches as you backed away, and + // those patches slid and changed shape as you walked. A constant keeps the + // photograph's large-scale colour without tying any of it to the camera. + float orthoW = 0.55; + // grain at three scales so the far slopes keep structure the photograph's pixels cannot carry +#ifdef TFAST_20 + float grain = 0.82; +#else + float grain = 0.82 + 0.36 * fbmC(cheap, p.xz * 0.7, 2) + 0.12 * fbmC(cheap, p.xz * 4.0, 2) + 0.3 * (fbmC(cheap, p.xz * 0.06 + 5.0, 3) - 0.5) + 0.15 * (ridgedC(cheap, p.xz * 0.02 + 9.0, 2) - 0.5); +#endif + alb = mix(alb, oc * (0.35 + 1.4 * lumA / max(lumA + 0.12, 1e-3)) * grain, orthoW); + } + // ---- the shoreline, continued onto the land ------------------------------------ + // A flat water plane cutting a slope meets it along one exact contour, and no amount + // of shading on the water side removes a mathematically sharp line. The transition + // has to be drawn on BOTH surfaces, so the same wash the water runs is continued up + // the bank here: identical noise fields, identical time, identical phase, keyed off + // height above the lake instead of depth below it. Across the seam the two agree, so + // there is nothing there to read as an edge. + float above = p.y - u_lake_level; // >0 on land, metres + // wet ground: darker and glossier near the water, fading out over ~1.2 m + float wet = smoothstep(1.2, 0.0, above); + alb *= mix(1.0, 0.5, wet * 0.85); + // A sheet of water actually runs up the bank ahead of the foam, so the ground inside + // the wash is seen through water, not bare. Without this the gaps between the foam + // streaks showed dry grass and the wash looked like white paint on a lawn. + float film = smoothstep(0.4, 0.0, above); + vec3 shoreWater = vec3(0.05, 0.11, 0.13) * skyIrradiance(vec3(0, 1, 0)) * 1.15; + alb = mix(alb, mix(alb * 0.5, shoreWater, 0.45), film); + // The wash itself: the water's lap, run above the line and fading as it climbs — the + // same fields, octaves and phase the water uses, so the two agree across the seam. + // Its two gates — the last 22 cm above the waterline, and the first 120 m from the + // camera — are pure geometry, and outside them the four noise fields behind it cannot + // reach the screen. They are worth testing first: the wash is a hairline along one + // shore and the fields were being evaluated for every pixel of the valley. + float washGate = smoothstep(0.22, 0.0, above) * smoothstep(120.0, 15.0, dist); + if (washGate > 0.002) { + float lapT = 0.5 + 0.5 * sin(-above * 9.0 - u_time * 1.6 + 2.0 * gnoiseC(cheap, p.xz * 0.8 + u_time * 0.2)); + float fdetT = fbmC(cheap, p.xz * 7.0 - u_time * 0.35, 3) * 0.5 + 0.5; + float fmidT = fbmC(cheap, p.xz * 2.6 + u_time * 0.5, 3) * 0.5 + 0.5; + float fedgeT = fbmC(cheap, p.xz * 1.4 - u_time * 0.3, 2) * 0.5 + 0.5; + // a still alpine lake has a wet line, not surf: keep the wash thin and faint + float fringe = washGate + * (0.12 * smoothstep(0.30, 0.72, fmidT) + + 0.10 * smoothstep(0.55, 0.95, lapT) * smoothstep(0.22, 0.6, fedgeT)) * (0.55 + 0.75 * fdetT); + alb = mix(alb, vec3(0.72, 0.76, 0.76), clamp(fringe, 0.0, 1.0)); + } + // snow lingering in the high gullies (the July photograph's white streaks) + float gully = 0.0; + if (gullyGate > 0.002) { gully = smoothstep(0.62, 0.85, ridgedC(cheap, p.xz * 0.02 + 3.0, 2)) * gullyGate; } + alb = mix(alb, sA * 1.05, gully * 0.9); + vec3 arm = gR * grassW + pR * pathW + rR * rockW + sR * snowW; + // world tangent frame for the planar maps + vec3 T = normalize(vec3(1.0, 0.0, 0.0) - N * N.x); + vec3 B = cross(N, T); + vec3 tn = normalize(gN * grassW + pN * pathW + sN * snowW + vec3(0, 0, 1e-3)); + vec3 nPlanar = normalize(T * tn.x + B * tn.y + N * tn.z); + vec3 n = normalize(mix(nPlanar, rN, max(rockW, screeMix * 0.6))); + // fade the detail normal with distance so the far terrain does not sparkle + n = normalize(mix(n, N, smoothstep(150.0, 900.0, dist))); + float ao = arm.r; + float rough = clamp(arm.g, 0.3, 1.0); + float metal = 0.0; + // the shadow map carries the objects standing on the ground (trees, rocks); the + // ground's own relief is in the baked height-field shadow that sunShadow() applies +#ifdef TFAST_1 + float shadow = 1.0; +#else + // tersun.frag computed this for exactly this pixel; see the note there for why the + // cascade read cannot happen in here. + float shadow = texelFetch(u_sunshadow, ivec2(gl_FragCoord.xy), 0).r; +#endif + vec3 col = shade(p, n, alb, rough, metal, ao, shadow, viewDepth); + dbg_n = n; dbg_alb = alb; dbg_shadow = shadow; dbg_mat = vec3(rockW, grassW, snowW); + return col; +} + +uniform float u_far_split; +uniform float u_far_band; +void main() { + vec3 p = v_wpos; + if (p.y < u_clip_y) discard; + vec3 N = terrainNormal(v_huv); + float slope = 1.0 - N.y; + float dist = length(p - u_cam_pos); + float viewDepth = -(u_view * vec4(p, 1.0)).z; + vec3 col; +#ifdef NEAR_ONLY + // The near program: this patch lies entirely inside the split, so only the detailed + // tier can run here. Compiled alone it does not have to hold the cheap tier's code + // beside it, which is what pushed the combined shader past the register budget. + col = groundShade(p, N, slope, dist, viewDepth, false); +#elif defined(FAR_ONLY) + // The far program: this patch is entirely beyond u_far_split + u_far_band, so every + // pixel in it would take the cheap tier anyway. Compiling that tier on its own — with + // no near path inlined beside it — is the whole point: the two tiers together put this + // shader over the register budget, and the far pixels (most of the screen: the valley + // walls and the Bells) were paying for a near path they never ran. + col = groundShade(p, N, slope, dist, viewDepth, true); +#elif defined(TFAST_5) + col = groundShade(p, N, slope, dist, viewDepth, false); +#else + float band = u_far_band; + if (dist > u_far_split + band) col = groundShade(p, N, slope, dist, viewDepth, true); + else if (dist < u_far_split - band) col = groundShade(p, N, slope, dist, viewDepth, false); + else col = mix(groundShade(p, N, slope, dist, viewDepth, false), groundShade(p, N, slope, dist, viewDepth, true), smoothstep(u_far_split - band, u_far_split + band, dist)); +#endif + col = applyFog(col, p, dist); +#ifdef DEBUG_SHADOW + col = vec3(dbg_shadow); +#endif +#ifdef DEBUG_NRM + col = dbg_n * 0.5 + 0.5; +#endif +#ifdef DEBUG_MAT + col = dbg_mat; +#endif +#ifdef DEBUG_ALB + col = dbg_alb * 3.0; +#endif + o_color = vec4(sane(col), 1.0); +} diff --git a/packages/ludic.render3d/shaders/terrain.vert b/packages/ludic.render3d/shaders/terrain.vert new file mode 100644 index 00000000..f348348d --- /dev/null +++ b/packages/ludic.render3d/shaders/terrain.vert @@ -0,0 +1,50 @@ +// CDLOD terrain (Strugar 2009): every draw is one 32x32 patch of the quadtree, placed +// and scaled by u_node. Toward the outer edge of its level's range each vertex morphs +// onto the parent level's grid (odd vertices slide to their even neighbours), so a patch +// meets its coarser neighbour edge-for-edge with no cracks and no popping. Height comes +// from one B-spline sample of the height field at the morphed position, so every level +// sits on the same continuous surface. +layout(location = 0) in vec2 a_xz; // 0..1 across the patch +uniform sampler2D u_height; +uniform float u_half; +uniform mat4 u_view; +uniform mat4 u_proj; +uniform vec2 u_origin; +uniform vec3 u_cam_pos; +uniform vec3 u_node; // x0, z0, size (m) +uniform vec2 u_morph; // distance where the morph starts, and where it is complete +uniform float u_grid; // cells per patch side +float heightSmooth(sampler2D tex, vec2 uv) { + vec2 res = vec2(textureSize(tex, 0)); + vec2 t = uv * res - 0.5; + vec2 f = fract(t); + vec2 i = floor(t); + vec2 w0 = (1.0 - f) * (1.0 - f) * (1.0 - f) / 6.0; + vec2 w1 = (4.0 - 6.0 * f * f + 3.0 * f * f * f) / 6.0; + vec2 w3 = f * f * f / 6.0; + vec2 w2 = 1.0 - w0 - w1 - w3; + vec2 s0 = w0 + w1, s1 = w2 + w3; + vec2 o0 = (i - 1.0 + w1 / s0 + 0.5) / res; + vec2 o1 = (i + 1.0 + w3 / s1 + 0.5) / res; + return (texture(tex, vec2(o0.x, o0.y)).r * s0.x + texture(tex, vec2(o1.x, o0.y)).r * s1.x) * s0.y + + (texture(tex, vec2(o0.x, o1.y)).r * s0.x + texture(tex, vec2(o1.x, o1.y)).r * s1.x) * s1.y; +} +out vec3 v_wpos; +out vec2 v_huv; +void main() { + vec2 grid = a_xz * u_grid; + vec2 xz = u_node.xy + a_xz * u_node.z; + vec2 huv = (xz - u_origin) / (2.0 * u_half) + 0.5; + float h0 = texture(u_height, huv).r; + float d = distance(vec3(xz.x, h0, xz.y), u_cam_pos); + float k = clamp((d - u_morph.x) / max(u_morph.y - u_morph.x, 1.0), 0.0, 1.0); + vec2 frac2 = fract(grid * 0.5) * 2.0; // 1 on odd vertices + grid -= frac2 * k; + xz = u_node.xy + grid / u_grid * u_node.z; + huv = (xz - u_origin) / (2.0 * u_half) + 0.5; + float h = heightSmooth(u_height, huv); + vec3 p = vec3(xz.x, h, xz.y); + v_wpos = p; + v_huv = huv; + gl_Position = u_proj * u_view * vec4(p, 1.0); +} diff --git a/packages/ludic.render3d/shaders/tershadow.frag b/packages/ludic.render3d/shaders/tershadow.frag new file mode 100644 index 00000000..dac415f3 --- /dev/null +++ b/packages/ludic.render3d/shaders/tershadow.frag @@ -0,0 +1,39 @@ +// Height-field sun shadow, baked once per sun direction (the sun is fixed per scene). +// +// For every height-map texel: the lowest height at which a point above that texel still +// sees the sun. A point (xz, y) is lit iff the ray toward the sun clears the ground +// everywhere along it, i.e. y > h(xz + d.xz t) - d.y t for all t — so the value stored +// is the maximum of that expression over the ray. Every receiver in the scene (ground, +// trunk, crown, card, water) compares its own height against it: one march per texel, +// once, instead of 28 taps per terrain pixel per frame, and vegetation standing in a +// hillside's shadow goes dark with the hillside instead of glowing in front of it. +// The second channel is the distance to the occluder that set the bound, which widens +// the penumbra the way a real shadow softens with distance from its caster. +in vec2 v_uv; +out vec4 o; +uniform sampler2D u_height; +uniform float u_half; +uniform vec3 u_sun; +void main() { + vec2 xz = (v_uv - 0.5) * 2.0 * u_half; + vec3 d = u_sun; + float lit = -1.0e6; + float at = 0.0; + if (d.y > 0.02) { + float t = 1.5, step = 1.5; + for (int i = 0; i < 128; i++) { + vec2 q = xz + d.xz * t; + vec2 uv = q / (2.0 * u_half) + 0.5; + if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) break; + float h = texture(u_height, uv).r - d.y * t; + if (h > lit) { lit = h; at = t; } + t += step; + step *= 1.045; + } + } + // the cloud layer's mask, once, into B: sampled by cloudShadow() with the sun offset and + // the drift applied as a uv shift, instead of a five-octave fbm in every lit pixel of + // every pass + float cloud = smoothstep(0.02, 0.32, fbm(xz * 0.0011, 5)); + o = vec4(lit, at, cloud, 1.0); +} diff --git a/packages/ludic.render3d/shaders/tersun.frag b/packages/ludic.render3d/shaders/tersun.frag new file mode 100644 index 00000000..7a72c6bf --- /dev/null +++ b/packages/ludic.render3d/shaders/tersun.frag @@ -0,0 +1,31 @@ +// tersun.frag — the terrain's sun visibility, on its own, one screen-sized R8 buffer. +// +// The ground's shading shader is large: it blends four scanned materials, a photograph +// and a dozen noise fields. Adding a read of the cascade shadow map to it costs about +// six milliseconds a frame on this driver — and costs the same whether the map is tapped +// once or eight times, filtered or texelFetched, compared in hardware or by hand. It is +// a cliff the big shader falls off, not work it performs. The same read from a small +// shader is nearly free, so the read happens here instead: this pass rasterises the same +// CDLOD patches, evaluates the cascades once per pixel, and writes the answer for +// terrain.frag to look up by fragment coordinate. +in vec3 v_wpos; +in vec2 v_huv; +out float o_sh; +uniform sampler2D u_height; +uniform mat4 u_view; +uniform float u_far_split; +uniform float u_far_band; +void main() { + vec3 p = v_wpos; + if (p.y < u_clip_y) discard; + vec3 N = normalize(texture(u_height, v_huv).gba); + float dist = length(p - u_cam_pos); + float viewDepth = -(u_view * vec4(p, 1.0)).z; + // The same tier choice the ground makes, cross-faded over the same band: the near tier + // keeps its filtered penumbra, the far tier its single tap, and the boundary between + // them is not a contour you can find on the hillside. + if (dist > u_far_split + u_far_band) o_sh = sunShadowCheap(p, N, viewDepth); + else if (dist < u_far_split - u_far_band) o_sh = sunShadow(p, N, viewDepth); + else o_sh = mix(sunShadow(p, N, viewDepth), sunShadowCheap(p, N, viewDepth), + smoothstep(u_far_split - u_far_band, u_far_split + u_far_band, dist)); +} diff --git a/packages/ludic.render3d/shaders/tonemap.frag b/packages/ludic.render3d/shaders/tonemap.frag new file mode 100644 index 00000000..d6dcc251 --- /dev/null +++ b/packages/ludic.render3d/shaders/tonemap.frag @@ -0,0 +1,47 @@ +// exposure -> ACES -> vignette -> sRGB, with dithering +in vec2 v_uv; +out vec4 o_color; +uniform sampler2D u_hdr; +uniform sampler2D u_bloom; +uniform sampler2D u_ao; +uniform float u_ao_strength; +uniform float u_gi_strength; +uniform vec3 u_wb; // white balance multiplier +uniform vec3 u_lift; +uniform vec3 u_gain; +uniform float u_exposure; +uniform sampler2D u_adapt; // the GPU's adapted exposure (adapt.frag), 1x1 +uniform float u_auto; // 1: use it, 0: u_exposure as set +uniform float u_bloom_strength; +uniform float u_vignette; +uniform float u_saturation; +uniform float u_contrast; +vec3 aces(vec3 x) { + const float a = 2.51, b = 0.03, c = 2.43, d = 0.59, e = 0.14; + return clamp((x * (a * x + b)) / (x * (c * x + d) + e), 0.0, 1.0); +} +float hash(vec2 p) { return fract(sin(dot(p, vec2(12.9898, 78.233))) * 43758.5453); } +void main() { + vec3 hdr = sane(texture(u_hdr, v_uv).rgb); + vec4 gi = texture(u_ao, v_uv); + hdr *= mix(1.0, gi.a, u_ao_strength); + // the indirect bounce arrives in the surface's own hue (no albedo buffer in a forward renderer) + float l = dot(hdr, vec3(0.2126, 0.7152, 0.0722)); + hdr += gi.rgb * (hdr / max(l, 1e-3)) * u_gi_strength; + vec3 bloom = texture(u_bloom, v_uv).rgb; + float exposure = mix(u_exposure, texture(u_adapt, vec2(0.5)).r, u_auto); + vec3 c = (hdr + bloom * u_bloom_strength) * exposure * u_wb; + // filmic contrast around mid grey in log space + c = max(c, vec3(0.0)); + c = pow(c / 0.18, vec3(u_contrast)) * 0.18; + c = aces(c); + // lift / gain grade in display space + c = c * u_gain + u_lift * (1.0 - c); + float lum = dot(c, vec3(0.2126, 0.7152, 0.0722)); + c = mix(vec3(lum), c, u_saturation); + vec2 q = v_uv * 2.0 - 1.0; + c *= 1.0 - u_vignette * dot(q, q) * 0.5; + c = pow(c, vec3(1.0 / 2.2)); + c += (hash(gl_FragCoord.xy) - 0.5) / 255.0; + o_color = vec4(c, 1.0); +} diff --git a/packages/ludic.render3d/shaders/water.frag b/packages/ludic.render3d/shaders/water.frag new file mode 100644 index 00000000..80d7258d --- /dev/null +++ b/packages/ludic.render3d/shaders/water.frag @@ -0,0 +1,107 @@ +// still water: sky reflection with fresnel, sun glitter, scrolling ripple normals, absorption colour +in vec3 v_wpos; +out vec4 o_color; +uniform mat4 u_view; +uniform sampler2D u_depth; // scene depth (resolved) for shore softness / depth tint +uniform mat4 u_inv_vp; +uniform vec2 u_screen; +uniform sampler2D u_refl; // the world mirrored in the surface (rendered by the reflection pass) +uniform float u_refl_on; +uniform sampler2D u_scene; // the scene as drawn before the water: the bed, to refract +// wind-streaked capillary ripples (stretched along the wind) over slower swells +float waterH(vec2 p, float t) { + vec2 w = vec2(p.x * 0.7 + p.y * 0.15, p.y * 1.4) ; // mildly anisotropic: cat's-paws stretched along the wind + // calmer water: the swell keeps most of its weight, the two ripple octaves are + // pulled well down so the surface reads as a lake rather than a chop + return 0.4 * gnoise(w * 0.9 + vec2(t * 0.06, t * 0.4)) + 0.16 * gnoise(p * 2.3 - vec2(t * 0.05, -t * 0.07)) + 0.07 * gnoise(p * 6.0 + vec2(t * 0.9, t * 0.3)); +} +vec3 rippleNormal(vec2 p, float t) { + float e = 0.06; + float h = waterH(p, t), hx = waterH(p + vec2(e, 0), t), hz = waterH(p + vec2(0, e), t); + return normalize(vec3(-(hx - h) * 0.26 / e, 1.0, -(hz - h) * 0.26 / e)); +} +void main() { + vec3 v = normalize(u_cam_pos - v_wpos); + float dist = length(u_cam_pos - v_wpos); + vec3 n = rippleNormal(v_wpos.xz, u_time); + n = normalize(mix(n, vec3(0, 1, 0), smoothstep(100.0, 600.0, dist))); // calm at a distance + // how deep the ground is under this pixel: from the scene depth + vec2 suv = gl_FragCoord.xy / u_screen; + float sd = texture(u_depth, suv).r; + vec4 gp = u_inv_vp * vec4(suv * 2.0 - 1.0, sd * 2.0 - 1.0, 1.0); + vec3 ground = gp.xyz / gp.w; + float depthBelow = clamp(v_wpos.y - ground.y, 0.0, 10.0); + // How opaque the water is at the shoreline. This used to fade over the last 1.2 m of + // depth, which is the same band the foam lives in, so the surface went transparent + // exactly where it should have been breaking white: the foam was drawn and then + // alpha'd away, leaving a gap of dark wet ground and water that looked like it + // stopped short of the bank. Fade over a much shorter distance so the water reaches + // the edge, and let the foam carry its own opacity below. + + vec3 r = reflect(-v, n); + r.y = abs(r.y); + vec3 refl = skyPrefiltered(r, 0.12); + if (u_refl_on > 0.5) { + // the mirrored render lines up with the screen; the ripples nudge and soften the lookup + vec2 ruv = suv + n.xz * 0.02 * smoothstep(500.0, 20.0, dist); + float blur = mix(0.5, 0.2, smoothstep(0.0, 300.0, dist)); + refl = sane(textureLod(u_refl, clamp(ruv, 0.001, 0.999), blur).rgb); + } + // wind-blown foam streaks and shoreline wash + float foam = smoothstep(0.62, 0.9, gnoise(vec2(v_wpos.x * 0.25 + u_time * 0.3, v_wpos.z * 1.5) ) * 0.5 + 0.5) * 0.03 * smoothstep(200.0, 30.0, dist); + // Wash: the shallows lapping the shore. Built from fbm rather than one gnoise octave — + // a single octave is a blobby lattice that magnifies into visible squares when you + // stand next to it, which is what made the wash read as cartoon cut-outs. Several + // octaves plus a fine breakup term give it structure at every range it is seen from. + float lap = 0.5 + 0.5 * sin(depthBelow * 9.0 - u_time * 1.6 + 2.0 * gnoise(v_wpos.xz * 0.8 + u_time * 0.2)); + float fdet = fbm(v_wpos.xz * 7.0 - u_time * 0.35, 3) * 0.5 + 0.5; // fine bubbles + float fmid = fbm(v_wpos.xz * 2.6 + u_time * 0.5, 3) * 0.5 + 0.5; + float fedge = fbm(v_wpos.xz * 1.4 - u_time * 0.3, 2) * 0.5 + 0.5; + // a still alpine lake has a wet line, not surf: the wash is thin (the last 0.35 m of + // depth) and faint, and the terrain runs the same fields at the same strength + foam += smoothstep(0.35, 0.0, depthBelow) * (0.12 * smoothstep(0.30, 0.72, fmid) + 0.10 * smoothstep(0.55, 0.95, lap) * smoothstep(0.22, 0.6, fedge)) * (0.55 + 0.75 * fdet); + // the lap is a near-field detail: from a distance a lake's edge is a line, not a surf + foam *= smoothstep(120.0, 15.0, dist); + // the wash dies where the surface meets the ground, so it cannot end on a hard line + foam *= smoothstep(0.0, 0.5, length(ground - v_wpos)); + float NoV = max(dot(n, v), 0.0); + float F = 0.02 + 0.98 * pow(1.0 - NoV, 5.0); + vec3 hv = normalize(v + u_sun_dir); + float NoH = max(dot(n, hv), 0.0); + float glitter = D_GGX(NoH, 0.06) * 0.25; + float viewDepth = -(u_view * vec4(v_wpos, 1.0)).z; + float shadow = sunShadow(v_wpos, vec3(0, 1, 0), viewDepth) * cloudShadow(v_wpos); + // ---- what is under the surface ------------------------------------------------- + // The bed is sampled from the scene as it was drawn before the water, nudged by the + // ripple normal (refraction), then attenuated per channel over the path the light + // actually travelled: down through the water and back up to the eye. Red goes first, + // then green, so shallows stay bright and readable and depth turns blue-green and + // dark on its own. This is what makes it a body of water rather than a tinted sheet: + // the ground is seen through it, not behind it. + vec2 ruv2 = clamp(suv + n.xz * 0.03 * smoothstep(0.0, 2.0, depthBelow), 0.001, 0.999); + // never refract something that is actually in front of the surface (the near bank), + // or the grass on the shore smears out over the water + float rd = texture(u_depth, ruv2).r; + vec4 rgp = u_inv_vp * vec4(ruv2 * 2.0 - 1.0, rd * 2.0 - 1.0, 1.0); + vec3 rground = rgp.xyz / rgp.w; + if (rground.y > v_wpos.y) { ruv2 = suv; } + vec3 bed = sane(texture(u_scene, ruv2).rgb); + float pathLen = depthBelow * (1.0 + 1.0 / max(NoV, 0.25)); + vec3 absorb = vec3(0.55, 0.24, 0.14); // per metre: red first, then green — a cold blue-teal depth + vec3 trans = exp(-absorb * pathLen); + vec3 tint = vec3(0.030, 0.085, 0.105) * skyIrradiance(vec3(0, 1, 0)) * 1.15; // Maroon Lake: deep, dark blue-green, not turquoise + vec3 through = bed * trans + tint * (1.0 - trans); + // ---- surface ------------------------------------------------------------------- + vec3 col = mix(through, refl, clamp(F * 1.1 + 0.05, 0.0, 0.86)) + u_sun_color * glitter * F * shadow; + col = mix(col, vec3(0.7, 0.75, 0.75) * (skyIrradiance(vec3(0, 1, 0)) * 0.5 + u_sun_color * 0.08 * shadow), clamp(foam, 0.0, 1.0)); + col = applyFog(col, v_wpos, dist); + // Soft edge measured ALONG THE VIEW RAY, not vertically. Vertical depth collapses to + // zero over a fraction of a pixel when the surface is seen edge-on, which is exactly + // the low, near-the-waterline view where the plane's silhouette turns into a hard + // glassy line. The distance from the surface to the bed along the ray stays a smooth + // quantity at any angle, so the water dissolves into the ground it meets instead. + float alongRay = length(ground - v_wpos); + float soft = smoothstep(0.0, 0.5, alongRay); + col = mix(bed, col, soft); + o_color = vec4(sane(col), 1.0); +} diff --git a/packages/ludic.render3d/shaders/water.vert b/packages/ludic.render3d/shaders/water.vert new file mode 100644 index 00000000..343e370f --- /dev/null +++ b/packages/ludic.render3d/shaders/water.vert @@ -0,0 +1,12 @@ +layout(location = 0) in vec2 a_xz; +uniform mat4 u_view; +uniform mat4 u_proj; +uniform float u_level; +uniform vec2 u_center; +uniform vec2 u_extent; +out vec3 v_wpos; +void main() { + vec3 p = vec3(u_center.x + a_xz.x * 2.0 * u_extent.x, u_level, u_center.y + a_xz.y * 2.0 * u_extent.y); // the grid spans ±0.5 + v_wpos = p; + gl_Position = u_proj * u_view * vec4(p, 1.0); +} diff --git a/packages/ludic.render3d/shadow.ludic b/packages/ludic.render3d/shadow.ludic new file mode 100644 index 00000000..2bf44cef --- /dev/null +++ b/packages/ludic.render3d/shadow.ludic @@ -0,0 +1,250 @@ +# ============================================================================ +# shadow.ludic — cascaded shadow maps for the sun: four 2048^2 depth layers, +# each an orthographic light frustum fitted to the bounding sphere of a slice +# of the camera frustum and snapped to its own texel grid (no swimming). +# ============================================================================ + +const SHADOW_RES: int = 2048 +const SHADOW_CASCADES: int = 5 + +var sh_tex: int = 0 +var sh_fbo: int = 0 +var sh_vp: words = null # 4 x 16 float bits +var sh_split: words = null # view-space far distance of each cascade +var sh_range: words = null # 4 light-frustum depth extents (metres) +var sh_texel: words = null # 4 shadow texel sizes (metres) +var sh_tmp_proj: words = null +var sh_tmp_vp: words = null +var sh_tmp_inv: words = null +var sh_tmp_view: words = null +var sh_corner: words = null +var sh_cascade: int = 0 # the cascade being rendered (for casters that skip far ones) + +function shadow_init() -> void { + sh_tex = gl_texture() + gl_bind_texture(GL_TEXTURE_2D_ARRAY, sh_tex) + gl_tex_image3d(GL_TEXTURE_2D_ARRAY, 0, GL_DEPTH_COMPONENT32F, SHADOW_RES, SHADOW_RES, SHADOW_CASCADES, 0, GL_DEPTH_COMPONENT, GL_FLOAT, null) + gl_tex_parameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_LINEAR) + gl_tex_parameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_LINEAR) + gl_tex_parameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER) + gl_tex_parameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER) + gl_tex_parameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE) + gl_tex_parameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL) + let border = gl_floats(4) + gl_put(border, 0, 1.0); gl_put(border, 1, 1.0); gl_put(border, 2, 1.0); gl_put(border, 3, 1.0) + gl_tex_parameterfv(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_BORDER_COLOR, border) + free(border) + sh_fbo = gl_framebuffer() + gl_bind_framebuffer(GL_FRAMEBUFFER, sh_fbo) + gl_draw_buffer(GL_NONE) + gl_read_buffer(GL_NONE) + gl_bind_framebuffer(GL_FRAMEBUFFER, 0) + sh_vp = words(16 * SHADOW_CASCADES) + sh_split = words(SHADOW_CASCADES) + sh_range = words(SHADOW_CASCADES) + sh_texel = words(SHADOW_CASCADES) + # the fourth slice keeps a tree-sized texel out to a kilometre; only the massif uses the last + sh_split[0] = fi(16); sh_split[1] = fi(60); sh_split[2] = fi(250); sh_split[3] = fi(1100); sh_split[4] = fi(6000) + sh_tmp_proj = m4_new(); sh_tmp_vp = m4_new(); sh_tmp_inv = m4_new(); sh_tmp_view = m4_new() + sh_corner = words(3) +} + +# light view-projection for the camera-frustum slice [near, far] +function shadow_fit(c: int, near: int, far: int) -> void { + # Fit the slice in VIEW space, not world space. The bounding sphere of a frustum + # slice depends only on near/far/fov/aspect — never on where the camera is pointing — + # so computing it here makes the radius a constant per cascade. Doing it in world + # space (as this did) let the radius wobble as the camera turned, which changed the + # texel size, which moved the grid the projection is snapped to, so the whole shadow + # map resampled every frame: that is the crawl and flicker seen while moving. + m4_perspective(sh_tmp_proj, cam_fov, cam_aspect, near, far) + m4_inverse(sh_tmp_inv, sh_tmp_proj) # NDC -> view space + let cview = v3_new(F_ZERO, F_ZERO, F_ZERO) + let corners = words(24) + for i in 0 .. 8 { + var x = f_neg1(); var y = f_neg1(); var z = f_neg1() + if (i & 1) != 0 { x = F_ONE } + if (i & 2) != 0 { y = F_ONE } + if (i & 4) != 0 { z = F_ONE } + let w = m4_xform_point(sh_corner, sh_tmp_inv, x, y, z) + let iw = f_div(F_ONE, w) + corners[i * 3] = f_mul(sh_corner[0], iw); corners[i * 3 + 1] = f_mul(sh_corner[1], iw); corners[i * 3 + 2] = f_mul(sh_corner[2], iw) + cview[0] = f_add(cview[0], corners[i * 3]); cview[1] = f_add(cview[1], corners[i * 3 + 1]); cview[2] = f_add(cview[2], corners[i * 3 + 2]) + } + v3_scale(cview, cview, fr(1, 8)) + var radius = F_ZERO + for i in 0 .. 8 { + v3_set(sh_corner, corners[i * 3], corners[i * 3 + 1], corners[i * 3 + 2]) + let d = v3_dist(sh_corner, cview) + if f_gt(d, radius) { radius = d } + } + radius = f_mul(radius, fl(1.05)) + # the slice centre back into world space + m4_inverse(sh_tmp_vp, cam_view) + let center = words(3) + m4_xform_point(center, sh_tmp_vp, cview[0], cview[1], cview[2]) + free(cview) + # light view: from far along the sun direction, looking at the centre + let eye = words(3) + # casters up to ~900 m toward the sun (a mountain across the valley), and the + # slice itself behind the centre: a tight depth range keeps the bias small + let back = f_add(radius, fi(900)) + v3_madd(eye, center, sun_dir, back) + let up = v3_new(F_ZERO, F_ONE, F_ZERO) + m4_look_at(sh_tmp_view, eye, center, up) + # snap the ortho window to the shadow texel grid + let texel = f_div(f_mul(radius, F_TWO), fi(SHADOW_RES)) + m4_xform_point(sh_corner, sh_tmp_view, center[0], center[1], center[2]) + let ox = f_sub(f_mul(f_floor(f_div(sh_corner[0], texel)), texel), sh_corner[0]) + let oy = f_sub(f_mul(f_floor(f_div(sh_corner[1], texel)), texel), sh_corner[1]) + let nr = f_neg(radius) + let zfar = f_add(f_add(back, radius), fi(100)) + m4_ortho(sh_tmp_proj, f_add(nr, ox), f_add(radius, ox), f_add(nr, oy), f_add(radius, oy), F_ONE, zfar) + sh_range[c] = f_sub(zfar, F_ONE) + sh_texel[c] = texel + let out = words(16) + m4_mul(out, sh_tmp_proj, sh_tmp_view) + for i in 0 .. 16 { sh_vp[c * 16 + i] = out[i] } + free(out); free(eye); free(up); free(center); free(corners) +} + +function shadow_cascade_vp(c: int) -> words { return mem_off(sh_vp, c * 64) } + + +# render every cascade; `draw` happens through terrain_draw_shadow + the scene's casters +function shadow_pass() -> void { + var near = cam_near + gl_bind_framebuffer(GL_FRAMEBUFFER, sh_fbo) + gl_viewport(0, 0, SHADOW_RES, SHADOW_RES) + gl_enable(GL_DEPTH_TEST) + gl_depth_func(GL_LESS) + gl_enable(GL_POLYGON_OFFSET_FILL) + gl_polygon_offset(2.0, 4.0) + gl_disable(GL_CULL_FACE) + for c in 0 .. SHADOW_CASCADES { + sh_cascade = c + shadow_fit(c, near, sh_split[c]) + near = sh_split[c] + gl_framebuffer_texture_layer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, sh_tex, 0, c) + if r3d_debug and c == 0 { let st = gl_check_framebuffer_status(GL_FRAMEBUFFER); print(`shadow fbo status {st}`) } + gl_clear(GL_DEPTH_BUFFER_BIT) + let vp = shadow_cascade_vp(c) + # shadows off (a video setting): the cascades stay cleared, so everything reads lit + if sh_enabled { + if not sh_skip_terrain { terrain_draw_shadow(vp) } + scene_draw_casters(vp) + } + } + gl_disable(GL_POLYGON_OFFSET_FILL) + gl_bind_framebuffer(GL_FRAMEBUFFER, 0) + if r3d_debug_shadow { shadow_dump() } + if r3d_debug_shadow and not sh_printed2 { + sh_printed2 = true + let q = words(3) + if sh_probe_x != 0 { + let vp = shadow_cascade_vp(2) + m4_xform_point(q, vp, sh_probe_x, sh_probe_y, sh_probe_z) + print(`probe base ndc {f_fx(q[0])} {f_fx(q[1])} {f_fx(q[2])}`) + m4_xform_point(q, vp, sh_probe_x, f_add(sh_probe_y, fi(15)), sh_probe_z) + print(`probe top ndc {f_fx(q[0])} {f_fx(q[1])} {f_fx(q[2])} -> map texel {f_to_int(f_mul(f_add(f_mul(q[0], F_HALF), F_HALF), fi(SHADOW_RES)))} {f_to_int(f_mul(f_add(f_mul(q[1], F_HALF), F_HALF), fi(SHADOW_RES)))}`) + # where the top's shadow lands on the ground: walk down the sun ray + let gx = f_sub(f_add(sh_probe_x, F_ZERO), f_mul(sun_dir[0], f_div(fi(15), sun_dir[1]))) + let gz = f_sub(sh_probe_z, f_mul(sun_dir[2], f_div(fi(15), sun_dir[1]))) + m4_xform_point(q, vp, gx, terrain_height(gx, gz), gz) + print(`shadow-of-top ground ndc {f_fx(q[0])} {f_fx(q[1])} {f_fx(q[2])} at {f_fx(gx)} {f_fx(gz)}`) + } + for c in 0 .. SHADOW_CASCADES { + let vp = shadow_cascade_vp(c) + # a point 5 m ahead of the camera on the ground + let px = f_add(cam_pos[0], f_mul(cam_fwd[0], fi(5))); let pz = f_add(cam_pos[2], f_mul(cam_fwd[2], fi(5))) + let w = m4_xform_point(q, vp, px, terrain_height(px, pz), pz) + print(`cascade {c}: ndc {f_fx(q[0])} {f_fx(q[1])} {f_fx(q[2])} w {f_fx(w)} m0 {f_fx(vp[0])} m5 {f_fx(vp[5])} m14 {f_fx(vp[14])}`) + } + free(q) + } +} +var sh_printed2: bool = false +var sh_printed3: bool = false +var sh_enabled: bool = true +var sh_force: int = -1 # R3D_FORCE= pins every pixel to cascade c (debug) +var sh_skip_terrain: bool = false +var sh_probe_x: int = 0 +var sh_probe_y: int = 0 +var sh_probe_z: int = 0 + +# Debug: cascade depths as grey PPMs (build/dbg_shadow_.ppm) +function shadow_dump() -> void { + let n = SHADOW_RES * SHADOW_RES + let buf = words(n * SHADOW_CASCADES) + gl_bind_texture(GL_TEXTURE_2D_ARRAY, sh_tex) + gl_tex_parameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_COMPARE_MODE, GL_NONE) + gl_get_tex_image(GL_TEXTURE_2D_ARRAY, 0, GL_DEPTH_COMPONENT, GL_FLOAT, buf) + gl_tex_parameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE) + if sh_probe_x != 0 { + let vp = shadow_cascade_vp(2) + let q = words(3) + m4_xform_point(q, vp, sh_probe_x, f_add(sh_probe_y, fi(12)), sh_probe_z) + let tx = f_to_int(f_mul(f_add(f_mul(q[0], F_HALF), F_HALF), fi(SHADOW_RES))) + let ty = f_to_int(f_mul(f_add(f_mul(q[1], F_HALF), F_HALF), fi(SHADOW_RES))) + let want = f_add(f_mul(q[2], F_HALF), F_HALF) + print(`probe (12 m up) texel {tx} {ty} card depth {f_fx(f_mul(want, fi(1000)))}/1000`) + for dy in 0 .. 5 { + let yy = ty - 40 + dy * 20 + print(` row {yy}: {f_fx(f_mul(buf[2 * n + yy * SHADOW_RES + tx - 20], fi(1000)))} {f_fx(f_mul(buf[2 * n + yy * SHADOW_RES + tx], fi(1000)))} {f_fx(f_mul(buf[2 * n + yy * SHADOW_RES + tx + 20], fi(1000)))} /1000`) + } + free(q) + } + let sm = 512 + let row = bytes(sm * 3) + for c in 0 .. SHADOW_CASCADES { + # stretch between the map's own min and max (ignoring the far plane) + var lo = F_ONE; var hi = F_ZERO + var i = 0 + while i < n { let d = buf[c * n + i]; if f_ls(d, fl(0.999)) { if f_ls(d, lo) { lo = d }; if f_gt(d, hi) { hi = d } }; i += 97 } + print(`cascade {c} depth range {f_fx(lo)} .. {f_fx(hi)}`) + let f = file_open(`build/dbg_shadow_{c}.ppm`, "wb") + let hdr = `P6\n{sm} {sm}\n255\n` + file_write(f, hdr, len(hdr)) + let st = SHADOW_RES / sm + for y in 0 .. sm { + for x in 0 .. sm { + let d = buf[c * n + (y * st) * SHADOW_RES + x * st] + let g = f_to_int(f_mul(f_clamp(f_div(f_sub(d, lo), f_max(f_sub(hi, lo), fl(0.0001))), F_ZERO, F_ONE), fi(255))) + row[x * 3] = g; row[x * 3 + 1] = g; row[x * 3 + 2] = g + } + file_write(f, row, sm * 3) + } + file_close(f) + } + free(buf); free(row) +} + +var sh_printed: bool = false +# a uniform array's location: some drivers only answer to the "[0]" spelling +function sh_loc(prog: int, name: string) -> int { + var loc = gl_uniform(prog, name + "[0]") + if loc < 0 { loc = gl_uniform(prog, name) } + return loc +} +function shadow_bind(prog: int) -> void { + r3d_bind_tex(prog, "u_shadow", 15, GL_TEXTURE_2D_ARRAY, sh_tex) + # the height-field shadow (terrain.ludic); a stand-in texture keeps the unit valid before the bake + var ts = ter_shadow_tex + var ts_on = F_ONE + if ts == 0 { ts = ter_height_tex; ts_on = F_ZERO } + r3d_bind_2d(prog, "u_tershadow", 6, ts) + terrain_bind_height(prog) + u_f(gl_uniform(prog, "u_ts_on"), ts_on) + u_f(gl_uniform(prog, "u_ts_half"), fi(TERRAIN_HALF)) + u_f2(gl_uniform(prog, "u_ts_origin"), ter_ox, ter_oz) + var loc = gl_uniform(prog, "u_cascade_vp[0]") + if loc < 0 { loc = gl_uniform(prog, "u_cascade_vp") } + if r3d_debug_shadow and not sh_printed { sh_printed = true; print(`cascade vp loc {loc} / {gl_uniform(prog, "u_cascade_vp")} split loc {gl_uniform(prog, "u_cascade_split")} shadow loc {gl_uniform(prog, "u_shadow")}`) } + gl_uniform_matrix4fv(loc, SHADOW_CASCADES, 0, sh_vp) + gl_uniform1fv(sh_loc(prog, "u_cascade_split"), SHADOW_CASCADES, sh_split) + if r3d_debug_shadow and not sh_printed3 { sh_printed3 = true; print(`range {f_fx(sh_range[0])} {f_fx(sh_range[1])} {f_fx(sh_range[2])} {f_fx(sh_range[3])} texel*1000 {f_fx(f_mul(sh_texel[0], fi(1000)))} {f_fx(f_mul(sh_texel[1], fi(1000)))} {f_fx(f_mul(sh_texel[2], fi(1000)))} {f_fx(f_mul(sh_texel[3], fi(1000)))} locs {gl_uniform(prog, "u_cascade_range")} {gl_uniform(prog, "u_cascade_texel")}`) } + gl_uniform1fv(sh_loc(prog, "u_cascade_range"), SHADOW_CASCADES, sh_range) + if Os.has_env("R3D_FORCE") { sh_force = Text.to_int(Os.env("R3D_FORCE")) } + gl_uniform1i(gl_uniform(prog, "u_force_cascade"), sh_force) + gl_uniform1fv(sh_loc(prog, "u_cascade_texel"), SHADOW_CASCADES, sh_texel) +} diff --git a/packages/ludic.render3d/skin.ludic b/packages/ludic.render3d/skin.ludic new file mode 100644 index 00000000..a814d27f --- /dev/null +++ b/packages/ludic.render3d/skin.ludic @@ -0,0 +1,226 @@ +# ============================================================================ +# skin.ludic — skeletal skinning for glTF models. A Skin is the file's node +# hierarchy (rest translation / rotation / scale per node) plus the skin's joint +# list and inverse bind matrices. The game poses it by giving any node an extra +# rotation and offset IN THE MODEL'S FRAME (X right, Y up, -Z forward, whatever +# the bone's own axes happen to be), skin_pose() folds those into the hierarchy +# and produces the joint matrices, and skin.vert blends four of them per vertex. +# +# Posing in the model frame is what makes a procedural gait writable: "swing the +# thigh forward" is a rotation about the model's X axis, not about whichever axis +# the exporter gave the thigh bone. Per node the delta D is brought into the +# parent's rest frame G_p (the parent's global rest rotation): local rotation = +# (G_p^-1 D G_p) * R_rest. +# ============================================================================ + +const SKIN_MAX_JOINTS: int = 48 + +property Skin { + n_nodes: int = 0, + par: words, # parent node per node, -1 at a root + walk: words, # the nodes ordered parents-first + rest_t: words, # 3 per node + rest_r: words, # 4 per node (x, y, z, w) + rest_s: words, # 3 per node + rest_g: words, # 4 per node: the global rest rotation + names: []string, + pose_r: words, # 4 per node: the pose rotation, model frame + pose_t: words, # 3 per node: the pose offset, model frame (metres) + gmat: words, # 16 per node: global matrix this pose + n_joints: int = 0, + joints: words, # node index per joint + inv_bind: words, # 16 per joint + bones: words, # 16 per joint: what the vertex shader skins with + tmp_l: words, + tmp_q: words, + tmp_a: words, + tmp_b: words, + tmp_c: words, + tmp_v: words +} + +# a 3-vector of a JSON array (float bits), or a default +function skin_jv3(o: words, at: int, nd: Val, key: pointer, dx: int, dy: int, dz: int) -> void { + if value_has(nd, key) == 0 { o[at] = dx; o[at + 1] = dy; o[at + 2] = dz; return } + let arr = value_get(nd, key) + for i in 0 .. 3 { o[at + i] = jnum(value_at(arr, i)) } +} + +# JOINTS_0 / WEIGHTS_0 onto attributes 5 and 6 of the VAO being built (gltf_prim) +function skin_attribs(m: Mesh, attrs: Val) -> bool { + if value_has(attrs, "JOINTS_0") == 0 or value_has(attrs, "WEIGHTS_0") == 0 { return false } + let jd = gltf_accessor(value_as_int(value_get(attrs, "JOINTS_0"))) + var jsz = 1 + var jtype = GL_UNSIGNED_BYTE + if gltf_ctype == 5123 { jsz = 2; jtype = GL_UNSIGNED_SHORT } + let jb = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, jb) + gl_buffer_data(GL_ARRAY_BUFFER, gltf_count * gltf_comps * jsz, jd, GL_STATIC_DRAW) + gl_enable_vertex_attrib_array(5) + gl_vertex_attrib_pointer(5, gltf_comps, jtype, 0, 0, null) # integers, read as floats + free(jd) + let wd = gltf_accessor(value_as_int(value_get(attrs, "WEIGHTS_0"))) + var wsz = 4 + var wtype = GL_FLOAT + var norm = 0 + if gltf_ctype == 5123 { wsz = 2; wtype = GL_UNSIGNED_SHORT; norm = 1 } + if gltf_ctype == 5121 { wsz = 1; wtype = GL_UNSIGNED_BYTE; norm = 1 } + let wb = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, wb) + gl_buffer_data(GL_ARRAY_BUFFER, gltf_count * gltf_comps * wsz, wd, GL_STATIC_DRAW) + gl_enable_vertex_attrib_array(6) + gl_vertex_attrib_pointer(6, gltf_comps, wtype, norm, 0, null) + free(wd) + return true +} + +# the skin `idx` of the document being loaded (gltf_load holds gltf_doc / gltf_bin open) +function skin_load(idx: int) -> Skin { + let sk = new Skin + let nodes = value_get(gltf_doc, "nodes") + let n = value_count(nodes) + sk.n_nodes = n + sk.par = words(n); sk.walk = words(n) + sk.rest_t = words(n * 3); sk.rest_r = words(n * 4); sk.rest_s = words(n * 3); sk.rest_g = words(n * 4) + sk.pose_r = words(n * 4); sk.pose_t = words(n * 3); sk.gmat = words(n * 16) + sk.names = new []string + sk.tmp_l = m4_new(); sk.tmp_q = q_new(); sk.tmp_a = q_new(); sk.tmp_b = q_new(); sk.tmp_c = q_new(); sk.tmp_v = words(3) + for i in 0 .. n { sk.par[i] = -1 } + for i in 0 .. n { + let nd = value_at(nodes, i) + var nm: string = "" + if value_has(nd, "name") != 0 { nm = value_as_str(value_get(nd, "name")) } + push(sk.names, nm) + skin_jv3(sk.rest_t, i * 3, nd, "translation", F_ZERO, F_ZERO, F_ZERO) + skin_jv3(sk.rest_s, i * 3, nd, "scale", F_ONE, F_ONE, F_ONE) + if value_has(nd, "rotation") != 0 { + let r = value_get(nd, "rotation") + for k in 0 .. 4 { sk.rest_r[i * 4 + k] = jnum(value_at(r, k)) } + } else { sk.rest_r[i * 4] = F_ZERO; sk.rest_r[i * 4 + 1] = F_ZERO; sk.rest_r[i * 4 + 2] = F_ZERO; sk.rest_r[i * 4 + 3] = F_ONE } + if value_has(nd, "matrix") != 0 { print(`skin: node {nm} uses a matrix transform (unsupported, treated as identity)`) } + if value_has(nd, "children") != 0 { + let ch = value_get(nd, "children") + for k in 0 .. value_count(ch) { sk.par[value_as_int(value_at(ch, k))] = i } + } + } + # parents first: order the nodes by depth + let depth = words(n) + for i in 0 .. n { + var d = 0 + var p = sk.par[i] + while p >= 0 and d < n { d += 1; p = sk.par[p] } + depth[i] = d + } + var k = 0 + for d in 0 .. n { for i in 0 .. n { if depth[i] == d { sk.walk[k] = i; k += 1 } } } + free(depth) + # the global rest rotation of every node + for w in 0 .. n { + let i = sk.walk[w] + let p = sk.par[i] + q_load(sk.tmp_a, sk.rest_r, i) + if p >= 0 { q_load(sk.tmp_b, sk.rest_g, p); q_mul(sk.tmp_q, sk.tmp_b, sk.tmp_a); q_store(sk.rest_g, i, sk.tmp_q) } + else { q_store(sk.rest_g, i, sk.tmp_a) } + } + # the skin: joints and inverse bind matrices + let skv = value_at(value_get(gltf_doc, "skins"), idx) + let jl = value_get(skv, "joints") + var nj = value_count(jl) + if nj > SKIN_MAX_JOINTS { print(`skin: {nj} joints, only the first {SKIN_MAX_JOINTS} are used`); nj = SKIN_MAX_JOINTS } + sk.n_joints = nj + sk.joints = words(nj) + sk.inv_bind = words(nj * 16) + sk.bones = words(nj * 16) + for j in 0 .. nj { sk.joints[j] = value_as_int(value_at(jl, j)) } + if value_has(skv, "inverseBindMatrices") != 0 { + let ib = gltf_accessor(value_as_int(value_get(skv, "inverseBindMatrices"))) + for i in 0 .. nj * 16 { sk.inv_bind[i] = mem_get_f32_bits(ib, i) } + free(ib) + } else { + for j in 0 .. nj { m4_identity(mem_off(sk.inv_bind, j * 64)) } + } + skin_reset(sk) + skin_pose(sk) + print(`skin: {nj} joints over {n} nodes`) + return sk +} + +function skin_find(sk: Skin, name: string) -> int { + for i in 0 .. sk.n_nodes { if sk.names[i] == name { return i } } + print(`skin: no node {name}`) + return -1 +} +function skin_mat(sk: Skin, node: int) -> words { return mem_off(sk.gmat, node * 64) } + +# back to the rest pose +function skin_reset(sk: Skin) -> void { + for i in 0 .. sk.n_nodes { + sk.pose_r[i * 4] = F_ZERO; sk.pose_r[i * 4 + 1] = F_ZERO; sk.pose_r[i * 4 + 2] = F_ZERO; sk.pose_r[i * 4 + 3] = F_ONE + sk.pose_t[i * 3] = F_ZERO; sk.pose_t[i * 3 + 1] = F_ZERO; sk.pose_t[i * 3 + 2] = F_ZERO + } +} +# a node's pose rotation in the model frame: pitch about X, yaw about Y, roll about Z (radians) +function skin_set_rot(sk: Skin, node: int, pitch: int, yaw: int, roll: int) -> void { + if node < 0 { return } + q_euler(sk.tmp_q, pitch, yaw, roll) + q_store(sk.pose_r, node, sk.tmp_q) +} +function skin_set_quat(sk: Skin, node: int, q: words) -> void { if node >= 0 { q_store(sk.pose_r, node, q) } } +# a node's pose offset in the model frame (metres) +function skin_set_offset(sk: Skin, node: int, x: int, y: int, z: int) -> void { + if node < 0 { return } + sk.pose_t[node * 3] = x; sk.pose_t[node * 3 + 1] = y; sk.pose_t[node * 3 + 2] = z +} + +# fold the pose into the hierarchy: global matrices, then the joint matrices +function skin_pose(sk: Skin) -> void { + for w in 0 .. sk.n_nodes { + let i = sk.walk[w] + let p = sk.par[i] + q_load(sk.tmp_a, sk.pose_r, i) # D, model frame + var tx = sk.rest_t[i * 3]; var ty = sk.rest_t[i * 3 + 1]; var tz = sk.rest_t[i * 3 + 2] + let ox = sk.pose_t[i * 3]; let oy = sk.pose_t[i * 3 + 1]; let oz = sk.pose_t[i * 3 + 2] + if p >= 0 { + q_load(sk.tmp_b, sk.rest_g, p) # G_p + q_conj(sk.tmp_c, sk.tmp_b) # G_p^-1 + q_mul(sk.tmp_q, sk.tmp_c, sk.tmp_a) + q_mul(sk.tmp_a, sk.tmp_q, sk.tmp_b) # G_p^-1 D G_p + if ox != 0 or oy != 0 or oz != 0 { + v3_set(sk.tmp_v, ox, oy, oz) + q_rotate(sk.tmp_v, sk.tmp_c, sk.tmp_v) # the offset in the parent's frame + tx = f_add(tx, sk.tmp_v[0]); ty = f_add(ty, sk.tmp_v[1]); tz = f_add(tz, sk.tmp_v[2]) + } + } else { tx = f_add(tx, ox); ty = f_add(ty, oy); tz = f_add(tz, oz) } + q_load(sk.tmp_b, sk.rest_r, i) + q_mul(sk.tmp_q, sk.tmp_a, sk.tmp_b) # local rotation + m4_trs_q(sk.tmp_l, tx, ty, tz, sk.tmp_q, sk.rest_s[i * 3], sk.rest_s[i * 3 + 1], sk.rest_s[i * 3 + 2]) + if p >= 0 { m4_mul(skin_mat(sk, i), skin_mat(sk, p), sk.tmp_l) } + else { m4_copy(skin_mat(sk, i), sk.tmp_l) } + } + for j in 0 .. sk.n_joints { + m4_mul(mem_off(sk.bones, j * 64), skin_mat(sk, sk.joints[j]), mem_off(sk.inv_bind, j * 64)) + } +} + +# the joint matrices onto a program's u_bones[] +function skin_bind(sk: Skin, prog: int) -> void { + var loc = gl_uniform(prog, "u_bones[0]") + if loc < 0 { loc = gl_uniform(prog, "u_bones") } + gl_uniform_matrix4fv(loc, sk.n_joints, 0, sk.bones) +} + +# the same skeleton posed on its own: shares the rest data, owns the pose and the matrices +function skin_clone(src: Skin) -> Skin { + let sk = new Skin + sk.n_nodes = src.n_nodes; sk.par = src.par; sk.walk = src.walk + sk.rest_t = src.rest_t; sk.rest_r = src.rest_r; sk.rest_s = src.rest_s; sk.rest_g = src.rest_g + sk.names = src.names + sk.n_joints = src.n_joints; sk.joints = src.joints; sk.inv_bind = src.inv_bind + let n = src.n_nodes + sk.pose_r = words(n * 4); sk.pose_t = words(n * 3); sk.gmat = words(n * 16) + sk.bones = words(src.n_joints * 16) + sk.tmp_l = m4_new(); sk.tmp_q = q_new(); sk.tmp_a = q_new(); sk.tmp_b = q_new(); sk.tmp_c = q_new(); sk.tmp_v = words(3) + skin_reset(sk) + skin_pose(sk) + return sk +} diff --git a/packages/ludic.render3d/sky.ludic b/packages/ludic.render3d/sky.ludic new file mode 100644 index 00000000..3fc71805 --- /dev/null +++ b/packages/ludic.render3d/sky.ludic @@ -0,0 +1,134 @@ +# ============================================================================ +# sky.ludic — the HDRI sky and its image-based lighting: the equirect radiance +# map (RGB16F, mipped), the sun found in it, a diffuse-convolved irradiance map, +# a GGX-prefiltered map per roughness level (a 2D array), and the split-sum +# BRDF lookup. All convolved on the GPU at load. +# ============================================================================ + +const SKY_PREFILTER_LEVELS: int = 6 + +var sky_tex: int = 0 +var sky_w: int = 0 +var sky_h: int = 0 +var sky_irradiance: int = 0 +var sky_prefilter: int = 0 # GL_TEXTURE_2D_ARRAY +var sky_brdf: int = 0 +var sun_dir: words = null # toward the sun (float bits) +var sun_color: words = null # radiance (float bits) +var sky_fullscreen: Mesh = null +var sky_yaw: int = 0 # radians: the HDRI is turned by this about y +var sky_sun_boost: int = 0x40133333 # 2.3: the photograph's thin cloud dims its sun; a crisper day wants more +var sky_rot_s: int = 0 +var sky_rot_c: int = 0 +var sun_hdri: words = null # the sun direction as found in the file +var sky_p_irr: int = 0 +var sky_p_pre: int = 0 +var sky_p_brdf: int = 0 + +# turn the HDRI so its sun sits at world azimuth `yaw` (radians, 0 = toward -z) +function sky_set_yaw(yaw: int) -> void { + sky_set_rot(yaw) + # world sun = rotY(sun_hdri, -yaw): the lookup rotates a world direction by +yaw + let s = sun_hdri + v3_set(sun_dir, f_sub(f_mul(sky_rot_c, s[0]), f_mul(sky_rot_s, s[2])), s[1], f_add(f_mul(sky_rot_s, s[0]), f_mul(sky_rot_c, s[2]))) + sky_precompute() +} +# turn only the visible sky image (cheap, per frame): the light and the convolved +# maps stay where they are — daylight.ludic moves those on its own terms +function sky_set_rot(yaw: int) -> void { + sky_yaw = yaw + sky_rot_s = f_sin(yaw); sky_rot_c = f_cos(yaw) +} +function sky_bind_rot(prog: int) -> void { u_f2(gl_uniform(prog, "u_sky_rot"), sky_rot_s, sky_rot_c) } + +# direction for an equirect uv (matches equirectUV in lighting.glsl) +function sky_dir_from_uv(o: words, u: int, v: int) -> void { + let phi = f_mul(f_sub(u, F_HALF), f_mul(F_TWO, F_PI)) + let theta = f_mul(v, F_PI) + let st = f_sin(theta) + v3_set(o, f_mul(st, f_sin(phi)), f_cos(theta), f_neg(f_mul(st, f_cos(phi)))) +} + +function sky_load(path: string) -> bool { + sky_tex = tex_load_hdr(path) + if sky_tex == 0 { return false } + sky_w = tex_w; sky_h = tex_h + sun_dir = words(3) + sun_hdri = words(3) + sky_dir_from_uv(sun_hdri, fr(hdr_max_x * 2 + 1, sky_w * 2), fr(hdr_max_y * 2 + 1, sky_h * 2)) + v3_copy(sun_dir, sun_hdri) + sky_rot_c = F_ONE + # the sun's irradiance is what the IBL clip leaves out of the map; lighting it + # directly with that keeps sun and sky in the photograph's own proportion + sun_color = v3_new(f_mul(hdr_sun_r, sky_sun_boost), f_mul(hdr_sun_g, sky_sun_boost), f_mul(hdr_sun_b, sky_sun_boost)) + print(`sun irradiance: {f_fx(hdr_sun_r)} {f_fx(hdr_sun_g)} {f_fx(hdr_sun_b)} (Q16.16), clip {f_fx(hdr_clip)}`) + print(`sky: {sky_w}x{sky_h}, sun at texel {hdr_max_x},{hdr_max_y}`) + sky_fullscreen = mesh_fullscreen() + sky_precompute() + return true +} + +function sky_convolve(prog: int, target_tex: int, layer: int, w: int, h: int, rough: int) -> void { + let fbo = gl_framebuffer() + gl_bind_framebuffer(GL_FRAMEBUFFER, fbo) + if layer < 0 { gl_framebuffer_texture2d(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, target_tex, 0) } + else { gl_framebuffer_texture_layer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, target_tex, 0, layer) } + gl_viewport(0, 0, w, h) + gl_use_program(prog) + r3d_bind_2d(prog, "u_sky", 0, sky_tex) + sky_bind_rot(prog) + u_f(gl_uniform(prog, "u_sun_clip"), hdr_clip) + u_f(gl_uniform(prog, "u_rough"), rough) + u_f(gl_uniform(prog, "u_sky_w"), fi(sky_w)) + mesh_draw(sky_fullscreen) + gl_bind_framebuffer(GL_FRAMEBUFFER, 0) + let ids = gl_scratch() + ids[0] = fbo + gl_delete_framebuffers(1, ids) +} + +function sky_precompute() -> void { + gl_disable(GL_DEPTH_TEST) + if sky_irradiance != 0 { + let ids = gl_scratch() + ids[0] = sky_irradiance; gl_delete_textures(1, ids) + ids[0] = sky_prefilter; gl_delete_textures(1, ids) + ids[0] = sky_brdf; gl_delete_textures(1, ids) + } + # irradiance: 128 x 64 equirect + if sky_p_irr == 0 { sky_p_irr = r3d_program("fullscreen.vert", "ibl_irradiance.frag", ""); sky_p_pre = r3d_program("fullscreen.vert", "ibl_prefilter.frag", ""); sky_p_brdf = r3d_program("fullscreen.vert", "ibl_brdf.frag", "") } + let p_irr = sky_p_irr + sky_irradiance = tex_target(128, 64, GL_RGB16F, GL_RGB, GL_FLOAT, GL_LINEAR) + gl_bind_texture(GL_TEXTURE_2D, sky_irradiance) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT) + sky_convolve(p_irr, sky_irradiance, -1, 128, 64, F_ZERO) + # prefiltered specular: 6 roughness levels, 512 x 256 each, as a 2D array + let p_pre = sky_p_pre + sky_prefilter = gl_texture() + gl_bind_texture(GL_TEXTURE_2D_ARRAY, sky_prefilter) + gl_tex_image3d(GL_TEXTURE_2D_ARRAY, 0, GL_RGB16F, 512, 256, SKY_PREFILTER_LEVELS, 0, GL_RGB, GL_FLOAT, null) + gl_tex_parameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_S, GL_REPEAT) + gl_tex_parameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE) + gl_tex_parameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_LINEAR) + gl_tex_parameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_LINEAR) + for l in 0 .. SKY_PREFILTER_LEVELS { + sky_convolve(p_pre, sky_prefilter, l, 512, 256, fr(l, SKY_PREFILTER_LEVELS - 1)) + } + # BRDF LUT + let p_brdf = sky_p_brdf + sky_brdf = tex_target(256, 256, GL_RG16F, GL_RG, GL_FLOAT, GL_LINEAR) + sky_convolve(p_brdf, sky_brdf, -1, 256, 256, F_ZERO) + gl_check("sky precompute") +} + +# bind the IBL set + sun for a lit program (units 12..14) +function sky_bind_lighting(prog: int) -> void { + r3d_bind_2d(prog, "u_irradiance", 12, sky_irradiance) + r3d_bind_tex(prog, "u_prefilter", 13, GL_TEXTURE_2D_ARRAY, sky_prefilter) + r3d_bind_2d(prog, "u_brdf", 14, sky_brdf) + u_v3(gl_uniform(prog, "u_sun_dir"), sun_dir) + u_v3(gl_uniform(prog, "u_sun_color"), sun_color) + u_v3(gl_uniform(prog, "u_cam_pos"), cam_pos) + u_f(gl_uniform(prog, "u_prefilter_levels"), fi(SKY_PREFILTER_LEVELS)) + daylight_bind(prog) +} diff --git a/packages/ludic.render3d/stream.ludic b/packages/ludic.render3d/stream.ludic new file mode 100644 index 00000000..6ffcd7f4 --- /dev/null +++ b/packages/ludic.render3d/stream.ludic @@ -0,0 +1,315 @@ +# ============================================================================ +# stream.ludic — ground cover that follows the camera anywhere on the map. +# +# The world is cut into square chunks. A chunk's instances are generated once +# per distance band (a deterministic function of the chunk and the band, so the +# same ground always grows the same grass) and cached; each frame the chunks +# within reach are gathered into the layer's instance list. Bands thin the cover +# with distance and grow the cards so the carpet stays continuous on screen; +# beyond the last band nothing is placed (the terrain material carries it). +# +# The scene supplies the generator: stream_fill(chunk_x, chunk_z, band) calls +# stream_emit(...) per instance. One Stream drives one Layer. +# ============================================================================ + +var STREAM_MAX_CHUNKS: int = 4096 + +property Chunk { + key: int = 0, # packed (cx, cz, band) + used: int = 0, # the walk that last wanted it (for eviction) + data: words, # INST_FLOATS per instance + count: int = 0, + ymin: int = 0, # height range of its instances (float bits), for the frustum test + ymax: int = 0 +} +property Stream { + layer: Layer, + size: int = 0, # chunk size (metres, float bits) + reach: int = 0, # radius (metres, float bits) + bands: words, # band outer radii (float bits), ascending; 4 of them + chunks: []Chunk, + keys: words, # parallel to chunks for lookup + n: int = 0, + last_cx: int = 999999, + last_cz: int = 999999, + pending: bool = false, # chunks still to generate after the camera crossed a cell + cur: Chunk, # the chunk being filled + kind: int = 0, # the scene's generator selector for this stream + min_band: int = 0, # bands below this belong to another (nearer) stream + view_gen: int = -1, # sc_view_gen the layer was last gathered for (the view turned -> regather) + htab: words # open-addressed key -> chunk index + 1 (0 = empty) +} + +var stream_all: []Stream = null +var stream_cap_read: bool = false +var stream_no_evict: bool = false # R3D_NOEVICT: the old behaviour, for comparison +var stream_walk_no: int = 0 # counts ring walks; a chunk's age is measured in these +var stream_evictions: int = 0 +# microseconds spent per frame, split so the hitch can be attributed (R3D_PROF=1) +var stream_us_gen: long = 0 # generating new chunks (stream_fill) +var stream_us_gather: long = 0 # copying cached chunks into the layer buffer +var stream_us_walk: long = 0 # the ring walk itself +var stream_walks: int = 0 # streams that walked their whole ring this frame + +function stream_new(layer: Layer, size: int, reach: int, b0: int, b1: int, b2: int, b3: int) -> Stream { + if not stream_cap_read { + stream_cap_read = true + if Os.has_env("R3D_STREAM_CAP") { STREAM_MAX_CHUNKS = Text.to_int(Os.env("R3D_STREAM_CAP")) } + stream_no_evict = Os.has_env("R3D_NOEVICT") + } + let s = new Stream + s.layer = layer; s.size = size; s.reach = reach + layer.streamed = true + layer.grounded = true + s.bands = words(4) + s.bands[0] = b0; s.bands[1] = b1; s.bands[2] = b2; s.bands[3] = b3 + s.chunks = new []Chunk + s.keys = words(STREAM_MAX_CHUNKS) + s.htab = words(STREAM_HASH) + for i in 0 .. STREAM_HASH { s.htab[i] = 0 } + if stream_all == null { stream_all = new []Stream } + push(stream_all, s) + return s +} + +function stream_key(cx: int, cz: int, band: int) -> int { return ((cx + 4096) * 8192 + (cz + 4096)) * 4 + band } + +# Chunk lookup is an open-addressed hash, not a scan. A cell crossing tests every cell +# within reach — for the 800 m streams that is ~2000 cells each — and a scan over the +# cached chunks made that O(cells x chunks), tens of millions of comparisons in the one +# frame that crosses a 32 m boundary, growing as more ground is explored. That is the +# stutter you feel when walking, and it never shows in a stationary profile because +# stream_update returns immediately while the camera stays in its cell. +const STREAM_HASH: int = 8192 # power of two, >= 2 * STREAM_MAX_CHUNKS + +function stream_slot(key: int) -> int { + var h = key * -1640531527 # Knuth's golden-ratio multiplier, as a signed i32 + h = h ^ (h >> 15) + return h & (STREAM_HASH - 1) +} + +function stream_find(s: Stream, key: int) -> Chunk { + var i = stream_slot(key) + while s.htab[i] != 0 { + let idx = s.htab[i] - 1 + if s.keys[idx] == key { return s.chunks[idx] } + i = (i + 1) & (STREAM_HASH - 1) + } + return null +} + +function stream_remember(s: Stream, key: int, idx: int) -> void { + var i = stream_slot(key) + while s.htab[i] != 0 { i = (i + 1) & (STREAM_HASH - 1) } + s.htab[i] = idx + 1 +} + +# the generator adds instances to the chunk being filled (into a shared scratch; the +# chunk gets an exactly-sized copy when the fill ends) +const STREAM_CHUNK_MAX: int = 262144 +var stream_debug_n: int = 0 +var stream_scratch: words = null +function stream_emit(s: Stream, x: int, y: int, z: int, scale: int, yaw: int, seed: int, wind: int) -> void { + let c = s.cur + if c.count >= STREAM_CHUNK_MAX { return } + if stream_scratch == null { stream_scratch = words(STREAM_CHUNK_MAX * INST_FLOATS) } + if c.count == 0 { c.ymin = y; c.ymax = y } else { c.ymin = f_min(c.ymin, y); c.ymax = f_max(c.ymax, y) } + let o = c.count * INST_FLOATS + stream_scratch[o] = x; stream_scratch[o + 1] = y; stream_scratch[o + 2] = z; stream_scratch[o + 3] = scale + stream_scratch[o + 4] = f_sin(yaw); stream_scratch[o + 5] = f_cos(yaw); stream_scratch[o + 6] = seed; stream_scratch[o + 7] = wind + c.count += 1 +} + +function stream_band(s: Stream, d: int) -> int { + if f_ls(d, s.bands[0]) { return 0 } + if f_ls(d, s.bands[1]) { return 1 } + if f_ls(d, s.bands[2]) { return 2 } + if f_ls(d, s.bands[3]) { return 3 } + return 4 +} + +# gather the chunks around the camera into the layer, generating missing ones nearest +# first within a per-frame budget so a cell crossing spreads over a few frames instead of +# one hitch (the very first update, before anything is on screen, generates everything) +# The budget is global, not per stream. It used to be 60000 per stream, and with the +# thirteen streams a scene like the valley runs that let a single frame generate over +# 700k instances — so crossing a 32 m cell put one frame's worth of cover generation +# (height samples, ortho lookups, slope and path tests, per candidate) into one frame +# while its neighbours did none. That one frame is the stutter you feel while walking; +# spreading the same work over several frames costs nothing but a little pop-in at the +# far edge of the reach, where new chunks appear. +# A time budget, not an instance count. Instances are a poor proxy: a candidate that +# is rejected costs nearly as much as one that is kept, and cost per instance varies +# by band and kind. With a real microsecond clock the budget can just be the thing we +# actually care about — how long this frame is allowed to spend growing ground cover. +# Overshoot is bounded by one chunk, so keep chunks small on the dense near streams. +const STREAM_BUDGET_US: int = 2500 # microseconds of generation per frame +var stream_deadline: long = 0 +const STREAM_BUDGET: int = 8000 # kept for the work counter only +# The worst frame is now bounded by one chunk, not by the budget: stream_fill emits a +# whole chunk in one call, and the densest band-0 chunk is ~114k instances. Splitting a +# chunk's generation across frames would need a resumable generator contract; that is +# the next step if the residual hitch ever matters. +var stream_budget_left: int = 0 + +# Drop the half of the cache nobody has asked for in the longest time, and rebuild the +# index over what is left. +# +# Before this, a full cache simply stopped remembering: the chunk was generated, used for +# that frame and thrown away, so every walk regenerated it. That is not a slow degradation +# — it is a cliff. Past it every frame pays the whole generation budget and the ground +# visibly re-grows as you turn, and it arrives after enough of the map has been walked, +# which is exactly when a player is least likely to connect it to anything. +function stream_evict(s: Stream) -> void { + # the age threshold that keeps about half, found by bisection on the count (no sort) + var lo = 0 + var hi = stream_walk_no + var keep = s.n / 2 + var t = 0 + var it = 0 + while it < 24 and lo < hi { + t = (lo + hi + 1) / 2 + var c = 0 + var i = 0 + while i < s.n { if s.chunks[i].used >= t { c += 1 }; i += 1 } + if c >= keep { lo = t } else { hi = t - 1 } + it += 1 + } + t = lo + # everything wanted by the walk in progress stays whatever the threshold says + let kept = new []Chunk + var i = 0 + while i < s.n { + let c = s.chunks[i] + if c.used >= t or c.used == stream_walk_no { push(kept, c) } + else { if c.data != null { free(c.data) } } + i += 1 + } + s.chunks = kept + s.n = len(kept) + for h in 0 .. STREAM_HASH { s.htab[h] = 0 } + i = 0 + while i < s.n { s.keys[i] = s.chunks[i].key; stream_remember(s, s.chunks[i].key, i); i += 1 } + stream_evictions += 1 +} + +function stream_update(s: Stream, cam_x: int, cam_z: int) -> void { + let ccx = f_to_int(f_floor(f_div(cam_x, s.size))) + let ccz = f_to_int(f_floor(f_div(cam_z, s.size))) + if ccx == s.last_cx and ccz == s.last_cz and not s.pending and s.view_gen == sc_view_gen { return } + let first = s.last_cx == 999999 + s.view_gen = sc_view_gen + s.last_cx = ccx; s.last_cz = ccz + let l = s.layer + l.count = 0 + var missing = false + stream_walks += 1 + stream_walk_no += 1 + let tw = gl_now_us() + let r = f_to_int(f_div(s.reach, s.size)) + 1 + # rings outward from the camera's cell: the nearest chunks are generated first + var ring = 0 + while ring <= r { + var cz = ccz - ring + while cz <= ccz + ring { + var cx = ccx - ring + while cx <= ccx + ring { + let edge = (cz == ccz - ring) or (cz == ccz + ring) or (cx == ccx - ring) or (cx == ccx + ring) + if edge { + let wx = f_mul(f_add(fi(cx), F_HALF), s.size) + let wz = f_mul(f_add(fi(cz), F_HALF), s.size) + let dx = f_sub(wx, cam_x); let dz = f_sub(wz, cam_z) + let d = f_sqrt(f_add(f_mul(dx, dx), f_mul(dz, dz))) + let band = stream_band(s, d) + if band < 4 and band >= s.min_band and f_ls(d, f_add(s.reach, s.size)) { + let key = stream_key(cx, cz, band) + var c = stream_find(s, key) + if c != null { c.used = stream_walk_no } + # The cell underfoot and its neighbours are never deferred: they are what you + # are looking at, and a hole there is the grass vanishing as you walk into it. + let urgent = band == 0 and ring <= 1 + if c == null and (first or urgent or gl_now_us() < stream_deadline) { + c = new Chunk + c.key = key + s.cur = c + let t0 = gl_now_us() + stream_fill(s, cx, cz, band) + let dt = gl_now_us() - t0 + stream_us_gen = stream_us_gen + dt + prof_chunk(s.kind, band, c.count, dt) + if r3d_debug and band == 0 and stream_debug_n < 40 { stream_debug_n += 1; print(`stream kind {s.kind} band {band} chunk {cx},{cz}: {c.count} instances`) } + if c.count > 0 { c.data = words(c.count * INST_FLOATS); mem_copy(c.data, stream_scratch, c.count * INST_FLOATS * 4) } + if s.n >= STREAM_MAX_CHUNKS and not stream_no_evict { stream_evict(s) } + # If the walk in progress wants more chunks than the cache can hold, there + # is nothing to evict and this one is used and dropped, as every chunk used + # to be. The cap has to exceed one walk's ring for the cache to work at all. + if s.n < STREAM_MAX_CHUNKS { + push(s.chunks, c); s.keys[s.n] = key; stream_remember(s, key, s.n); s.n += 1 + c.used = stream_walk_no + } + + prof_gen_add(c.count + 512) + } + if c == null { + missing = true + # Until the finer band is generated, show the coarser one this ground had + # a moment ago (same cell, next band out): approaching grass thins for a + # few frames instead of disappearing. + var b2 = band + 1 + while c == null and b2 < 4 { c = stream_find(s, stream_key(cx, cz, b2)); b2 += 1 } + if c != null { c.used = stream_walk_no } + } + if c != null and c.count > 0 and l.count + c.count <= l.cap and stream_chunk_visible(s, cx, cz, c) { + let tg = gl_now_us() + mem_copy(mem_off(l.inst, l.count * INST_FLOATS * 4), c.data, c.count * INST_FLOATS * 4) + l.count += c.count + stream_us_gather = stream_us_gather + (gl_now_us() - tg) + } + } + } + cx += 1 + } + cz += 1 + } + ring += 1 + } + s.pending = missing + stream_us_walk = stream_us_walk + (gl_now_us() - tw) + # force the layer to re-partition its (new) instances + l.view_gen = -1 +} + +# Only chunks that can be seen are gathered: a sphere around the chunk's footprint and +# height range, padded for the tallest cover and for casters just outside the frame +# whose short shadows still fall inside it. +function stream_chunk_visible(s: Stream, cx: int, cz: int, c: Chunk) -> bool { + let half = f_mul(s.size, F_HALF) + let wx = f_add(f_mul(fi(cx), s.size), half) + let wz = f_add(f_mul(fi(cz), s.size), half) + let hy = f_mul(f_sub(c.ymax, c.ymin), F_HALF) + let cy = f_add(c.ymin, hy) + let r = f_add(f_sqrt(f_add(f_mul(f_mul(half, half), F_TWO), f_mul(hy, hy))), fi(8)) + return cam_sphere_visible(wx, cy, wz, r) +} + +# what the caches hold, and whether they are being churned (R3D_PROF) +function stream_census() -> void { + if stream_all == null { return } + print("") + print(`ground-cover chunk caches (cap {string(STREAM_MAX_CHUNKS)} each, {string(stream_evictions)} evictions over the run):`) + var inst = 0 + for i in 0 .. len(stream_all) { + let s = stream_all[i] + var n = 0 + for k in 0 .. s.n { n += s.chunks[k].count } + inst += n + print(` stream kind {string(s.kind)}: {string(s.n)} chunks, {string(n)} instances`) + } + print(` {string(inst)} instances held, {string(inst * INST_FLOATS * 4 / 1024)} KB`) +} + +function stream_update_all() -> void { + if stream_all == null { return } + stream_deadline = gl_now_us() + STREAM_BUDGET_US + for i in 0 .. len(stream_all) { stream_update(stream_all[i], cam_pos[0], cam_pos[2]) } +} diff --git a/packages/ludic.render3d/terrain.ludic b/packages/ludic.render3d/terrain.ludic new file mode 100644 index 00000000..83c91841 --- /dev/null +++ b/packages/ludic.render3d/terrain.ludic @@ -0,0 +1,706 @@ +# ============================================================================ +# terrain.ludic — the landscape: a height map generated on the GPU (R32F), +# read back for placement queries, drawn as a lifted grid with four scanned +# PBR materials blended by slope, altitude and the track mask. +# ============================================================================ + +var TERRAIN_HALF: int = 4096 # world half-size in metres (8 km square) +const TERRAIN_RES: int = 4096 # height-map texels per side (2 m over 8 km) +const TERRAIN_SHADOW_RES: int = 2048 # the baked height-field shadow / cloud mask +# CDLOD: the map is a quadtree of 32x32-cell patches; the leaf patch is 32 m (1 m cells) +const CD_G: int = 32 # cells per patch side +const CD_LEVELS: int = 9 # 32 m leaves .. 8192 m root +const CD_LEAVES: int = 256 # leaf patches per side (8192 / 32) +var cd_mesh: Mesh = null +var cd_range: words = null # float bits: how far each level is drawn +var cd_min: []words = null # per level: min height of each patch (float bits) +var cd_max: []words = null +var cd_draws: int = 0 +var cd_far_draws: int = 0 +var cd_near_draws: int = 0 +var ter_force_far: bool = false +var ter_no_split: bool = false +var ter_force_near: bool = false +var ter_skip: bool = false + +var ter_height_tex: int = 0 +var ter_heights: words = null # CPU copy, float bits, TERRAIN_RES^2 +var ter_reflect: bool = false # drawing the reflection: the mid mesh is plenty +var ter_prog: int = 0 +# The far tier compiled on its own (FAR_ONLY). A patch that lies entirely beyond the +# near/far split is drawn with it: same pixels, a shader small enough to run wide. +var ter_prog_far: int = 0 +var ter_prog_near: int = 0 # the detailed tier alone (NEAR_ONLY) +var ter_sun_prog: int = 0 # tersun.frag: sun visibility into a screen buffer +var ter_sun_tgt: Target = null # that buffer, at the frame's size +var ter_sun_refl: Target = null # and at the reflection's, which is smaller +var ter_sun_dumped: bool = false +var ter_sun_checked: bool = false +var ter_sun_done: bool = false # the caller already ran the pass (so it can time it) +var ter_sun_pass: bool = false # selection is drawing the visibility pass +var ter_sun_tex: int = 0 +var ter_prog_cur: int = 0 # the program currently bound during selection +var ter_smooth: bool = false # generate the analytic test ground instead of a survey +var ter_far_split: int = 0 # metres: beyond this the terrain takes its cheap far path (R3D_TFAR) +var ter_far_band: int = 0 # half-width of the near/far blend (R3D_TBAND) +var ter_snow_line: int = 0 +var ter_tex: words = null # 11 material textures (see terrain_bind) +var ter_ox: int = 0 # world x/z of the terrain centre (float bits) +var ter_oz: int = 0 +var ter_dem_tex: int = 0 # a real height map (16-bit), or 0 for the procedural valley +var ter_dem_blur: int = 0 # gaussian texels applied to the survey (0 for lidar; ~3 for 30 m data) +var ter_dem_min: int = 0 +var ter_dem_max: int = 0 +var ter_dem_base: int = 0 +var ter_ortho_tex: int = 0 # a photograph of the same window, draped with distance +var ter_carpet: int = 0 # the distant-grass carpet (carpet_bake), 0 = none +var ter_shadow_tex: int = 0 # height-field sun shadow: RG32F (lowest lit height, occluder distance) +var ter_shadow_yaw: int = 0x7fffffff # the sky yaw it was baked for +var ter_shadow_gen: int = -1 # the daylight generation it was baked for +var ter_shadow_prog: int = 0 +function terrain_set_carpet(tex: int) -> void { ter_carpet = tex } +var ter_lake_level: int = 0 # a lake carved into the height map (float bits; ex = 0 → none) +var ter_lake_cx: int = 0 +var ter_lake_cz: int = 0 +var ter_lake_ex: int = 0 +var ter_lake_ez: int = 0 +# Carve a lake bed below `level` inside the ellipse (cx, cz) ± (ex, ez); call before r3d_init. +function terrain_lake(level: int, cx: int, cz: int, ex: int, ez: int) -> void { + ter_lake_level = level; ter_lake_cx = cx; ter_lake_cz = cz; ter_lake_ex = ex; ter_lake_ez = ez +} + +# Use a real place: a 16-bit PNG height map plus its elevation range (metres). The +# elevation `base` becomes y = 0; `ox`/`oz` put the map's centre in the world. +var ter_ortho_px: pointer = null # the photograph on the CPU (RGB8, TERRAIN_RES^2) for placement rules +var ter_ortho_w: int = 0 +var ter_ortho_c: int = 3 + +# the photograph's colour at world (x, z): packed 0xRRGGBB (0 outside the map) +function terrain_ortho(x: int, z: int) -> int { + if ter_ortho_px == null { return 0 } + if ter_o_scale == 0 { ter_o_scale = fr(ter_ortho_w, TERRAIN_HALF * 2) } + let scale = ter_o_scale + var ix = f_to_int(f_floor(f_mul(f_add(f_sub(x, ter_ox), fi(TERRAIN_HALF)), scale))) + var iz = f_to_int(f_floor(f_mul(f_add(f_sub(z, ter_oz), fi(TERRAIN_HALF)), scale))) + if ix < 0 { ix = 0 }; if iz < 0 { iz = 0 } + if ix > ter_ortho_w - 1 { ix = ter_ortho_w - 1 }; if iz > ter_ortho_w - 1 { iz = ter_ortho_w - 1 } + let o = (iz * ter_ortho_w + ix) * ter_ortho_c + return (ter_ortho_px[o] << 16) | (ter_ortho_px[o + 1] << 8) | ter_ortho_px[o + 2] +} +# The three classifiers below all read the same pixel. A caller that wants more than +# one should fetch the colour once with terrain_ortho() and use the *_of forms — the +# cover generator tests all three per candidate, so this is three fetches saved out of +# every four in the hottest loop in the program. +function ortho_green_of(c: int) -> int { + let r = (c >> 16) & 255; let g = (c >> 8) & 255; let b = c & 255 + var v = g - max(r, b) + if v < 0 { v = 0 } + return f_min(fr(v, 22), F_ONE) +} +function ortho_scree_of(c: int) -> int { + if c == 0 { return F_ZERO } + let r = (c >> 16) & 255; let g = (c >> 8) & 255; let b = c & 255 + let mx = max(r, max(g, b)) + if g - max(r, b) > 2 or mx < 60 { return F_ZERO } + return F_ONE +} +function ortho_forest_of(c: int) -> int { + if c == 0 { return F_ZERO } + let r = (c >> 16) & 255; let g = (c >> 8) & 255; let b = c & 255 + let mx = max(r, max(g, b)) + if g - max(r, b) < 3 { return F_ZERO } + if mx <= 80 { return F_ONE } + if mx <= 105 { return F_HALF } + return F_ZERO +} + +# how green the ground is in the photograph (0..1 float bits): meadow / forest vs rock, scree, water +function terrain_ortho_green(x: int, z: int) -> int { + let c = terrain_ortho(x, z) + let r = (c >> 16) & 255; let g = (c >> 8) & 255; let b = c & 255 + var v = g - max(r, b) # green excess + if v < 0 { v = 0 } + return f_min(fr(v, 22), F_ONE) +} +# how grey and mid-bright (scree / pebbles / bare rock) the photograph is there (0..1) +# Bare ground only where most of a 50 m neighbourhood is bare: a single 10 m trail pixel +# must not place a boulder or bar a tree. +function terrain_ortho_scree(x: int, z: int) -> int { + var votes = 0 + for j in 0 .. 5 { for i in 0 .. 5 { if ortho_scree_of(terrain_ortho(f_add(x, fi((i - 2) * 10)), f_add(z, fi((j - 2) * 10)))) != F_ZERO { votes += 1 } } } + if votes >= 15 { return F_ONE } + return F_ZERO +} +function terrain_ortho_scree_pixel(x: int, z: int) -> int { + let c = terrain_ortho(x, z) + if c == 0 { return F_ZERO } + let r = (c >> 16) & 255; let g = (c >> 8) & 255; let b = c & 255 + let mx = max(r, max(g, b)) + # bare ground: not green-dominant (grey scree, the maroon rock, the moraine's tan gravel), lit enough not to be water + if g - max(r, b) > 2 or mx < 60 { return F_ZERO } + return F_ONE +} +# dense conifer forest in the photograph: green-dominant and dark (the meadows are brighter) +function terrain_ortho_forest(x: int, z: int) -> int { + let c = terrain_ortho(x, z) + if c == 0 { return F_ZERO } + let r = (c >> 16) & 255; let g = (c >> 8) & 255; let b = c & 255 + let mx = max(r, max(g, b)) + if g - max(r, b) < 3 { return F_ZERO } + if mx <= 80 { return F_ONE } + if mx <= 105 { return F_HALF } + return F_ZERO +} + +function terrain_use_ortho(path: string) -> void { + let px = png_decode(path) + if px == null { return } + ter_ortho_px = px + ter_ortho_w = tex_w + ter_ortho_c = tex_channels + ter_ortho_tex = tex_upload(px, true, true) + gl_bind_texture(GL_TEXTURE_2D, ter_ortho_tex) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE) +} +function terrain_use_dem(path: string, emin: int, emax: int, base: int, ox: int, oz: int) -> void { + ter_dem_tex = tex_load(path, false) + ter_dem_min = emin; ter_dem_max = emax; ter_dem_base = base + ter_ox = ox; ter_oz = oz + gl_bind_texture(GL_TEXTURE_2D, ter_dem_tex) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE) +} + +function terrain_generate() -> void { + var ids0: words = null + var defs = "" + if ter_dem_tex != 0 { defs = "#define DEM\n" } + if ter_smooth { defs = "#define SMOOTH\n" } + let p = r3d_program("fullscreen.vert", "heightgen.frag", defs) + ter_height_tex = tex_target(TERRAIN_RES, TERRAIN_RES, GL_R32F, GL_RED, GL_FLOAT, GL_LINEAR) + let fbo = gl_framebuffer() + gl_bind_framebuffer(GL_FRAMEBUFFER, fbo) + gl_framebuffer_texture2d(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, ter_height_tex, 0) + gl_viewport(0, 0, TERRAIN_RES, TERRAIN_RES) + gl_disable(GL_DEPTH_TEST) + gl_use_program(p) + u_f(gl_uniform(p, "u_half"), fi(TERRAIN_HALF)) + if ter_dem_tex != 0 { + r3d_bind_2d(p, "u_dem", 0, ter_dem_tex) + u_f(gl_uniform(p, "u_dem_min"), ter_dem_min) + u_f(gl_uniform(p, "u_dem_max"), ter_dem_max) + u_f(gl_uniform(p, "u_dem_base"), ter_dem_base) + u_f2(gl_uniform(p, "u_origin"), ter_ox, ter_oz) + u_f4(gl_uniform(p, "u_lake"), ter_lake_cx, ter_lake_cz, ter_lake_ex, ter_lake_ez) + u_f(gl_uniform(p, "u_lake_level"), ter_lake_level) + u_f(gl_uniform(p, "u_dem_blur"), ter_dem_blur) + } + mesh_draw(sky_fullscreen) + # second pass: R = height, GBA = the smooth surface normal, baked once (ternormal.frag) + let raw = ter_height_tex + ter_height_tex = tex_target(TERRAIN_RES, TERRAIN_RES, GL_RGBA32F, GL_RGBA, GL_FLOAT, GL_LINEAR) + gl_framebuffer_texture2d(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, ter_height_tex, 0) + let pn = r3d_program("fullscreen.vert", "ternormal.frag", "") + gl_use_program(pn) + r3d_bind_2d(pn, "u_src", 0, raw) + u_f(gl_uniform(pn, "u_half"), fi(TERRAIN_HALF)) + mesh_draw(sky_fullscreen) + gl_delete_program(pn) + ids0 = gl_scratch(); ids0[0] = raw; gl_delete_textures(1, ids0) + # read the heights back for placement + ter_heights = words(TERRAIN_RES * TERRAIN_RES) + gl_bind_texture(GL_TEXTURE_2D, ter_height_tex) + gl_pixel_storei(GL_PACK_ALIGNMENT, 4) + gl_get_tex_image(GL_TEXTURE_2D, 0, GL_RED, GL_FLOAT, ter_heights) + gl_bind_framebuffer(GL_FRAMEBUFFER, 0) + let ids = gl_scratch() + ids[0] = fbo + gl_delete_framebuffers(1, ids) + gl_delete_program(p) + gl_check("terrain generate") +} + +# The height field for shaders that place things on the ground (model.vert's u_ground) +function terrain_bind_height(p: int) -> void { + r3d_bind_2d(p, "u_ts_height", 5, ter_height_tex) + u_f(gl_uniform(p, "u_ts_half"), fi(TERRAIN_HALF)) + u_f2(gl_uniform(p, "u_ts_origin"), ter_ox, ter_oz) +} + +# Bake the height-field sun shadow (see tershadow.frag). Cheap enough to redo whenever +# the sun moves; r3d_frame calls it again when sky_set_yaw has changed the yaw. +function terrain_bake_shadow() -> void { + if sun_dir == null { return } + if ter_shadow_tex == 0 { ter_shadow_tex = tex_target(TERRAIN_SHADOW_RES, TERRAIN_SHADOW_RES, GL_RGBA32F, GL_RGBA, GL_FLOAT, GL_LINEAR) } + if ter_shadow_prog == 0 { ter_shadow_prog = r3d_program("fullscreen.vert", "tershadow.frag", "#define NOISE_ONLY\n") } + let p = ter_shadow_prog + let fbo = gl_framebuffer() + gl_bind_framebuffer(GL_FRAMEBUFFER, fbo) + gl_framebuffer_texture2d(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, ter_shadow_tex, 0) + gl_viewport(0, 0, TERRAIN_SHADOW_RES, TERRAIN_SHADOW_RES) + gl_disable(GL_DEPTH_TEST) + gl_disable(GL_BLEND) + gl_use_program(p) + r3d_bind_2d(p, "u_height", 0, ter_height_tex) + u_f(gl_uniform(p, "u_half"), fi(TERRAIN_HALF)) + u_v3(gl_uniform(p, "u_sun"), sun_dir) + mesh_draw(sky_fullscreen) + gl_bind_framebuffer(GL_FRAMEBUFFER, 0) + let ids = gl_scratch() + ids[0] = fbo + gl_delete_framebuffers(1, ids) + ter_shadow_yaw = sky_yaw + gl_check("terrain shadow bake") +} + +# height at world (x, z) — float bits, bilinear over the CPU copy +# The height and photograph scales are constants, but they were being recomputed — +# a fixed-point divide — on every call, and the cover generator calls terrain_height +# five times per candidate (once directly, four more inside slope_at) across hundreds +# of thousands of candidates per chunk. Hoisted, they cost nothing. +var ter_h_scale: int = 0 +var ter_o_scale: int = 0 + +function terrain_height(x: int, z: int) -> int { + if ter_h_scale == 0 { ter_h_scale = fr(TERRAIN_RES, TERRAIN_HALF * 2) } + let scale = ter_h_scale + let fx = f_mul(f_add(f_sub(x, ter_ox), fi(TERRAIN_HALF)), scale) + let fz = f_mul(f_add(f_sub(z, ter_oz), fi(TERRAIN_HALF)), scale) + var ix = f_to_int(f_floor(fx)); var iz = f_to_int(f_floor(fz)) + if ix < 0 { ix = 0 }; if iz < 0 { iz = 0 } + if ix > TERRAIN_RES - 2 { ix = TERRAIN_RES - 2 }; if iz > TERRAIN_RES - 2 { iz = TERRAIN_RES - 2 } + let tx = f_clamp(f_sub(fx, fi(ix)), F_ZERO, F_ONE) + let tz = f_clamp(f_sub(fz, fi(iz)), F_ZERO, F_ONE) + let h00 = ter_heights[iz * TERRAIN_RES + ix] + let h10 = ter_heights[iz * TERRAIN_RES + ix + 1] + let h01 = ter_heights[(iz + 1) * TERRAIN_RES + ix] + let h11 = ter_heights[(iz + 1) * TERRAIN_RES + ix + 1] + return f_lerp(f_lerp(h00, h10, tx), f_lerp(h01, h11, tx), tz) +} +# the same for Q16.16 callers +function terrain_height_fx(x: fixed, z: fixed) -> fixed { return f_fx(terrain_height(fl(x), fl(z))) } + +# The height the terrain is DRAWN at: the cubic B-spline of the texels (heightSmooth in +# terrain.vert), not the bilinear read above. The two differ by up to half a metre on +# rough ground, which is the difference between a character standing on the meadow +# and one buried to the knee in it. Sixteen taps; for things that move, not for the +# thousands of placement queries a chunk makes. +var ter_bw: words = null +function terrain_height_smooth(x: int, z: int) -> int { + if ter_h_scale == 0 { ter_h_scale = fr(TERRAIN_RES, TERRAIN_HALF * 2) } + if ter_bw == null { ter_bw = words(8) } + let scale = ter_h_scale + let fx = f_sub(f_mul(f_add(f_sub(x, ter_ox), fi(TERRAIN_HALF)), scale), F_HALF) + let fz = f_sub(f_mul(f_add(f_sub(z, ter_oz), fi(TERRAIN_HALF)), scale), F_HALF) + let ix = f_to_int(f_floor(fx)); let iz = f_to_int(f_floor(fz)) + let tx = f_clamp(f_sub(fx, fi(ix)), F_ZERO, F_ONE) + let tz = f_clamp(f_sub(fz, fi(iz)), F_ZERO, F_ONE) + # the four cubic B-spline weights of a fraction, over texels i-1 .. i+2 + for a in 0 .. 2 { + var t = tx + if a == 1 { t = tz } + let t2 = f_mul(t, t); let t3 = f_mul(t2, t) + let one_t = f_sub(F_ONE, t) + let w0 = f_div(f_mul(f_mul(one_t, one_t), one_t), fi(6)) + let w1 = f_div(f_add(f_sub(fi(4), f_mul(fi(6), t2)), f_mul(fi(3), t3)), fi(6)) + let w3 = f_div(t3, fi(6)) + let w2 = f_sub(f_sub(f_sub(F_ONE, w0), w1), w3) + ter_bw[a * 4] = w0; ter_bw[a * 4 + 1] = w1; ter_bw[a * 4 + 2] = w2; ter_bw[a * 4 + 3] = w3 + } + var h = F_ZERO + for j in 0 .. 4 { + var rz = iz - 1 + j + if rz < 0 { rz = 0 }; if rz > TERRAIN_RES - 1 { rz = TERRAIN_RES - 1 } + var row = F_ZERO + for i in 0 .. 4 { + var rx = ix - 1 + i + if rx < 0 { rx = 0 }; if rx > TERRAIN_RES - 1 { rx = TERRAIN_RES - 1 } + row = f_add(row, f_mul(ter_bw[i], ter_heights[rz * TERRAIN_RES + rx])) + } + h = f_add(h, f_mul(ter_bw[4 + j], row)) + } + return h +} + +function terrain_load_textures() -> void { + ter_tex = words(15) + let a = r3d_assets + "/textures/" + ter_tex[0] = tex_load(a + "aerial_grass_rock_diff_2k.png", true) + ter_tex[1] = tex_load(a + "aerial_grass_rock_nor_gl_2k.png", false) + ter_tex[2] = tex_load(a + "aerial_grass_rock_arm_2k.png", false) + ter_tex[3] = tex_load(a + "grass_path_2_diff_2k.png", true) + ter_tex[4] = tex_load(a + "grass_path_2_nor_gl_2k.png", false) + ter_tex[5] = tex_load(a + "grass_path_2_arm_2k.png", false) + ter_tex[6] = tex_load(a + "gray_rocks_diff_2k.png", true) + ter_tex[7] = tex_load(a + "gray_rocks_nor_gl_2k.png", false) + ter_tex[8] = tex_load(a + "gray_rocks_arm_2k.png", false) + ter_tex[9] = tex_load(a + "snow_02_diff_2k.png", true) + ter_tex[10] = tex_load(a + "snow_02_nor_gl_2k.png", false) + ter_tex[11] = tex_load(a + "snow_02_arm_2k.png", false) + ter_tex[12] = tex_load(a + "aerial_grass_rock_disp_2k.png", false) + ter_tex[13] = tex_load(a + "cliff_side_diff_2k.png", true) + ter_tex[14] = tex_load(a + "cliff_side_nor_gl_2k.png", false) + if Os.has_env("R3D_TEXDBG") { for i in 0 .. 15 { print(`ter_tex[{string(i)}] = {string(ter_tex[i])}`) } } +} + +function terrain_init() -> void { + terrain_generate() + terrain_bake_shadow() + terrain_load_textures() + cdlod_init() + ter_wire = Os.has_env("R3D_WIRE") + ter_force_far = Os.has_env("R3D_TFARONLY") + ter_no_split = Os.has_env("R3D_NOSPLIT") + ter_force_near = Os.has_env("R3D_TNEARONLY") + ter_skip = Os.has_env("R3D_NOTERRAIN") + var defs = "" + if r3d_debug_shadow { defs = "#define DEBUG_SHADOW\n" } + if Os.has_env("R3D_DEBUG_MAT") { defs = "#define DEBUG_MAT\n" } + if Os.has_env("R3D_DEBUG_NRM") { defs = "#define DEBUG_NRM\n" } + if Os.has_env("R3D_DEBUG_ALB") { defs = "#define DEBUG_ALB\n" } + # Elimination profiling. Measure these by FRAME TIME (prof_ft_report), not by the + # per-pass GPU timers: this driver's timer queries attribute a pass's fragment work + # almost arbitrarily, and will happily report a pass at a tenth of its cost. + # R3D_TFAST=1 the ground reads no sun visibility =2 every noise field at its mean + # =3 no scanned material taps =4 no survey photograph + # =5 the detailed tier at every distance =20 no photograph grain + # R3D_NOTERRAIN skips the ground entirely (what it costs); R3D_TNEARONLY / R3D_TFARONLY + # draw every patch with one tier's program (what each tier costs over a whole frame); + # R3D_NOSPLIT goes back to the single program that holds both tiers. + if Os.has_env("R3D_TFAST") { defs = defs + "#define TFAST_" + Os.env("R3D_TFAST") + "\n" } + ter_prog = r3d_program("terrain.vert", "terrain.frag", defs) + ter_prog_far = r3d_program("terrain.vert", "terrain.frag", defs + "#define FAR_ONLY\n") + ter_prog_near = r3d_program("terrain.vert", "terrain.frag", defs + "#define NEAR_ONLY\n") + ter_sun_prog = r3d_program("terrain.vert", "tersun.frag", "") + ter_far_split = fi(200) + if Os.has_env("R3D_TFAR") { ter_far_split = fi(Text.to_int(Os.env("R3D_TFAR"))) } + ter_far_band = fi(60) + if Os.has_env("R3D_TBAND") { ter_far_band = fi(Text.to_int(Os.env("R3D_TBAND"))) } + ter_snow_line = fi(880) + gl_check("terrain init") +} + +# draw into the current cascade with the given light view-projection +# The terrain no longer casts into the shadow map: it shadows itself by marching its +# own height field in terrain.frag, which cannot produce the self-shadow grid a depth +# map does, and it saves drawing the whole grid five times a frame. +function terrain_draw_shadow(light_vp: words) -> void { +} + +# Every per-frame uniform of one terrain program. Both tiers are bound up front so +# selection can switch between them per patch without re-binding anything but the node. +function terrain_bind_prog(p: int) -> void { + gl_use_program(p) + r3d_bind_2d(p, "u_height", 0, ter_height_tex) + r3d_bind_2d(p, "u_grass_d", 1, ter_tex[0]); r3d_bind_2d(p, "u_grass_n", 2, ter_tex[1]); r3d_bind_2d(p, "u_grass_a", 3, ter_tex[2]) + # The cliff maps went with the dead cliff sample. Binding textures for uniforms the + # shader no longer declares leaves those units pointing at nothing, which the driver + # reports as an unloadable sampler and resolves as a zero texture. + # A scene with no photograph still has to bind something valid here: sampler unit + # pointed at texture 0 is an incomplete texture, which the driver reports as + # unloadable and which poisons sampling for the rest of the unit's stage. + var orthotex = ter_ortho_tex + if orthotex == 0 { orthotex = ter_tex[0] } + r3d_bind_2d(p, "u_ortho", 4, orthotex) + var oon = F_ZERO + if ter_ortho_tex != 0 { oon = F_ONE } + u_f(gl_uniform(p, "u_ortho_on"), oon) + r3d_bind_2d(p, "u_rock_d", 7, ter_tex[6]); r3d_bind_2d(p, "u_rock_n", 8, ter_tex[7]); r3d_bind_2d(p, "u_rock_a", 9, ter_tex[8]) + r3d_bind_2d(p, "u_snow_d", 10, ter_tex[9]) + if ter_carpet != 0 { r3d_bind_2d(p, "u_carpet", 11, ter_carpet); u_f(gl_uniform(p, "u_carpet_on"), F_ONE) } + else { r3d_bind_2d(p, "u_carpet", 11, ter_tex[0]); u_f(gl_uniform(p, "u_carpet_on"), F_ZERO) } + u_f(gl_uniform(p, "u_half"), fi(TERRAIN_HALF)) + u_f(gl_uniform(p, "u_texel"), fr(1, TERRAIN_RES)) + u_f(gl_uniform(p, "u_snow_line"), ter_snow_line) + var lake = fl(-100000.0) + if ter_lake_ex != 0 { lake = ter_lake_level } + u_f(gl_uniform(p, "u_lake_level"), lake) + u_mat4(gl_uniform(p, "u_view"), cam_view) + u_mat4(gl_uniform(p, "u_proj"), cam_proj) + u_f2(gl_uniform(p, "u_origin"), ter_ox, ter_oz) + u_f(gl_uniform(p, "u_far_split"), ter_far_split) + u_f(gl_uniform(p, "u_far_band"), ter_far_band) + sky_bind_lighting(p) + shadow_bind(p) + fog_bind(p) + u_v3(gl_uniform(p, "u_cam_pos"), cam_pos) + u_f(gl_uniform(p, "u_grid"), fi(CD_G)) + # The ground reads its sun visibility out of the buffer tersun.frag filled, and has no + # use for the cascade array shadow_bind just put on this unit; leaving both bound under + # one unit is undefined ground, so the array comes off first. + gl_active_texture(GL_TEXTURE0 + 15) + gl_bind_texture(GL_TEXTURE_2D_ARRAY, 0) + r3d_bind_2d(p, "u_sunshadow", 15, ter_sun_tex) +} + +# The visibility buffer for the size being drawn into. The reflection is rendered at its +# own (smaller) size, so it keeps its own. +# +# Neither owns a depth buffer. The pass BORROWS the depth the frame is about to be drawn +# with, so its rasterisation doubles as a depth prepass — and a borrowed texture must +# never be written into the Target, because a Target deletes whatever its `depth` names +# when it is freed. Storing it there deleted the frame's own depth buffer on the first +# resize (post_init had already made the replacement, and GL hands the freed name straight +# back, so the new one was deleted instead of the old). The scene framebuffer lost its +# depth attachment, the sky's fullscreen quad had nothing left to fail against, and it +# painted over the whole valley — with "gl error 1286" every frame from the passes whose +# attachment now named a deleted texture. +function terrain_sun_target(w: int, h: int) -> Target { + var t = ter_sun_tgt + if ter_reflect { t = ter_sun_refl } + if t == null or t.w != w or t.h != h { + target_free(t) # owns its colour, and nothing else + t = target_new(w, h, GL_R8, GL_RED, GL_UNSIGNED_BYTE, false, GL_NEAREST) + if ter_reflect { ter_sun_refl = t } else { ter_sun_tgt = t } + } + return t +} + +# Rasterise the patches once with the small shader that reads the cascades (tersun.frag). +function terrain_sun_pass(w: int, h: int, depth: int) -> Target { + let t = terrain_sun_target(w, h) + # Attach the frame's depth afresh every pass. It is a different texture every time the + # screen-sized buffers are rebuilt — a resize, a fullscreen change — and an attachment + # naming a texture that has been deleted leaves this framebuffer incomplete, which is + # an error per draw and a pass that silently does nothing. One call a pass is cheaper + # than any scheme for noticing. + target_bind(t) + gl_framebuffer_texture2d(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_TEXTURE_2D, depth, 0) + if not ter_sun_checked { + ter_sun_checked = true + let st = gl_check_framebuffer_status(GL_FRAMEBUFFER) + if st != GL_FRAMEBUFFER_COMPLETE { print(`r3d: sun-visibility framebuffer incomplete {st}`) } + } + gl_enable(GL_DEPTH_TEST) + gl_depth_func(GL_LESS) + gl_depth_mask(1) + # the depth is the frame's own and was cleared with it; only the visibility is cleared + gl_clear_color(1.0, 1.0, 1.0, 1.0) # unshadowed where nothing is drawn + gl_clear(GL_COLOR_BUFFER_BIT) + let p = ter_sun_prog + gl_use_program(p) + r3d_bind_2d(p, "u_height", 0, ter_height_tex) + u_f(gl_uniform(p, "u_half"), fi(TERRAIN_HALF)) + u_mat4(gl_uniform(p, "u_view"), cam_view) + u_mat4(gl_uniform(p, "u_proj"), cam_proj) + u_f2(gl_uniform(p, "u_origin"), ter_ox, ter_oz) + u_v3(gl_uniform(p, "u_cam_pos"), cam_pos) + u_f(gl_uniform(p, "u_grid"), fi(CD_G)) + u_f(gl_uniform(p, "u_far_split"), ter_far_split) + u_f(gl_uniform(p, "u_far_band"), ter_far_band) + u_f(gl_uniform(p, "u_clip_y"), r3d_clip_y) + shadow_bind(p) + sky_bind_lighting(p) + ter_sun_pass = true + gl_bind_vertex_array(cd_mesh.vao) + cdlod_select(CD_LEVELS - 1, 0, 0) + ter_sun_pass = false + if Os.has_env("R3D_DUMP_SUN") and not ter_sun_dumped and not ter_reflect { ter_sun_dumped = true; tex_dump(t.color, w, h, "build/dbg_sun.ppm") } + return t +} + +function terrain_sun_prepare() -> void { + ter_sun_tex = terrain_sun_pass(post_w, post_h, post_hdr.depth).color + ter_sun_done = true +} + +function terrain_draw() -> void { + if ter_skip { return } + # The sun visibility first, into its own buffer; the shading pass looks it up per pixel. + # The pass binds its own framebuffer, so the caller's target is restored afterwards — + # the reflection's, or the scene's, without disturbing what is already drawn in it. + var vw = post_w + var vh = post_h + if ter_reflect { vw = water_refl.w; vh = water_refl.h } + if not ter_sun_done { + var dep = post_hdr.depth + if ter_reflect { dep = water_refl.depth } + ter_sun_tex = terrain_sun_pass(vw, vh, dep).color + } + ter_sun_done = false + if ter_reflect { target_bind(water_refl) } + else { + target_bind(post_hdr) + if post_ms_fbo != 0 { gl_bind_framebuffer(GL_FRAMEBUFFER, post_ms_fbo) } + } + gl_enable(GL_DEPTH_TEST) + # the prepass already laid this geometry's depth down: only the frontmost fragment of + # each pixel has anything to shade, and it meets that depth exactly + gl_depth_func(GL_LEQUAL) + gl_depth_mask(1) + terrain_bind_prog(ter_prog) + terrain_bind_prog(ter_prog_far) + terrain_bind_prog(ter_prog_near) + ter_prog_cur = 0 + cd_draws = 0 + cd_far_draws = 0 + cd_near_draws = 0 + gl_bind_vertex_array(cd_mesh.vao) + if ter_wire { gl_polygon_mode(GL_FRONT_AND_BACK, GL_LINE) } + cdlod_select(CD_LEVELS - 1, 0, 0) + if ter_wire { gl_polygon_mode(GL_FRONT_AND_BACK, GL_FILL) } + gl_depth_func(GL_LESS) + if r3d_debug and not ter_printed { ter_printed = true; print(`cdlod patches drawn: {cd_draws} (far {cd_far_draws}, near {cd_near_draws}, band {cd_draws - cd_far_draws - cd_near_draws})`) } +} +var ter_wire: bool = false +var ter_printed: bool = false + +# ---- CDLOD -------------------------------------------------------------------------- +# One 32x32 patch mesh (a_xz in 0..1) drawn once per selected quadtree node; the vertex +# shader places, scales and morphs it. Levels are drawn out to cd_range[k] = 48 * 2^k m, +# so cells are 1 m within 48 m, 2 m to 96 m, 4 m to 192 m ... 256 m at the root. +function cdlod_init() -> void { + let m = new Mesh + m.vao = gl_vao() + let n = CD_G + 1 + let v = gl_floats(n * n * 2) + var k = 0 + for j in 0 .. n { for i in 0 .. n { gl_put_bits(v, k, fr(i, CD_G)); gl_put_bits(v, k + 1, fr(j, CD_G)); k += 2 } } + m.vbo = gl_buffer() + gl_bind_buffer(GL_ARRAY_BUFFER, m.vbo) + gl_buffer_data(GL_ARRAY_BUFFER, gl_bytes_of(n * n * 2), v, GL_STATIC_DRAW) + gl_enable_vertex_attrib_array(0); gl_vertex_attrib_pointer(0, 2, GL_FLOAT, 0, 8, null) + free(v) + let ni = CD_G * CD_G * 6 + let idx = words(ni) + k = 0 + for j in 0 .. CD_G { + for i in 0 .. CD_G { + let a = j * n + i + idx[k] = a; idx[k + 1] = a + n; idx[k + 2] = a + 1 + idx[k + 3] = a + 1; idx[k + 4] = a + n; idx[k + 5] = a + n + 1 + k += 6 + } + } + m.ebo = gl_buffer() + gl_bind_buffer(GL_ELEMENT_ARRAY_BUFFER, m.ebo) + gl_buffer_data(GL_ELEMENT_ARRAY_BUFFER, ni * 4, idx, GL_STATIC_DRAW) + free(idx) + m.count = ni + gl_bind_vertex_array(0) + cd_mesh = m + cd_range = words(CD_LEVELS) + var r = fi(48) + if Os.has_env("R3D_CD_R0") { r = fi(Text.to_int(Os.env("R3D_CD_R0"))) } + for l in 0 .. CD_LEVELS { cd_range[l] = r; r = f_mul(r, F_TWO) } + cdlod_bounds() +} + +# min/max height per patch at every level, from the CPU copy of the height field +function cdlod_bounds() -> void { + cd_min = new []words; cd_max = new []words + let t = TERRAIN_RES / CD_LEAVES # texels per leaf patch side + var n = CD_LEAVES + var lo = words(n * n); var hi = words(n * n) + for j in 0 .. n { + for i in 0 .. n { + var mn = fi(100000); var mx = fi(-100000) + for y in 0 .. t + 1 { + let ty = min(j * t + y, TERRAIN_RES - 1) + for x in 0 .. t + 1 { + let tx = min(i * t + x, TERRAIN_RES - 1) + let h = ter_heights[ty * TERRAIN_RES + tx] + mn = f_min(mn, h); mx = f_max(mx, h) + } + } + lo[j * n + i] = mn; hi[j * n + i] = mx + } + } + push(cd_min, lo); push(cd_max, hi) + while n > 1 { + let m = n / 2 + let plo = words(m * m); let phi = words(m * m) + for j in 0 .. m { + for i in 0 .. m { + let a = (2 * j) * n + 2 * i + plo[j * m + i] = f_min(f_min(lo[a], lo[a + 1]), f_min(lo[a + n], lo[a + n + 1])) + phi[j * m + i] = f_max(f_max(hi[a], hi[a + 1]), f_max(hi[a + n], hi[a + n + 1])) + } + } + push(cd_min, plo); push(cd_max, phi) + lo = plo; hi = phi; n = m + } +} + +# does the patch's box come within r of the camera? +function cd_within(x0: int, z0: int, size: int, ymin: int, ymax: int, r: int) -> bool { + let dx = f_max(f_max(f_sub(x0, cam_pos[0]), f_sub(cam_pos[0], f_add(x0, size))), F_ZERO) + let dz = f_max(f_max(f_sub(z0, cam_pos[2]), f_sub(cam_pos[2], f_add(z0, size))), F_ZERO) + let dy = f_max(f_max(f_sub(ymin, cam_pos[1]), f_sub(cam_pos[1], ymax)), F_ZERO) + return f_ls(f_add(f_add(f_mul(dx, dx), f_mul(dz, dz)), f_mul(dy, dy)), f_mul(r, r)) +} + +# is the patch's box entirely inside r of the camera? (its farthest corner is within r) +function cd_inside(x0: int, z0: int, size: int, ymin: int, ymax: int, r: int) -> bool { + let x1 = f_add(x0, size) + let z1 = f_add(z0, size) + let dx = f_max(f_abs(f_sub(cam_pos[0], x0)), f_abs(f_sub(cam_pos[0], x1))) + let dz = f_max(f_abs(f_sub(cam_pos[2], z0)), f_abs(f_sub(cam_pos[2], z1))) + let dy = f_max(f_abs(f_sub(cam_pos[1], ymin)), f_abs(f_sub(cam_pos[1], ymax))) + return f_ls(f_add(f_add(f_mul(dx, dx), f_mul(dz, dz)), f_mul(dy, dy)), f_mul(r, r)) +} + +function cdlod_draw(level: int, ix: int, iz: int) -> void { + let size = fi(32 << level) + let x0 = f_add(f_sub(ter_ox, fi(TERRAIN_HALF)), f_mul(fi(ix), size)) + let z0 = f_add(f_sub(ter_oz, fi(TERRAIN_HALF)), f_mul(fi(iz), size)) + # Which tier can run inside this patch. A patch that never comes within the split takes + # the cheap tier at every pixel; one that lies wholly inside it takes the detailed tier + # at every pixel. Only a patch that straddles the band needs the program that holds both + # and cross-fades between them — and there are few of those, one ring of them. + if ter_sun_pass { + let t = gl_scratch() + t[0] = x0; t[1] = z0; t[2] = size + gl_uniform3fv(gl_uniform(ter_sun_prog, "u_node"), 1, t) + var st0 = F_ZERO + if level > 0 { st0 = cd_range[level - 1] } + u_f2(gl_uniform(ter_sun_prog, "u_morph"), f_lerp(st0, cd_range[level], fl(0.7)), cd_range[level]) + gl_draw_elements(GL_TRIANGLES, cd_mesh.count, GL_UNSIGNED_INT, null) + return + } + let n = CD_LEAVES >> level + let ymin = cd_min[level][iz * n + ix] + let ymax = cd_max[level][iz * n + ix] + var p = ter_prog + if not cd_within(x0, z0, size, ymin, ymax, f_add(ter_far_split, ter_far_band)) { p = ter_prog_far } + else if cd_inside(x0, z0, size, ymin, ymax, f_sub(ter_far_split, ter_far_band)) { p = ter_prog_near } + if ter_force_far { p = ter_prog_far } + if ter_no_split { p = ter_prog } + if ter_force_near { p = ter_prog_near } + if p == ter_prog_far { cd_far_draws += 1 } + if p == ter_prog_near { cd_near_draws += 1 } + if p != ter_prog_cur { gl_use_program(p); ter_prog_cur = p } + let t = gl_scratch() + t[0] = x0; t[1] = z0; t[2] = size + gl_uniform3fv(gl_uniform(p, "u_node"), 1, t) + var start = F_ZERO + if level > 0 { start = cd_range[level - 1] } + start = f_lerp(start, cd_range[level], fl(0.7)) + u_f2(gl_uniform(p, "u_morph"), start, cd_range[level]) + gl_draw_elements(GL_TRIANGLES, cd_mesh.count, GL_UNSIGNED_INT, null) + cd_draws += 1 +} + +# Strugar's selection: a node is drawn at its own level unless it is close enough to need +# its children, in which case each child either selects itself or is drawn at this level. +function cdlod_select(level: int, ix: int, iz: int) -> bool { + let n = CD_LEAVES >> level + let size = fi(32 << level) + let x0 = f_add(f_sub(ter_ox, fi(TERRAIN_HALF)), f_mul(fi(ix), size)) + let z0 = f_add(f_sub(ter_oz, fi(TERRAIN_HALF)), f_mul(fi(iz), size)) + let ymin = cd_min[level][iz * n + ix] + let ymax = cd_max[level][iz * n + ix] + if not cd_within(x0, z0, size, ymin, ymax, cd_range[level]) { return false } + let half = f_mul(size, F_HALF) + let cy = f_mul(f_add(ymin, ymax), F_HALF) + let rad = f_sqrt(f_add(f_mul(f_mul(half, half), F_TWO), f_mul(f_mul(f_sub(ymax, cy), f_sub(ymax, cy)), F_ONE))) + if not cam_sphere_visible(f_add(x0, half), cy, f_add(z0, half), f_add(rad, fi(2))) { return true } + if level == 0 { cdlod_draw(0, ix, iz); return true } + if not cd_within(x0, z0, size, ymin, ymax, cd_range[level - 1]) { cdlod_draw(level, ix, iz); return true } + for c in 0 .. 4 { + let cx = ix * 2 + (c & 1); let cz = iz * 2 + (c >> 1) + if not cdlod_select(level - 1, cx, cz) { cdlod_draw(level - 1, cx, cz) } + } + return true +} diff --git a/packages/ludic.render3d/texture.ludic b/packages/ludic.render3d/texture.ludic new file mode 100644 index 00000000..7ba0d5ae --- /dev/null +++ b/packages/ludic.render3d/texture.ludic @@ -0,0 +1,472 @@ +# ============================================================================ +# texture.ludic — images for the GPU: PNG (8- and 16-bit, any colour type) and +# Radiance .hdr (RGBE) decoding straight into OpenGL textures. +# +# The engine's own PNG reader (image.ludic) expands to 8-bit 0xAARRGGBB for the +# 2D framebuffer; a renderer wants the file's real sample depth — normal and +# displacement maps ship as 16-bit — so this decoder keeps 16-bit samples and +# uploads them as GL_UNSIGNED_SHORT (big-endian, with GL_UNPACK_SWAP_BYTES) into +# RGB16 / R16 textures, and 8-bit ones into sRGB8 or RGB8 as the caller says. +# ============================================================================ + +const GL_TEXTURE_MAX_ANISOTROPY_EXT: int = 0x84FE + +var tex_w: int = 0 # the last decoded image +var tex_h: int = 0 +var tex_channels: int = 0 +var tex_depth: int = 0 # bits per sample (8 or 16) +var tex_file_len: int = 0 +var tex_anisotropy: fixed = 16.0 + +function r3d_read_file(path: pointer) -> pointer { + let f = file_open(path, "rb") + if f == null { return null } + file_seek(f, 0, 2) + let n = file_tell(f) + file_seek(f, 0, 0) + if n <= 0 { file_close(f); return null } + let buf = bytes(n + 8) + file_read(f, buf, n) + file_close(f) + tex_file_len = n + return buf +} + +function be32(b: pointer, at: int) -> int { + return (b[at] << 24) | (b[at + 1] << 16) | (b[at + 2] << 8) | b[at + 3] +} +function tag4(b: pointer, at: int, a: int, c: int, d: int, e: int) -> bool { + return b[at] == a and b[at + 1] == c and b[at + 2] == d and b[at + 3] == e +} + +# Decode a PNG into tightly packed scanlines of raw samples (PNG byte order: +# 16-bit samples big-endian). Sets tex_w / tex_h / tex_channels / tex_depth. +# Indexed and sub-byte greyscale files are expanded to 8-bit RGB / grey. +# Reverse one scanline's PNG filter in place (spec 9.2). The filter type is +# loop-invariant, so it is resolved once here rather than per byte, and the +# leading `fbpp` bytes (where the left neighbour is zero by definition) run as +# their own prologue instead of costing a bounds test on every byte of the image. +# The caller keeps a zeroed scanline in front of row 0, so `prev` is always a real +# row and every filter has exactly one code path — no first-row special cases to +# get wrong or to leave untested. +function png_unfilter(raw: pointer, cur: int, prev: int, stride: int, fbpp: int, ft: int) -> void { + if ft == 0 { return } + var first = fbpp + if first > stride { first = stride } + var x = 0 + + if ft == 1 { + x = fbpp + while x < stride { raw[cur + x] = ((raw[cur + x] + raw[cur + x - fbpp]) & 255); x += 1 } + return + } + + if ft == 2 { + x = 0 + while x < stride { raw[cur + x] = ((raw[cur + x] + raw[prev + x]) & 255); x += 1 } + return + } + + if ft == 3 { + x = 0 + while x < first { raw[cur + x] = ((raw[cur + x] + raw[prev + x] / 2) & 255); x += 1 } + while x < stride { raw[cur + x] = ((raw[cur + x] + (raw[cur + x - fbpp] + raw[prev + x]) / 2) & 255); x += 1 } + return + } + + if ft == 4 { + x = 0 + while x < first { raw[cur + x] = ((raw[cur + x] + raw[prev + x]) & 255); x += 1 } + while x < stride { + let a = raw[cur + x - fbpp] + let b = raw[prev + x] + let c = raw[prev + x - fbpp] + let p = a + b - c + let pa = abs(p - a) + let pb = abs(p - b) + let pc = abs(p - c) + var pick = c + if pb <= pc { pick = b } + if pa <= pb and pa <= pc { pick = a } + raw[cur + x] = ((raw[cur + x] + pick) & 255) + x += 1 + } + } +} + +function png_decode(path: pointer) -> pointer { + let d = r3d_read_file(path) + if d == null { print(`png: cannot read {path}`); return null } + let size = tex_file_len + if size < 8 or d[0] != 137 or d[1] != 80 { free(d); print(`png: not a png: {path}`); return null } + var w = 0; var h = 0; var bd = 0; var ct = 0 + let plte = bytes(768) + let idat = bytes(size) + var idlen = 0 + var i = 8 + var done = false + while not done { + if i + 8 > size { done = true; continue } + let ln = be32(d, i) + let typ = i + 4 + let body = i + 8 + if ln < 0 or body + ln > size { done = true; continue } + if tag4(d, typ, 73, 72, 68, 82) { w = be32(d, body); h = be32(d, body + 4); bd = d[body + 8]; ct = d[body + 9] } + if tag4(d, typ, 80, 76, 84, 69) { let m = min(ln, 768); for k in 0 .. m { plte[k] = d[body + k] } } + if tag4(d, typ, 73, 68, 65, 84) { mem_copy(mem_off(idat, idlen), mem_off(d, body), ln); idlen += ln } + if tag4(d, typ, 73, 69, 78, 68) { done = true } + i = i + 12 + ln + } + if w <= 0 or h <= 0 { free(d); free(idat); free(plte); return null } + var channels = 1 + if ct == 2 { channels = 3 } + if ct == 4 { channels = 2 } + if ct == 6 { channels = 4 } + let bppbits = bd * channels + var fbpp = (bppbits + 7) / 8 + if fbpp < 1 { fbpp = 1 } + let stride = (w * bppbits + 7) / 8 + let rawlen = h * (stride + 1) + # one zeroed scanline in front of the data, so row 0's "row above" is real + let raw = bytes(stride + rawlen + 8) + for z in 0 .. stride { raw[z] = 0 } + if z_uncompress(idat, idlen, mem_off(raw, stride), rawlen) < 0 { free(d); free(idat); free(raw); free(plte); print(`png: inflate failed: {path}`); return null } + free(d); free(idat) + # reverse the per-scanline filters in place, then pack rows without the filter byte + var y = 0 + while y < h { + let line = stride + y * (stride + 1) + png_unfilter(raw, line + 1, line + 1 - (stride + 1), stride, fbpp, raw[line]) + y += 1 + } + var out: pointer = null + if (ct == 3) or (bd < 8) { + # expand palette / sub-byte grey to 8-bit RGB (palette) or 8-bit grey + let maxv = (1 << bd) - 1 + var oc = 1 + if ct == 3 { oc = 3 } + out = bytes(w * h * oc) + for yy in 0 .. h { + let row = stride + yy * (stride + 1) + 1 + for x in 0 .. w { + let bp = x * bd + let idx = ((raw[row + bp / 8] >> (8 - bd - bp % 8)) & maxv) + if ct == 3 { out[(yy * w + x) * 3] = plte[idx * 3]; out[(yy * w + x) * 3 + 1] = plte[idx * 3 + 1]; out[(yy * w + x) * 3 + 2] = plte[idx * 3 + 2] } + else { out[yy * w + x] = idx * 255 / maxv } + } + } + channels = oc + bd = 8 + free(raw) + } else { + out = bytes(h * stride + 8) + for yy in 0 .. h { mem_copy(mem_off(out, yy * stride), mem_off(raw, stride + yy * (stride + 1) + 1), stride) } + free(raw) + } + free(plte) + tex_w = w; tex_h = h; tex_channels = channels; tex_depth = bd + return out +} + +# Edge padding for cut-out atlases: pixels darker than `thresh` (the unused +# background) take the mean of their lit neighbours, repeated `passes` times, so +# mipmaps and bilinear taps never pull black into the blades. 8-bit RGB/RGBA only. +function tex_dilate(px: pointer, thresh: int, passes: int) -> void { + if tex_depth != 8 or tex_channels < 3 { return } + let w = tex_w; let h = tex_h; let c = tex_channels + let mask = bytes(w * h) + var i = 0 + while i < w * h { let o = i * c; if px[o] + px[o + 1] + px[o + 2] < thresh { mask[i] = 1 } else { mask[i] = 0 }; i += 1 } + let next = bytes(w * h) + for pass in 0 .. passes { + mem_copy(next, mask, w * h) + var y = 0 + while y < h { + var x = 0 + while x < w { + let k = y * w + x + if mask[k] == 1 { + var r = 0; var g = 0; var b = 0; var n = 0 + if x > 0 and mask[k - 1] == 0 { let o = (k - 1) * c; r += px[o]; g += px[o + 1]; b += px[o + 2]; n += 1 } + if x < w - 1 and mask[k + 1] == 0 { let o = (k + 1) * c; r += px[o]; g += px[o + 1]; b += px[o + 2]; n += 1 } + if y > 0 and mask[k - w] == 0 { let o = (k - w) * c; r += px[o]; g += px[o + 1]; b += px[o + 2]; n += 1 } + if y < h - 1 and mask[k + w] == 0 { let o = (k + w) * c; r += px[o]; g += px[o + 1]; b += px[o + 2]; n += 1 } + if n > 0 { let o = k * c; px[o] = r / n; px[o + 1] = g / n; px[o + 2] = b / n; next[k] = 0 } + } + x += 1 + } + y += 1 + } + mem_copy(mask, next, w * h) + } + free(mask); free(next) +} + +# Upload the last-decoded samples as a 2D texture. srgb: colour data (8-bit only). +function tex_upload(px: pointer, srgb: bool, mips: bool) -> int { + let id = gl_texture() + gl_bind_texture(GL_TEXTURE_2D, id) + var fmt = GL_RED + if tex_channels == 2 { fmt = GL_RG } + if tex_channels == 3 { fmt = GL_RGB } + if tex_channels == 4 { fmt = GL_RGBA } + var ifmt = GL_R8 + var ty = GL_UNSIGNED_BYTE + if tex_depth == 16 { + ty = GL_UNSIGNED_SHORT + ifmt = GL_R16 + if tex_channels == 2 { ifmt = GL_RG16 } + if tex_channels == 3 { ifmt = GL_RGB16 } + if tex_channels == 4 { ifmt = GL_RGBA16 } + gl_pixel_storei(GL_UNPACK_SWAP_BYTES, 1) + } else { + if tex_channels == 2 { ifmt = GL_RG8 } + if tex_channels == 3 { ifmt = GL_RGB8; if srgb { ifmt = GL_SRGB8 } } + if tex_channels == 4 { ifmt = GL_RGBA8; if srgb { ifmt = GL_SRGB8_ALPHA8 } } + gl_pixel_storei(GL_UNPACK_SWAP_BYTES, 0) + } + gl_pixel_storei(GL_UNPACK_ALIGNMENT, 1) + gl_tex_image2d(GL_TEXTURE_2D, 0, ifmt, tex_w, tex_h, 0, fmt, ty, px) + gl_pixel_storei(GL_UNPACK_SWAP_BYTES, 0) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) + if mips { + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR) + gl_generate_mipmap(GL_TEXTURE_2D) + gl_tex_parameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, tex_anisotropy) + } else { + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) + } + return id +} + +# Load a PNG as a mipmapped, anisotropic texture (0 on failure). srgb for albedo. +function tex_load(path: pointer, srgb: bool) -> int { return tex_load_ex(path, srgb, 0) } +# ... with `dilate` passes of edge padding for a cut-out atlas (0 = none) +function tex_load_ex(path: pointer, srgb: bool, dilate: int) -> int { + let px = png_decode(path) + if px == null { return 0 } + if dilate > 0 { tex_dilate(px, 60, dilate) } + let id = tex_upload(px, srgb, true) + free(px) + return id +} + +# A small solid-colour fallback texture (linear rgb 0..255), for missing maps. +function tex_solid(r: int, g: int, b: int, a: int) -> int { + let px = bytes(16) + for i in 0 .. 4 { px[i * 4] = r; px[i * 4 + 1] = g; px[i * 4 + 2] = b; px[i * 4 + 3] = a } + tex_w = 2; tex_h = 2; tex_channels = 4; tex_depth = 8 + let id = tex_upload(px, false, false) + free(px) + return id +} + +# ---- Radiance .hdr (RGBE, new-style RLE) -> RGB float bits ------------------------- +var hdr_max_lum: int = 0 # float bits of the brightest texel (sun finding) +var hdr_max_x: int = 0 +var hdr_max_y: int = 0 +var hdr_sun_r: int = 0 # irradiance (float bits) of everything above the IBL clip: the sun +var hdr_sun_g: int = 0 +var hdr_sun_b: int = 0 +var hdr_clip: int = 0 # float bits; texels above this (per channel) feed the sun, not the IBL + +function hdr_decode(path: pointer) -> words { + let d = r3d_read_file(path) + if d == null { print(`hdr: cannot read {path}`); return null } + let size = tex_file_len + # header: lines until an empty line, then "-Y h +X w" + var i = 0 + var blank = false + while i < size and not blank { + if d[i] == 10 and d[i + 1] == 10 { blank = true; i += 2 } + else { i += 1 } + } + # parse "-Y +X " + var h = 0; var w = 0 + i += 3 + while d[i] >= '0' and d[i] <= '9' { h = h * 10 + (d[i] - 48); i += 1 } + i += 4 + while d[i] >= '0' and d[i] <= '9' { w = w * 10 + (d[i] - 48); i += 1 } + i += 1 + if w <= 0 or h <= 0 { free(d); print(`hdr: bad header {path}`); return null } + let out = words(w * h * 3) + let line = bytes(w * 4) + var maxl = 0 + if hdr_clip == 0 { hdr_clip = fi(20) } + var sr = F_ZERO; var sg = F_ZERO; var sb = F_ZERO + var skye = F_ZERO # sky irradiance on an upward face (clipped part only) + let dphi = f_div(f_mul(F_TWO, F_PI), fi(w)) + let dth = f_div(F_PI, fi(h)) + var y = 0 + while y < h { + if d[i] == 2 and d[i + 1] == 2 and (d[i + 2] & 128) == 0 { + i += 4 + for c in 0 .. 4 { + var x = 0 + while x < w { + var n = d[i]; i += 1 + if n > 128 { + n -= 128 + let v = d[i]; i += 1 + for k in 0 .. n { line[(x + k) * 4 + c] = v } + x += n + } else { + for k in 0 .. n { line[(x + k) * 4 + c] = d[i + k] } + i += n + x += n + } + } + } + } else { + for x in 0 .. w { for c in 0 .. 4 { line[x * 4 + c] = d[i + x * 4 + c] } } + i += w * 4 + } + let sinth = f_sin(f_mul(f_add(fi(y), F_HALF), dth)) + let domega = f_mul(f_mul(dphi, dth), sinth) + for x in 0 .. w { + let e = line[x * 4 + 3] + let o = (y * w + x) * 3 + if e == 0 { out[o] = 0; out[o + 1] = 0; out[o + 2] = 0 } + else { + let sh = e - 136 + let vr = f_ldexp(f_from_int(line[x * 4]), sh) + let vg = f_ldexp(f_from_int(line[x * 4 + 1]), sh) + let vb = f_ldexp(f_from_int(line[x * 4 + 2]), sh) + # the texture is capped at what a half-float holds; the sun is integrated uncapped + out[o] = f_min(vr, fi(60000)) + out[o + 1] = f_min(vg, fi(60000)) + out[o + 2] = f_min(vb, fi(60000)) + let lum = f_add(f_add(vr, vg), vb) + if f_lt(maxl, lum) != 0 { maxl = lum; hdr_max_x = x; hdr_max_y = y } + if y < h / 2 { skye = f_add(skye, f_mul(f_mul(f_min(vg, hdr_clip), f_cos(f_mul(f_add(fi(y), F_HALF), dth))), domega)) } + if f_lt(hdr_clip, vg) != 0 or f_lt(hdr_clip, vr) != 0 { + sr = f_add(sr, f_mul(f_max(f_sub(vr, hdr_clip), F_ZERO), domega)) + sg = f_add(sg, f_mul(f_max(f_sub(vg, hdr_clip), F_ZERO), domega)) + sb = f_add(sb, f_mul(f_max(f_sub(vb, hdr_clip), F_ZERO), domega)) + } + } + } + y += 1 + } + free(line); free(d) + tex_w = w; tex_h = h; tex_channels = 3; tex_depth = 32 + hdr_max_lum = maxl + hdr_sun_r = sr; hdr_sun_g = sg; hdr_sun_b = sb + print(`hdr: peak/1000 {f_fx(f_div(maxl, fi(1000)))} sky irradiance(up) {f_fx(skye)} sun irradiance {f_fx(sg)} (Q16.16 = /65536)`) + return out +} + +# Load an equirectangular .hdr as an RGB16F texture with mips (clamped in v). +function tex_load_hdr(path: pointer) -> int { + let px = hdr_decode(path) + if px == null { return 0 } + let id = gl_texture() + gl_bind_texture(GL_TEXTURE_2D, id) + gl_pixel_storei(GL_UNPACK_ALIGNMENT, 4) + gl_tex_image2d(GL_TEXTURE_2D, 0, GL_RGB16F, tex_w, tex_h, 0, GL_RGB, GL_FLOAT, px) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR) + gl_generate_mipmap(GL_TEXTURE_2D) + free(px) + return id +} + +# An empty render-target texture of the given internal format (no mips, clamped). +function tex_target(w: int, h: int, ifmt: int, fmt: int, ty: int, filter: int) -> int { + let id = gl_texture() + gl_bind_texture(GL_TEXTURE_2D, id) + gl_tex_image2d(GL_TEXTURE_2D, 0, ifmt, w, h, 0, fmt, ty, null) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter) + return id +} + +var tex_dump_alpha: bool = false +# Debug: the brightest texel of an RGBA float texture and where it is. +function tex_max(tex: int, w: int, h: int, tag: pointer) -> void { + let buf = words(w * h * 4) + gl_bind_texture(GL_TEXTURE_2D, tex) + gl_pixel_storei(GL_PACK_ALIGNMENT, 4) + gl_get_tex_image(GL_TEXTURE_2D, 0, GL_RGBA, GL_FLOAT, buf) + var best = F_ZERO; var bx = 0; var by = 0 + var i = 0 + while i < w * h { + let v = f_max(buf[i * 4], f_max(buf[i * 4 + 1], buf[i * 4 + 2])) + if f_gt(v, best) { best = v; bx = i % w; by = i / w } + i += 1 + } + print(`{tag}: max {f_fx(f_div(best, fi(100)))}/100 at {bx} {h - 1 - by} (top-down)`) + let o = (by * w + bx) * 4 + let big = fi(65000) + let finite = f_ls(best, big) + print(` rgba (clamped/100): {f_fx(f_div(f_min(buf[o], big), fi(100)))} {f_fx(f_div(f_min(buf[o + 1], big), fi(100)))} {f_fx(f_div(f_min(buf[o + 2], big), fi(100)))} {f_fx(f_min(buf[o + 3], big))} finite {finite} bits {buf[o]}`) + free(buf) +} +# Debug: write a 2D texture's level 0 (RGBA8, alpha dropped) as a binary PPM. +function tex_dump(tex: int, w: int, h: int, path: pointer) -> void { + let f = file_open(path, "wb") + if f == null { return } + let buf = bytes(w * h * 4) + gl_bind_texture(GL_TEXTURE_2D, tex) + gl_pixel_storei(GL_PACK_ALIGNMENT, 1) + gl_get_tex_image(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, buf) + let hdr = `P6\n{w} {h}\n255\n` + file_write(f, hdr, len(hdr)) + let row = bytes(w * 3) + for y in 0 .. h { + for x in 0 .. w { + row[x * 3] = buf[(y * w + x) * 4]; row[x * 3 + 1] = buf[(y * w + x) * 4 + 1]; row[x * 3 + 2] = buf[(y * w + x) * 4 + 2] + if tex_dump_alpha { let a = buf[(y * w + x) * 4 + 3]; row[x * 3] = a; row[x * 3 + 1] = a; row[x * 3 + 2] = a } + } + file_write(f, row, w * 3) + } + file_close(f) + free(buf); free(row) +} + +# A binary PPM (P6, what Gl.screenshot writes) as an RGB8 texture, box-filtered down by +# `shrink` (a photo thumbnail); 0 when the file is missing. +function tex_load_ppm(path: pointer, shrink: int) -> int { + let d = r3d_read_file(path) + if d == null { return 0 } + let size = tex_file_len + var i = 2 + var w = 0; var h = 0; var mx = 0 + var field = 0 + while i < size and field < 3 { + while i < size and (d[i] == 32 or d[i] == 10 or d[i] == 13 or d[i] == 9) { i += 1 } + var v = 0 + while i < size and d[i] >= '0' and d[i] <= '9' { v = v * 10 + (d[i] - 48); i += 1 } + if field == 0 { w = v } else if field == 1 { h = v } else { mx = v } + field += 1 + } + i += 1 + if w <= 0 or h <= 0 or i + w * h * 3 > size { free(d); return 0 } + var k = shrink + if k < 1 { k = 1 } + let ow = w / k; let oh = h / k + let px = bytes(ow * oh * 3) + for y in 0 .. oh { + for x in 0 .. ow { + var r = 0; var g = 0; var b = 0 + for yy in 0 .. k { for xx in 0 .. k { + let o = i + ((y * k + yy) * w + x * k + xx) * 3 + r += d[o]; g += d[o + 1]; b += d[o + 2] + } } + let n = k * k + let q = (y * ow + x) * 3 + px[q] = r / n; px[q + 1] = g / n; px[q + 2] = b / n + } + } + free(d) + tex_w = ow; tex_h = oh; tex_channels = 3; tex_depth = 8 + let id = tex_upload(px, true, false) + free(px) + return id +} diff --git a/packages/ludic.render3d/water.ludic b/packages/ludic.render3d/water.ludic new file mode 100644 index 00000000..b195455d --- /dev/null +++ b/packages/ludic.render3d/water.ludic @@ -0,0 +1,125 @@ +# ============================================================================ +# water.ludic — still water for the valley floor: a level plane over a region, +# drawn after the opaque scene, showing only where the ground lies below it. +# Sky reflection with fresnel, sun glitter, scrolling ripple normals, a depth +# tinted body read from the scene depth, and soft shores. +# ============================================================================ + +var water_mesh: Mesh = null +var water_prog: int = 0 +var water_level: int = 0 +var water_cx: int = 0 +var water_cz: int = 0 +var water_ex: int = 0 +var water_ez: int = 0 +var water_on: bool = false +var water_refl: Target = null # the world mirrored in the surface, half resolution +var water_refl_div: int = 2 # R3D_REFLDIV overrides: 2 = half res, 4 = quarter +var water_saved: words = null # the real camera's matrices, restored after the pass +var water_dumped: bool = false + +# Render the scene through a camera mirrored in the water plane into water_refl, +# clipping everything below the surface; terrain, scattered layers and sky. +function water_reflection_pass() -> void { + if water_refl == null { + if Os.has_env("R3D_REFLDIV") { water_refl_div = Text.to_int(Os.env("R3D_REFLDIV")) } + if water_refl != null { target_free(water_refl) } + water_refl = target_new(gl_w / water_refl_div, gl_h / water_refl_div, GL_RGBA16F, GL_RGBA, GL_HALF_FLOAT, true, GL_LINEAR) + water_saved = words(16 * 4 + 3) + } + # save the camera + m4_copy(water_saved, cam_view) + m4_copy(mem_off(water_saved, 64), cam_vp) + m4_copy(mem_off(water_saved, 128), cam_inv_vp) + let sx = cam_pos[0]; let sy = cam_pos[1]; let sz = cam_pos[2] + # the mirrored camera: view' = view * R, R reflecting y about the surface (y' = 2L - y). + # R has determinant -1, so the winding flips (front faces culled below) and the image + # lands exactly where the main camera's pixels expect the reflection. + let eye = v3_new(sx, f_sub(f_mul(F_TWO, water_level), sy), sz) + let refl = m4_new() + refl[5] = f_neg1() + refl[13] = f_mul(F_TWO, water_level) + let mv = words(16) + m4_mul(mv, water_saved, refl) + m4_copy(cam_view, mv) + free(mv); free(refl) + let fwd = words(3); let up = words(3); let at = words(3) + m4_mul(cam_vp, cam_proj, cam_view) + m4_inverse(cam_inv_vp, cam_vp) + v3_copy(cam_pos, eye) + r3d_clip_y = f_sub(water_level, fl(0.05)) + target_bind(water_refl) + gl_enable(GL_DEPTH_TEST) + gl_depth_func(GL_LESS) + gl_depth_mask(1) + gl_enable(GL_CULL_FACE) + gl_cull_face(GL_FRONT) # the mirror flips the winding + gl_clear_color(0.0, 0.0, 0.0, 1.0) + gl_clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) + sc_freeze = true + let sb = sc_skip_blade + sc_skip_blade = true # blades are invisible at this scale in a reflection + ter_reflect = true + terrain_draw() + scene_draw() + r3d_draw_sky() + ter_reflect = false + sc_skip_blade = sb + sc_freeze = false + gl_cull_face(GL_BACK) + if Os.has_env("R3D_DUMP_REFL") and not water_dumped { water_dumped = true; tex_dump(water_refl.color, gl_w / water_refl_div, gl_h / water_refl_div, "build/dbg_refl.ppm") } + # restore + r3d_clip_y = 0xCF000000 + m4_copy(cam_view, water_saved) + m4_copy(cam_vp, mem_off(water_saved, 64)) + m4_copy(cam_inv_vp, mem_off(water_saved, 128)) + v3_set(cam_pos, sx, sy, sz) + free(eye); free(fwd); free(up); free(at) + gl_bind_framebuffer(GL_FRAMEBUFFER, 0) +} + +function water_init(level: int, cx: int, cz: int, ex: int, ez: int) -> void { + water_mesh = mesh_grid(2, F_HALF) + water_prog = r3d_program("water.vert", "water.frag", "") + water_level = level; water_cx = cx; water_cz = cz; water_ex = ex; water_ez = ez + water_on = true +} + +# call after the opaque pass, before the sky: blends over the resolved depth +function water_draw(depth_tex: int) -> void { + if not water_on { return } + let p = water_prog + gl_use_program(p) + u_mat4(gl_uniform(p, "u_view"), cam_view) + u_mat4(gl_uniform(p, "u_proj"), cam_proj) + u_mat4(gl_uniform(p, "u_inv_vp"), cam_inv_vp) + u_f(gl_uniform(p, "u_level"), water_level) + u_f2(gl_uniform(p, "u_center"), water_cx, water_cz) + u_f2(gl_uniform(p, "u_extent"), water_ex, water_ez) + u_f2(gl_uniform(p, "u_screen"), fi(gl_w), fi(gl_h)) + var ron = F_ZERO + if water_refl != null { + # bind on its own unit first: generating the mip chain re-binds the texture on the active unit, + # and it must not displace the depth texture the shader reads for the shore + r3d_bind_2d(p, "u_refl", 1, water_refl.color); ron = F_ONE + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR) + gl_generate_mipmap(GL_TEXTURE_2D) + } + r3d_bind_2d(p, "u_depth", 0, depth_tex) + r3d_bind_2d(p, "u_scene", 2, post_scene.color) + u_f(gl_uniform(p, "u_refl_on"), ron) + sky_bind_lighting(p) + shadow_bind(p) + fog_bind(p) + # Opaque. The surface composites the refracted bed itself, so there is nothing for + # hardware blending to do — and an alpha was what left see-through gaps in the foam + # and a clear band at the shore wide enough to give the plane away. + gl_disable(GL_BLEND) + gl_blend_func(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) + # the surface writes depth: the ambient-occlusion and temporal passes read the frame's depth, + # and the bed 9 m below the shore would otherwise darken a band along the water line + gl_depth_mask(1) + gl_disable(GL_CULL_FACE) + mesh_draw(water_mesh) + gl_disable(GL_BLEND) +} diff --git a/runtime/native/cocoa.ll b/runtime/native/cocoa.ll index f7fe7006..4418367f 100644 --- a/runtime/native/cocoa.ll +++ b/runtime/native/cocoa.ll @@ -81,6 +81,7 @@ declare i32 @CGWarpMouseCursorPosition(%NSPoint) @.s_type = private unnamed_addr constant [5 x i8] c"type\00" @.s_keycd = private unnamed_addr constant [8 x i8] c"keyCode\00" @.s_chars = private unnamed_addr constant [28 x i8] c"charactersIgnoringModifiers\00" +@.s_modf = private unnamed_addr constant [14 x i8] c"modifierFlags\00" @.s_length = private unnamed_addr constant [7 x i8] c"length\00" @.s_charat = private unnamed_addr constant [18 x i8] c"characterAtIndex:\00" @.s_locwin = private unnamed_addr constant [17 x i8] c"locationInWindow\00" @@ -267,9 +268,12 @@ entry: %sel_alloc = call ptr @sel_registerName(ptr @.s_alloc) %w0 = call ptr @objc_msgSend(ptr %wincls, ptr %sel_alloc) %sel_initw = call ptr @sel_registerName(ptr @.s_initw) - ; NSWindowStyleMaskTitled|Closable = 3, NSBackingStoreBuffered = 2 - %win = call ptr (ptr, ptr, %CGRect, i64, i64, i8) @objc_msgSend(ptr %w0, ptr %sel_initw, %CGRect %rect, i64 3, i64 2, i8 0) + ; NSWindowStyleMaskTitled|Closable|Resizable = 11, NSBackingStoreBuffered = 2 + %win = call ptr (ptr, ptr, %CGRect, i64, i64, i8) @objc_msgSend(ptr %w0, ptr %sel_initw, %CGRect %rect, i64 11, i64 2, i8 0) store ptr %win, ptr @W_win + ; NSWindowCollectionBehaviorFullScreenPrimary = 1 << 7: the green button and toggleFullScreen: work + %sel_cb = call ptr @sel_registerName(ptr @.s_setcb) + %acb = call ptr (ptr, ptr, i64) @objc_msgSend(ptr %win, ptr %sel_cb, i64 128) %strcls = call ptr @objc_getClass(ptr @.c_str) %sel_utf8 = call ptr @sel_registerName(ptr @.s_utf8) @@ -343,10 +347,10 @@ entry: i32 36, label %vret i32 53, label %vesc ] -vw: ret i32 119 -vs: ret i32 115 -va: ret i32 97 -vd: ret i32 100 +vw: ret i32 128 +vs: ret i32 129 +va: ret i32 130 +vd: ret i32 131 vspace: ret i32 32 vret: ret i32 10 vesc: ret i32 27 @@ -361,7 +365,15 @@ chars: take: %c = call i16 (ptr, ptr, i64) @objc_msgSend(ptr %s, ptr %sel_cat, i64 0) %c32 = zext i16 %c to i32 - ret i32 %c32 + ; charactersIgnoringModifiers still honours Shift, so Shift+W arrives as 'W' and a game + ; holding 'w' to walk stopped dead the moment the player held Shift to run. Fold A-Z to + ; a-z: the held set is keyed by the key, Shift itself is reported separately (code 16). + %isupA = icmp sge i32 %c32, 65 + %isupB = icmp sle i32 %c32, 90 + %isupper = and i1 %isupA, %isupB + %lower = add i32 %c32, 32 + %folded = select i1 %isupper, i32 %lower, i32 %c32 + ret i32 %folded none: ret i32 0 } @@ -401,11 +413,30 @@ handle: br i1 %iskey, label %key, label %notkey notkey: %isup = icmp eq i64 %ty, 11 ; NSEventTypeKeyUp - br i1 %isup, label %keyup, label %mouse + br i1 %isup, label %keyup, label %notup keyup: ; #50 — release the held key %uv = call i32 @ev_keyval(ptr %ev) call void @win_held_bit(i32 %uv, i32 0) br label %forward +notup: + %isflags = icmp eq i64 %ty, 12 ; NSEventTypeFlagsChanged: modifier keys + br i1 %isflags, label %flags, label %mouse +flags: ; Shift is held-key 16 (ctrl 17, alt 18): a run modifier + %sel_mf = call ptr @sel_registerName(ptr @.s_modf) + %mf = call i64 (ptr, ptr) @objc_msgSend(ptr %ev, ptr %sel_mf) + %mf_sh = and i64 %mf, 131072 ; NSEventModifierFlagShift = 1 << 17 + %sh_on = icmp ne i64 %mf_sh, 0 + %sh_i = zext i1 %sh_on to i32 + call void @win_held_bit(i32 16, i32 %sh_i) + %mf_ct = and i64 %mf, 262144 ; NSEventModifierFlagControl = 1 << 18 + %ct_on = icmp ne i64 %mf_ct, 0 + %ct_i = zext i1 %ct_on to i32 + call void @win_held_bit(i32 17, i32 %ct_i) + %mf_al = and i64 %mf, 524288 ; NSEventModifierFlagOption = 1 << 19 + %al_on = icmp ne i64 %mf_al, 0 + %al_i = zext i1 %al_on to i32 + call void @win_held_bit(i32 18, i32 %al_i) + br label %forward mouse: ; #50 — mouse buttons + wheel %ml_d = icmp eq i64 %ty, 1 ; NSEventTypeLeftMouseDown br i1 %ml_d, label %lset, label %ml_u @@ -610,8 +641,17 @@ reldelta: %nmy2 = select i1 %yhi, i32 %fbhm, i32 %nmy1 store i32 %nmx2, ptr @W_mx store i32 %nmy2, ptr @W_my + ; the raw motion too: a clamped cursor stops turning at the edge, the delta must not + %p4r = getelementptr i32, ptr %out, i32 4 + store i32 %ddx, ptr %p4r + %p5r = getelementptr i32, ptr %out, i32 5 + store i32 %ddy, ptr %p5r br label %emit abspos: + %p4a = getelementptr i32, ptr %out, i32 4 + store i32 0, ptr %p4a + %p5a = getelementptr i32, ptr %out, i32 5 + store i32 0, ptr %p5a %win = load ptr, ptr @W_win %nowin = icmp eq ptr %win, null br i1 %nowin, label %emit, label %qpos @@ -1107,3 +1147,264 @@ body: ret: ret void } + +; ============================================================================ +; OpenGL on the window (Gl.* — runtime/native/gl.ludic). An NSOpenGLContext is +; attached to the existing LudicView, at the display's backing resolution, with +; a 4.1 core profile. The CPU framebuffer path above is untouched: a Gl program +; simply never calls Screen.show, so -drawRect: finds @W_fb null and paints +; nothing. The window-independent GL pieces (offscreen CGL contexts, ABI thunks) +; live in gl.ll so a headless build never references the window. +; +; win_gl_attach() -> ok create the context on @W_view (0 = no window yet) +; win_gl_resize(w, h) content size in points, scale 1 (mouse mapping follows) +; win_gl_swap() flushBuffer (vsync'd) +; win_gl_scale() -> int backing pixels per point (2 on Retina) +; ============================================================================ + +@.c_pixfmt = private unnamed_addr constant [20 x i8] c"NSOpenGLPixelFormat\00" +@.c_glctx = private unnamed_addr constant [16 x i8] c"NSOpenGLContext\00" +@.s_initattr = private unnamed_addr constant [20 x i8] c"initWithAttributes:\00" +@.s_initfmt = private unnamed_addr constant [29 x i8] c"initWithFormat:shareContext:\00" +@.s_setview = private unnamed_addr constant [9 x i8] c"setView:\00" +@.s_makecur = private unnamed_addr constant [19 x i8] c"makeCurrentContext\00" +@.s_flushbuf = private unnamed_addr constant [12 x i8] c"flushBuffer\00" +@.s_ctxupd = private unnamed_addr constant [7 x i8] c"update\00" +@.s_setvals = private unnamed_addr constant [24 x i8] c"setValues:forParameter:\00" +@.s_bestres = private unnamed_addr constant [37 x i8] c"setWantsBestResolutionOpenGLSurface:\00" +@.s_bscale = private unnamed_addr constant [19 x i8] c"backingScaleFactor\00" +@.s_setcsize = private unnamed_addr constant [16 x i8] c"setContentSize:\00" +@.s_togfs = private unnamed_addr constant [18 x i8] c"toggleFullScreen:\00" +@.s_bounds = private unnamed_addr constant [7 x i8] c"bounds\00" +@.s_setcb = private unnamed_addr constant [23 x i8] c"setCollectionBehavior:\00" + +@W_glctx = internal global ptr null +@W_glscale = internal global i32 1 + +define i32 @win_gl_attach() { +entry: + %view = load ptr, ptr @W_view + %noview = icmp eq ptr %view, null + br i1 %noview, label %fail, label %go +go: + %sel_alloc = call ptr @sel_registerName(ptr @.s_alloc) + ; Retina: ask for a backing-resolution surface before the context is attached + %sel_br = call ptr @sel_registerName(ptr @.s_bestres) + %r0 = call ptr (ptr, ptr, i8) @objc_msgSend(ptr %view, ptr %sel_br, i8 1) + ; NSOpenGLPixelFormatAttribute[]: OpenGLProfile=99 -> 4.1 core (0x4100), + ; ColorSize=8 -> 24, AlphaSize=11 -> 8, DepthSize=12 -> 24, StencilSize=13 -> 8, + ; DoubleBuffer=5, Accelerated=73, 0 + %attrs = alloca [14 x i32], align 4 + %a0 = getelementptr [14 x i32], ptr %attrs, i32 0, i32 0 + store i32 99, ptr %a0 + %a1 = getelementptr [14 x i32], ptr %attrs, i32 0, i32 1 + store i32 16640, ptr %a1 + %a2 = getelementptr [14 x i32], ptr %attrs, i32 0, i32 2 + store i32 8, ptr %a2 + %a3 = getelementptr [14 x i32], ptr %attrs, i32 0, i32 3 + store i32 24, ptr %a3 + %a4 = getelementptr [14 x i32], ptr %attrs, i32 0, i32 4 + store i32 11, ptr %a4 + %a5 = getelementptr [14 x i32], ptr %attrs, i32 0, i32 5 + store i32 8, ptr %a5 + %a6 = getelementptr [14 x i32], ptr %attrs, i32 0, i32 6 + store i32 12, ptr %a6 + %a7 = getelementptr [14 x i32], ptr %attrs, i32 0, i32 7 + store i32 24, ptr %a7 + %a8 = getelementptr [14 x i32], ptr %attrs, i32 0, i32 8 + store i32 13, ptr %a8 + %a9 = getelementptr [14 x i32], ptr %attrs, i32 0, i32 9 + store i32 8, ptr %a9 + %a10 = getelementptr [14 x i32], ptr %attrs, i32 0, i32 10 + store i32 5, ptr %a10 + %a11 = getelementptr [14 x i32], ptr %attrs, i32 0, i32 11 + store i32 73, ptr %a11 + %a12 = getelementptr [14 x i32], ptr %attrs, i32 0, i32 12 + store i32 0, ptr %a12 + %a13 = getelementptr [14 x i32], ptr %attrs, i32 0, i32 13 + store i32 0, ptr %a13 + + %pfcls = call ptr @objc_getClass(ptr @.c_pixfmt) + %pf0 = call ptr @objc_msgSend(ptr %pfcls, ptr %sel_alloc) + %sel_ia = call ptr @sel_registerName(ptr @.s_initattr) + %pf = call ptr (ptr, ptr, ptr) @objc_msgSend(ptr %pf0, ptr %sel_ia, ptr %attrs) + %nopf = icmp eq ptr %pf, null + br i1 %nopf, label %fail, label %ctx +ctx: + %ccls = call ptr @objc_getClass(ptr @.c_glctx) + %c0 = call ptr @objc_msgSend(ptr %ccls, ptr %sel_alloc) + %sel_if = call ptr @sel_registerName(ptr @.s_initfmt) + %c = call ptr (ptr, ptr, ptr, ptr) @objc_msgSend(ptr %c0, ptr %sel_if, ptr %pf, ptr null) + %noc = icmp eq ptr %c, null + br i1 %noc, label %fail, label %attach +attach: + %sel_sv = call ptr @sel_registerName(ptr @.s_setview) + %r1 = call ptr (ptr, ptr, ptr) @objc_msgSend(ptr %c, ptr %sel_sv, ptr %view) + %sel_mc = call ptr @sel_registerName(ptr @.s_makecur) + %r2 = call ptr @objc_msgSend(ptr %c, ptr %sel_mc) + ; swap interval 1 (NSOpenGLCPSwapInterval = 222) + %one = alloca i32, align 4 + store i32 1, ptr %one + %sel_sp = call ptr @sel_registerName(ptr @.s_setvals) + %r3 = call ptr (ptr, ptr, ptr, i64) @objc_msgSend(ptr %c, ptr %sel_sp, ptr %one, i64 222) + store ptr %c, ptr @W_glctx + ; backing scale factor of the window (2.0 on Retina) + %win = load ptr, ptr @W_win + %sel_bs = call ptr @sel_registerName(ptr @.s_bscale) + %bs = call double (ptr, ptr) @objc_msgSend(ptr %win, ptr %sel_bs) + %bsi = fptosi double %bs to i32 + %bsok = icmp sgt i32 %bsi, 0 + %bsv = select i1 %bsok, i32 %bsi, i32 1 + store i32 %bsv, ptr @W_glscale + ret i32 1 +fail: + ret i32 0 +} + +define void @win_gl_resize(i32 %w, i32 %h) { +entry: + %win = load ptr, ptr @W_win + %nowin = icmp eq ptr %win, null + br i1 %nowin, label %out, label %go +go: + store i32 %w, ptr @W_fbw + store i32 %h, ptr @W_fbh + store i32 1, ptr @W_scale + %wd = sitofp i32 %w to double + %hd = sitofp i32 %h to double + %s0 = insertvalue %NSPoint undef, double %wd, 0 + %sz = insertvalue %NSPoint %s0, double %hd, 1 + %sel_cs = call ptr @sel_registerName(ptr @.s_setcsize) + %r0 = call ptr (ptr, ptr, %NSPoint) @objc_msgSend(ptr %win, ptr %sel_cs, %NSPoint %sz) + %sel_center = call ptr @sel_registerName(ptr @.s_center) + %r1 = call ptr @objc_msgSend(ptr %win, ptr %sel_center) + %c = load ptr, ptr @W_glctx + %noc = icmp eq ptr %c, null + br i1 %noc, label %out, label %upd +upd: + %sel_u = call ptr @sel_registerName(ptr @.s_ctxupd) + %r2 = call ptr @objc_msgSend(ptr %c, ptr %sel_u) + br label %out +out: + ret void +} + +define void @win_gl_swap() { +entry: + %c = load ptr, ptr @W_glctx + %noc = icmp eq ptr %c, null + br i1 %noc, label %out, label %go +go: + %sel_fb = call ptr @sel_registerName(ptr @.s_flushbuf) + %r = call ptr @objc_msgSend(ptr %c, ptr %sel_fb) + br label %out +out: + ret void +} + +define i32 @win_gl_scale() { +entry: + %s = load i32, ptr @W_glscale + ret i32 %s +} + +; swap interval: 1 = vsync (the default set at attach), 0 = free-running +define void @win_gl_swap_interval(i32 %n) { +entry: + %c = load ptr, ptr @W_glctx + %noc = icmp eq ptr %c, null + br i1 %noc, label %out, label %go +go: + %v = alloca i32, align 4 + store i32 %n, ptr %v + %sel_sp = call ptr @sel_registerName(ptr @.s_setvals) + %r = call ptr (ptr, ptr, ptr, i64) @objc_msgSend(ptr %c, ptr %sel_sp, ptr %v, i64 222) + br label %out +out: + ret void +} + +; ============================================================================ +; window size, full screen and the drawable (the game's video settings) +; ============================================================================ +; the view's drawable in pixels -> out[0], out[1]; also keeps the points size the +; mouse conversion uses in step with a window the user resized or made full screen +define void @win_gl_drawable(ptr %out) { +entry: + %view = load ptr, ptr @W_view + %noview = icmp eq ptr %view, null + br i1 %noview, label %none, label %go +go: + %sel_b = call ptr @sel_registerName(ptr @.s_bounds) + %r = call %CGRect (ptr, ptr) @objc_msgSend(ptr %view, ptr %sel_b) + %w = extractvalue %CGRect %r, 2 + %h = extractvalue %CGRect %r, 3 + %sc = load i32, ptr @W_glscale + %scd = sitofp i32 %sc to double + %pw = fmul double %w, %scd + %ph = fmul double %h, %scd + %iw = fptosi double %pw to i32 + %ih = fptosi double %ph to i32 + store i32 %iw, ptr %out + %p1 = getelementptr i32, ptr %out, i32 1 + store i32 %ih, ptr %p1 + %ipw = fptosi double %w to i32 + %iph = fptosi double %h to i32 + store i32 %ipw, ptr @W_fbw + store i32 %iph, ptr @W_fbh + ret void +none: + store i32 0, ptr %out + %p1n = getelementptr i32, ptr %out, i32 1 + store i32 0, ptr %p1n + ret void +} +; tell the context its view changed size +define void @win_gl_update() { +entry: + %c = load ptr, ptr @W_glctx + %noc = icmp eq ptr %c, null + br i1 %noc, label %out, label %upd +upd: + %sel_u = call ptr @sel_registerName(ptr @.s_ctxupd) + %r = call ptr @objc_msgSend(ptr %c, ptr %sel_u) + br label %out +out: + ret void +} +define void @win_toggle_fullscreen() { +entry: + %win = load ptr, ptr @W_win + %nowin = icmp eq ptr %win, null + br i1 %nowin, label %out, label %go +go: + %sel_t = call ptr @sel_registerName(ptr @.s_togfs) + %r = call ptr (ptr, ptr, ptr) @objc_msgSend(ptr %win, ptr %sel_t, ptr null) + br label %out +out: + ret void +} +; Retina (backing-resolution) drawable on or off: the pixel scale follows +define void @win_gl_retina(i32 %on) { +entry: + %view = load ptr, ptr @W_view + %noview = icmp eq ptr %view, null + br i1 %noview, label %out, label %go +go: + %sel_br = call ptr @sel_registerName(ptr @.s_bestres) + %flag = trunc i32 %on to i8 + %r0 = call ptr (ptr, ptr, i8) @objc_msgSend(ptr %view, ptr %sel_br, i8 %flag) + %win = load ptr, ptr @W_win + %sel_bs = call ptr @sel_registerName(ptr @.s_bscale) + %bs = call double (ptr, ptr) @objc_msgSend(ptr %win, ptr %sel_bs) + %bsi = fptosi double %bs to i32 + %bsok = icmp sgt i32 %bsi, 0 + %bsv = select i1 %bsok, i32 %bsi, i32 1 + %ison = icmp ne i32 %on, 0 + %scale = select i1 %ison, i32 %bsv, i32 1 + store i32 %scale, ptr @W_glscale + call void @win_gl_update() + br label %out +out: + ret void +} diff --git a/runtime/native/gl.ll b/runtime/native/gl.ll new file mode 100644 index 00000000..74fbca7c --- /dev/null +++ b/runtime/native/gl.ll @@ -0,0 +1,368 @@ +; ============================================================================ +; gl.ll — the window-independent half of the OpenGL backend, in LLVM IR. +; +; Linked into any program that uses Gl.* (windowed or headless), together with +; gl_thunks.ll (the generated per-entry-point ABI thunks) and -framework OpenGL. +; Nothing here touches the window: the NSOpenGLContext lives in cocoa.ll. +; +; cgl_offscreen() -> ok a headless 4.1 core context (render into FBOs) +; fx_to_f32(fx) -> bits Q16.16 -> IEEE float bits (an int) +; f32_to_fx(bits) -> fx IEEE float bits -> Q16.16 +; mem_* raw little-endian reads/writes on a bytes buffer +; f_* IEEE-754 float arithmetic on float bits +; ============================================================================ + +declare i32 @CGLChoosePixelFormat(ptr, ptr, ptr) +declare i32 @CGLCreateContext(ptr, ptr, ptr) +declare i32 @CGLSetCurrentContext(ptr) +declare i32 @CGLDestroyPixelFormat(ptr) +declare void @llvm.memcpy.p0.p0.i64(ptr, ptr, i64, i1) +declare void @llvm.memset.p0.i64(ptr, i8, i64, i1) +declare float @sinf(float) +declare float @cosf(float) +declare float @tanf(float) +declare float @atan2f(float, float) +declare float @powf(float, float) +declare float @expf(float) +declare float @logf(float) +declare float @floorf(float) +declare float @fmodf(float, float) +declare float @ldexpf(float, i32) +declare float @llvm.sqrt.f32(float) +declare float @llvm.fabs.f32(float) + +define i32 @cgl_offscreen() { +entry: + ; kCGLPFAAccelerated=73, kCGLPFAOpenGLProfile=99 -> kCGLOGLPVersion_GL4_Core (0x4100), + ; kCGLPFAColorSize=8 -> 24, kCGLPFADepthSize=12 -> 24, 0 + %attrs = alloca [8 x i32], align 4 + %a0 = getelementptr [8 x i32], ptr %attrs, i32 0, i32 0 + store i32 73, ptr %a0 + %a1 = getelementptr [8 x i32], ptr %attrs, i32 0, i32 1 + store i32 99, ptr %a1 + %a2 = getelementptr [8 x i32], ptr %attrs, i32 0, i32 2 + store i32 16640, ptr %a2 + %a3 = getelementptr [8 x i32], ptr %attrs, i32 0, i32 3 + store i32 8, ptr %a3 + %a4 = getelementptr [8 x i32], ptr %attrs, i32 0, i32 4 + store i32 24, ptr %a4 + %a5 = getelementptr [8 x i32], ptr %attrs, i32 0, i32 5 + store i32 12, ptr %a5 + %a6 = getelementptr [8 x i32], ptr %attrs, i32 0, i32 6 + store i32 24, ptr %a6 + %a7 = getelementptr [8 x i32], ptr %attrs, i32 0, i32 7 + store i32 0, ptr %a7 + %pix = alloca ptr, align 8 + store ptr null, ptr %pix + %npix = alloca i32, align 4 + %e1 = call i32 @CGLChoosePixelFormat(ptr %attrs, ptr %pix, ptr %npix) + %p = load ptr, ptr %pix + %nop = icmp eq ptr %p, null + br i1 %nop, label %fail, label %mk +mk: + %ctx = alloca ptr, align 8 + store ptr null, ptr %ctx + %e2 = call i32 @CGLCreateContext(ptr %p, ptr null, ptr %ctx) + %c = load ptr, ptr %ctx + %e3 = call i32 @CGLDestroyPixelFormat(ptr %p) + %noc = icmp eq ptr %c, null + br i1 %noc, label %fail, label %cur +cur: + %e4 = call i32 @CGLSetCurrentContext(ptr %c) + ret i32 1 +fail: + ret i32 0 +} + +; ---- Q16.16 <-> IEEE float --------------------------------------------------- +define i32 @fx_to_f32(i32 %fx) { +entry: + %f = sitofp i32 %fx to float + %s = fmul float %f, 0x3EF0000000000000 + %b = bitcast float %s to i32 + ret i32 %b +} +define i32 @f32_to_fx(i32 %bits) { +entry: + %f = bitcast i32 %bits to float + %s = fmul float %f, 65536.0 + %r = fptosi float %s to i32 + ret i32 %r +} + +; ---- raw memory --------------------------------------------------------------- +define ptr @mem_off(ptr %p, i32 %off) { +entry: + %q = getelementptr inbounds i8, ptr %p, i32 %off + ret ptr %q +} +define i32 @mem_get_i32(ptr %p, i32 %off) { +entry: + %q = getelementptr inbounds i8, ptr %p, i32 %off + %v = load i32, ptr %q, align 1 + ret i32 %v +} +define void @mem_put_i32(ptr %p, i32 %off, i32 %v) { +entry: + %q = getelementptr inbounds i8, ptr %p, i32 %off + store i32 %v, ptr %q, align 1 + ret void +} +define i32 @mem_get_u16(ptr %p, i32 %off) { +entry: + %q = getelementptr inbounds i8, ptr %p, i32 %off + %v = load i16, ptr %q, align 1 + %z = zext i16 %v to i32 + ret i32 %z +} +define void @mem_put_u16(ptr %p, i32 %off, i32 %v) { +entry: + %q = getelementptr inbounds i8, ptr %p, i32 %off + %t = trunc i32 %v to i16 + store i16 %t, ptr %q, align 1 + ret void +} +define i32 @mem_get_u8(ptr %p, i32 %off) { +entry: + %q = getelementptr inbounds i8, ptr %p, i32 %off + %v = load i8, ptr %q + %z = zext i8 %v to i32 + ret i32 %z +} +define void @mem_put_u8(ptr %p, i32 %off, i32 %v) { +entry: + %q = getelementptr inbounds i8, ptr %p, i32 %off + %t = trunc i32 %v to i8 + store i8 %t, ptr %q + ret void +} +; float element i of a float buffer, as Q16.16 / as bits +define i32 @mem_get_f32(ptr %p, i32 %i) { +entry: + %q = getelementptr inbounds float, ptr %p, i32 %i + %f = load float, ptr %q, align 1 + %s = fmul float %f, 65536.0 + %r = fptosi float %s to i32 + ret i32 %r +} +define void @mem_put_f32(ptr %p, i32 %i, i32 %fx) { +entry: + %q = getelementptr inbounds float, ptr %p, i32 %i + %f = sitofp i32 %fx to float + %s = fmul float %f, 0x3EF0000000000000 + store float %s, ptr %q, align 1 + ret void +} +define i32 @mem_get_f32_bits(ptr %p, i32 %i) { +entry: + %q = getelementptr inbounds i32, ptr %p, i32 %i + %v = load i32, ptr %q, align 1 + ret i32 %v +} +define void @mem_put_f32_bits(ptr %p, i32 %i, i32 %bits) { +entry: + %q = getelementptr inbounds i32, ptr %p, i32 %i + store i32 %bits, ptr %q, align 1 + ret void +} +define void @mem_copy(ptr %dst, ptr %src, i32 %n) { +entry: + %n64 = sext i32 %n to i64 + call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 %n64, i1 false) + ret void +} +define void @mem_set(ptr %dst, i32 %v, i32 %n) { +entry: + %n64 = sext i32 %n to i64 + %b = trunc i32 %v to i8 + call void @llvm.memset.p0.i64(ptr %dst, i8 %b, i64 %n64, i1 false) + ret void +} + +; ---- IEEE float arithmetic on bit patterns ------------------------------------ +define i32 @f_add(i32 %a, i32 %b) { +entry: + %x = bitcast i32 %a to float + %y = bitcast i32 %b to float + %r = fadd float %x, %y + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_sub(i32 %a, i32 %b) { +entry: + %x = bitcast i32 %a to float + %y = bitcast i32 %b to float + %r = fsub float %x, %y + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_mul(i32 %a, i32 %b) { +entry: + %x = bitcast i32 %a to float + %y = bitcast i32 %b to float + %r = fmul float %x, %y + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_div(i32 %a, i32 %b) { +entry: + %x = bitcast i32 %a to float + %y = bitcast i32 %b to float + %r = fdiv float %x, %y + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_neg(i32 %a) { +entry: + %x = bitcast i32 %a to float + %r = fneg float %x + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_sqrt(i32 %a) { +entry: + %x = bitcast i32 %a to float + %r = call float @llvm.sqrt.f32(float %x) + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_abs(i32 %a) { +entry: + %x = bitcast i32 %a to float + %r = call float @llvm.fabs.f32(float %x) + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_sin(i32 %a) { +entry: + %x = bitcast i32 %a to float + %r = call float @sinf(float %x) + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_cos(i32 %a) { +entry: + %x = bitcast i32 %a to float + %r = call float @cosf(float %x) + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_tan(i32 %a) { +entry: + %x = bitcast i32 %a to float + %r = call float @tanf(float %x) + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_atan2(i32 %a, i32 %b) { +entry: + %x = bitcast i32 %a to float + %y = bitcast i32 %b to float + %r = call float @atan2f(float %x, float %y) + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_pow(i32 %a, i32 %b) { +entry: + %x = bitcast i32 %a to float + %y = bitcast i32 %b to float + %r = call float @powf(float %x, float %y) + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_exp(i32 %a) { +entry: + %x = bitcast i32 %a to float + %r = call float @expf(float %x) + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_log(i32 %a) { +entry: + %x = bitcast i32 %a to float + %r = call float @logf(float %x) + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_floor(i32 %a) { +entry: + %x = bitcast i32 %a to float + %r = call float @floorf(float %x) + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_mod(i32 %a, i32 %b) { +entry: + %x = bitcast i32 %a to float + %y = bitcast i32 %b to float + %r = call float @fmodf(float %x, float %y) + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_ldexp(i32 %a, i32 %e) { +entry: + %x = bitcast i32 %a to float + %r = call float @ldexpf(float %x, i32 %e) + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_min(i32 %a, i32 %b) { +entry: + %x = bitcast i32 %a to float + %y = bitcast i32 %b to float + %c = fcmp olt float %x, %y + %r = select i1 %c, float %x, float %y + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_max(i32 %a, i32 %b) { +entry: + %x = bitcast i32 %a to float + %y = bitcast i32 %b to float + %c = fcmp ogt float %x, %y + %r = select i1 %c, float %x, float %y + %o = bitcast float %r to i32 + ret i32 %o +} +define i32 @f_lt(i32 %a, i32 %b) { +entry: + %x = bitcast i32 %a to float + %y = bitcast i32 %b to float + %c = fcmp olt float %x, %y + %z = zext i1 %c to i32 + ret i32 %z +} +define i32 @f_from_int(i32 %a) { +entry: + %f = sitofp i32 %a to float + %o = bitcast float %f to i32 + ret i32 %o +} +define i32 @f_to_int(i32 %a) { +entry: + %x = bitcast i32 %a to float + %r = fptosi float %x to i32 + ret i32 %r +} + +; ---- a real monotonic microsecond clock ------------------------------------- +; Time.now() is whole seconds and Time.delta() is a fixed 60 Hz timestep, so +; neither can measure a frame. gettimeofday gives the wall clock in microseconds, +; which is what frame pacing and hitch measurement actually need. +; macOS arm64: struct timeval is { time_t tv_sec (i64), suseconds_t tv_usec (i32) } +%struct.timeval64 = type { i64, i32 } +declare i32 @gettimeofday(ptr, ptr) + +define i64 @gl_now_us() { +entry: + %tv = alloca %struct.timeval64, align 8 + %r = call i32 @gettimeofday(ptr %tv, ptr null) + %secp = getelementptr inbounds %struct.timeval64, ptr %tv, i32 0, i32 0 + %usp = getelementptr inbounds %struct.timeval64, ptr %tv, i32 0, i32 1 + %sec = load i64, ptr %secp, align 8 + %us32 = load i32, ptr %usp, align 8 + %us = sext i32 %us32 to i64 + %m = mul i64 %sec, 1000000 + %t = add i64 %m, %us + ret i64 %t +} diff --git a/runtime/native/gl.ludic b/runtime/native/gl.ludic new file mode 100644 index 00000000..d22d2cf9 --- /dev/null +++ b/runtime/native/gl.ludic @@ -0,0 +1,282 @@ +# ============================================================================ +# gl.ludic — Gl.*: OpenGL for Ludic. +# +# The whole OpenGL 4.1 core API is available as Gl.(...) — every +# entry point of the platform gl3.h is bound in gl_api.ludic (generated), with +# every GL_* constant. float/double parameters take `fixed`; buffers are the raw +# `bytes`/`words` pointers Ludic already has, and pixel/vertex data is uploaded +# from them as-is. This file adds the small amount of glue the API needs to be +# usable from a game: a context on the window (or an offscreen one headless), +# the swap, a screenshot, shader/program helpers, and IEEE float helpers so a +# program can fill a vertex buffer with real floats from its Q16.16 math. +# +# Windowed: the NSOpenGLContext is attached to the existing LudicView (cocoa.ll) +# at the display's backing resolution. Headless: a CGL context with no drawable +# (gl.ll) and a framebuffer object that stands in for the screen, so the same +# program renders and screenshots byte-identically under the test harness. +# ============================================================================ + +import "gl_api.ludic" + +# ---- native glue (cocoa.ll / gl.ll) ------------------------------------------- +extern function win_gl_attach() -> int = "win_gl_attach" +extern function win_gl_resize(w: int, h: int) = "win_gl_resize" +extern function win_gl_swap() = "win_gl_swap" +extern function win_gl_scale() -> int = "win_gl_scale" +extern function win_gl_swap_interval(n: int) = "win_gl_swap_interval" +extern function win_gl_drawable(out: pointer) = "win_gl_drawable" +extern function win_gl_update() = "win_gl_update" +extern function win_gl_retina(on: int) = "win_gl_retina" +extern function win_toggle_fullscreen() = "win_toggle_fullscreen" +extern function cgl_offscreen() -> int = "cgl_offscreen" +# wall clock in microseconds — the only sub-second clock available to a Ludic program +extern function gl_now_us() -> long = "gl_now_us" +extern function fx_to_f32(fx: fixed) -> int = "fx_to_f32" +extern function f32_to_fx(bits: int) -> fixed = "f32_to_fx" +extern function mem_off(p: pointer, off: int) -> pointer = "mem_off" +extern function mem_get_i32(p: pointer, off: int) -> int = "mem_get_i32" +extern function mem_put_i32(p: pointer, off: int, v: int) = "mem_put_i32" +extern function mem_get_u16(p: pointer, off: int) -> int = "mem_get_u16" +extern function mem_put_u16(p: pointer, off: int, v: int) = "mem_put_u16" +extern function mem_get_u8(p: pointer, off: int) -> int = "mem_get_u8" +extern function mem_put_u8(p: pointer, off: int, v: int) = "mem_put_u8" +extern function mem_get_f32(p: pointer, i: int) -> fixed = "mem_get_f32" +extern function mem_put_f32(p: pointer, i: int, v: fixed) = "mem_put_f32" +extern function mem_get_f32_bits(p: pointer, i: int) -> int = "mem_get_f32_bits" +extern function mem_put_f32_bits(p: pointer, i: int, bits: int) = "mem_put_f32_bits" +extern function mem_copy(dst: pointer, src: pointer, n: int) = "mem_copy" +extern function mem_set(dst: pointer, v: int, n: int) = "mem_set" +# IEEE-754 single precision, carried as its bit pattern in an int +extern function f_add(a: int, b: int) -> int = "f_add" +extern function f_sub(a: int, b: int) -> int = "f_sub" +extern function f_mul(a: int, b: int) -> int = "f_mul" +extern function f_div(a: int, b: int) -> int = "f_div" +extern function f_neg(a: int) -> int = "f_neg" +extern function f_sqrt(a: int) -> int = "f_sqrt" +extern function f_abs(a: int) -> int = "f_abs" +extern function f_sin(a: int) -> int = "f_sin" +extern function f_cos(a: int) -> int = "f_cos" +extern function f_tan(a: int) -> int = "f_tan" +extern function f_atan2(a: int, b: int) -> int = "f_atan2" +extern function f_pow(a: int, b: int) -> int = "f_pow" +extern function f_exp(a: int) -> int = "f_exp" +extern function f_log(a: int) -> int = "f_log" +extern function f_floor(a: int) -> int = "f_floor" +extern function f_mod(a: int, b: int) -> int = "f_mod" +extern function f_ldexp(a: int, e: int) -> int = "f_ldexp" +extern function f_min(a: int, b: int) -> int = "f_min" +extern function f_max(a: int, b: int) -> int = "f_max" +extern function f_lt(a: int, b: int) -> int = "f_lt" +extern function f_from_int(a: int) -> int = "f_from_int" +extern function f_to_int(a: int) -> int = "f_to_int" + +# ---- state -------------------------------------------------------------------- +var gl_is_open: bool = false +var gl_w: int = 0 # drawable width, in pixels +var gl_h: int = 0 +var gl_scale: int = 1 # backing pixels per window point +var gl_screen: int = 0 # the framebuffer that is "the screen" (an FBO headless) +var gl_ids: words = null # one-word scratch for glGen*/glGet* + +function gl_scratch() -> words { + if gl_ids == null { gl_ids = words(4) } + return gl_ids +} + +# Open a GL 4.1 core context on a w x h (points) window titled `title`; headless, +# an offscreen context with a w x h framebuffer standing in for the screen. +function gl_open(width: int, height: int, title: pointer) -> bool { + if gl_is_open { return true } + if is_windowed() { + if win_gl_attach() == 0 { + win_open(width, height, 1, title) # a plain program: no window yet + if win_gl_attach() == 0 { return false } + } + win_gl_resize(width, height) + gl_scale = win_gl_scale() + gl_w = width * gl_scale + gl_h = height * gl_scale + gl_screen = 0 + } else { + if cgl_offscreen() == 0 { return false } + gl_scale = 1 + gl_w = width + gl_h = height + gl_screen = gl_make_screen_fbo(width, height) + } + gl_bind_framebuffer(GL_FRAMEBUFFER, gl_screen) + gl_viewport(0, 0, gl_w, gl_h) + gl_is_open = true + return true +} + +function gl_make_screen_fbo(w: int, h: int) -> int { + let ids = gl_scratch() + gl_gen_framebuffers(1, ids) + let fbo = ids[0] + gl_bind_framebuffer(GL_FRAMEBUFFER, fbo) + gl_gen_textures(1, ids) + let tex = ids[0] + gl_bind_texture(GL_TEXTURE_2D, tex) + gl_tex_image2d(GL_TEXTURE_2D, 0, GL_RGBA8, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, null) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) + gl_tex_parameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) + gl_framebuffer_texture2d(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0) + gl_gen_renderbuffers(1, ids) + let rb = ids[0] + gl_bind_renderbuffer(GL_RENDERBUFFER, rb) + gl_renderbuffer_storage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, w, h) + gl_framebuffer_renderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rb) + return fbo +} + +# Did the drawable change size (a window drag, full screen, a Retina switch)? Then +# gl_w / gl_h follow it and the caller rebuilds its screen-sized targets. +var gl_size_buf: words = null +function gl_resize_check() -> bool { + if not is_windowed() or not gl_is_open { return false } + if gl_size_buf == null { gl_size_buf = words(4) } + win_gl_drawable(gl_size_buf) + let w = gl_size_buf[0]; let h = gl_size_buf[1] + if w <= 0 or h <= 0 { return false } + if w == gl_w and h == gl_h { return false } + win_gl_update() + gl_w = w; gl_h = h + gl_scale = win_gl_scale() + gl_viewport(0, 0, gl_w, gl_h) + return true +} +function gl_set_window(w: int, h: int) -> void { if is_windowed() { win_gl_resize(w, h) } } +function gl_toggle_fullscreen() -> void { if is_windowed() { win_toggle_fullscreen() } } +function gl_set_retina(on: bool) -> void { if is_windowed() { var v = 0; if on { v = 1 }; win_gl_retina(v) } } +# vsync on (1, the default) or off (0); headless has nothing to sync to +function gl_vsync(n: int) -> void { if is_windowed() { win_gl_swap_interval(n) } } +function gl_width() -> int { return gl_w } +function gl_height() -> int { return gl_h } +function gl_screen_fbo() -> int { return gl_screen } +function gl_pixel_scale() -> int { return gl_scale } + +# Present the frame (vsync'd flushBuffer); headless, just finish the GPU work. +function gl_swap() -> void { + if is_windowed() { win_gl_swap() } + else { gl_finish() } +} + +# Write what is on the screen framebuffer to a binary PPM (call before Gl.swap). +function gl_screenshot(path: pointer) -> bool { + let w = gl_w + let h = gl_h + let f = file_open(path, "wb") + if f == null { return false } + let buf = bytes(w * h * 3) + gl_bind_framebuffer(GL_READ_FRAMEBUFFER, gl_screen) + gl_pixel_storei(GL_PACK_ALIGNMENT, 1) + gl_read_pixels(0, 0, w, h, GL_RGB, GL_UNSIGNED_BYTE, buf) + let hdr = `P6\n{w} {h}\n255\n` + file_write(f, hdr, len(hdr)) + var y = h - 1 + while y >= 0 { + file_write(f, mem_off(buf, y * w * 3), w * 3) + y -= 1 + } + file_close(f) + free(buf) + return true +} + +# Print any pending GL error under a tag; returns the error code (0 = none). +function gl_check(tag: pointer) -> int { + let e = gl_get_error() + if e != 0 { print(`gl error {e} at {tag}`) } + return e +} + +# ---- shaders -------------------------------------------------------------------- +var gl_log_buf: string = null + +# Compile one shader stage from source; 0 (and the info log on stdout) on failure. +function gl_shader(kind: int, src: pointer) -> int { + let id = gl_create_shader(kind) + var srcs: pointers = bytes(8) + srcs[0] = src + gl_shader_source(id, 1, srcs, null) + gl_compile_shader(id) + let ids = gl_scratch() + gl_get_shaderiv(id, GL_COMPILE_STATUS, ids) + if ids[0] == 0 { + if gl_log_buf == null { gl_log_buf = bytes(8192) } + gl_get_shader_info_log(id, 8191, null, gl_log_buf) + print("shader compile failed:") + print(gl_log_buf) + gl_delete_shader(id) + return 0 + } + return id +} + +# Link a program from a vertex + fragment source pair; 0 on failure. +function gl_program(vs: pointer, fs: pointer) -> int { + return gl_program5(vs, null, null, null, fs) +} + +# Link a program from up to five stages (null = stage absent). +function gl_program5(vs: pointer, tcs: pointer, tes: pointer, gs: pointer, fs: pointer) -> int { + let prog = gl_create_program() + var ok = true + if vs != null { let s = gl_shader(GL_VERTEX_SHADER, vs); if s == 0 { ok = false } else { gl_attach_shader(prog, s) } } + if tcs != null { let s = gl_shader(GL_TESS_CONTROL_SHADER, tcs); if s == 0 { ok = false } else { gl_attach_shader(prog, s) } } + if tes != null { let s = gl_shader(GL_TESS_EVALUATION_SHADER, tes); if s == 0 { ok = false } else { gl_attach_shader(prog, s) } } + if gs != null { let s = gl_shader(GL_GEOMETRY_SHADER, gs); if s == 0 { ok = false } else { gl_attach_shader(prog, s) } } + if fs != null { let s = gl_shader(GL_FRAGMENT_SHADER, fs); if s == 0 { ok = false } else { gl_attach_shader(prog, s) } } + if not ok { gl_delete_program(prog); return 0 } + gl_link_program(prog) + let ids = gl_scratch() + gl_get_programiv(prog, GL_LINK_STATUS, ids) + if ids[0] == 0 { + if gl_log_buf == null { gl_log_buf = bytes(8192) } + gl_get_program_info_log(prog, 8191, null, gl_log_buf) + print("program link failed:") + print(gl_log_buf) + gl_delete_program(prog) + return 0 + } + return prog +} + +function gl_uniform(prog: int, name: pointer) -> int { return gl_get_uniform_location(prog, name) } + +# ---- buffers of floats ------------------------------------------------------------ +# A float buffer is plain memory: n IEEE floats, filled from fixed (Gl.put) or +# from float bits (Gl.put_bits), uploaded with Gl.buffer_data(…, Gl.bytes_of(n), buf, …). +function gl_floats(n: int) -> pointer { return bytes(n * 4) } +function gl_bytes_of(n: int) -> int { return n * 4 } +function gl_put(buf: pointer, i: int, v: fixed) -> void { mem_put_f32(buf, i, v) } +function gl_get(buf: pointer, i: int) -> fixed { return mem_get_f32(buf, i) } +function gl_put_bits(buf: pointer, i: int, bits: int) -> void { mem_put_f32_bits(buf, i, bits) } +function gl_get_bits(buf: pointer, i: int) -> int { return mem_get_f32_bits(buf, i) } +function gl_ptr(buf: pointer, byte_offset: int) -> pointer { return mem_off(buf, byte_offset) } +function gl_f32(v: fixed) -> int { return fx_to_f32(v) } +function gl_fixed(bits: int) -> fixed { return f32_to_fx(bits) } + +# One VAO, one VBO helper: create a vertex array object and return it, bound. +function gl_vao() -> int { + let ids = gl_scratch() + gl_gen_vertex_arrays(1, ids) + gl_bind_vertex_array(ids[0]) + return ids[0] +} +function gl_buffer() -> int { + let ids = gl_scratch() + gl_gen_buffers(1, ids) + return ids[0] +} +function gl_texture() -> int { + let ids = gl_scratch() + gl_gen_textures(1, ids) + return ids[0] +} +function gl_framebuffer() -> int { + let ids = gl_scratch() + gl_gen_framebuffers(1, ids) + return ids[0] +} diff --git a/runtime/native/gl_api.ludic b/runtime/native/gl_api.ludic new file mode 100644 index 00000000..3b3fdcdd --- /dev/null +++ b/runtime/native/gl_api.ludic @@ -0,0 +1,1387 @@ +# ============================================================================ +# gl_api.ludic — the OpenGL 4.1 core API, bound for Ludic. GENERATED by +# `ludic-dev glgen` from the platform gl3.h: every entry point and every GL_* constant. +# Do not edit by hand; regenerate. float/double parameters take `fixed`; the IR +# thunks in runtime/native/gl.ll (also generated) convert at the C boundary. +# ============================================================================ + +const GL_DEPTH_BUFFER_BIT: int = 0x00000100 +const GL_STENCIL_BUFFER_BIT: int = 0x00000400 +const GL_COLOR_BUFFER_BIT: int = 0x00004000 +const GL_FALSE: int = 0 +const GL_TRUE: int = 1 +const GL_POINTS: int = 0x0000 +const GL_LINES: int = 0x0001 +const GL_LINE_LOOP: int = 0x0002 +const GL_LINE_STRIP: int = 0x0003 +const GL_TRIANGLES: int = 0x0004 +const GL_TRIANGLE_STRIP: int = 0x0005 +const GL_TRIANGLE_FAN: int = 0x0006 +const GL_NEVER: int = 0x0200 +const GL_LESS: int = 0x0201 +const GL_EQUAL: int = 0x0202 +const GL_LEQUAL: int = 0x0203 +const GL_GREATER: int = 0x0204 +const GL_NOTEQUAL: int = 0x0205 +const GL_GEQUAL: int = 0x0206 +const GL_ALWAYS: int = 0x0207 +const GL_ZERO: int = 0 +const GL_ONE: int = 1 +const GL_SRC_COLOR: int = 0x0300 +const GL_ONE_MINUS_SRC_COLOR: int = 0x0301 +const GL_SRC_ALPHA: int = 0x0302 +const GL_ONE_MINUS_SRC_ALPHA: int = 0x0303 +const GL_DST_ALPHA: int = 0x0304 +const GL_ONE_MINUS_DST_ALPHA: int = 0x0305 +const GL_DST_COLOR: int = 0x0306 +const GL_ONE_MINUS_DST_COLOR: int = 0x0307 +const GL_SRC_ALPHA_SATURATE: int = 0x0308 +const GL_NONE: int = 0 +const GL_FRONT_LEFT: int = 0x0400 +const GL_FRONT_RIGHT: int = 0x0401 +const GL_BACK_LEFT: int = 0x0402 +const GL_BACK_RIGHT: int = 0x0403 +const GL_FRONT: int = 0x0404 +const GL_BACK: int = 0x0405 +const GL_LEFT: int = 0x0406 +const GL_RIGHT: int = 0x0407 +const GL_FRONT_AND_BACK: int = 0x0408 +const GL_NO_ERROR: int = 0 +const GL_INVALID_ENUM: int = 0x0500 +const GL_INVALID_VALUE: int = 0x0501 +const GL_INVALID_OPERATION: int = 0x0502 +const GL_OUT_OF_MEMORY: int = 0x0505 +const GL_CW: int = 0x0900 +const GL_CCW: int = 0x0901 +const GL_POINT_SIZE: int = 0x0B11 +const GL_POINT_SIZE_RANGE: int = 0x0B12 +const GL_POINT_SIZE_GRANULARITY: int = 0x0B13 +const GL_LINE_SMOOTH: int = 0x0B20 +const GL_LINE_WIDTH: int = 0x0B21 +const GL_LINE_WIDTH_RANGE: int = 0x0B22 +const GL_LINE_WIDTH_GRANULARITY: int = 0x0B23 +const GL_POLYGON_MODE: int = 0x0B40 +const GL_POLYGON_SMOOTH: int = 0x0B41 +const GL_CULL_FACE: int = 0x0B44 +const GL_CULL_FACE_MODE: int = 0x0B45 +const GL_FRONT_FACE: int = 0x0B46 +const GL_DEPTH_RANGE: int = 0x0B70 +const GL_DEPTH_TEST: int = 0x0B71 +const GL_DEPTH_WRITEMASK: int = 0x0B72 +const GL_DEPTH_CLEAR_VALUE: int = 0x0B73 +const GL_DEPTH_FUNC: int = 0x0B74 +const GL_STENCIL_TEST: int = 0x0B90 +const GL_STENCIL_CLEAR_VALUE: int = 0x0B91 +const GL_STENCIL_FUNC: int = 0x0B92 +const GL_STENCIL_VALUE_MASK: int = 0x0B93 +const GL_STENCIL_FAIL: int = 0x0B94 +const GL_STENCIL_PASS_DEPTH_FAIL: int = 0x0B95 +const GL_STENCIL_PASS_DEPTH_PASS: int = 0x0B96 +const GL_STENCIL_REF: int = 0x0B97 +const GL_STENCIL_WRITEMASK: int = 0x0B98 +const GL_VIEWPORT: int = 0x0BA2 +const GL_DITHER: int = 0x0BD0 +const GL_BLEND_DST: int = 0x0BE0 +const GL_BLEND_SRC: int = 0x0BE1 +const GL_BLEND: int = 0x0BE2 +const GL_LOGIC_OP_MODE: int = 0x0BF0 +const GL_COLOR_LOGIC_OP: int = 0x0BF2 +const GL_DRAW_BUFFER: int = 0x0C01 +const GL_READ_BUFFER: int = 0x0C02 +const GL_SCISSOR_BOX: int = 0x0C10 +const GL_SCISSOR_TEST: int = 0x0C11 +const GL_COLOR_CLEAR_VALUE: int = 0x0C22 +const GL_COLOR_WRITEMASK: int = 0x0C23 +const GL_DOUBLEBUFFER: int = 0x0C32 +const GL_STEREO: int = 0x0C33 +const GL_LINE_SMOOTH_HINT: int = 0x0C52 +const GL_POLYGON_SMOOTH_HINT: int = 0x0C53 +const GL_UNPACK_SWAP_BYTES: int = 0x0CF0 +const GL_UNPACK_LSB_FIRST: int = 0x0CF1 +const GL_UNPACK_ROW_LENGTH: int = 0x0CF2 +const GL_UNPACK_SKIP_ROWS: int = 0x0CF3 +const GL_UNPACK_SKIP_PIXELS: int = 0x0CF4 +const GL_UNPACK_ALIGNMENT: int = 0x0CF5 +const GL_PACK_SWAP_BYTES: int = 0x0D00 +const GL_PACK_LSB_FIRST: int = 0x0D01 +const GL_PACK_ROW_LENGTH: int = 0x0D02 +const GL_PACK_SKIP_ROWS: int = 0x0D03 +const GL_PACK_SKIP_PIXELS: int = 0x0D04 +const GL_PACK_ALIGNMENT: int = 0x0D05 +const GL_MAX_TEXTURE_SIZE: int = 0x0D33 +const GL_MAX_VIEWPORT_DIMS: int = 0x0D3A +const GL_SUBPIXEL_BITS: int = 0x0D50 +const GL_TEXTURE_1D: int = 0x0DE0 +const GL_TEXTURE_2D: int = 0x0DE1 +const GL_POLYGON_OFFSET_UNITS: int = 0x2A00 +const GL_POLYGON_OFFSET_POINT: int = 0x2A01 +const GL_POLYGON_OFFSET_LINE: int = 0x2A02 +const GL_POLYGON_OFFSET_FILL: int = 0x8037 +const GL_POLYGON_OFFSET_FACTOR: int = 0x8038 +const GL_TEXTURE_BINDING_1D: int = 0x8068 +const GL_TEXTURE_BINDING_2D: int = 0x8069 +const GL_TEXTURE_WIDTH: int = 0x1000 +const GL_TEXTURE_HEIGHT: int = 0x1001 +const GL_TEXTURE_INTERNAL_FORMAT: int = 0x1003 +const GL_TEXTURE_BORDER_COLOR: int = 0x1004 +const GL_TEXTURE_RED_SIZE: int = 0x805C +const GL_TEXTURE_GREEN_SIZE: int = 0x805D +const GL_TEXTURE_BLUE_SIZE: int = 0x805E +const GL_TEXTURE_ALPHA_SIZE: int = 0x805F +const GL_DONT_CARE: int = 0x1100 +const GL_FASTEST: int = 0x1101 +const GL_NICEST: int = 0x1102 +const GL_BYTE: int = 0x1400 +const GL_UNSIGNED_BYTE: int = 0x1401 +const GL_SHORT: int = 0x1402 +const GL_UNSIGNED_SHORT: int = 0x1403 +const GL_INT: int = 0x1404 +const GL_UNSIGNED_INT: int = 0x1405 +const GL_FLOAT: int = 0x1406 +const GL_DOUBLE: int = 0x140A +const GL_CLEAR: int = 0x1500 +const GL_AND: int = 0x1501 +const GL_AND_REVERSE: int = 0x1502 +const GL_COPY: int = 0x1503 +const GL_AND_INVERTED: int = 0x1504 +const GL_NOOP: int = 0x1505 +const GL_XOR: int = 0x1506 +const GL_OR: int = 0x1507 +const GL_NOR: int = 0x1508 +const GL_EQUIV: int = 0x1509 +const GL_INVERT: int = 0x150A +const GL_OR_REVERSE: int = 0x150B +const GL_COPY_INVERTED: int = 0x150C +const GL_OR_INVERTED: int = 0x150D +const GL_NAND: int = 0x150E +const GL_SET: int = 0x150F +const GL_TEXTURE: int = 0x1702 +const GL_COLOR: int = 0x1800 +const GL_DEPTH: int = 0x1801 +const GL_STENCIL: int = 0x1802 +const GL_STENCIL_INDEX: int = 0x1901 +const GL_DEPTH_COMPONENT: int = 0x1902 +const GL_RED: int = 0x1903 +const GL_GREEN: int = 0x1904 +const GL_BLUE: int = 0x1905 +const GL_ALPHA: int = 0x1906 +const GL_RGB: int = 0x1907 +const GL_RGBA: int = 0x1908 +const GL_POINT: int = 0x1B00 +const GL_LINE: int = 0x1B01 +const GL_FILL: int = 0x1B02 +const GL_KEEP: int = 0x1E00 +const GL_REPLACE: int = 0x1E01 +const GL_INCR: int = 0x1E02 +const GL_DECR: int = 0x1E03 +const GL_VENDOR: int = 0x1F00 +const GL_RENDERER: int = 0x1F01 +const GL_VERSION: int = 0x1F02 +const GL_EXTENSIONS: int = 0x1F03 +const GL_NEAREST: int = 0x2600 +const GL_LINEAR: int = 0x2601 +const GL_NEAREST_MIPMAP_NEAREST: int = 0x2700 +const GL_LINEAR_MIPMAP_NEAREST: int = 0x2701 +const GL_NEAREST_MIPMAP_LINEAR: int = 0x2702 +const GL_LINEAR_MIPMAP_LINEAR: int = 0x2703 +const GL_TEXTURE_MAG_FILTER: int = 0x2800 +const GL_TEXTURE_MIN_FILTER: int = 0x2801 +const GL_TEXTURE_WRAP_S: int = 0x2802 +const GL_TEXTURE_WRAP_T: int = 0x2803 +const GL_PROXY_TEXTURE_1D: int = 0x8063 +const GL_PROXY_TEXTURE_2D: int = 0x8064 +const GL_REPEAT: int = 0x2901 +const GL_R3_G3_B2: int = 0x2A10 +const GL_RGB4: int = 0x804F +const GL_RGB5: int = 0x8050 +const GL_RGB8: int = 0x8051 +const GL_RGB10: int = 0x8052 +const GL_RGB12: int = 0x8053 +const GL_RGB16: int = 0x8054 +const GL_RGBA2: int = 0x8055 +const GL_RGBA4: int = 0x8056 +const GL_RGB5_A1: int = 0x8057 +const GL_RGBA8: int = 0x8058 +const GL_RGB10_A2: int = 0x8059 +const GL_RGBA12: int = 0x805A +const GL_RGBA16: int = 0x805B +const GL_UNSIGNED_BYTE_3_3_2: int = 0x8032 +const GL_UNSIGNED_SHORT_4_4_4_4: int = 0x8033 +const GL_UNSIGNED_SHORT_5_5_5_1: int = 0x8034 +const GL_UNSIGNED_INT_8_8_8_8: int = 0x8035 +const GL_UNSIGNED_INT_10_10_10_2: int = 0x8036 +const GL_TEXTURE_BINDING_3D: int = 0x806A +const GL_PACK_SKIP_IMAGES: int = 0x806B +const GL_PACK_IMAGE_HEIGHT: int = 0x806C +const GL_UNPACK_SKIP_IMAGES: int = 0x806D +const GL_UNPACK_IMAGE_HEIGHT: int = 0x806E +const GL_TEXTURE_3D: int = 0x806F +const GL_PROXY_TEXTURE_3D: int = 0x8070 +const GL_TEXTURE_DEPTH: int = 0x8071 +const GL_TEXTURE_WRAP_R: int = 0x8072 +const GL_MAX_3D_TEXTURE_SIZE: int = 0x8073 +const GL_UNSIGNED_BYTE_2_3_3_REV: int = 0x8362 +const GL_UNSIGNED_SHORT_5_6_5: int = 0x8363 +const GL_UNSIGNED_SHORT_5_6_5_REV: int = 0x8364 +const GL_UNSIGNED_SHORT_4_4_4_4_REV: int = 0x8365 +const GL_UNSIGNED_SHORT_1_5_5_5_REV: int = 0x8366 +const GL_UNSIGNED_INT_8_8_8_8_REV: int = 0x8367 +const GL_UNSIGNED_INT_2_10_10_10_REV: int = 0x8368 +const GL_BGR: int = 0x80E0 +const GL_BGRA: int = 0x80E1 +const GL_MAX_ELEMENTS_VERTICES: int = 0x80E8 +const GL_MAX_ELEMENTS_INDICES: int = 0x80E9 +const GL_CLAMP_TO_EDGE: int = 0x812F +const GL_TEXTURE_MIN_LOD: int = 0x813A +const GL_TEXTURE_MAX_LOD: int = 0x813B +const GL_TEXTURE_BASE_LEVEL: int = 0x813C +const GL_TEXTURE_MAX_LEVEL: int = 0x813D +const GL_SMOOTH_POINT_SIZE_RANGE: int = 0x0B12 +const GL_SMOOTH_POINT_SIZE_GRANULARITY: int = 0x0B13 +const GL_SMOOTH_LINE_WIDTH_RANGE: int = 0x0B22 +const GL_SMOOTH_LINE_WIDTH_GRANULARITY: int = 0x0B23 +const GL_ALIASED_LINE_WIDTH_RANGE: int = 0x846E +const GL_CONSTANT_COLOR: int = 0x8001 +const GL_ONE_MINUS_CONSTANT_COLOR: int = 0x8002 +const GL_CONSTANT_ALPHA: int = 0x8003 +const GL_ONE_MINUS_CONSTANT_ALPHA: int = 0x8004 +const GL_BLEND_COLOR: int = 0x8005 +const GL_FUNC_ADD: int = 0x8006 +const GL_MIN: int = 0x8007 +const GL_MAX: int = 0x8008 +const GL_BLEND_EQUATION: int = 0x8009 +const GL_FUNC_SUBTRACT: int = 0x800A +const GL_FUNC_REVERSE_SUBTRACT: int = 0x800B +const GL_TEXTURE0: int = 0x84C0 +const GL_TEXTURE1: int = 0x84C1 +const GL_TEXTURE2: int = 0x84C2 +const GL_TEXTURE3: int = 0x84C3 +const GL_TEXTURE4: int = 0x84C4 +const GL_TEXTURE5: int = 0x84C5 +const GL_TEXTURE6: int = 0x84C6 +const GL_TEXTURE7: int = 0x84C7 +const GL_TEXTURE8: int = 0x84C8 +const GL_TEXTURE9: int = 0x84C9 +const GL_TEXTURE10: int = 0x84CA +const GL_TEXTURE11: int = 0x84CB +const GL_TEXTURE12: int = 0x84CC +const GL_TEXTURE13: int = 0x84CD +const GL_TEXTURE14: int = 0x84CE +const GL_TEXTURE15: int = 0x84CF +const GL_TEXTURE16: int = 0x84D0 +const GL_TEXTURE17: int = 0x84D1 +const GL_TEXTURE18: int = 0x84D2 +const GL_TEXTURE19: int = 0x84D3 +const GL_TEXTURE20: int = 0x84D4 +const GL_TEXTURE21: int = 0x84D5 +const GL_TEXTURE22: int = 0x84D6 +const GL_TEXTURE23: int = 0x84D7 +const GL_TEXTURE24: int = 0x84D8 +const GL_TEXTURE25: int = 0x84D9 +const GL_TEXTURE26: int = 0x84DA +const GL_TEXTURE27: int = 0x84DB +const GL_TEXTURE28: int = 0x84DC +const GL_TEXTURE29: int = 0x84DD +const GL_TEXTURE30: int = 0x84DE +const GL_TEXTURE31: int = 0x84DF +const GL_ACTIVE_TEXTURE: int = 0x84E0 +const GL_MULTISAMPLE: int = 0x809D +const GL_SAMPLE_ALPHA_TO_COVERAGE: int = 0x809E +const GL_SAMPLE_ALPHA_TO_ONE: int = 0x809F +const GL_SAMPLE_COVERAGE: int = 0x80A0 +const GL_SAMPLE_BUFFERS: int = 0x80A8 +const GL_SAMPLES: int = 0x80A9 +const GL_SAMPLE_COVERAGE_VALUE: int = 0x80AA +const GL_SAMPLE_COVERAGE_INVERT: int = 0x80AB +const GL_TEXTURE_CUBE_MAP: int = 0x8513 +const GL_TEXTURE_BINDING_CUBE_MAP: int = 0x8514 +const GL_TEXTURE_CUBE_MAP_POSITIVE_X: int = 0x8515 +const GL_TEXTURE_CUBE_MAP_NEGATIVE_X: int = 0x8516 +const GL_TEXTURE_CUBE_MAP_POSITIVE_Y: int = 0x8517 +const GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: int = 0x8518 +const GL_TEXTURE_CUBE_MAP_POSITIVE_Z: int = 0x8519 +const GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: int = 0x851A +const GL_PROXY_TEXTURE_CUBE_MAP: int = 0x851B +const GL_MAX_CUBE_MAP_TEXTURE_SIZE: int = 0x851C +const GL_COMPRESSED_RGB: int = 0x84ED +const GL_COMPRESSED_RGBA: int = 0x84EE +const GL_TEXTURE_COMPRESSION_HINT: int = 0x84EF +const GL_TEXTURE_COMPRESSED_IMAGE_SIZE: int = 0x86A0 +const GL_TEXTURE_COMPRESSED: int = 0x86A1 +const GL_NUM_COMPRESSED_TEXTURE_FORMATS: int = 0x86A2 +const GL_COMPRESSED_TEXTURE_FORMATS: int = 0x86A3 +const GL_CLAMP_TO_BORDER: int = 0x812D +const GL_BLEND_DST_RGB: int = 0x80C8 +const GL_BLEND_SRC_RGB: int = 0x80C9 +const GL_BLEND_DST_ALPHA: int = 0x80CA +const GL_BLEND_SRC_ALPHA: int = 0x80CB +const GL_POINT_FADE_THRESHOLD_SIZE: int = 0x8128 +const GL_DEPTH_COMPONENT16: int = 0x81A5 +const GL_DEPTH_COMPONENT24: int = 0x81A6 +const GL_DEPTH_COMPONENT32: int = 0x81A7 +const GL_MIRRORED_REPEAT: int = 0x8370 +const GL_MAX_TEXTURE_LOD_BIAS: int = 0x84FD +const GL_TEXTURE_LOD_BIAS: int = 0x8501 +const GL_INCR_WRAP: int = 0x8507 +const GL_DECR_WRAP: int = 0x8508 +const GL_TEXTURE_DEPTH_SIZE: int = 0x884A +const GL_TEXTURE_COMPARE_MODE: int = 0x884C +const GL_TEXTURE_COMPARE_FUNC: int = 0x884D +const GL_BUFFER_SIZE: int = 0x8764 +const GL_BUFFER_USAGE: int = 0x8765 +const GL_QUERY_COUNTER_BITS: int = 0x8864 +const GL_CURRENT_QUERY: int = 0x8865 +const GL_QUERY_RESULT: int = 0x8866 +const GL_QUERY_RESULT_AVAILABLE: int = 0x8867 +const GL_ARRAY_BUFFER: int = 0x8892 +const GL_ELEMENT_ARRAY_BUFFER: int = 0x8893 +const GL_ARRAY_BUFFER_BINDING: int = 0x8894 +const GL_ELEMENT_ARRAY_BUFFER_BINDING: int = 0x8895 +const GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: int = 0x889F +const GL_READ_ONLY: int = 0x88B8 +const GL_WRITE_ONLY: int = 0x88B9 +const GL_READ_WRITE: int = 0x88BA +const GL_BUFFER_ACCESS: int = 0x88BB +const GL_BUFFER_MAPPED: int = 0x88BC +const GL_BUFFER_MAP_POINTER: int = 0x88BD +const GL_STREAM_DRAW: int = 0x88E0 +const GL_STREAM_READ: int = 0x88E1 +const GL_STREAM_COPY: int = 0x88E2 +const GL_STATIC_DRAW: int = 0x88E4 +const GL_STATIC_READ: int = 0x88E5 +const GL_STATIC_COPY: int = 0x88E6 +const GL_DYNAMIC_DRAW: int = 0x88E8 +const GL_DYNAMIC_READ: int = 0x88E9 +const GL_DYNAMIC_COPY: int = 0x88EA +const GL_SAMPLES_PASSED: int = 0x8914 +const GL_BLEND_EQUATION_RGB: int = 0x8009 +const GL_VERTEX_ATTRIB_ARRAY_ENABLED: int = 0x8622 +const GL_VERTEX_ATTRIB_ARRAY_SIZE: int = 0x8623 +const GL_VERTEX_ATTRIB_ARRAY_STRIDE: int = 0x8624 +const GL_VERTEX_ATTRIB_ARRAY_TYPE: int = 0x8625 +const GL_CURRENT_VERTEX_ATTRIB: int = 0x8626 +const GL_VERTEX_PROGRAM_POINT_SIZE: int = 0x8642 +const GL_VERTEX_ATTRIB_ARRAY_POINTER: int = 0x8645 +const GL_STENCIL_BACK_FUNC: int = 0x8800 +const GL_STENCIL_BACK_FAIL: int = 0x8801 +const GL_STENCIL_BACK_PASS_DEPTH_FAIL: int = 0x8802 +const GL_STENCIL_BACK_PASS_DEPTH_PASS: int = 0x8803 +const GL_MAX_DRAW_BUFFERS: int = 0x8824 +const GL_DRAW_BUFFER0: int = 0x8825 +const GL_DRAW_BUFFER1: int = 0x8826 +const GL_DRAW_BUFFER2: int = 0x8827 +const GL_DRAW_BUFFER3: int = 0x8828 +const GL_DRAW_BUFFER4: int = 0x8829 +const GL_DRAW_BUFFER5: int = 0x882A +const GL_DRAW_BUFFER6: int = 0x882B +const GL_DRAW_BUFFER7: int = 0x882C +const GL_DRAW_BUFFER8: int = 0x882D +const GL_DRAW_BUFFER9: int = 0x882E +const GL_DRAW_BUFFER10: int = 0x882F +const GL_DRAW_BUFFER11: int = 0x8830 +const GL_DRAW_BUFFER12: int = 0x8831 +const GL_DRAW_BUFFER13: int = 0x8832 +const GL_DRAW_BUFFER14: int = 0x8833 +const GL_DRAW_BUFFER15: int = 0x8834 +const GL_BLEND_EQUATION_ALPHA: int = 0x883D +const GL_MAX_VERTEX_ATTRIBS: int = 0x8869 +const GL_VERTEX_ATTRIB_ARRAY_NORMALIZED: int = 0x886A +const GL_MAX_TEXTURE_IMAGE_UNITS: int = 0x8872 +const GL_FRAGMENT_SHADER: int = 0x8B30 +const GL_VERTEX_SHADER: int = 0x8B31 +const GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: int = 0x8B49 +const GL_MAX_VERTEX_UNIFORM_COMPONENTS: int = 0x8B4A +const GL_MAX_VARYING_FLOATS: int = 0x8B4B +const GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: int = 0x8B4C +const GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: int = 0x8B4D +const GL_SHADER_TYPE: int = 0x8B4F +const GL_FLOAT_VEC2: int = 0x8B50 +const GL_FLOAT_VEC3: int = 0x8B51 +const GL_FLOAT_VEC4: int = 0x8B52 +const GL_INT_VEC2: int = 0x8B53 +const GL_INT_VEC3: int = 0x8B54 +const GL_INT_VEC4: int = 0x8B55 +const GL_BOOL: int = 0x8B56 +const GL_BOOL_VEC2: int = 0x8B57 +const GL_BOOL_VEC3: int = 0x8B58 +const GL_BOOL_VEC4: int = 0x8B59 +const GL_FLOAT_MAT2: int = 0x8B5A +const GL_FLOAT_MAT3: int = 0x8B5B +const GL_FLOAT_MAT4: int = 0x8B5C +const GL_SAMPLER_1D: int = 0x8B5D +const GL_SAMPLER_2D: int = 0x8B5E +const GL_SAMPLER_3D: int = 0x8B5F +const GL_SAMPLER_CUBE: int = 0x8B60 +const GL_SAMPLER_1D_SHADOW: int = 0x8B61 +const GL_SAMPLER_2D_SHADOW: int = 0x8B62 +const GL_DELETE_STATUS: int = 0x8B80 +const GL_COMPILE_STATUS: int = 0x8B81 +const GL_LINK_STATUS: int = 0x8B82 +const GL_VALIDATE_STATUS: int = 0x8B83 +const GL_INFO_LOG_LENGTH: int = 0x8B84 +const GL_ATTACHED_SHADERS: int = 0x8B85 +const GL_ACTIVE_UNIFORMS: int = 0x8B86 +const GL_ACTIVE_UNIFORM_MAX_LENGTH: int = 0x8B87 +const GL_SHADER_SOURCE_LENGTH: int = 0x8B88 +const GL_ACTIVE_ATTRIBUTES: int = 0x8B89 +const GL_ACTIVE_ATTRIBUTE_MAX_LENGTH: int = 0x8B8A +const GL_FRAGMENT_SHADER_DERIVATIVE_HINT: int = 0x8B8B +const GL_SHADING_LANGUAGE_VERSION: int = 0x8B8C +const GL_CURRENT_PROGRAM: int = 0x8B8D +const GL_POINT_SPRITE_COORD_ORIGIN: int = 0x8CA0 +const GL_LOWER_LEFT: int = 0x8CA1 +const GL_UPPER_LEFT: int = 0x8CA2 +const GL_STENCIL_BACK_REF: int = 0x8CA3 +const GL_STENCIL_BACK_VALUE_MASK: int = 0x8CA4 +const GL_STENCIL_BACK_WRITEMASK: int = 0x8CA5 +const GL_PIXEL_PACK_BUFFER: int = 0x88EB +const GL_PIXEL_UNPACK_BUFFER: int = 0x88EC +const GL_PIXEL_PACK_BUFFER_BINDING: int = 0x88ED +const GL_PIXEL_UNPACK_BUFFER_BINDING: int = 0x88EF +const GL_SRGB: int = 0x8C40 +const GL_SRGB8: int = 0x8C41 +const GL_SRGB_ALPHA: int = 0x8C42 +const GL_SRGB8_ALPHA8: int = 0x8C43 +const GL_COMPRESSED_SRGB: int = 0x8C48 +const GL_COMPRESSED_SRGB_ALPHA: int = 0x8C49 +const GL_COMPARE_REF_TO_TEXTURE: int = 0x884E +const GL_CLIP_DISTANCE0: int = 0x3000 +const GL_CLIP_DISTANCE1: int = 0x3001 +const GL_CLIP_DISTANCE2: int = 0x3002 +const GL_CLIP_DISTANCE3: int = 0x3003 +const GL_CLIP_DISTANCE4: int = 0x3004 +const GL_CLIP_DISTANCE5: int = 0x3005 +const GL_CLIP_DISTANCE6: int = 0x3006 +const GL_CLIP_DISTANCE7: int = 0x3007 +const GL_MAX_CLIP_DISTANCES: int = 0x0D32 +const GL_MAJOR_VERSION: int = 0x821B +const GL_MINOR_VERSION: int = 0x821C +const GL_NUM_EXTENSIONS: int = 0x821D +const GL_CONTEXT_FLAGS: int = 0x821E +const GL_COMPRESSED_RED: int = 0x8225 +const GL_COMPRESSED_RG: int = 0x8226 +const GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT: int = 0x0001 +const GL_RGBA32F: int = 0x8814 +const GL_RGB32F: int = 0x8815 +const GL_RGBA16F: int = 0x881A +const GL_RGB16F: int = 0x881B +const GL_VERTEX_ATTRIB_ARRAY_INTEGER: int = 0x88FD +const GL_MAX_ARRAY_TEXTURE_LAYERS: int = 0x88FF +const GL_MIN_PROGRAM_TEXEL_OFFSET: int = 0x8904 +const GL_MAX_PROGRAM_TEXEL_OFFSET: int = 0x8905 +const GL_CLAMP_READ_COLOR: int = 0x891C +const GL_FIXED_ONLY: int = 0x891D +const GL_MAX_VARYING_COMPONENTS: int = 0x8B4B +const GL_TEXTURE_1D_ARRAY: int = 0x8C18 +const GL_PROXY_TEXTURE_1D_ARRAY: int = 0x8C19 +const GL_TEXTURE_2D_ARRAY: int = 0x8C1A +const GL_PROXY_TEXTURE_2D_ARRAY: int = 0x8C1B +const GL_TEXTURE_BINDING_1D_ARRAY: int = 0x8C1C +const GL_TEXTURE_BINDING_2D_ARRAY: int = 0x8C1D +const GL_R11F_G11F_B10F: int = 0x8C3A +const GL_UNSIGNED_INT_10F_11F_11F_REV: int = 0x8C3B +const GL_RGB9_E5: int = 0x8C3D +const GL_UNSIGNED_INT_5_9_9_9_REV: int = 0x8C3E +const GL_TEXTURE_SHARED_SIZE: int = 0x8C3F +const GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: int = 0x8C76 +const GL_TRANSFORM_FEEDBACK_BUFFER_MODE: int = 0x8C7F +const GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: int = 0x8C80 +const GL_TRANSFORM_FEEDBACK_VARYINGS: int = 0x8C83 +const GL_TRANSFORM_FEEDBACK_BUFFER_START: int = 0x8C84 +const GL_TRANSFORM_FEEDBACK_BUFFER_SIZE: int = 0x8C85 +const GL_PRIMITIVES_GENERATED: int = 0x8C87 +const GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: int = 0x8C88 +const GL_RASTERIZER_DISCARD: int = 0x8C89 +const GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: int = 0x8C8A +const GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: int = 0x8C8B +const GL_INTERLEAVED_ATTRIBS: int = 0x8C8C +const GL_SEPARATE_ATTRIBS: int = 0x8C8D +const GL_TRANSFORM_FEEDBACK_BUFFER: int = 0x8C8E +const GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: int = 0x8C8F +const GL_RGBA32UI: int = 0x8D70 +const GL_RGB32UI: int = 0x8D71 +const GL_RGBA16UI: int = 0x8D76 +const GL_RGB16UI: int = 0x8D77 +const GL_RGBA8UI: int = 0x8D7C +const GL_RGB8UI: int = 0x8D7D +const GL_RGBA32I: int = 0x8D82 +const GL_RGB32I: int = 0x8D83 +const GL_RGBA16I: int = 0x8D88 +const GL_RGB16I: int = 0x8D89 +const GL_RGBA8I: int = 0x8D8E +const GL_RGB8I: int = 0x8D8F +const GL_RED_INTEGER: int = 0x8D94 +const GL_GREEN_INTEGER: int = 0x8D95 +const GL_BLUE_INTEGER: int = 0x8D96 +const GL_RGB_INTEGER: int = 0x8D98 +const GL_RGBA_INTEGER: int = 0x8D99 +const GL_BGR_INTEGER: int = 0x8D9A +const GL_BGRA_INTEGER: int = 0x8D9B +const GL_SAMPLER_1D_ARRAY: int = 0x8DC0 +const GL_SAMPLER_2D_ARRAY: int = 0x8DC1 +const GL_SAMPLER_1D_ARRAY_SHADOW: int = 0x8DC3 +const GL_SAMPLER_2D_ARRAY_SHADOW: int = 0x8DC4 +const GL_SAMPLER_CUBE_SHADOW: int = 0x8DC5 +const GL_UNSIGNED_INT_VEC2: int = 0x8DC6 +const GL_UNSIGNED_INT_VEC3: int = 0x8DC7 +const GL_UNSIGNED_INT_VEC4: int = 0x8DC8 +const GL_INT_SAMPLER_1D: int = 0x8DC9 +const GL_INT_SAMPLER_2D: int = 0x8DCA +const GL_INT_SAMPLER_3D: int = 0x8DCB +const GL_INT_SAMPLER_CUBE: int = 0x8DCC +const GL_INT_SAMPLER_1D_ARRAY: int = 0x8DCE +const GL_INT_SAMPLER_2D_ARRAY: int = 0x8DCF +const GL_UNSIGNED_INT_SAMPLER_1D: int = 0x8DD1 +const GL_UNSIGNED_INT_SAMPLER_2D: int = 0x8DD2 +const GL_UNSIGNED_INT_SAMPLER_3D: int = 0x8DD3 +const GL_UNSIGNED_INT_SAMPLER_CUBE: int = 0x8DD4 +const GL_UNSIGNED_INT_SAMPLER_1D_ARRAY: int = 0x8DD6 +const GL_UNSIGNED_INT_SAMPLER_2D_ARRAY: int = 0x8DD7 +const GL_QUERY_WAIT: int = 0x8E13 +const GL_QUERY_NO_WAIT: int = 0x8E14 +const GL_QUERY_BY_REGION_WAIT: int = 0x8E15 +const GL_QUERY_BY_REGION_NO_WAIT: int = 0x8E16 +const GL_BUFFER_ACCESS_FLAGS: int = 0x911F +const GL_BUFFER_MAP_LENGTH: int = 0x9120 +const GL_BUFFER_MAP_OFFSET: int = 0x9121 +const GL_SAMPLER_2D_RECT: int = 0x8B63 +const GL_SAMPLER_2D_RECT_SHADOW: int = 0x8B64 +const GL_SAMPLER_BUFFER: int = 0x8DC2 +const GL_INT_SAMPLER_2D_RECT: int = 0x8DCD +const GL_INT_SAMPLER_BUFFER: int = 0x8DD0 +const GL_UNSIGNED_INT_SAMPLER_2D_RECT: int = 0x8DD5 +const GL_UNSIGNED_INT_SAMPLER_BUFFER: int = 0x8DD8 +const GL_TEXTURE_BUFFER: int = 0x8C2A +const GL_MAX_TEXTURE_BUFFER_SIZE: int = 0x8C2B +const GL_TEXTURE_BINDING_BUFFER: int = 0x8C2C +const GL_TEXTURE_BUFFER_DATA_STORE_BINDING: int = 0x8C2D +const GL_TEXTURE_RECTANGLE: int = 0x84F5 +const GL_TEXTURE_BINDING_RECTANGLE: int = 0x84F6 +const GL_PROXY_TEXTURE_RECTANGLE: int = 0x84F7 +const GL_MAX_RECTANGLE_TEXTURE_SIZE: int = 0x84F8 +const GL_R8_SNORM: int = 0x8F94 +const GL_RG8_SNORM: int = 0x8F95 +const GL_RGB8_SNORM: int = 0x8F96 +const GL_RGBA8_SNORM: int = 0x8F97 +const GL_R16_SNORM: int = 0x8F98 +const GL_RG16_SNORM: int = 0x8F99 +const GL_RGB16_SNORM: int = 0x8F9A +const GL_RGBA16_SNORM: int = 0x8F9B +const GL_SIGNED_NORMALIZED: int = 0x8F9C +const GL_PRIMITIVE_RESTART: int = 0x8F9D +const GL_PRIMITIVE_RESTART_INDEX: int = 0x8F9E +const GL_CONTEXT_CORE_PROFILE_BIT: int = 0x00000001 +const GL_CONTEXT_COMPATIBILITY_PROFILE_BIT: int = 0x00000002 +const GL_LINES_ADJACENCY: int = 0x000A +const GL_LINE_STRIP_ADJACENCY: int = 0x000B +const GL_TRIANGLES_ADJACENCY: int = 0x000C +const GL_TRIANGLE_STRIP_ADJACENCY: int = 0x000D +const GL_PROGRAM_POINT_SIZE: int = 0x8642 +const GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS: int = 0x8C29 +const GL_FRAMEBUFFER_ATTACHMENT_LAYERED: int = 0x8DA7 +const GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: int = 0x8DA8 +const GL_GEOMETRY_SHADER: int = 0x8DD9 +const GL_GEOMETRY_VERTICES_OUT: int = 0x8916 +const GL_GEOMETRY_INPUT_TYPE: int = 0x8917 +const GL_GEOMETRY_OUTPUT_TYPE: int = 0x8918 +const GL_MAX_GEOMETRY_UNIFORM_COMPONENTS: int = 0x8DDF +const GL_MAX_GEOMETRY_OUTPUT_VERTICES: int = 0x8DE0 +const GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS: int = 0x8DE1 +const GL_MAX_VERTEX_OUTPUT_COMPONENTS: int = 0x9122 +const GL_MAX_GEOMETRY_INPUT_COMPONENTS: int = 0x9123 +const GL_MAX_GEOMETRY_OUTPUT_COMPONENTS: int = 0x9124 +const GL_MAX_FRAGMENT_INPUT_COMPONENTS: int = 0x9125 +const GL_CONTEXT_PROFILE_MASK: int = 0x9126 +const GL_VERTEX_ATTRIB_ARRAY_DIVISOR: int = 0x88FE +const GL_SAMPLE_SHADING: int = 0x8C36 +const GL_MIN_SAMPLE_SHADING_VALUE: int = 0x8C37 +const GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: int = 0x8E5E +const GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: int = 0x8E5F +const GL_TEXTURE_CUBE_MAP_ARRAY: int = 0x9009 +const GL_TEXTURE_BINDING_CUBE_MAP_ARRAY: int = 0x900A +const GL_PROXY_TEXTURE_CUBE_MAP_ARRAY: int = 0x900B +const GL_SAMPLER_CUBE_MAP_ARRAY: int = 0x900C +const GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW: int = 0x900D +const GL_INT_SAMPLER_CUBE_MAP_ARRAY: int = 0x900E +const GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY: int = 0x900F +const GL_DEPTH_COMPONENT32F: int = 0x8CAC +const GL_DEPTH32F_STENCIL8: int = 0x8CAD +const GL_FLOAT_32_UNSIGNED_INT_24_8_REV: int = 0x8DAD +const GL_INVALID_FRAMEBUFFER_OPERATION: int = 0x0506 +const GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING: int = 0x8210 +const GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE: int = 0x8211 +const GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE: int = 0x8212 +const GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE: int = 0x8213 +const GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE: int = 0x8214 +const GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE: int = 0x8215 +const GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE: int = 0x8216 +const GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE: int = 0x8217 +const GL_FRAMEBUFFER_DEFAULT: int = 0x8218 +const GL_FRAMEBUFFER_UNDEFINED: int = 0x8219 +const GL_DEPTH_STENCIL_ATTACHMENT: int = 0x821A +const GL_MAX_RENDERBUFFER_SIZE: int = 0x84E8 +const GL_DEPTH_STENCIL: int = 0x84F9 +const GL_UNSIGNED_INT_24_8: int = 0x84FA +const GL_DEPTH24_STENCIL8: int = 0x88F0 +const GL_TEXTURE_STENCIL_SIZE: int = 0x88F1 +const GL_TEXTURE_RED_TYPE: int = 0x8C10 +const GL_TEXTURE_GREEN_TYPE: int = 0x8C11 +const GL_TEXTURE_BLUE_TYPE: int = 0x8C12 +const GL_TEXTURE_ALPHA_TYPE: int = 0x8C13 +const GL_TEXTURE_DEPTH_TYPE: int = 0x8C16 +const GL_UNSIGNED_NORMALIZED: int = 0x8C17 +const GL_FRAMEBUFFER_BINDING: int = 0x8CA6 +const GL_RENDERBUFFER_BINDING: int = 0x8CA7 +const GL_READ_FRAMEBUFFER: int = 0x8CA8 +const GL_DRAW_FRAMEBUFFER: int = 0x8CA9 +const GL_READ_FRAMEBUFFER_BINDING: int = 0x8CAA +const GL_RENDERBUFFER_SAMPLES: int = 0x8CAB +const GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: int = 0x8CD0 +const GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: int = 0x8CD1 +const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: int = 0x8CD2 +const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: int = 0x8CD3 +const GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: int = 0x8CD4 +const GL_FRAMEBUFFER_COMPLETE: int = 0x8CD5 +const GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: int = 0x8CD6 +const GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: int = 0x8CD7 +const GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: int = 0x8CDB +const GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: int = 0x8CDC +const GL_FRAMEBUFFER_UNSUPPORTED: int = 0x8CDD +const GL_MAX_COLOR_ATTACHMENTS: int = 0x8CDF +const GL_COLOR_ATTACHMENT0: int = 0x8CE0 +const GL_COLOR_ATTACHMENT1: int = 0x8CE1 +const GL_COLOR_ATTACHMENT2: int = 0x8CE2 +const GL_COLOR_ATTACHMENT3: int = 0x8CE3 +const GL_COLOR_ATTACHMENT4: int = 0x8CE4 +const GL_COLOR_ATTACHMENT5: int = 0x8CE5 +const GL_COLOR_ATTACHMENT6: int = 0x8CE6 +const GL_COLOR_ATTACHMENT7: int = 0x8CE7 +const GL_COLOR_ATTACHMENT8: int = 0x8CE8 +const GL_COLOR_ATTACHMENT9: int = 0x8CE9 +const GL_COLOR_ATTACHMENT10: int = 0x8CEA +const GL_COLOR_ATTACHMENT11: int = 0x8CEB +const GL_COLOR_ATTACHMENT12: int = 0x8CEC +const GL_COLOR_ATTACHMENT13: int = 0x8CED +const GL_COLOR_ATTACHMENT14: int = 0x8CEE +const GL_COLOR_ATTACHMENT15: int = 0x8CEF +const GL_DEPTH_ATTACHMENT: int = 0x8D00 +const GL_STENCIL_ATTACHMENT: int = 0x8D20 +const GL_FRAMEBUFFER: int = 0x8D40 +const GL_RENDERBUFFER: int = 0x8D41 +const GL_RENDERBUFFER_WIDTH: int = 0x8D42 +const GL_RENDERBUFFER_HEIGHT: int = 0x8D43 +const GL_RENDERBUFFER_INTERNAL_FORMAT: int = 0x8D44 +const GL_STENCIL_INDEX1: int = 0x8D46 +const GL_STENCIL_INDEX4: int = 0x8D47 +const GL_STENCIL_INDEX8: int = 0x8D48 +const GL_STENCIL_INDEX16: int = 0x8D49 +const GL_RENDERBUFFER_RED_SIZE: int = 0x8D50 +const GL_RENDERBUFFER_GREEN_SIZE: int = 0x8D51 +const GL_RENDERBUFFER_BLUE_SIZE: int = 0x8D52 +const GL_RENDERBUFFER_ALPHA_SIZE: int = 0x8D53 +const GL_RENDERBUFFER_DEPTH_SIZE: int = 0x8D54 +const GL_RENDERBUFFER_STENCIL_SIZE: int = 0x8D55 +const GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: int = 0x8D56 +const GL_MAX_SAMPLES: int = 0x8D57 +const GL_FRAMEBUFFER_SRGB: int = 0x8DB9 +const GL_HALF_FLOAT: int = 0x140B +const GL_MAP_READ_BIT: int = 0x0001 +const GL_MAP_WRITE_BIT: int = 0x0002 +const GL_MAP_INVALIDATE_RANGE_BIT: int = 0x0004 +const GL_MAP_INVALIDATE_BUFFER_BIT: int = 0x0008 +const GL_MAP_FLUSH_EXPLICIT_BIT: int = 0x0010 +const GL_MAP_UNSYNCHRONIZED_BIT: int = 0x0020 +const GL_COMPRESSED_RED_RGTC1: int = 0x8DBB +const GL_COMPRESSED_SIGNED_RED_RGTC1: int = 0x8DBC +const GL_COMPRESSED_RG_RGTC2: int = 0x8DBD +const GL_COMPRESSED_SIGNED_RG_RGTC2: int = 0x8DBE +const GL_RG: int = 0x8227 +const GL_RG_INTEGER: int = 0x8228 +const GL_R8: int = 0x8229 +const GL_R16: int = 0x822A +const GL_RG8: int = 0x822B +const GL_RG16: int = 0x822C +const GL_R16F: int = 0x822D +const GL_R32F: int = 0x822E +const GL_RG16F: int = 0x822F +const GL_RG32F: int = 0x8230 +const GL_R8I: int = 0x8231 +const GL_R8UI: int = 0x8232 +const GL_R16I: int = 0x8233 +const GL_R16UI: int = 0x8234 +const GL_R32I: int = 0x8235 +const GL_R32UI: int = 0x8236 +const GL_RG8I: int = 0x8237 +const GL_RG8UI: int = 0x8238 +const GL_RG16I: int = 0x8239 +const GL_RG16UI: int = 0x823A +const GL_RG32I: int = 0x823B +const GL_RG32UI: int = 0x823C +const GL_VERTEX_ARRAY_BINDING: int = 0x85B5 +const GL_UNIFORM_BUFFER: int = 0x8A11 +const GL_UNIFORM_BUFFER_BINDING: int = 0x8A28 +const GL_UNIFORM_BUFFER_START: int = 0x8A29 +const GL_UNIFORM_BUFFER_SIZE: int = 0x8A2A +const GL_MAX_VERTEX_UNIFORM_BLOCKS: int = 0x8A2B +const GL_MAX_GEOMETRY_UNIFORM_BLOCKS: int = 0x8A2C +const GL_MAX_FRAGMENT_UNIFORM_BLOCKS: int = 0x8A2D +const GL_MAX_COMBINED_UNIFORM_BLOCKS: int = 0x8A2E +const GL_MAX_UNIFORM_BUFFER_BINDINGS: int = 0x8A2F +const GL_MAX_UNIFORM_BLOCK_SIZE: int = 0x8A30 +const GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: int = 0x8A31 +const GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS: int = 0x8A32 +const GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: int = 0x8A33 +const GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: int = 0x8A34 +const GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH: int = 0x8A35 +const GL_ACTIVE_UNIFORM_BLOCKS: int = 0x8A36 +const GL_UNIFORM_TYPE: int = 0x8A37 +const GL_UNIFORM_SIZE: int = 0x8A38 +const GL_UNIFORM_NAME_LENGTH: int = 0x8A39 +const GL_UNIFORM_BLOCK_INDEX: int = 0x8A3A +const GL_UNIFORM_OFFSET: int = 0x8A3B +const GL_UNIFORM_ARRAY_STRIDE: int = 0x8A3C +const GL_UNIFORM_MATRIX_STRIDE: int = 0x8A3D +const GL_UNIFORM_IS_ROW_MAJOR: int = 0x8A3E +const GL_UNIFORM_BLOCK_BINDING: int = 0x8A3F +const GL_UNIFORM_BLOCK_DATA_SIZE: int = 0x8A40 +const GL_UNIFORM_BLOCK_NAME_LENGTH: int = 0x8A41 +const GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS: int = 0x8A42 +const GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: int = 0x8A43 +const GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: int = 0x8A44 +const GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER: int = 0x8A45 +const GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER: int = 0x8A46 +const GL_INVALID_INDEX: int = -1 +const GL_COPY_READ_BUFFER: int = 0x8F36 +const GL_COPY_WRITE_BUFFER: int = 0x8F37 +const GL_DEPTH_CLAMP: int = 0x864F +const GL_FIRST_VERTEX_CONVENTION: int = 0x8E4D +const GL_LAST_VERTEX_CONVENTION: int = 0x8E4E +const GL_PROVOKING_VERTEX: int = 0x8E4F +const GL_TEXTURE_CUBE_MAP_SEAMLESS: int = 0x884F +const GL_MAX_SERVER_WAIT_TIMEOUT: int = 0x9111 +const GL_OBJECT_TYPE: int = 0x9112 +const GL_SYNC_CONDITION: int = 0x9113 +const GL_SYNC_STATUS: int = 0x9114 +const GL_SYNC_FLAGS: int = 0x9115 +const GL_SYNC_FENCE: int = 0x9116 +const GL_SYNC_GPU_COMMANDS_COMPLETE: int = 0x9117 +const GL_UNSIGNALED: int = 0x9118 +const GL_SIGNALED: int = 0x9119 +const GL_ALREADY_SIGNALED: int = 0x911A +const GL_TIMEOUT_EXPIRED: int = 0x911B +const GL_CONDITION_SATISFIED: int = 0x911C +const GL_WAIT_FAILED: int = 0x911D +const GL_SYNC_FLUSH_COMMANDS_BIT: int = 0x00000001 +const GL_TIMEOUT_IGNORED: long = -1 +const GL_SAMPLE_POSITION: int = 0x8E50 +const GL_SAMPLE_MASK: int = 0x8E51 +const GL_SAMPLE_MASK_VALUE: int = 0x8E52 +const GL_MAX_SAMPLE_MASK_WORDS: int = 0x8E59 +const GL_TEXTURE_2D_MULTISAMPLE: int = 0x9100 +const GL_PROXY_TEXTURE_2D_MULTISAMPLE: int = 0x9101 +const GL_TEXTURE_2D_MULTISAMPLE_ARRAY: int = 0x9102 +const GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY: int = 0x9103 +const GL_TEXTURE_BINDING_2D_MULTISAMPLE: int = 0x9104 +const GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY: int = 0x9105 +const GL_TEXTURE_SAMPLES: int = 0x9106 +const GL_TEXTURE_FIXED_SAMPLE_LOCATIONS: int = 0x9107 +const GL_SAMPLER_2D_MULTISAMPLE: int = 0x9108 +const GL_INT_SAMPLER_2D_MULTISAMPLE: int = 0x9109 +const GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE: int = 0x910A +const GL_SAMPLER_2D_MULTISAMPLE_ARRAY: int = 0x910B +const GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: int = 0x910C +const GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY: int = 0x910D +const GL_MAX_COLOR_TEXTURE_SAMPLES: int = 0x910E +const GL_MAX_DEPTH_TEXTURE_SAMPLES: int = 0x910F +const GL_MAX_INTEGER_SAMPLES: int = 0x9110 +const GL_SRC1_COLOR: int = 0x88F9 +const GL_SRC1_ALPHA: int = 0x8589 +const GL_ONE_MINUS_SRC1_COLOR: int = 0x88FA +const GL_ONE_MINUS_SRC1_ALPHA: int = 0x88FB +const GL_MAX_DUAL_SOURCE_DRAW_BUFFERS: int = 0x88FC +const GL_ANY_SAMPLES_PASSED: int = 0x8C2F +const GL_SAMPLER_BINDING: int = 0x8919 +const GL_RGB10_A2UI: int = 0x906F +const GL_TEXTURE_SWIZZLE_R: int = 0x8E42 +const GL_TEXTURE_SWIZZLE_G: int = 0x8E43 +const GL_TEXTURE_SWIZZLE_B: int = 0x8E44 +const GL_TEXTURE_SWIZZLE_A: int = 0x8E45 +const GL_TEXTURE_SWIZZLE_RGBA: int = 0x8E46 +const GL_TIME_ELAPSED: int = 0x88BF +const GL_TIMESTAMP: int = 0x8E28 +const GL_INT_2_10_10_10_REV: int = 0x8D9F +const GL_DRAW_INDIRECT_BUFFER: int = 0x8F3F +const GL_DRAW_INDIRECT_BUFFER_BINDING: int = 0x8F43 +const GL_GEOMETRY_SHADER_INVOCATIONS: int = 0x887F +const GL_MAX_GEOMETRY_SHADER_INVOCATIONS: int = 0x8E5A +const GL_MIN_FRAGMENT_INTERPOLATION_OFFSET: int = 0x8E5B +const GL_MAX_FRAGMENT_INTERPOLATION_OFFSET: int = 0x8E5C +const GL_FRAGMENT_INTERPOLATION_OFFSET_BITS: int = 0x8E5D +const GL_DOUBLE_VEC2: int = 0x8FFC +const GL_DOUBLE_VEC3: int = 0x8FFD +const GL_DOUBLE_VEC4: int = 0x8FFE +const GL_DOUBLE_MAT2: int = 0x8F46 +const GL_DOUBLE_MAT3: int = 0x8F47 +const GL_DOUBLE_MAT4: int = 0x8F48 +const GL_ACTIVE_SUBROUTINES: int = 0x8DE5 +const GL_ACTIVE_SUBROUTINE_UNIFORMS: int = 0x8DE6 +const GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS: int = 0x8E47 +const GL_ACTIVE_SUBROUTINE_MAX_LENGTH: int = 0x8E48 +const GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH: int = 0x8E49 +const GL_MAX_SUBROUTINES: int = 0x8DE7 +const GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS: int = 0x8DE8 +const GL_NUM_COMPATIBLE_SUBROUTINES: int = 0x8E4A +const GL_COMPATIBLE_SUBROUTINES: int = 0x8E4B +const GL_PATCHES: int = 0x000E +const GL_PATCH_VERTICES: int = 0x8E72 +const GL_PATCH_DEFAULT_INNER_LEVEL: int = 0x8E73 +const GL_PATCH_DEFAULT_OUTER_LEVEL: int = 0x8E74 +const GL_TESS_CONTROL_OUTPUT_VERTICES: int = 0x8E75 +const GL_TESS_GEN_MODE: int = 0x8E76 +const GL_TESS_GEN_SPACING: int = 0x8E77 +const GL_TESS_GEN_VERTEX_ORDER: int = 0x8E78 +const GL_TESS_GEN_POINT_MODE: int = 0x8E79 +const GL_QUADS: int = 0x0007 +const GL_ISOLINES: int = 0x8E7A +const GL_FRACTIONAL_ODD: int = 0x8E7B +const GL_FRACTIONAL_EVEN: int = 0x8E7C +const GL_MAX_PATCH_VERTICES: int = 0x8E7D +const GL_MAX_TESS_GEN_LEVEL: int = 0x8E7E +const GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS: int = 0x8E7F +const GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS: int = 0x8E80 +const GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS: int = 0x8E81 +const GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: int = 0x8E82 +const GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS: int = 0x8E83 +const GL_MAX_TESS_PATCH_COMPONENTS: int = 0x8E84 +const GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS: int = 0x8E85 +const GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS: int = 0x8E86 +const GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS: int = 0x8E89 +const GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS: int = 0x8E8A +const GL_MAX_TESS_CONTROL_INPUT_COMPONENTS: int = 0x886C +const GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS: int = 0x886D +const GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS: int = 0x8E1E +const GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS: int = 0x8E1F +const GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER: int = 0x84F0 +const GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER: int = 0x84F1 +const GL_TESS_EVALUATION_SHADER: int = 0x8E87 +const GL_TESS_CONTROL_SHADER: int = 0x8E88 +const GL_TRANSFORM_FEEDBACK: int = 0x8E22 +const GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED: int = 0x8E23 +const GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE: int = 0x8E24 +const GL_TRANSFORM_FEEDBACK_BINDING: int = 0x8E25 +const GL_MAX_TRANSFORM_FEEDBACK_BUFFERS: int = 0x8E70 +const GL_MAX_VERTEX_STREAMS: int = 0x8E71 +const GL_FIXED: int = 0x140C +const GL_IMPLEMENTATION_COLOR_READ_TYPE: int = 0x8B9A +const GL_IMPLEMENTATION_COLOR_READ_FORMAT: int = 0x8B9B +const GL_LOW_FLOAT: int = 0x8DF0 +const GL_MEDIUM_FLOAT: int = 0x8DF1 +const GL_HIGH_FLOAT: int = 0x8DF2 +const GL_LOW_INT: int = 0x8DF3 +const GL_MEDIUM_INT: int = 0x8DF4 +const GL_HIGH_INT: int = 0x8DF5 +const GL_SHADER_COMPILER: int = 0x8DFA +const GL_SHADER_BINARY_FORMATS: int = 0x8DF8 +const GL_NUM_SHADER_BINARY_FORMATS: int = 0x8DF9 +const GL_MAX_VERTEX_UNIFORM_VECTORS: int = 0x8DFB +const GL_MAX_VARYING_VECTORS: int = 0x8DFC +const GL_MAX_FRAGMENT_UNIFORM_VECTORS: int = 0x8DFD +const GL_RGB565: int = 0x8D62 +const GL_PROGRAM_BINARY_RETRIEVABLE_HINT: int = 0x8257 +const GL_PROGRAM_BINARY_LENGTH: int = 0x8741 +const GL_NUM_PROGRAM_BINARY_FORMATS: int = 0x87FE +const GL_PROGRAM_BINARY_FORMATS: int = 0x87FF +const GL_VERTEX_SHADER_BIT: int = 0x00000001 +const GL_FRAGMENT_SHADER_BIT: int = 0x00000002 +const GL_GEOMETRY_SHADER_BIT: int = 0x00000004 +const GL_TESS_CONTROL_SHADER_BIT: int = 0x00000008 +const GL_TESS_EVALUATION_SHADER_BIT: int = 0x00000010 +const GL_ALL_SHADER_BITS: int = -1 +const GL_PROGRAM_SEPARABLE: int = 0x8258 +const GL_ACTIVE_PROGRAM: int = 0x8259 +const GL_PROGRAM_PIPELINE_BINDING: int = 0x825A +const GL_MAX_VIEWPORTS: int = 0x825B +const GL_VIEWPORT_SUBPIXEL_BITS: int = 0x825C +const GL_VIEWPORT_BOUNDS_RANGE: int = 0x825D +const GL_LAYER_PROVOKING_VERTEX: int = 0x825E +const GL_VIEWPORT_INDEX_PROVOKING_VERTEX: int = 0x825F +const GL_UNDEFINED_VERTEX: int = 0x8260 + +extern function gl_cull_face(mode: int) = "lgl_CullFace" +extern function gl_front_face(mode: int) = "lgl_FrontFace" +extern function gl_hint(target: int, mode: int) = "lgl_Hint" +extern function gl_line_width(width: fixed) = "lgl_LineWidth" +extern function gl_point_size(size: fixed) = "lgl_PointSize" +extern function gl_polygon_mode(face: int, mode: int) = "lgl_PolygonMode" +extern function gl_scissor(x: int, y: int, width: int, height: int) = "lgl_Scissor" +extern function gl_tex_parameterf(target: int, pname: int, param: fixed) = "lgl_TexParameterf" +extern function gl_tex_parameterfv(target: int, pname: int, params: pointer) = "lgl_TexParameterfv" +extern function gl_tex_parameteri(target: int, pname: int, param: int) = "lgl_TexParameteri" +extern function gl_tex_parameteriv(target: int, pname: int, params: pointer) = "lgl_TexParameteriv" +extern function gl_tex_image1d(target: int, level: int, internalformat: int, width: int, border: int, format: int, type: int, pixels: pointer) = "lgl_TexImage1D" +extern function gl_tex_image2d(target: int, level: int, internalformat: int, width: int, height: int, border: int, format: int, type: int, pixels: pointer) = "lgl_TexImage2D" +extern function gl_draw_buffer(mode: int) = "lgl_DrawBuffer" +extern function gl_clear(mask: int) = "lgl_Clear" +extern function gl_clear_color(red: fixed, green: fixed, blue: fixed, alpha: fixed) = "lgl_ClearColor" +extern function gl_clear_stencil(s: int) = "lgl_ClearStencil" +extern function gl_clear_depth(depth: fixed) = "lgl_ClearDepth" +extern function gl_stencil_mask(mask: int) = "lgl_StencilMask" +extern function gl_color_mask(red: int, green: int, blue: int, alpha: int) = "lgl_ColorMask" +extern function gl_depth_mask(flag: int) = "lgl_DepthMask" +extern function gl_disable(cap: int) = "lgl_Disable" +extern function gl_enable(cap: int) = "lgl_Enable" +extern function gl_finish() = "lgl_Finish" +extern function gl_flush() = "lgl_Flush" +extern function gl_blend_func(sfactor: int, dfactor: int) = "lgl_BlendFunc" +extern function gl_logic_op(opcode: int) = "lgl_LogicOp" +extern function gl_stencil_func(func: int, ref: int, mask: int) = "lgl_StencilFunc" +extern function gl_stencil_op(fail: int, zfail: int, zpass: int) = "lgl_StencilOp" +extern function gl_depth_func(func: int) = "lgl_DepthFunc" +extern function gl_pixel_storef(pname: int, param: fixed) = "lgl_PixelStoref" +extern function gl_pixel_storei(pname: int, param: int) = "lgl_PixelStorei" +extern function gl_read_buffer(mode: int) = "lgl_ReadBuffer" +extern function gl_read_pixels(x: int, y: int, width: int, height: int, format: int, type: int, pixels: pointer) = "lgl_ReadPixels" +extern function gl_get_booleanv(pname: int, params: pointer) = "lgl_GetBooleanv" +extern function gl_get_doublev(pname: int, params: pointer) = "lgl_GetDoublev" +extern function gl_get_error() -> int = "lgl_GetError" +extern function gl_get_floatv(pname: int, params: pointer) = "lgl_GetFloatv" +extern function gl_get_integerv(pname: int, params: pointer) = "lgl_GetIntegerv" +extern function gl_get_string(name: int) -> pointer = "lgl_GetString" +extern function gl_get_tex_image(target: int, level: int, format: int, type: int, pixels: pointer) = "lgl_GetTexImage" +extern function gl_get_tex_parameterfv(target: int, pname: int, params: pointer) = "lgl_GetTexParameterfv" +extern function gl_get_tex_parameteriv(target: int, pname: int, params: pointer) = "lgl_GetTexParameteriv" +extern function gl_get_tex_level_parameterfv(target: int, level: int, pname: int, params: pointer) = "lgl_GetTexLevelParameterfv" +extern function gl_get_tex_level_parameteriv(target: int, level: int, pname: int, params: pointer) = "lgl_GetTexLevelParameteriv" +extern function gl_is_enabled(cap: int) -> int = "lgl_IsEnabled" +extern function gl_depth_range(near: fixed, far: fixed) = "lgl_DepthRange" +extern function gl_viewport(x: int, y: int, width: int, height: int) = "lgl_Viewport" +extern function gl_draw_arrays(mode: int, first: int, count: int) = "lgl_DrawArrays" +extern function gl_draw_elements(mode: int, count: int, type: int, indices: pointer) = "lgl_DrawElements" +extern function gl_polygon_offset(factor: fixed, units: fixed) = "lgl_PolygonOffset" +extern function gl_copy_tex_image1d(target: int, level: int, internalformat: int, x: int, y: int, width: int, border: int) = "lgl_CopyTexImage1D" +extern function gl_copy_tex_image2d(target: int, level: int, internalformat: int, x: int, y: int, width: int, height: int, border: int) = "lgl_CopyTexImage2D" +extern function gl_copy_tex_sub_image1d(target: int, level: int, xoffset: int, x: int, y: int, width: int) = "lgl_CopyTexSubImage1D" +extern function gl_copy_tex_sub_image2d(target: int, level: int, xoffset: int, yoffset: int, x: int, y: int, width: int, height: int) = "lgl_CopyTexSubImage2D" +extern function gl_tex_sub_image1d(target: int, level: int, xoffset: int, width: int, format: int, type: int, pixels: pointer) = "lgl_TexSubImage1D" +extern function gl_tex_sub_image2d(target: int, level: int, xoffset: int, yoffset: int, width: int, height: int, format: int, type: int, pixels: pointer) = "lgl_TexSubImage2D" +extern function gl_bind_texture(target: int, texture: int) = "lgl_BindTexture" +extern function gl_delete_textures(n: int, textures: pointer) = "lgl_DeleteTextures" +extern function gl_gen_textures(n: int, textures: pointer) = "lgl_GenTextures" +extern function gl_is_texture(texture: int) -> int = "lgl_IsTexture" +extern function gl_blend_color(red: fixed, green: fixed, blue: fixed, alpha: fixed) = "lgl_BlendColor" +extern function gl_blend_equation(mode: int) = "lgl_BlendEquation" +extern function gl_draw_range_elements(mode: int, first: int, end: int, count: int, type: int, indices: pointer) = "lgl_DrawRangeElements" +extern function gl_tex_image3d(target: int, level: int, internalformat: int, width: int, height: int, depth: int, border: int, format: int, type: int, pixels: pointer) = "lgl_TexImage3D" +extern function gl_tex_sub_image3d(target: int, level: int, xoffset: int, yoffset: int, zoffset: int, width: int, height: int, depth: int, format: int, type: int, pixels: pointer) = "lgl_TexSubImage3D" +extern function gl_copy_tex_sub_image3d(target: int, level: int, xoffset: int, yoffset: int, zoffset: int, x: int, y: int, width: int, height: int) = "lgl_CopyTexSubImage3D" +extern function gl_active_texture(texture: int) = "lgl_ActiveTexture" +extern function gl_sample_coverage(value: fixed, invert: int) = "lgl_SampleCoverage" +extern function gl_compressed_tex_image3d(target: int, level: int, internalformat: int, width: int, height: int, depth: int, border: int, image_size: int, data: pointer) = "lgl_CompressedTexImage3D" +extern function gl_compressed_tex_image2d(target: int, level: int, internalformat: int, width: int, height: int, border: int, image_size: int, data: pointer) = "lgl_CompressedTexImage2D" +extern function gl_compressed_tex_image1d(target: int, level: int, internalformat: int, width: int, border: int, image_size: int, data: pointer) = "lgl_CompressedTexImage1D" +extern function gl_compressed_tex_sub_image3d(target: int, level: int, xoffset: int, yoffset: int, zoffset: int, width: int, height: int, depth: int, format: int, image_size: int, data: pointer) = "lgl_CompressedTexSubImage3D" +extern function gl_compressed_tex_sub_image2d(target: int, level: int, xoffset: int, yoffset: int, width: int, height: int, format: int, image_size: int, data: pointer) = "lgl_CompressedTexSubImage2D" +extern function gl_compressed_tex_sub_image1d(target: int, level: int, xoffset: int, width: int, format: int, image_size: int, data: pointer) = "lgl_CompressedTexSubImage1D" +extern function gl_get_compressed_tex_image(target: int, level: int, img: pointer) = "lgl_GetCompressedTexImage" +extern function gl_blend_func_separate(sfactor_rgb: int, dfactor_rgb: int, sfactor_alpha: int, dfactor_alpha: int) = "lgl_BlendFuncSeparate" +extern function gl_multi_draw_arrays(mode: int, first: pointer, count: pointer, drawcount: int) = "lgl_MultiDrawArrays" +extern function gl_multi_draw_elements(mode: int, count: pointer, type: int, indices: pointer, drawcount: int) = "lgl_MultiDrawElements" +extern function gl_point_parameterf(pname: int, param: fixed) = "lgl_PointParameterf" +extern function gl_point_parameterfv(pname: int, params: pointer) = "lgl_PointParameterfv" +extern function gl_point_parameteri(pname: int, param: int) = "lgl_PointParameteri" +extern function gl_point_parameteriv(pname: int, params: pointer) = "lgl_PointParameteriv" +extern function gl_gen_queries(n: int, ids: pointer) = "lgl_GenQueries" +extern function gl_delete_queries(n: int, ids: pointer) = "lgl_DeleteQueries" +extern function gl_is_query(id: int) -> int = "lgl_IsQuery" +extern function gl_begin_query(target: int, id: int) = "lgl_BeginQuery" +extern function gl_end_query(target: int) = "lgl_EndQuery" +extern function gl_get_queryiv(target: int, pname: int, params: pointer) = "lgl_GetQueryiv" +extern function gl_get_query_objectiv(id: int, pname: int, params: pointer) = "lgl_GetQueryObjectiv" +extern function gl_get_query_objectuiv(id: int, pname: int, params: pointer) = "lgl_GetQueryObjectuiv" +extern function gl_bind_buffer(target: int, buffer: int) = "lgl_BindBuffer" +extern function gl_delete_buffers(n: int, buffers: pointer) = "lgl_DeleteBuffers" +extern function gl_gen_buffers(n: int, buffers: pointer) = "lgl_GenBuffers" +extern function gl_is_buffer(buffer: int) -> int = "lgl_IsBuffer" +extern function gl_buffer_data(target: int, size: long, data: pointer, usage: int) = "lgl_BufferData" +extern function gl_buffer_sub_data(target: int, offset: long, size: long, data: pointer) = "lgl_BufferSubData" +extern function gl_get_buffer_sub_data(target: int, offset: long, size: long, data: pointer) = "lgl_GetBufferSubData" +extern function gl_map_buffer(target: int, access: int) -> pointer = "lgl_MapBuffer" +extern function gl_unmap_buffer(target: int) -> int = "lgl_UnmapBuffer" +extern function gl_get_buffer_parameteriv(target: int, pname: int, params: pointer) = "lgl_GetBufferParameteriv" +extern function gl_get_buffer_pointerv(target: int, pname: int, params: pointer) = "lgl_GetBufferPointerv" +extern function gl_blend_equation_separate(mode_rgb: int, mode_alpha: int) = "lgl_BlendEquationSeparate" +extern function gl_draw_buffers(n: int, bufs: pointer) = "lgl_DrawBuffers" +extern function gl_stencil_op_separate(face: int, sfail: int, dpfail: int, dppass: int) = "lgl_StencilOpSeparate" +extern function gl_stencil_func_separate(face: int, func: int, ref: int, mask: int) = "lgl_StencilFuncSeparate" +extern function gl_stencil_mask_separate(face: int, mask: int) = "lgl_StencilMaskSeparate" +extern function gl_attach_shader(prog: int, shader: int) = "lgl_AttachShader" +extern function gl_bind_attrib_location(prog: int, index: int, name: pointer) = "lgl_BindAttribLocation" +extern function gl_compile_shader(shader: int) = "lgl_CompileShader" +extern function gl_create_program() -> int = "lgl_CreateProgram" +extern function gl_create_shader(type: int) -> int = "lgl_CreateShader" +extern function gl_delete_program(prog: int) = "lgl_DeleteProgram" +extern function gl_delete_shader(shader: int) = "lgl_DeleteShader" +extern function gl_detach_shader(prog: int, shader: int) = "lgl_DetachShader" +extern function gl_disable_vertex_attrib_array(index: int) = "lgl_DisableVertexAttribArray" +extern function gl_enable_vertex_attrib_array(index: int) = "lgl_EnableVertexAttribArray" +extern function gl_get_active_attrib(prog: int, index: int, buf_size: int, length: pointer, size: pointer, type: pointer, name: pointer) = "lgl_GetActiveAttrib" +extern function gl_get_active_uniform(prog: int, index: int, buf_size: int, length: pointer, size: pointer, type: pointer, name: pointer) = "lgl_GetActiveUniform" +extern function gl_get_attached_shaders(prog: int, max_count: int, count: pointer, shaders: pointer) = "lgl_GetAttachedShaders" +extern function gl_get_attrib_location(prog: int, name: pointer) -> int = "lgl_GetAttribLocation" +extern function gl_get_programiv(prog: int, pname: int, params: pointer) = "lgl_GetProgramiv" +extern function gl_get_program_info_log(prog: int, buf_size: int, length: pointer, info_log: pointer) = "lgl_GetProgramInfoLog" +extern function gl_get_shaderiv(shader: int, pname: int, params: pointer) = "lgl_GetShaderiv" +extern function gl_get_shader_info_log(shader: int, buf_size: int, length: pointer, info_log: pointer) = "lgl_GetShaderInfoLog" +extern function gl_get_shader_source(shader: int, buf_size: int, length: pointer, source: pointer) = "lgl_GetShaderSource" +extern function gl_get_uniform_location(prog: int, name: pointer) -> int = "lgl_GetUniformLocation" +extern function gl_get_uniformfv(prog: int, location: int, params: pointer) = "lgl_GetUniformfv" +extern function gl_get_uniformiv(prog: int, location: int, params: pointer) = "lgl_GetUniformiv" +extern function gl_get_vertex_attribdv(index: int, pname: int, params: pointer) = "lgl_GetVertexAttribdv" +extern function gl_get_vertex_attribfv(index: int, pname: int, params: pointer) = "lgl_GetVertexAttribfv" +extern function gl_get_vertex_attribiv(index: int, pname: int, params: pointer) = "lgl_GetVertexAttribiv" +extern function gl_get_vertex_attrib_pointerv(index: int, pname: int, offset: pointer) = "lgl_GetVertexAttribPointerv" +extern function gl_is_program(prog: int) -> int = "lgl_IsProgram" +extern function gl_is_shader(shader: int) -> int = "lgl_IsShader" +extern function gl_link_program(prog: int) = "lgl_LinkProgram" +extern function gl_shader_source(shader: int, count: int, text: pointer, length: pointer) = "lgl_ShaderSource" +extern function gl_use_program(prog: int) = "lgl_UseProgram" +extern function gl_uniform1f(location: int, v0: fixed) = "lgl_Uniform1f" +extern function gl_uniform2f(location: int, v0: fixed, v1: fixed) = "lgl_Uniform2f" +extern function gl_uniform3f(location: int, v0: fixed, v1: fixed, v2: fixed) = "lgl_Uniform3f" +extern function gl_uniform4f(location: int, v0: fixed, v1: fixed, v2: fixed, v3: fixed) = "lgl_Uniform4f" +extern function gl_uniform1i(location: int, v0: int) = "lgl_Uniform1i" +extern function gl_uniform2i(location: int, v0: int, v1: int) = "lgl_Uniform2i" +extern function gl_uniform3i(location: int, v0: int, v1: int, v2: int) = "lgl_Uniform3i" +extern function gl_uniform4i(location: int, v0: int, v1: int, v2: int, v3: int) = "lgl_Uniform4i" +extern function gl_uniform1fv(location: int, count: int, value: pointer) = "lgl_Uniform1fv" +extern function gl_uniform2fv(location: int, count: int, value: pointer) = "lgl_Uniform2fv" +extern function gl_uniform3fv(location: int, count: int, value: pointer) = "lgl_Uniform3fv" +extern function gl_uniform4fv(location: int, count: int, value: pointer) = "lgl_Uniform4fv" +extern function gl_uniform1iv(location: int, count: int, value: pointer) = "lgl_Uniform1iv" +extern function gl_uniform2iv(location: int, count: int, value: pointer) = "lgl_Uniform2iv" +extern function gl_uniform3iv(location: int, count: int, value: pointer) = "lgl_Uniform3iv" +extern function gl_uniform4iv(location: int, count: int, value: pointer) = "lgl_Uniform4iv" +extern function gl_uniform_matrix2fv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix2fv" +extern function gl_uniform_matrix3fv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix3fv" +extern function gl_uniform_matrix4fv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix4fv" +extern function gl_validate_program(prog: int) = "lgl_ValidateProgram" +extern function gl_vertex_attrib1d(index: int, x: fixed) = "lgl_VertexAttrib1d" +extern function gl_vertex_attrib1dv(index: int, v: pointer) = "lgl_VertexAttrib1dv" +extern function gl_vertex_attrib1f(index: int, x: fixed) = "lgl_VertexAttrib1f" +extern function gl_vertex_attrib1fv(index: int, v: pointer) = "lgl_VertexAttrib1fv" +extern function gl_vertex_attrib1s(index: int, x: int) = "lgl_VertexAttrib1s" +extern function gl_vertex_attrib1sv(index: int, v: pointer) = "lgl_VertexAttrib1sv" +extern function gl_vertex_attrib2d(index: int, x: fixed, y: fixed) = "lgl_VertexAttrib2d" +extern function gl_vertex_attrib2dv(index: int, v: pointer) = "lgl_VertexAttrib2dv" +extern function gl_vertex_attrib2f(index: int, x: fixed, y: fixed) = "lgl_VertexAttrib2f" +extern function gl_vertex_attrib2fv(index: int, v: pointer) = "lgl_VertexAttrib2fv" +extern function gl_vertex_attrib2s(index: int, x: int, y: int) = "lgl_VertexAttrib2s" +extern function gl_vertex_attrib2sv(index: int, v: pointer) = "lgl_VertexAttrib2sv" +extern function gl_vertex_attrib3d(index: int, x: fixed, y: fixed, z: fixed) = "lgl_VertexAttrib3d" +extern function gl_vertex_attrib3dv(index: int, v: pointer) = "lgl_VertexAttrib3dv" +extern function gl_vertex_attrib3f(index: int, x: fixed, y: fixed, z: fixed) = "lgl_VertexAttrib3f" +extern function gl_vertex_attrib3fv(index: int, v: pointer) = "lgl_VertexAttrib3fv" +extern function gl_vertex_attrib3s(index: int, x: int, y: int, z: int) = "lgl_VertexAttrib3s" +extern function gl_vertex_attrib3sv(index: int, v: pointer) = "lgl_VertexAttrib3sv" +extern function gl_vertex_attrib4nbv(index: int, v: pointer) = "lgl_VertexAttrib4Nbv" +extern function gl_vertex_attrib4niv(index: int, v: pointer) = "lgl_VertexAttrib4Niv" +extern function gl_vertex_attrib4nsv(index: int, v: pointer) = "lgl_VertexAttrib4Nsv" +extern function gl_vertex_attrib4nub(index: int, x: int, y: int, z: int, w: int) = "lgl_VertexAttrib4Nub" +extern function gl_vertex_attrib4nubv(index: int, v: pointer) = "lgl_VertexAttrib4Nubv" +extern function gl_vertex_attrib4nuiv(index: int, v: pointer) = "lgl_VertexAttrib4Nuiv" +extern function gl_vertex_attrib4nusv(index: int, v: pointer) = "lgl_VertexAttrib4Nusv" +extern function gl_vertex_attrib4bv(index: int, v: pointer) = "lgl_VertexAttrib4bv" +extern function gl_vertex_attrib4d(index: int, x: fixed, y: fixed, z: fixed, w: fixed) = "lgl_VertexAttrib4d" +extern function gl_vertex_attrib4dv(index: int, v: pointer) = "lgl_VertexAttrib4dv" +extern function gl_vertex_attrib4f(index: int, x: fixed, y: fixed, z: fixed, w: fixed) = "lgl_VertexAttrib4f" +extern function gl_vertex_attrib4fv(index: int, v: pointer) = "lgl_VertexAttrib4fv" +extern function gl_vertex_attrib4iv(index: int, v: pointer) = "lgl_VertexAttrib4iv" +extern function gl_vertex_attrib4s(index: int, x: int, y: int, z: int, w: int) = "lgl_VertexAttrib4s" +extern function gl_vertex_attrib4sv(index: int, v: pointer) = "lgl_VertexAttrib4sv" +extern function gl_vertex_attrib4ubv(index: int, v: pointer) = "lgl_VertexAttrib4ubv" +extern function gl_vertex_attrib4uiv(index: int, v: pointer) = "lgl_VertexAttrib4uiv" +extern function gl_vertex_attrib4usv(index: int, v: pointer) = "lgl_VertexAttrib4usv" +extern function gl_vertex_attrib_pointer(index: int, size: int, type: int, normalized: int, stride: int, offset: pointer) = "lgl_VertexAttribPointer" +extern function gl_uniform_matrix2x3fv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix2x3fv" +extern function gl_uniform_matrix3x2fv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix3x2fv" +extern function gl_uniform_matrix2x4fv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix2x4fv" +extern function gl_uniform_matrix4x2fv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix4x2fv" +extern function gl_uniform_matrix3x4fv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix3x4fv" +extern function gl_uniform_matrix4x3fv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix4x3fv" +extern function gl_color_maski(index: int, r: int, g: int, b: int, a: int) = "lgl_ColorMaski" +extern function gl_get_booleani_v(target: int, index: int, data: pointer) = "lgl_GetBooleani_v" +extern function gl_get_integeri_v(target: int, index: int, data: pointer) = "lgl_GetIntegeri_v" +extern function gl_enablei(target: int, index: int) = "lgl_Enablei" +extern function gl_disablei(target: int, index: int) = "lgl_Disablei" +extern function gl_is_enabledi(target: int, index: int) -> int = "lgl_IsEnabledi" +extern function gl_begin_transform_feedback(primitive_mode: int) = "lgl_BeginTransformFeedback" +extern function gl_end_transform_feedback() = "lgl_EndTransformFeedback" +extern function gl_bind_buffer_range(target: int, index: int, buffer: int, offset: long, size: long) = "lgl_BindBufferRange" +extern function gl_bind_buffer_base(target: int, index: int, buffer: int) = "lgl_BindBufferBase" +extern function gl_transform_feedback_varyings(prog: int, count: int, varyings: pointer, buffer_mode: int) = "lgl_TransformFeedbackVaryings" +extern function gl_get_transform_feedback_varying(prog: int, index: int, buf_size: int, length: pointer, size: pointer, type: pointer, name: pointer) = "lgl_GetTransformFeedbackVarying" +extern function gl_clamp_color(target: int, clamp: int) = "lgl_ClampColor" +extern function gl_begin_conditional_render(id: int, mode: int) = "lgl_BeginConditionalRender" +extern function gl_end_conditional_render() = "lgl_EndConditionalRender" +extern function gl_vertex_attrib_ipointer(index: int, size: int, type: int, stride: int, offset: pointer) = "lgl_VertexAttribIPointer" +extern function gl_get_vertex_attrib_iiv(index: int, pname: int, params: pointer) = "lgl_GetVertexAttribIiv" +extern function gl_get_vertex_attrib_iuiv(index: int, pname: int, params: pointer) = "lgl_GetVertexAttribIuiv" +extern function gl_vertex_attrib_i1i(index: int, x: int) = "lgl_VertexAttribI1i" +extern function gl_vertex_attrib_i2i(index: int, x: int, y: int) = "lgl_VertexAttribI2i" +extern function gl_vertex_attrib_i3i(index: int, x: int, y: int, z: int) = "lgl_VertexAttribI3i" +extern function gl_vertex_attrib_i4i(index: int, x: int, y: int, z: int, w: int) = "lgl_VertexAttribI4i" +extern function gl_vertex_attrib_i1ui(index: int, x: int) = "lgl_VertexAttribI1ui" +extern function gl_vertex_attrib_i2ui(index: int, x: int, y: int) = "lgl_VertexAttribI2ui" +extern function gl_vertex_attrib_i3ui(index: int, x: int, y: int, z: int) = "lgl_VertexAttribI3ui" +extern function gl_vertex_attrib_i4ui(index: int, x: int, y: int, z: int, w: int) = "lgl_VertexAttribI4ui" +extern function gl_vertex_attrib_i1iv(index: int, v: pointer) = "lgl_VertexAttribI1iv" +extern function gl_vertex_attrib_i2iv(index: int, v: pointer) = "lgl_VertexAttribI2iv" +extern function gl_vertex_attrib_i3iv(index: int, v: pointer) = "lgl_VertexAttribI3iv" +extern function gl_vertex_attrib_i4iv(index: int, v: pointer) = "lgl_VertexAttribI4iv" +extern function gl_vertex_attrib_i1uiv(index: int, v: pointer) = "lgl_VertexAttribI1uiv" +extern function gl_vertex_attrib_i2uiv(index: int, v: pointer) = "lgl_VertexAttribI2uiv" +extern function gl_vertex_attrib_i3uiv(index: int, v: pointer) = "lgl_VertexAttribI3uiv" +extern function gl_vertex_attrib_i4uiv(index: int, v: pointer) = "lgl_VertexAttribI4uiv" +extern function gl_vertex_attrib_i4bv(index: int, v: pointer) = "lgl_VertexAttribI4bv" +extern function gl_vertex_attrib_i4sv(index: int, v: pointer) = "lgl_VertexAttribI4sv" +extern function gl_vertex_attrib_i4ubv(index: int, v: pointer) = "lgl_VertexAttribI4ubv" +extern function gl_vertex_attrib_i4usv(index: int, v: pointer) = "lgl_VertexAttribI4usv" +extern function gl_get_uniformuiv(prog: int, location: int, params: pointer) = "lgl_GetUniformuiv" +extern function gl_bind_frag_data_location(prog: int, color: int, name: pointer) = "lgl_BindFragDataLocation" +extern function gl_get_frag_data_location(prog: int, name: pointer) -> int = "lgl_GetFragDataLocation" +extern function gl_uniform1ui(location: int, v0: int) = "lgl_Uniform1ui" +extern function gl_uniform2ui(location: int, v0: int, v1: int) = "lgl_Uniform2ui" +extern function gl_uniform3ui(location: int, v0: int, v1: int, v2: int) = "lgl_Uniform3ui" +extern function gl_uniform4ui(location: int, v0: int, v1: int, v2: int, v3: int) = "lgl_Uniform4ui" +extern function gl_uniform1uiv(location: int, count: int, value: pointer) = "lgl_Uniform1uiv" +extern function gl_uniform2uiv(location: int, count: int, value: pointer) = "lgl_Uniform2uiv" +extern function gl_uniform3uiv(location: int, count: int, value: pointer) = "lgl_Uniform3uiv" +extern function gl_uniform4uiv(location: int, count: int, value: pointer) = "lgl_Uniform4uiv" +extern function gl_tex_parameter_iiv(target: int, pname: int, params: pointer) = "lgl_TexParameterIiv" +extern function gl_tex_parameter_iuiv(target: int, pname: int, params: pointer) = "lgl_TexParameterIuiv" +extern function gl_get_tex_parameter_iiv(target: int, pname: int, params: pointer) = "lgl_GetTexParameterIiv" +extern function gl_get_tex_parameter_iuiv(target: int, pname: int, params: pointer) = "lgl_GetTexParameterIuiv" +extern function gl_clear_bufferiv(buffer: int, drawbuffer: int, value: pointer) = "lgl_ClearBufferiv" +extern function gl_clear_bufferuiv(buffer: int, drawbuffer: int, value: pointer) = "lgl_ClearBufferuiv" +extern function gl_clear_bufferfv(buffer: int, drawbuffer: int, value: pointer) = "lgl_ClearBufferfv" +extern function gl_clear_bufferfi(buffer: int, drawbuffer: int, depth: fixed, stencil: int) = "lgl_ClearBufferfi" +extern function gl_get_stringi(name: int, index: int) -> pointer = "lgl_GetStringi" +extern function gl_draw_arrays_instanced(mode: int, first: int, count: int, instancecount: int) = "lgl_DrawArraysInstanced" +extern function gl_draw_elements_instanced(mode: int, count: int, type: int, indices: pointer, instancecount: int) = "lgl_DrawElementsInstanced" +extern function gl_tex_buffer(target: int, internalformat: int, buffer: int) = "lgl_TexBuffer" +extern function gl_primitive_restart_index(index: int) = "lgl_PrimitiveRestartIndex" +extern function gl_get_integer64i_v(target: int, index: int, data: pointer) = "lgl_GetInteger64i_v" +extern function gl_get_buffer_parameteri64v(target: int, pname: int, params: pointer) = "lgl_GetBufferParameteri64v" +extern function gl_framebuffer_texture(target: int, attachment: int, texture: int, level: int) = "lgl_FramebufferTexture" +extern function gl_vertex_attrib_divisor(index: int, divisor: int) = "lgl_VertexAttribDivisor" +extern function gl_min_sample_shading(value: fixed) = "lgl_MinSampleShading" +extern function gl_blend_equationi(buf: int, mode: int) = "lgl_BlendEquationi" +extern function gl_blend_equation_separatei(buf: int, mode_rgb: int, mode_alpha: int) = "lgl_BlendEquationSeparatei" +extern function gl_blend_funci(buf: int, src: int, dst: int) = "lgl_BlendFunci" +extern function gl_blend_func_separatei(buf: int, src_rgb: int, dst_rgb: int, src_alpha: int, dst_alpha: int) = "lgl_BlendFuncSeparatei" +extern function gl_is_renderbuffer(renderbuffer: int) -> int = "lgl_IsRenderbuffer" +extern function gl_bind_renderbuffer(target: int, renderbuffer: int) = "lgl_BindRenderbuffer" +extern function gl_delete_renderbuffers(n: int, renderbuffers: pointer) = "lgl_DeleteRenderbuffers" +extern function gl_gen_renderbuffers(n: int, renderbuffers: pointer) = "lgl_GenRenderbuffers" +extern function gl_renderbuffer_storage(target: int, internalformat: int, width: int, height: int) = "lgl_RenderbufferStorage" +extern function gl_get_renderbuffer_parameteriv(target: int, pname: int, params: pointer) = "lgl_GetRenderbufferParameteriv" +extern function gl_is_framebuffer(framebuffer: int) -> int = "lgl_IsFramebuffer" +extern function gl_bind_framebuffer(target: int, framebuffer: int) = "lgl_BindFramebuffer" +extern function gl_delete_framebuffers(n: int, framebuffers: pointer) = "lgl_DeleteFramebuffers" +extern function gl_gen_framebuffers(n: int, framebuffers: pointer) = "lgl_GenFramebuffers" +extern function gl_check_framebuffer_status(target: int) -> int = "lgl_CheckFramebufferStatus" +extern function gl_framebuffer_texture1d(target: int, attachment: int, textarget: int, texture: int, level: int) = "lgl_FramebufferTexture1D" +extern function gl_framebuffer_texture2d(target: int, attachment: int, textarget: int, texture: int, level: int) = "lgl_FramebufferTexture2D" +extern function gl_framebuffer_texture3d(target: int, attachment: int, textarget: int, texture: int, level: int, zoffset: int) = "lgl_FramebufferTexture3D" +extern function gl_framebuffer_renderbuffer(target: int, attachment: int, renderbuffertarget: int, renderbuffer: int) = "lgl_FramebufferRenderbuffer" +extern function gl_get_framebuffer_attachment_parameteriv(target: int, attachment: int, pname: int, params: pointer) = "lgl_GetFramebufferAttachmentParameteriv" +extern function gl_generate_mipmap(target: int) = "lgl_GenerateMipmap" +extern function gl_blit_framebuffer(src_x0: int, src_y0: int, src_x1: int, src_y1: int, dst_x0: int, dst_y0: int, dst_x1: int, dst_y1: int, mask: int, filter: int) = "lgl_BlitFramebuffer" +extern function gl_renderbuffer_storage_multisample(target: int, samples: int, internalformat: int, width: int, height: int) = "lgl_RenderbufferStorageMultisample" +extern function gl_framebuffer_texture_layer(target: int, attachment: int, texture: int, level: int, level: int) = "lgl_FramebufferTextureLayer" +extern function gl_map_buffer_range(target: int, offset: long, length: long, access: int) -> pointer = "lgl_MapBufferRange" +extern function gl_flush_mapped_buffer_range(target: int, offset: long, length: long) = "lgl_FlushMappedBufferRange" +extern function gl_bind_vertex_array(array: int) = "lgl_BindVertexArray" +extern function gl_delete_vertex_arrays(n: int, arrays: pointer) = "lgl_DeleteVertexArrays" +extern function gl_gen_vertex_arrays(n: int, arrays: pointer) = "lgl_GenVertexArrays" +extern function gl_is_vertex_array(array: int) -> int = "lgl_IsVertexArray" +extern function gl_get_uniform_indices(prog: int, uniform_count: int, uniform_names: pointer, uniform_indices: pointer) = "lgl_GetUniformIndices" +extern function gl_get_active_uniformsiv(prog: int, uniform_count: int, uniform_indices: pointer, pname: int, params: pointer) = "lgl_GetActiveUniformsiv" +extern function gl_get_active_uniform_name(prog: int, uniform_index: int, buf_size: int, length: pointer, uniform_name: pointer) = "lgl_GetActiveUniformName" +extern function gl_get_uniform_block_index(prog: int, uniform_block_name: pointer) -> int = "lgl_GetUniformBlockIndex" +extern function gl_get_active_uniform_blockiv(prog: int, uniform_block_index: int, pname: int, params: pointer) = "lgl_GetActiveUniformBlockiv" +extern function gl_get_active_uniform_block_name(prog: int, uniform_block_index: int, buf_size: int, length: pointer, uniform_block_name: pointer) = "lgl_GetActiveUniformBlockName" +extern function gl_uniform_block_binding(prog: int, uniform_block_index: int, uniform_block_binding: int) = "lgl_UniformBlockBinding" +extern function gl_copy_buffer_sub_data(read_target: int, write_target: int, read_offset: long, write_offset: long, size: long) = "lgl_CopyBufferSubData" +extern function gl_draw_elements_base_vertex(mode: int, count: int, type: int, indices: pointer, basevertex: int) = "lgl_DrawElementsBaseVertex" +extern function gl_draw_range_elements_base_vertex(mode: int, first: int, end: int, count: int, type: int, indices: pointer, basevertex: int) = "lgl_DrawRangeElementsBaseVertex" +extern function gl_draw_elements_instanced_base_vertex(mode: int, count: int, type: int, indices: pointer, instancecount: int, basevertex: int) = "lgl_DrawElementsInstancedBaseVertex" +extern function gl_multi_draw_elements_base_vertex(mode: int, count: pointer, type: int, indices: pointer, drawcount: int, basevertex: pointer) = "lgl_MultiDrawElementsBaseVertex" +extern function gl_provoking_vertex(mode: int) = "lgl_ProvokingVertex" +extern function gl_fence_sync(condition: int, flags: int) -> pointer = "lgl_FenceSync" +extern function gl_is_sync(sync: pointer) -> int = "lgl_IsSync" +extern function gl_delete_sync(sync: pointer) = "lgl_DeleteSync" +extern function gl_client_wait_sync(sync: pointer, flags: int, timeout: long) -> int = "lgl_ClientWaitSync" +extern function gl_wait_sync(sync: pointer, flags: int, timeout: long) = "lgl_WaitSync" +extern function gl_get_integer64v(pname: int, params: pointer) = "lgl_GetInteger64v" +extern function gl_get_synciv(sync: pointer, pname: int, buf_size: int, length: pointer, values: pointer) = "lgl_GetSynciv" +extern function gl_tex_image2dmultisample(target: int, samples: int, internalformat: int, width: int, height: int, fixedsamplelocations: int) = "lgl_TexImage2DMultisample" +extern function gl_tex_image3dmultisample(target: int, samples: int, internalformat: int, width: int, height: int, depth: int, fixedsamplelocations: int) = "lgl_TexImage3DMultisample" +extern function gl_get_multisamplefv(pname: int, index: int, val: pointer) = "lgl_GetMultisamplefv" +extern function gl_sample_maski(index: int, mask: int) = "lgl_SampleMaski" +extern function gl_bind_frag_data_location_indexed(prog: int, color_number: int, index: int, name: pointer) = "lgl_BindFragDataLocationIndexed" +extern function gl_get_frag_data_index(prog: int, name: pointer) -> int = "lgl_GetFragDataIndex" +extern function gl_gen_samplers(count: int, samplers: pointer) = "lgl_GenSamplers" +extern function gl_delete_samplers(count: int, samplers: pointer) = "lgl_DeleteSamplers" +extern function gl_is_sampler(sampler: int) -> int = "lgl_IsSampler" +extern function gl_bind_sampler(unit: int, sampler: int) = "lgl_BindSampler" +extern function gl_sampler_parameteri(sampler: int, pname: int, param: int) = "lgl_SamplerParameteri" +extern function gl_sampler_parameteriv(sampler: int, pname: int, param: pointer) = "lgl_SamplerParameteriv" +extern function gl_sampler_parameterf(sampler: int, pname: int, param: fixed) = "lgl_SamplerParameterf" +extern function gl_sampler_parameterfv(sampler: int, pname: int, param: pointer) = "lgl_SamplerParameterfv" +extern function gl_sampler_parameter_iiv(sampler: int, pname: int, param: pointer) = "lgl_SamplerParameterIiv" +extern function gl_sampler_parameter_iuiv(sampler: int, pname: int, param: pointer) = "lgl_SamplerParameterIuiv" +extern function gl_get_sampler_parameteriv(sampler: int, pname: int, params: pointer) = "lgl_GetSamplerParameteriv" +extern function gl_get_sampler_parameter_iiv(sampler: int, pname: int, params: pointer) = "lgl_GetSamplerParameterIiv" +extern function gl_get_sampler_parameterfv(sampler: int, pname: int, params: pointer) = "lgl_GetSamplerParameterfv" +extern function gl_get_sampler_parameter_iuiv(sampler: int, pname: int, params: pointer) = "lgl_GetSamplerParameterIuiv" +extern function gl_query_counter(id: int, target: int) = "lgl_QueryCounter" +extern function gl_get_query_objecti64v(id: int, pname: int, params: pointer) = "lgl_GetQueryObjecti64v" +extern function gl_get_query_objectui64v(id: int, pname: int, params: pointer) = "lgl_GetQueryObjectui64v" +extern function gl_vertex_attrib_p1ui(index: int, type: int, normalized: int, value: int) = "lgl_VertexAttribP1ui" +extern function gl_vertex_attrib_p1uiv(index: int, type: int, normalized: int, value: pointer) = "lgl_VertexAttribP1uiv" +extern function gl_vertex_attrib_p2ui(index: int, type: int, normalized: int, value: int) = "lgl_VertexAttribP2ui" +extern function gl_vertex_attrib_p2uiv(index: int, type: int, normalized: int, value: pointer) = "lgl_VertexAttribP2uiv" +extern function gl_vertex_attrib_p3ui(index: int, type: int, normalized: int, value: int) = "lgl_VertexAttribP3ui" +extern function gl_vertex_attrib_p3uiv(index: int, type: int, normalized: int, value: pointer) = "lgl_VertexAttribP3uiv" +extern function gl_vertex_attrib_p4ui(index: int, type: int, normalized: int, value: int) = "lgl_VertexAttribP4ui" +extern function gl_vertex_attrib_p4uiv(index: int, type: int, normalized: int, value: pointer) = "lgl_VertexAttribP4uiv" +extern function gl_draw_arrays_indirect(mode: int, indirect: pointer) = "lgl_DrawArraysIndirect" +extern function gl_draw_elements_indirect(mode: int, type: int, indirect: pointer) = "lgl_DrawElementsIndirect" +extern function gl_uniform1d(location: int, x: fixed) = "lgl_Uniform1d" +extern function gl_uniform2d(location: int, x: fixed, y: fixed) = "lgl_Uniform2d" +extern function gl_uniform3d(location: int, x: fixed, y: fixed, z: fixed) = "lgl_Uniform3d" +extern function gl_uniform4d(location: int, x: fixed, y: fixed, z: fixed, w: fixed) = "lgl_Uniform4d" +extern function gl_uniform1dv(location: int, count: int, value: pointer) = "lgl_Uniform1dv" +extern function gl_uniform2dv(location: int, count: int, value: pointer) = "lgl_Uniform2dv" +extern function gl_uniform3dv(location: int, count: int, value: pointer) = "lgl_Uniform3dv" +extern function gl_uniform4dv(location: int, count: int, value: pointer) = "lgl_Uniform4dv" +extern function gl_uniform_matrix2dv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix2dv" +extern function gl_uniform_matrix3dv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix3dv" +extern function gl_uniform_matrix4dv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix4dv" +extern function gl_uniform_matrix2x3dv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix2x3dv" +extern function gl_uniform_matrix2x4dv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix2x4dv" +extern function gl_uniform_matrix3x2dv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix3x2dv" +extern function gl_uniform_matrix3x4dv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix3x4dv" +extern function gl_uniform_matrix4x2dv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix4x2dv" +extern function gl_uniform_matrix4x3dv(location: int, count: int, transpose: int, value: pointer) = "lgl_UniformMatrix4x3dv" +extern function gl_get_uniformdv(prog: int, location: int, params: pointer) = "lgl_GetUniformdv" +extern function gl_get_subroutine_uniform_location(prog: int, shadertype: int, name: pointer) -> int = "lgl_GetSubroutineUniformLocation" +extern function gl_get_subroutine_index(prog: int, shadertype: int, name: pointer) -> int = "lgl_GetSubroutineIndex" +extern function gl_get_active_subroutine_uniformiv(prog: int, shadertype: int, index: int, pname: int, values: pointer) = "lgl_GetActiveSubroutineUniformiv" +extern function gl_get_active_subroutine_uniform_name(prog: int, shadertype: int, index: int, bufsize: int, length: pointer, name: pointer) = "lgl_GetActiveSubroutineUniformName" +extern function gl_get_active_subroutine_name(prog: int, shadertype: int, index: int, bufsize: int, length: pointer, name: pointer) = "lgl_GetActiveSubroutineName" +extern function gl_uniform_subroutinesuiv(shadertype: int, count: int, indices: pointer) = "lgl_UniformSubroutinesuiv" +extern function gl_get_uniform_subroutineuiv(shadertype: int, location: int, params: pointer) = "lgl_GetUniformSubroutineuiv" +extern function gl_get_program_stageiv(prog: int, shadertype: int, pname: int, values: pointer) = "lgl_GetProgramStageiv" +extern function gl_patch_parameteri(pname: int, value: int) = "lgl_PatchParameteri" +extern function gl_patch_parameterfv(pname: int, values: pointer) = "lgl_PatchParameterfv" +extern function gl_bind_transform_feedback(target: int, id: int) = "lgl_BindTransformFeedback" +extern function gl_delete_transform_feedbacks(n: int, ids: pointer) = "lgl_DeleteTransformFeedbacks" +extern function gl_gen_transform_feedbacks(n: int, ids: pointer) = "lgl_GenTransformFeedbacks" +extern function gl_is_transform_feedback(id: int) -> int = "lgl_IsTransformFeedback" +extern function gl_pause_transform_feedback() = "lgl_PauseTransformFeedback" +extern function gl_resume_transform_feedback() = "lgl_ResumeTransformFeedback" +extern function gl_draw_transform_feedback(mode: int, id: int) = "lgl_DrawTransformFeedback" +extern function gl_draw_transform_feedback_stream(mode: int, id: int, stream: int) = "lgl_DrawTransformFeedbackStream" +extern function gl_begin_query_indexed(target: int, index: int, id: int) = "lgl_BeginQueryIndexed" +extern function gl_end_query_indexed(target: int, index: int) = "lgl_EndQueryIndexed" +extern function gl_get_query_indexediv(target: int, index: int, pname: int, params: pointer) = "lgl_GetQueryIndexediv" +extern function gl_release_shader_compiler() = "lgl_ReleaseShaderCompiler" +extern function gl_shader_binary(count: int, shaders: pointer, binaryformat: int, binary: pointer, length: int) = "lgl_ShaderBinary" +extern function gl_get_shader_precision_format(shadertype: int, precisiontype: int, range: pointer, precision: pointer) = "lgl_GetShaderPrecisionFormat" +extern function gl_depth_rangef(n: fixed, f: fixed) = "lgl_DepthRangef" +extern function gl_clear_depthf(d: fixed) = "lgl_ClearDepthf" +extern function gl_get_program_binary(prog: int, buf_size: int, length: pointer, binary_format: pointer, binary: pointer) = "lgl_GetProgramBinary" +extern function gl_program_binary(prog: int, binary_format: int, binary: pointer, length: int) = "lgl_ProgramBinary" +extern function gl_program_parameteri(prog: int, pname: int, value: int) = "lgl_ProgramParameteri" +extern function gl_use_program_stages(pipeline: int, stages: int, prog: int) = "lgl_UseProgramStages" +extern function gl_active_shader_program(pipeline: int, prog: int) = "lgl_ActiveShaderProgram" +extern function gl_create_shader_programv(type: int, count: int, strings: pointer) -> int = "lgl_CreateShaderProgramv" +extern function gl_bind_program_pipeline(pipeline: int) = "lgl_BindProgramPipeline" +extern function gl_delete_program_pipelines(n: int, pipelines: pointer) = "lgl_DeleteProgramPipelines" +extern function gl_gen_program_pipelines(n: int, pipelines: pointer) = "lgl_GenProgramPipelines" +extern function gl_is_program_pipeline(pipeline: int) -> int = "lgl_IsProgramPipeline" +extern function gl_get_program_pipelineiv(pipeline: int, pname: int, params: pointer) = "lgl_GetProgramPipelineiv" +extern function gl_program_uniform1i(prog: int, location: int, v0: int) = "lgl_ProgramUniform1i" +extern function gl_program_uniform1iv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform1iv" +extern function gl_program_uniform1f(prog: int, location: int, v0: fixed) = "lgl_ProgramUniform1f" +extern function gl_program_uniform1fv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform1fv" +extern function gl_program_uniform1d(prog: int, location: int, v0: fixed) = "lgl_ProgramUniform1d" +extern function gl_program_uniform1dv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform1dv" +extern function gl_program_uniform1ui(prog: int, location: int, v0: int) = "lgl_ProgramUniform1ui" +extern function gl_program_uniform1uiv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform1uiv" +extern function gl_program_uniform2i(prog: int, location: int, v0: int, v1: int) = "lgl_ProgramUniform2i" +extern function gl_program_uniform2iv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform2iv" +extern function gl_program_uniform2f(prog: int, location: int, v0: fixed, v1: fixed) = "lgl_ProgramUniform2f" +extern function gl_program_uniform2fv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform2fv" +extern function gl_program_uniform2d(prog: int, location: int, v0: fixed, v1: fixed) = "lgl_ProgramUniform2d" +extern function gl_program_uniform2dv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform2dv" +extern function gl_program_uniform2ui(prog: int, location: int, v0: int, v1: int) = "lgl_ProgramUniform2ui" +extern function gl_program_uniform2uiv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform2uiv" +extern function gl_program_uniform3i(prog: int, location: int, v0: int, v1: int, v2: int) = "lgl_ProgramUniform3i" +extern function gl_program_uniform3iv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform3iv" +extern function gl_program_uniform3f(prog: int, location: int, v0: fixed, v1: fixed, v2: fixed) = "lgl_ProgramUniform3f" +extern function gl_program_uniform3fv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform3fv" +extern function gl_program_uniform3d(prog: int, location: int, v0: fixed, v1: fixed, v2: fixed) = "lgl_ProgramUniform3d" +extern function gl_program_uniform3dv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform3dv" +extern function gl_program_uniform3ui(prog: int, location: int, v0: int, v1: int, v2: int) = "lgl_ProgramUniform3ui" +extern function gl_program_uniform3uiv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform3uiv" +extern function gl_program_uniform4i(prog: int, location: int, v0: int, v1: int, v2: int, v3: int) = "lgl_ProgramUniform4i" +extern function gl_program_uniform4iv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform4iv" +extern function gl_program_uniform4f(prog: int, location: int, v0: fixed, v1: fixed, v2: fixed, v3: fixed) = "lgl_ProgramUniform4f" +extern function gl_program_uniform4fv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform4fv" +extern function gl_program_uniform4d(prog: int, location: int, v0: fixed, v1: fixed, v2: fixed, v3: fixed) = "lgl_ProgramUniform4d" +extern function gl_program_uniform4dv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform4dv" +extern function gl_program_uniform4ui(prog: int, location: int, v0: int, v1: int, v2: int, v3: int) = "lgl_ProgramUniform4ui" +extern function gl_program_uniform4uiv(prog: int, location: int, count: int, value: pointer) = "lgl_ProgramUniform4uiv" +extern function gl_program_uniform_matrix2fv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix2fv" +extern function gl_program_uniform_matrix3fv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix3fv" +extern function gl_program_uniform_matrix4fv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix4fv" +extern function gl_program_uniform_matrix2dv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix2dv" +extern function gl_program_uniform_matrix3dv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix3dv" +extern function gl_program_uniform_matrix4dv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix4dv" +extern function gl_program_uniform_matrix2x3fv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix2x3fv" +extern function gl_program_uniform_matrix3x2fv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix3x2fv" +extern function gl_program_uniform_matrix2x4fv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix2x4fv" +extern function gl_program_uniform_matrix4x2fv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix4x2fv" +extern function gl_program_uniform_matrix3x4fv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix3x4fv" +extern function gl_program_uniform_matrix4x3fv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix4x3fv" +extern function gl_program_uniform_matrix2x3dv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix2x3dv" +extern function gl_program_uniform_matrix3x2dv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix3x2dv" +extern function gl_program_uniform_matrix2x4dv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix2x4dv" +extern function gl_program_uniform_matrix4x2dv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix4x2dv" +extern function gl_program_uniform_matrix3x4dv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix3x4dv" +extern function gl_program_uniform_matrix4x3dv(prog: int, location: int, count: int, transpose: int, value: pointer) = "lgl_ProgramUniformMatrix4x3dv" +extern function gl_validate_program_pipeline(pipeline: int) = "lgl_ValidateProgramPipeline" +extern function gl_get_program_pipeline_info_log(pipeline: int, buf_size: int, length: pointer, info_log: pointer) = "lgl_GetProgramPipelineInfoLog" +extern function gl_vertex_attrib_l1d(index: int, x: fixed) = "lgl_VertexAttribL1d" +extern function gl_vertex_attrib_l2d(index: int, x: fixed, y: fixed) = "lgl_VertexAttribL2d" +extern function gl_vertex_attrib_l3d(index: int, x: fixed, y: fixed, z: fixed) = "lgl_VertexAttribL3d" +extern function gl_vertex_attrib_l4d(index: int, x: fixed, y: fixed, z: fixed, w: fixed) = "lgl_VertexAttribL4d" +extern function gl_vertex_attrib_l1dv(index: int, v: pointer) = "lgl_VertexAttribL1dv" +extern function gl_vertex_attrib_l2dv(index: int, v: pointer) = "lgl_VertexAttribL2dv" +extern function gl_vertex_attrib_l3dv(index: int, v: pointer) = "lgl_VertexAttribL3dv" +extern function gl_vertex_attrib_l4dv(index: int, v: pointer) = "lgl_VertexAttribL4dv" +extern function gl_vertex_attrib_lpointer(index: int, size: int, type: int, stride: int, offset: pointer) = "lgl_VertexAttribLPointer" +extern function gl_get_vertex_attrib_ldv(index: int, pname: int, params: pointer) = "lgl_GetVertexAttribLdv" +extern function gl_viewport_arrayv(first: int, count: int, v: pointer) = "lgl_ViewportArrayv" +extern function gl_viewport_indexedf(index: int, x: fixed, y: fixed, w: fixed, h: fixed) = "lgl_ViewportIndexedf" +extern function gl_viewport_indexedfv(index: int, v: pointer) = "lgl_ViewportIndexedfv" +extern function gl_scissor_arrayv(first: int, count: int, v: pointer) = "lgl_ScissorArrayv" +extern function gl_scissor_indexed(index: int, left: int, bottom: int, width: int, height: int) = "lgl_ScissorIndexed" +extern function gl_scissor_indexedv(index: int, v: pointer) = "lgl_ScissorIndexedv" +extern function gl_depth_range_arrayv(first: int, count: int, v: pointer) = "lgl_DepthRangeArrayv" +extern function gl_depth_range_indexed(index: int, n: fixed, f: fixed) = "lgl_DepthRangeIndexed" +extern function gl_get_floati_v(target: int, index: int, data: pointer) = "lgl_GetFloati_v" +extern function gl_get_doublei_v(target: int, index: int, data: pointer) = "lgl_GetDoublei_v" diff --git a/runtime/native/gl_thunks.ll b/runtime/native/gl_thunks.ll new file mode 100644 index 00000000..03ac3cf1 --- /dev/null +++ b/runtime/native/gl_thunks.ll @@ -0,0 +1,3163 @@ +; ============================================================================ +; gl_thunks.ll — one thunk per OpenGL 4.1 core entry point. GENERATED by +; `ludic-dev glgen` from gl3.h. Each @lgl_* takes the Ludic ABI (i32 / i64 / ptr, +; float and double as Q16.16 fixed) and calls the real gl* with exact C types. +; ============================================================================ + +declare void @glCullFace(i32) +declare void @glFrontFace(i32) +declare void @glHint(i32, i32) +declare void @glLineWidth(float) +declare void @glPointSize(float) +declare void @glPolygonMode(i32, i32) +declare void @glScissor(i32, i32, i32, i32) +declare void @glTexParameterf(i32, i32, float) +declare void @glTexParameterfv(i32, i32, ptr) +declare void @glTexParameteri(i32, i32, i32) +declare void @glTexParameteriv(i32, i32, ptr) +declare void @glTexImage1D(i32, i32, i32, i32, i32, i32, i32, ptr) +declare void @glTexImage2D(i32, i32, i32, i32, i32, i32, i32, i32, ptr) +declare void @glDrawBuffer(i32) +declare void @glClear(i32) +declare void @glClearColor(float, float, float, float) +declare void @glClearStencil(i32) +declare void @glClearDepth(double) +declare void @glStencilMask(i32) +declare void @glColorMask(i8, i8, i8, i8) +declare void @glDepthMask(i8) +declare void @glDisable(i32) +declare void @glEnable(i32) +declare void @glFinish() +declare void @glFlush() +declare void @glBlendFunc(i32, i32) +declare void @glLogicOp(i32) +declare void @glStencilFunc(i32, i32, i32) +declare void @glStencilOp(i32, i32, i32) +declare void @glDepthFunc(i32) +declare void @glPixelStoref(i32, float) +declare void @glPixelStorei(i32, i32) +declare void @glReadBuffer(i32) +declare void @glReadPixels(i32, i32, i32, i32, i32, i32, ptr) +declare void @glGetBooleanv(i32, ptr) +declare void @glGetDoublev(i32, ptr) +declare i32 @glGetError() +declare void @glGetFloatv(i32, ptr) +declare void @glGetIntegerv(i32, ptr) +declare ptr @glGetString(i32) +declare void @glGetTexImage(i32, i32, i32, i32, ptr) +declare void @glGetTexParameterfv(i32, i32, ptr) +declare void @glGetTexParameteriv(i32, i32, ptr) +declare void @glGetTexLevelParameterfv(i32, i32, i32, ptr) +declare void @glGetTexLevelParameteriv(i32, i32, i32, ptr) +declare i8 @glIsEnabled(i32) +declare void @glDepthRange(double, double) +declare void @glViewport(i32, i32, i32, i32) +declare void @glDrawArrays(i32, i32, i32) +declare void @glDrawElements(i32, i32, i32, ptr) +declare void @glPolygonOffset(float, float) +declare void @glCopyTexImage1D(i32, i32, i32, i32, i32, i32, i32) +declare void @glCopyTexImage2D(i32, i32, i32, i32, i32, i32, i32, i32) +declare void @glCopyTexSubImage1D(i32, i32, i32, i32, i32, i32) +declare void @glCopyTexSubImage2D(i32, i32, i32, i32, i32, i32, i32, i32) +declare void @glTexSubImage1D(i32, i32, i32, i32, i32, i32, ptr) +declare void @glTexSubImage2D(i32, i32, i32, i32, i32, i32, i32, i32, ptr) +declare void @glBindTexture(i32, i32) +declare void @glDeleteTextures(i32, ptr) +declare void @glGenTextures(i32, ptr) +declare i8 @glIsTexture(i32) +declare void @glBlendColor(float, float, float, float) +declare void @glBlendEquation(i32) +declare void @glDrawRangeElements(i32, i32, i32, i32, i32, ptr) +declare void @glTexImage3D(i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr) +declare void @glTexSubImage3D(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr) +declare void @glCopyTexSubImage3D(i32, i32, i32, i32, i32, i32, i32, i32, i32) +declare void @glActiveTexture(i32) +declare void @glSampleCoverage(float, i8) +declare void @glCompressedTexImage3D(i32, i32, i32, i32, i32, i32, i32, i32, ptr) +declare void @glCompressedTexImage2D(i32, i32, i32, i32, i32, i32, i32, ptr) +declare void @glCompressedTexImage1D(i32, i32, i32, i32, i32, i32, ptr) +declare void @glCompressedTexSubImage3D(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr) +declare void @glCompressedTexSubImage2D(i32, i32, i32, i32, i32, i32, i32, i32, ptr) +declare void @glCompressedTexSubImage1D(i32, i32, i32, i32, i32, i32, ptr) +declare void @glGetCompressedTexImage(i32, i32, ptr) +declare void @glBlendFuncSeparate(i32, i32, i32, i32) +declare void @glMultiDrawArrays(i32, ptr, ptr, i32) +declare void @glMultiDrawElements(i32, ptr, i32, ptr, i32) +declare void @glPointParameterf(i32, float) +declare void @glPointParameterfv(i32, ptr) +declare void @glPointParameteri(i32, i32) +declare void @glPointParameteriv(i32, ptr) +declare void @glGenQueries(i32, ptr) +declare void @glDeleteQueries(i32, ptr) +declare i8 @glIsQuery(i32) +declare void @glBeginQuery(i32, i32) +declare void @glEndQuery(i32) +declare void @glGetQueryiv(i32, i32, ptr) +declare void @glGetQueryObjectiv(i32, i32, ptr) +declare void @glGetQueryObjectuiv(i32, i32, ptr) +declare void @glBindBuffer(i32, i32) +declare void @glDeleteBuffers(i32, ptr) +declare void @glGenBuffers(i32, ptr) +declare i8 @glIsBuffer(i32) +declare void @glBufferData(i32, i64, ptr, i32) +declare void @glBufferSubData(i32, i64, i64, ptr) +declare void @glGetBufferSubData(i32, i64, i64, ptr) +declare ptr @glMapBuffer(i32, i32) +declare i8 @glUnmapBuffer(i32) +declare void @glGetBufferParameteriv(i32, i32, ptr) +declare void @glGetBufferPointerv(i32, i32, ptr) +declare void @glBlendEquationSeparate(i32, i32) +declare void @glDrawBuffers(i32, ptr) +declare void @glStencilOpSeparate(i32, i32, i32, i32) +declare void @glStencilFuncSeparate(i32, i32, i32, i32) +declare void @glStencilMaskSeparate(i32, i32) +declare void @glAttachShader(i32, i32) +declare void @glBindAttribLocation(i32, i32, ptr) +declare void @glCompileShader(i32) +declare i32 @glCreateProgram() +declare i32 @glCreateShader(i32) +declare void @glDeleteProgram(i32) +declare void @glDeleteShader(i32) +declare void @glDetachShader(i32, i32) +declare void @glDisableVertexAttribArray(i32) +declare void @glEnableVertexAttribArray(i32) +declare void @glGetActiveAttrib(i32, i32, i32, ptr, ptr, ptr, ptr) +declare void @glGetActiveUniform(i32, i32, i32, ptr, ptr, ptr, ptr) +declare void @glGetAttachedShaders(i32, i32, ptr, ptr) +declare i32 @glGetAttribLocation(i32, ptr) +declare void @glGetProgramiv(i32, i32, ptr) +declare void @glGetProgramInfoLog(i32, i32, ptr, ptr) +declare void @glGetShaderiv(i32, i32, ptr) +declare void @glGetShaderInfoLog(i32, i32, ptr, ptr) +declare void @glGetShaderSource(i32, i32, ptr, ptr) +declare i32 @glGetUniformLocation(i32, ptr) +declare void @glGetUniformfv(i32, i32, ptr) +declare void @glGetUniformiv(i32, i32, ptr) +declare void @glGetVertexAttribdv(i32, i32, ptr) +declare void @glGetVertexAttribfv(i32, i32, ptr) +declare void @glGetVertexAttribiv(i32, i32, ptr) +declare void @glGetVertexAttribPointerv(i32, i32, ptr) +declare i8 @glIsProgram(i32) +declare i8 @glIsShader(i32) +declare void @glLinkProgram(i32) +declare void @glShaderSource(i32, i32, ptr, ptr) +declare void @glUseProgram(i32) +declare void @glUniform1f(i32, float) +declare void @glUniform2f(i32, float, float) +declare void @glUniform3f(i32, float, float, float) +declare void @glUniform4f(i32, float, float, float, float) +declare void @glUniform1i(i32, i32) +declare void @glUniform2i(i32, i32, i32) +declare void @glUniform3i(i32, i32, i32, i32) +declare void @glUniform4i(i32, i32, i32, i32, i32) +declare void @glUniform1fv(i32, i32, ptr) +declare void @glUniform2fv(i32, i32, ptr) +declare void @glUniform3fv(i32, i32, ptr) +declare void @glUniform4fv(i32, i32, ptr) +declare void @glUniform1iv(i32, i32, ptr) +declare void @glUniform2iv(i32, i32, ptr) +declare void @glUniform3iv(i32, i32, ptr) +declare void @glUniform4iv(i32, i32, ptr) +declare void @glUniformMatrix2fv(i32, i32, i8, ptr) +declare void @glUniformMatrix3fv(i32, i32, i8, ptr) +declare void @glUniformMatrix4fv(i32, i32, i8, ptr) +declare void @glValidateProgram(i32) +declare void @glVertexAttrib1d(i32, double) +declare void @glVertexAttrib1dv(i32, ptr) +declare void @glVertexAttrib1f(i32, float) +declare void @glVertexAttrib1fv(i32, ptr) +declare void @glVertexAttrib1s(i32, i16) +declare void @glVertexAttrib1sv(i32, ptr) +declare void @glVertexAttrib2d(i32, double, double) +declare void @glVertexAttrib2dv(i32, ptr) +declare void @glVertexAttrib2f(i32, float, float) +declare void @glVertexAttrib2fv(i32, ptr) +declare void @glVertexAttrib2s(i32, i16, i16) +declare void @glVertexAttrib2sv(i32, ptr) +declare void @glVertexAttrib3d(i32, double, double, double) +declare void @glVertexAttrib3dv(i32, ptr) +declare void @glVertexAttrib3f(i32, float, float, float) +declare void @glVertexAttrib3fv(i32, ptr) +declare void @glVertexAttrib3s(i32, i16, i16, i16) +declare void @glVertexAttrib3sv(i32, ptr) +declare void @glVertexAttrib4Nbv(i32, ptr) +declare void @glVertexAttrib4Niv(i32, ptr) +declare void @glVertexAttrib4Nsv(i32, ptr) +declare void @glVertexAttrib4Nub(i32, i8, i8, i8, i8) +declare void @glVertexAttrib4Nubv(i32, ptr) +declare void @glVertexAttrib4Nuiv(i32, ptr) +declare void @glVertexAttrib4Nusv(i32, ptr) +declare void @glVertexAttrib4bv(i32, ptr) +declare void @glVertexAttrib4d(i32, double, double, double, double) +declare void @glVertexAttrib4dv(i32, ptr) +declare void @glVertexAttrib4f(i32, float, float, float, float) +declare void @glVertexAttrib4fv(i32, ptr) +declare void @glVertexAttrib4iv(i32, ptr) +declare void @glVertexAttrib4s(i32, i16, i16, i16, i16) +declare void @glVertexAttrib4sv(i32, ptr) +declare void @glVertexAttrib4ubv(i32, ptr) +declare void @glVertexAttrib4uiv(i32, ptr) +declare void @glVertexAttrib4usv(i32, ptr) +declare void @glVertexAttribPointer(i32, i32, i32, i8, i32, ptr) +declare void @glUniformMatrix2x3fv(i32, i32, i8, ptr) +declare void @glUniformMatrix3x2fv(i32, i32, i8, ptr) +declare void @glUniformMatrix2x4fv(i32, i32, i8, ptr) +declare void @glUniformMatrix4x2fv(i32, i32, i8, ptr) +declare void @glUniformMatrix3x4fv(i32, i32, i8, ptr) +declare void @glUniformMatrix4x3fv(i32, i32, i8, ptr) +declare void @glColorMaski(i32, i8, i8, i8, i8) +declare void @glGetBooleani_v(i32, i32, ptr) +declare void @glGetIntegeri_v(i32, i32, ptr) +declare void @glEnablei(i32, i32) +declare void @glDisablei(i32, i32) +declare i8 @glIsEnabledi(i32, i32) +declare void @glBeginTransformFeedback(i32) +declare void @glEndTransformFeedback() +declare void @glBindBufferRange(i32, i32, i32, i64, i64) +declare void @glBindBufferBase(i32, i32, i32) +declare void @glTransformFeedbackVaryings(i32, i32, ptr, i32) +declare void @glGetTransformFeedbackVarying(i32, i32, i32, ptr, ptr, ptr, ptr) +declare void @glClampColor(i32, i32) +declare void @glBeginConditionalRender(i32, i32) +declare void @glEndConditionalRender() +declare void @glVertexAttribIPointer(i32, i32, i32, i32, ptr) +declare void @glGetVertexAttribIiv(i32, i32, ptr) +declare void @glGetVertexAttribIuiv(i32, i32, ptr) +declare void @glVertexAttribI1i(i32, i32) +declare void @glVertexAttribI2i(i32, i32, i32) +declare void @glVertexAttribI3i(i32, i32, i32, i32) +declare void @glVertexAttribI4i(i32, i32, i32, i32, i32) +declare void @glVertexAttribI1ui(i32, i32) +declare void @glVertexAttribI2ui(i32, i32, i32) +declare void @glVertexAttribI3ui(i32, i32, i32, i32) +declare void @glVertexAttribI4ui(i32, i32, i32, i32, i32) +declare void @glVertexAttribI1iv(i32, ptr) +declare void @glVertexAttribI2iv(i32, ptr) +declare void @glVertexAttribI3iv(i32, ptr) +declare void @glVertexAttribI4iv(i32, ptr) +declare void @glVertexAttribI1uiv(i32, ptr) +declare void @glVertexAttribI2uiv(i32, ptr) +declare void @glVertexAttribI3uiv(i32, ptr) +declare void @glVertexAttribI4uiv(i32, ptr) +declare void @glVertexAttribI4bv(i32, ptr) +declare void @glVertexAttribI4sv(i32, ptr) +declare void @glVertexAttribI4ubv(i32, ptr) +declare void @glVertexAttribI4usv(i32, ptr) +declare void @glGetUniformuiv(i32, i32, ptr) +declare void @glBindFragDataLocation(i32, i32, ptr) +declare i32 @glGetFragDataLocation(i32, ptr) +declare void @glUniform1ui(i32, i32) +declare void @glUniform2ui(i32, i32, i32) +declare void @glUniform3ui(i32, i32, i32, i32) +declare void @glUniform4ui(i32, i32, i32, i32, i32) +declare void @glUniform1uiv(i32, i32, ptr) +declare void @glUniform2uiv(i32, i32, ptr) +declare void @glUniform3uiv(i32, i32, ptr) +declare void @glUniform4uiv(i32, i32, ptr) +declare void @glTexParameterIiv(i32, i32, ptr) +declare void @glTexParameterIuiv(i32, i32, ptr) +declare void @glGetTexParameterIiv(i32, i32, ptr) +declare void @glGetTexParameterIuiv(i32, i32, ptr) +declare void @glClearBufferiv(i32, i32, ptr) +declare void @glClearBufferuiv(i32, i32, ptr) +declare void @glClearBufferfv(i32, i32, ptr) +declare void @glClearBufferfi(i32, i32, float, i32) +declare ptr @glGetStringi(i32, i32) +declare void @glDrawArraysInstanced(i32, i32, i32, i32) +declare void @glDrawElementsInstanced(i32, i32, i32, ptr, i32) +declare void @glTexBuffer(i32, i32, i32) +declare void @glPrimitiveRestartIndex(i32) +declare void @glGetInteger64i_v(i32, i32, ptr) +declare void @glGetBufferParameteri64v(i32, i32, ptr) +declare void @glFramebufferTexture(i32, i32, i32, i32) +declare void @glVertexAttribDivisor(i32, i32) +declare void @glMinSampleShading(float) +declare void @glBlendEquationi(i32, i32) +declare void @glBlendEquationSeparatei(i32, i32, i32) +declare void @glBlendFunci(i32, i32, i32) +declare void @glBlendFuncSeparatei(i32, i32, i32, i32, i32) +declare i8 @glIsRenderbuffer(i32) +declare void @glBindRenderbuffer(i32, i32) +declare void @glDeleteRenderbuffers(i32, ptr) +declare void @glGenRenderbuffers(i32, ptr) +declare void @glRenderbufferStorage(i32, i32, i32, i32) +declare void @glGetRenderbufferParameteriv(i32, i32, ptr) +declare i8 @glIsFramebuffer(i32) +declare void @glBindFramebuffer(i32, i32) +declare void @glDeleteFramebuffers(i32, ptr) +declare void @glGenFramebuffers(i32, ptr) +declare i32 @glCheckFramebufferStatus(i32) +declare void @glFramebufferTexture1D(i32, i32, i32, i32, i32) +declare void @glFramebufferTexture2D(i32, i32, i32, i32, i32) +declare void @glFramebufferTexture3D(i32, i32, i32, i32, i32, i32) +declare void @glFramebufferRenderbuffer(i32, i32, i32, i32) +declare void @glGetFramebufferAttachmentParameteriv(i32, i32, i32, ptr) +declare void @glGenerateMipmap(i32) +declare void @glBlitFramebuffer(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) +declare void @glRenderbufferStorageMultisample(i32, i32, i32, i32, i32) +declare void @glFramebufferTextureLayer(i32, i32, i32, i32, i32) +declare ptr @glMapBufferRange(i32, i64, i64, i32) +declare void @glFlushMappedBufferRange(i32, i64, i64) +declare void @glBindVertexArray(i32) +declare void @glDeleteVertexArrays(i32, ptr) +declare void @glGenVertexArrays(i32, ptr) +declare i8 @glIsVertexArray(i32) +declare void @glGetUniformIndices(i32, i32, ptr, ptr) +declare void @glGetActiveUniformsiv(i32, i32, ptr, i32, ptr) +declare void @glGetActiveUniformName(i32, i32, i32, ptr, ptr) +declare i32 @glGetUniformBlockIndex(i32, ptr) +declare void @glGetActiveUniformBlockiv(i32, i32, i32, ptr) +declare void @glGetActiveUniformBlockName(i32, i32, i32, ptr, ptr) +declare void @glUniformBlockBinding(i32, i32, i32) +declare void @glCopyBufferSubData(i32, i32, i64, i64, i64) +declare void @glDrawElementsBaseVertex(i32, i32, i32, ptr, i32) +declare void @glDrawRangeElementsBaseVertex(i32, i32, i32, i32, i32, ptr, i32) +declare void @glDrawElementsInstancedBaseVertex(i32, i32, i32, ptr, i32, i32) +declare void @glMultiDrawElementsBaseVertex(i32, ptr, i32, ptr, i32, ptr) +declare void @glProvokingVertex(i32) +declare ptr @glFenceSync(i32, i32) +declare i8 @glIsSync(ptr) +declare void @glDeleteSync(ptr) +declare i32 @glClientWaitSync(ptr, i32, i64) +declare void @glWaitSync(ptr, i32, i64) +declare void @glGetInteger64v(i32, ptr) +declare void @glGetSynciv(ptr, i32, i32, ptr, ptr) +declare void @glTexImage2DMultisample(i32, i32, i32, i32, i32, i8) +declare void @glTexImage3DMultisample(i32, i32, i32, i32, i32, i32, i8) +declare void @glGetMultisamplefv(i32, i32, ptr) +declare void @glSampleMaski(i32, i32) +declare void @glBindFragDataLocationIndexed(i32, i32, i32, ptr) +declare i32 @glGetFragDataIndex(i32, ptr) +declare void @glGenSamplers(i32, ptr) +declare void @glDeleteSamplers(i32, ptr) +declare i8 @glIsSampler(i32) +declare void @glBindSampler(i32, i32) +declare void @glSamplerParameteri(i32, i32, i32) +declare void @glSamplerParameteriv(i32, i32, ptr) +declare void @glSamplerParameterf(i32, i32, float) +declare void @glSamplerParameterfv(i32, i32, ptr) +declare void @glSamplerParameterIiv(i32, i32, ptr) +declare void @glSamplerParameterIuiv(i32, i32, ptr) +declare void @glGetSamplerParameteriv(i32, i32, ptr) +declare void @glGetSamplerParameterIiv(i32, i32, ptr) +declare void @glGetSamplerParameterfv(i32, i32, ptr) +declare void @glGetSamplerParameterIuiv(i32, i32, ptr) +declare void @glQueryCounter(i32, i32) +declare void @glGetQueryObjecti64v(i32, i32, ptr) +declare void @glGetQueryObjectui64v(i32, i32, ptr) +declare void @glVertexAttribP1ui(i32, i32, i8, i32) +declare void @glVertexAttribP1uiv(i32, i32, i8, ptr) +declare void @glVertexAttribP2ui(i32, i32, i8, i32) +declare void @glVertexAttribP2uiv(i32, i32, i8, ptr) +declare void @glVertexAttribP3ui(i32, i32, i8, i32) +declare void @glVertexAttribP3uiv(i32, i32, i8, ptr) +declare void @glVertexAttribP4ui(i32, i32, i8, i32) +declare void @glVertexAttribP4uiv(i32, i32, i8, ptr) +declare void @glDrawArraysIndirect(i32, ptr) +declare void @glDrawElementsIndirect(i32, i32, ptr) +declare void @glUniform1d(i32, double) +declare void @glUniform2d(i32, double, double) +declare void @glUniform3d(i32, double, double, double) +declare void @glUniform4d(i32, double, double, double, double) +declare void @glUniform1dv(i32, i32, ptr) +declare void @glUniform2dv(i32, i32, ptr) +declare void @glUniform3dv(i32, i32, ptr) +declare void @glUniform4dv(i32, i32, ptr) +declare void @glUniformMatrix2dv(i32, i32, i8, ptr) +declare void @glUniformMatrix3dv(i32, i32, i8, ptr) +declare void @glUniformMatrix4dv(i32, i32, i8, ptr) +declare void @glUniformMatrix2x3dv(i32, i32, i8, ptr) +declare void @glUniformMatrix2x4dv(i32, i32, i8, ptr) +declare void @glUniformMatrix3x2dv(i32, i32, i8, ptr) +declare void @glUniformMatrix3x4dv(i32, i32, i8, ptr) +declare void @glUniformMatrix4x2dv(i32, i32, i8, ptr) +declare void @glUniformMatrix4x3dv(i32, i32, i8, ptr) +declare void @glGetUniformdv(i32, i32, ptr) +declare i32 @glGetSubroutineUniformLocation(i32, i32, ptr) +declare i32 @glGetSubroutineIndex(i32, i32, ptr) +declare void @glGetActiveSubroutineUniformiv(i32, i32, i32, i32, ptr) +declare void @glGetActiveSubroutineUniformName(i32, i32, i32, i32, ptr, ptr) +declare void @glGetActiveSubroutineName(i32, i32, i32, i32, ptr, ptr) +declare void @glUniformSubroutinesuiv(i32, i32, ptr) +declare void @glGetUniformSubroutineuiv(i32, i32, ptr) +declare void @glGetProgramStageiv(i32, i32, i32, ptr) +declare void @glPatchParameteri(i32, i32) +declare void @glPatchParameterfv(i32, ptr) +declare void @glBindTransformFeedback(i32, i32) +declare void @glDeleteTransformFeedbacks(i32, ptr) +declare void @glGenTransformFeedbacks(i32, ptr) +declare i8 @glIsTransformFeedback(i32) +declare void @glPauseTransformFeedback() +declare void @glResumeTransformFeedback() +declare void @glDrawTransformFeedback(i32, i32) +declare void @glDrawTransformFeedbackStream(i32, i32, i32) +declare void @glBeginQueryIndexed(i32, i32, i32) +declare void @glEndQueryIndexed(i32, i32) +declare void @glGetQueryIndexediv(i32, i32, i32, ptr) +declare void @glReleaseShaderCompiler() +declare void @glShaderBinary(i32, ptr, i32, ptr, i32) +declare void @glGetShaderPrecisionFormat(i32, i32, ptr, ptr) +declare void @glDepthRangef(float, float) +declare void @glClearDepthf(float) +declare void @glGetProgramBinary(i32, i32, ptr, ptr, ptr) +declare void @glProgramBinary(i32, i32, ptr, i32) +declare void @glProgramParameteri(i32, i32, i32) +declare void @glUseProgramStages(i32, i32, i32) +declare void @glActiveShaderProgram(i32, i32) +declare i32 @glCreateShaderProgramv(i32, i32, ptr) +declare void @glBindProgramPipeline(i32) +declare void @glDeleteProgramPipelines(i32, ptr) +declare void @glGenProgramPipelines(i32, ptr) +declare i8 @glIsProgramPipeline(i32) +declare void @glGetProgramPipelineiv(i32, i32, ptr) +declare void @glProgramUniform1i(i32, i32, i32) +declare void @glProgramUniform1iv(i32, i32, i32, ptr) +declare void @glProgramUniform1f(i32, i32, float) +declare void @glProgramUniform1fv(i32, i32, i32, ptr) +declare void @glProgramUniform1d(i32, i32, double) +declare void @glProgramUniform1dv(i32, i32, i32, ptr) +declare void @glProgramUniform1ui(i32, i32, i32) +declare void @glProgramUniform1uiv(i32, i32, i32, ptr) +declare void @glProgramUniform2i(i32, i32, i32, i32) +declare void @glProgramUniform2iv(i32, i32, i32, ptr) +declare void @glProgramUniform2f(i32, i32, float, float) +declare void @glProgramUniform2fv(i32, i32, i32, ptr) +declare void @glProgramUniform2d(i32, i32, double, double) +declare void @glProgramUniform2dv(i32, i32, i32, ptr) +declare void @glProgramUniform2ui(i32, i32, i32, i32) +declare void @glProgramUniform2uiv(i32, i32, i32, ptr) +declare void @glProgramUniform3i(i32, i32, i32, i32, i32) +declare void @glProgramUniform3iv(i32, i32, i32, ptr) +declare void @glProgramUniform3f(i32, i32, float, float, float) +declare void @glProgramUniform3fv(i32, i32, i32, ptr) +declare void @glProgramUniform3d(i32, i32, double, double, double) +declare void @glProgramUniform3dv(i32, i32, i32, ptr) +declare void @glProgramUniform3ui(i32, i32, i32, i32, i32) +declare void @glProgramUniform3uiv(i32, i32, i32, ptr) +declare void @glProgramUniform4i(i32, i32, i32, i32, i32, i32) +declare void @glProgramUniform4iv(i32, i32, i32, ptr) +declare void @glProgramUniform4f(i32, i32, float, float, float, float) +declare void @glProgramUniform4fv(i32, i32, i32, ptr) +declare void @glProgramUniform4d(i32, i32, double, double, double, double) +declare void @glProgramUniform4dv(i32, i32, i32, ptr) +declare void @glProgramUniform4ui(i32, i32, i32, i32, i32, i32) +declare void @glProgramUniform4uiv(i32, i32, i32, ptr) +declare void @glProgramUniformMatrix2fv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix3fv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix4fv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix2dv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix3dv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix4dv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix2x3fv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix3x2fv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix2x4fv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix4x2fv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix3x4fv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix4x3fv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix2x3dv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix3x2dv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix2x4dv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix4x2dv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix3x4dv(i32, i32, i32, i8, ptr) +declare void @glProgramUniformMatrix4x3dv(i32, i32, i32, i8, ptr) +declare void @glValidateProgramPipeline(i32) +declare void @glGetProgramPipelineInfoLog(i32, i32, ptr, ptr) +declare void @glVertexAttribL1d(i32, double) +declare void @glVertexAttribL2d(i32, double, double) +declare void @glVertexAttribL3d(i32, double, double, double) +declare void @glVertexAttribL4d(i32, double, double, double, double) +declare void @glVertexAttribL1dv(i32, ptr) +declare void @glVertexAttribL2dv(i32, ptr) +declare void @glVertexAttribL3dv(i32, ptr) +declare void @glVertexAttribL4dv(i32, ptr) +declare void @glVertexAttribLPointer(i32, i32, i32, i32, ptr) +declare void @glGetVertexAttribLdv(i32, i32, ptr) +declare void @glViewportArrayv(i32, i32, ptr) +declare void @glViewportIndexedf(i32, float, float, float, float) +declare void @glViewportIndexedfv(i32, ptr) +declare void @glScissorArrayv(i32, i32, ptr) +declare void @glScissorIndexed(i32, i32, i32, i32, i32) +declare void @glScissorIndexedv(i32, ptr) +declare void @glDepthRangeArrayv(i32, i32, ptr) +declare void @glDepthRangeIndexed(i32, double, double) +declare void @glGetFloati_v(i32, i32, ptr) +declare void @glGetDoublei_v(i32, i32, ptr) + +define void @lgl_CullFace(i32 %a0) { +entry: + call void @glCullFace(i32 %a0) + ret void +} +define void @lgl_FrontFace(i32 %a0) { +entry: + call void @glFrontFace(i32 %a0) + ret void +} +define void @lgl_Hint(i32 %a0, i32 %a1) { +entry: + call void @glHint(i32 %a0, i32 %a1) + ret void +} +define void @lgl_LineWidth(i32 %a0) { +entry: + %f0 = sitofp i32 %a0 to float + %c0 = fmul float %f0, 0x3EF0000000000000 + call void @glLineWidth(float %c0) + ret void +} +define void @lgl_PointSize(i32 %a0) { +entry: + %f0 = sitofp i32 %a0 to float + %c0 = fmul float %f0, 0x3EF0000000000000 + call void @glPointSize(float %c0) + ret void +} +define void @lgl_PolygonMode(i32 %a0, i32 %a1) { +entry: + call void @glPolygonMode(i32 %a0, i32 %a1) + ret void +} +define void @lgl_Scissor(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glScissor(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_TexParameterf(i32 %a0, i32 %a1, i32 %a2) { +entry: + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + call void @glTexParameterf(i32 %a0, i32 %a1, float %c2) + ret void +} +define void @lgl_TexParameterfv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glTexParameterfv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_TexParameteri(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glTexParameteri(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_TexParameteriv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glTexParameteriv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_TexImage1D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, ptr %a7) { +entry: + call void @glTexImage1D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, ptr %a7) + ret void +} +define void @lgl_TexImage2D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, ptr %a8) { +entry: + call void @glTexImage2D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, ptr %a8) + ret void +} +define void @lgl_DrawBuffer(i32 %a0) { +entry: + call void @glDrawBuffer(i32 %a0) + ret void +} +define void @lgl_Clear(i32 %a0) { +entry: + call void @glClear(i32 %a0) + ret void +} +define void @lgl_ClearColor(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %f0 = sitofp i32 %a0 to float + %c0 = fmul float %f0, 0x3EF0000000000000 + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to float + %c3 = fmul float %f3, 0x3EF0000000000000 + call void @glClearColor(float %c0, float %c1, float %c2, float %c3) + ret void +} +define void @lgl_ClearStencil(i32 %a0) { +entry: + call void @glClearStencil(i32 %a0) + ret void +} +define void @lgl_ClearDepth(i32 %a0) { +entry: + %f0 = sitofp i32 %a0 to double + %c0 = fmul double %f0, 0x3EF0000000000000 + call void @glClearDepth(double %c0) + ret void +} +define void @lgl_StencilMask(i32 %a0) { +entry: + call void @glStencilMask(i32 %a0) + ret void +} +define void @lgl_ColorMask(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %c0 = trunc i32 %a0 to i8 + %c1 = trunc i32 %a1 to i8 + %c2 = trunc i32 %a2 to i8 + %c3 = trunc i32 %a3 to i8 + call void @glColorMask(i8 %c0, i8 %c1, i8 %c2, i8 %c3) + ret void +} +define void @lgl_DepthMask(i32 %a0) { +entry: + %c0 = trunc i32 %a0 to i8 + call void @glDepthMask(i8 %c0) + ret void +} +define void @lgl_Disable(i32 %a0) { +entry: + call void @glDisable(i32 %a0) + ret void +} +define void @lgl_Enable(i32 %a0) { +entry: + call void @glEnable(i32 %a0) + ret void +} +define void @lgl_Finish() { +entry: + call void @glFinish() + ret void +} +define void @lgl_Flush() { +entry: + call void @glFlush() + ret void +} +define void @lgl_BlendFunc(i32 %a0, i32 %a1) { +entry: + call void @glBlendFunc(i32 %a0, i32 %a1) + ret void +} +define void @lgl_LogicOp(i32 %a0) { +entry: + call void @glLogicOp(i32 %a0) + ret void +} +define void @lgl_StencilFunc(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glStencilFunc(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_StencilOp(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glStencilOp(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_DepthFunc(i32 %a0) { +entry: + call void @glDepthFunc(i32 %a0) + ret void +} +define void @lgl_PixelStoref(i32 %a0, i32 %a1) { +entry: + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + call void @glPixelStoref(i32 %a0, float %c1) + ret void +} +define void @lgl_PixelStorei(i32 %a0, i32 %a1) { +entry: + call void @glPixelStorei(i32 %a0, i32 %a1) + ret void +} +define void @lgl_ReadBuffer(i32 %a0) { +entry: + call void @glReadBuffer(i32 %a0) + ret void +} +define void @lgl_ReadPixels(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, ptr %a6) { +entry: + call void @glReadPixels(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, ptr %a6) + ret void +} +define void @lgl_GetBooleanv(i32 %a0, ptr %a1) { +entry: + call void @glGetBooleanv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_GetDoublev(i32 %a0, ptr %a1) { +entry: + call void @glGetDoublev(i32 %a0, ptr %a1) + ret void +} +define i32 @lgl_GetError() { +entry: + %r = call i32 @glGetError() + ret i32 %r +} +define void @lgl_GetFloatv(i32 %a0, ptr %a1) { +entry: + call void @glGetFloatv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_GetIntegerv(i32 %a0, ptr %a1) { +entry: + call void @glGetIntegerv(i32 %a0, ptr %a1) + ret void +} +define ptr @lgl_GetString(i32 %a0) { +entry: + %r = call ptr @glGetString(i32 %a0) + ret ptr %r +} +define void @lgl_GetTexImage(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + call void @glGetTexImage(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) + ret void +} +define void @lgl_GetTexParameterfv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetTexParameterfv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetTexParameteriv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetTexParameteriv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetTexLevelParameterfv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glGetTexLevelParameterfv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_GetTexLevelParameteriv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glGetTexLevelParameteriv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define i32 @lgl_IsEnabled(i32 %a0) { +entry: + %r = call i8 @glIsEnabled(i32 %a0) + %z = zext i8 %r to i32 + ret i32 %z +} +define void @lgl_DepthRange(i32 %a0, i32 %a1) { +entry: + %f0 = sitofp i32 %a0 to double + %c0 = fmul double %f0, 0x3EF0000000000000 + %f1 = sitofp i32 %a1 to double + %c1 = fmul double %f1, 0x3EF0000000000000 + call void @glDepthRange(double %c0, double %c1) + ret void +} +define void @lgl_Viewport(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glViewport(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_DrawArrays(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glDrawArrays(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_DrawElements(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glDrawElements(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_PolygonOffset(i32 %a0, i32 %a1) { +entry: + %f0 = sitofp i32 %a0 to float + %c0 = fmul float %f0, 0x3EF0000000000000 + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + call void @glPolygonOffset(float %c0, float %c1) + ret void +} +define void @lgl_CopyTexImage1D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6) { +entry: + call void @glCopyTexImage1D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6) + ret void +} +define void @lgl_CopyTexImage2D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7) { +entry: + call void @glCopyTexImage2D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7) + ret void +} +define void @lgl_CopyTexSubImage1D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5) { +entry: + call void @glCopyTexSubImage1D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5) + ret void +} +define void @lgl_CopyTexSubImage2D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7) { +entry: + call void @glCopyTexSubImage2D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7) + ret void +} +define void @lgl_TexSubImage1D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, ptr %a6) { +entry: + call void @glTexSubImage1D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, ptr %a6) + ret void +} +define void @lgl_TexSubImage2D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, ptr %a8) { +entry: + call void @glTexSubImage2D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, ptr %a8) + ret void +} +define void @lgl_BindTexture(i32 %a0, i32 %a1) { +entry: + call void @glBindTexture(i32 %a0, i32 %a1) + ret void +} +define void @lgl_DeleteTextures(i32 %a0, ptr %a1) { +entry: + call void @glDeleteTextures(i32 %a0, ptr %a1) + ret void +} +define void @lgl_GenTextures(i32 %a0, ptr %a1) { +entry: + call void @glGenTextures(i32 %a0, ptr %a1) + ret void +} +define i32 @lgl_IsTexture(i32 %a0) { +entry: + %r = call i8 @glIsTexture(i32 %a0) + %z = zext i8 %r to i32 + ret i32 %z +} +define void @lgl_BlendColor(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %f0 = sitofp i32 %a0 to float + %c0 = fmul float %f0, 0x3EF0000000000000 + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to float + %c3 = fmul float %f3, 0x3EF0000000000000 + call void @glBlendColor(float %c0, float %c1, float %c2, float %c3) + ret void +} +define void @lgl_BlendEquation(i32 %a0) { +entry: + call void @glBlendEquation(i32 %a0) + ret void +} +define void @lgl_DrawRangeElements(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, ptr %a5) { +entry: + call void @glDrawRangeElements(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, ptr %a5) + ret void +} +define void @lgl_TexImage3D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, i32 %a8, ptr %a9) { +entry: + call void @glTexImage3D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, i32 %a8, ptr %a9) + ret void +} +define void @lgl_TexSubImage3D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, i32 %a8, i32 %a9, ptr %a10) { +entry: + call void @glTexSubImage3D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, i32 %a8, i32 %a9, ptr %a10) + ret void +} +define void @lgl_CopyTexSubImage3D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, i32 %a8) { +entry: + call void @glCopyTexSubImage3D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, i32 %a8) + ret void +} +define void @lgl_ActiveTexture(i32 %a0) { +entry: + call void @glActiveTexture(i32 %a0) + ret void +} +define void @lgl_SampleCoverage(i32 %a0, i32 %a1) { +entry: + %f0 = sitofp i32 %a0 to float + %c0 = fmul float %f0, 0x3EF0000000000000 + %c1 = trunc i32 %a1 to i8 + call void @glSampleCoverage(float %c0, i8 %c1) + ret void +} +define void @lgl_CompressedTexImage3D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, ptr %a8) { +entry: + call void @glCompressedTexImage3D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, ptr %a8) + ret void +} +define void @lgl_CompressedTexImage2D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, ptr %a7) { +entry: + call void @glCompressedTexImage2D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, ptr %a7) + ret void +} +define void @lgl_CompressedTexImage1D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, ptr %a6) { +entry: + call void @glCompressedTexImage1D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, ptr %a6) + ret void +} +define void @lgl_CompressedTexSubImage3D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, i32 %a8, i32 %a9, ptr %a10) { +entry: + call void @glCompressedTexSubImage3D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, i32 %a8, i32 %a9, ptr %a10) + ret void +} +define void @lgl_CompressedTexSubImage2D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, ptr %a8) { +entry: + call void @glCompressedTexSubImage2D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, ptr %a8) + ret void +} +define void @lgl_CompressedTexSubImage1D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, ptr %a6) { +entry: + call void @glCompressedTexSubImage1D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, ptr %a6) + ret void +} +define void @lgl_GetCompressedTexImage(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetCompressedTexImage(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_BlendFuncSeparate(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glBlendFuncSeparate(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_MultiDrawArrays(i32 %a0, ptr %a1, ptr %a2, i32 %a3) { +entry: + call void @glMultiDrawArrays(i32 %a0, ptr %a1, ptr %a2, i32 %a3) + ret void +} +define void @lgl_MultiDrawElements(i32 %a0, ptr %a1, i32 %a2, ptr %a3, i32 %a4) { +entry: + call void @glMultiDrawElements(i32 %a0, ptr %a1, i32 %a2, ptr %a3, i32 %a4) + ret void +} +define void @lgl_PointParameterf(i32 %a0, i32 %a1) { +entry: + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + call void @glPointParameterf(i32 %a0, float %c1) + ret void +} +define void @lgl_PointParameterfv(i32 %a0, ptr %a1) { +entry: + call void @glPointParameterfv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_PointParameteri(i32 %a0, i32 %a1) { +entry: + call void @glPointParameteri(i32 %a0, i32 %a1) + ret void +} +define void @lgl_PointParameteriv(i32 %a0, ptr %a1) { +entry: + call void @glPointParameteriv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_GenQueries(i32 %a0, ptr %a1) { +entry: + call void @glGenQueries(i32 %a0, ptr %a1) + ret void +} +define void @lgl_DeleteQueries(i32 %a0, ptr %a1) { +entry: + call void @glDeleteQueries(i32 %a0, ptr %a1) + ret void +} +define i32 @lgl_IsQuery(i32 %a0) { +entry: + %r = call i8 @glIsQuery(i32 %a0) + %z = zext i8 %r to i32 + ret i32 %z +} +define void @lgl_BeginQuery(i32 %a0, i32 %a1) { +entry: + call void @glBeginQuery(i32 %a0, i32 %a1) + ret void +} +define void @lgl_EndQuery(i32 %a0) { +entry: + call void @glEndQuery(i32 %a0) + ret void +} +define void @lgl_GetQueryiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetQueryiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetQueryObjectiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetQueryObjectiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetQueryObjectuiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetQueryObjectuiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_BindBuffer(i32 %a0, i32 %a1) { +entry: + call void @glBindBuffer(i32 %a0, i32 %a1) + ret void +} +define void @lgl_DeleteBuffers(i32 %a0, ptr %a1) { +entry: + call void @glDeleteBuffers(i32 %a0, ptr %a1) + ret void +} +define void @lgl_GenBuffers(i32 %a0, ptr %a1) { +entry: + call void @glGenBuffers(i32 %a0, ptr %a1) + ret void +} +define i32 @lgl_IsBuffer(i32 %a0) { +entry: + %r = call i8 @glIsBuffer(i32 %a0) + %z = zext i8 %r to i32 + ret i32 %z +} +define void @lgl_BufferData(i32 %a0, i64 %a1, ptr %a2, i32 %a3) { +entry: + call void @glBufferData(i32 %a0, i64 %a1, ptr %a2, i32 %a3) + ret void +} +define void @lgl_BufferSubData(i32 %a0, i64 %a1, i64 %a2, ptr %a3) { +entry: + call void @glBufferSubData(i32 %a0, i64 %a1, i64 %a2, ptr %a3) + ret void +} +define void @lgl_GetBufferSubData(i32 %a0, i64 %a1, i64 %a2, ptr %a3) { +entry: + call void @glGetBufferSubData(i32 %a0, i64 %a1, i64 %a2, ptr %a3) + ret void +} +define ptr @lgl_MapBuffer(i32 %a0, i32 %a1) { +entry: + %r = call ptr @glMapBuffer(i32 %a0, i32 %a1) + ret ptr %r +} +define i32 @lgl_UnmapBuffer(i32 %a0) { +entry: + %r = call i8 @glUnmapBuffer(i32 %a0) + %z = zext i8 %r to i32 + ret i32 %z +} +define void @lgl_GetBufferParameteriv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetBufferParameteriv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetBufferPointerv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetBufferPointerv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_BlendEquationSeparate(i32 %a0, i32 %a1) { +entry: + call void @glBlendEquationSeparate(i32 %a0, i32 %a1) + ret void +} +define void @lgl_DrawBuffers(i32 %a0, ptr %a1) { +entry: + call void @glDrawBuffers(i32 %a0, ptr %a1) + ret void +} +define void @lgl_StencilOpSeparate(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glStencilOpSeparate(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_StencilFuncSeparate(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glStencilFuncSeparate(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_StencilMaskSeparate(i32 %a0, i32 %a1) { +entry: + call void @glStencilMaskSeparate(i32 %a0, i32 %a1) + ret void +} +define void @lgl_AttachShader(i32 %a0, i32 %a1) { +entry: + call void @glAttachShader(i32 %a0, i32 %a1) + ret void +} +define void @lgl_BindAttribLocation(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glBindAttribLocation(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_CompileShader(i32 %a0) { +entry: + call void @glCompileShader(i32 %a0) + ret void +} +define i32 @lgl_CreateProgram() { +entry: + %r = call i32 @glCreateProgram() + ret i32 %r +} +define i32 @lgl_CreateShader(i32 %a0) { +entry: + %r = call i32 @glCreateShader(i32 %a0) + ret i32 %r +} +define void @lgl_DeleteProgram(i32 %a0) { +entry: + call void @glDeleteProgram(i32 %a0) + ret void +} +define void @lgl_DeleteShader(i32 %a0) { +entry: + call void @glDeleteShader(i32 %a0) + ret void +} +define void @lgl_DetachShader(i32 %a0, i32 %a1) { +entry: + call void @glDetachShader(i32 %a0, i32 %a1) + ret void +} +define void @lgl_DisableVertexAttribArray(i32 %a0) { +entry: + call void @glDisableVertexAttribArray(i32 %a0) + ret void +} +define void @lgl_EnableVertexAttribArray(i32 %a0) { +entry: + call void @glEnableVertexAttribArray(i32 %a0) + ret void +} +define void @lgl_GetActiveAttrib(i32 %a0, i32 %a1, i32 %a2, ptr %a3, ptr %a4, ptr %a5, ptr %a6) { +entry: + call void @glGetActiveAttrib(i32 %a0, i32 %a1, i32 %a2, ptr %a3, ptr %a4, ptr %a5, ptr %a6) + ret void +} +define void @lgl_GetActiveUniform(i32 %a0, i32 %a1, i32 %a2, ptr %a3, ptr %a4, ptr %a5, ptr %a6) { +entry: + call void @glGetActiveUniform(i32 %a0, i32 %a1, i32 %a2, ptr %a3, ptr %a4, ptr %a5, ptr %a6) + ret void +} +define void @lgl_GetAttachedShaders(i32 %a0, i32 %a1, ptr %a2, ptr %a3) { +entry: + call void @glGetAttachedShaders(i32 %a0, i32 %a1, ptr %a2, ptr %a3) + ret void +} +define i32 @lgl_GetAttribLocation(i32 %a0, ptr %a1) { +entry: + %r = call i32 @glGetAttribLocation(i32 %a0, ptr %a1) + ret i32 %r +} +define void @lgl_GetProgramiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetProgramiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetProgramInfoLog(i32 %a0, i32 %a1, ptr %a2, ptr %a3) { +entry: + call void @glGetProgramInfoLog(i32 %a0, i32 %a1, ptr %a2, ptr %a3) + ret void +} +define void @lgl_GetShaderiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetShaderiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetShaderInfoLog(i32 %a0, i32 %a1, ptr %a2, ptr %a3) { +entry: + call void @glGetShaderInfoLog(i32 %a0, i32 %a1, ptr %a2, ptr %a3) + ret void +} +define void @lgl_GetShaderSource(i32 %a0, i32 %a1, ptr %a2, ptr %a3) { +entry: + call void @glGetShaderSource(i32 %a0, i32 %a1, ptr %a2, ptr %a3) + ret void +} +define i32 @lgl_GetUniformLocation(i32 %a0, ptr %a1) { +entry: + %r = call i32 @glGetUniformLocation(i32 %a0, ptr %a1) + ret i32 %r +} +define void @lgl_GetUniformfv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetUniformfv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetUniformiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetUniformiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetVertexAttribdv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetVertexAttribdv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetVertexAttribfv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetVertexAttribfv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetVertexAttribiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetVertexAttribiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetVertexAttribPointerv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetVertexAttribPointerv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define i32 @lgl_IsProgram(i32 %a0) { +entry: + %r = call i8 @glIsProgram(i32 %a0) + %z = zext i8 %r to i32 + ret i32 %z +} +define i32 @lgl_IsShader(i32 %a0) { +entry: + %r = call i8 @glIsShader(i32 %a0) + %z = zext i8 %r to i32 + ret i32 %z +} +define void @lgl_LinkProgram(i32 %a0) { +entry: + call void @glLinkProgram(i32 %a0) + ret void +} +define void @lgl_ShaderSource(i32 %a0, i32 %a1, ptr %a2, ptr %a3) { +entry: + call void @glShaderSource(i32 %a0, i32 %a1, ptr %a2, ptr %a3) + ret void +} +define void @lgl_UseProgram(i32 %a0) { +entry: + call void @glUseProgram(i32 %a0) + ret void +} +define void @lgl_Uniform1f(i32 %a0, i32 %a1) { +entry: + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + call void @glUniform1f(i32 %a0, float %c1) + ret void +} +define void @lgl_Uniform2f(i32 %a0, i32 %a1, i32 %a2) { +entry: + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + call void @glUniform2f(i32 %a0, float %c1, float %c2) + ret void +} +define void @lgl_Uniform3f(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to float + %c3 = fmul float %f3, 0x3EF0000000000000 + call void @glUniform3f(i32 %a0, float %c1, float %c2, float %c3) + ret void +} +define void @lgl_Uniform4f(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to float + %c3 = fmul float %f3, 0x3EF0000000000000 + %f4 = sitofp i32 %a4 to float + %c4 = fmul float %f4, 0x3EF0000000000000 + call void @glUniform4f(i32 %a0, float %c1, float %c2, float %c3, float %c4) + ret void +} +define void @lgl_Uniform1i(i32 %a0, i32 %a1) { +entry: + call void @glUniform1i(i32 %a0, i32 %a1) + ret void +} +define void @lgl_Uniform2i(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glUniform2i(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_Uniform3i(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glUniform3i(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_Uniform4i(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + call void @glUniform4i(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) + ret void +} +define void @lgl_Uniform1fv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform1fv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Uniform2fv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform2fv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Uniform3fv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform3fv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Uniform4fv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform4fv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Uniform1iv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform1iv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Uniform2iv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform2iv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Uniform3iv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform3iv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Uniform4iv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform4iv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_UniformMatrix2fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix2fv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix3fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix3fv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix4fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix4fv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_ValidateProgram(i32 %a0) { +entry: + call void @glValidateProgram(i32 %a0) + ret void +} +define void @lgl_VertexAttrib1d(i32 %a0, i32 %a1) { +entry: + %f1 = sitofp i32 %a1 to double + %c1 = fmul double %f1, 0x3EF0000000000000 + call void @glVertexAttrib1d(i32 %a0, double %c1) + ret void +} +define void @lgl_VertexAttrib1dv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib1dv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib1f(i32 %a0, i32 %a1) { +entry: + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + call void @glVertexAttrib1f(i32 %a0, float %c1) + ret void +} +define void @lgl_VertexAttrib1fv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib1fv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib1s(i32 %a0, i32 %a1) { +entry: + %c1 = trunc i32 %a1 to i16 + call void @glVertexAttrib1s(i32 %a0, i16 %c1) + ret void +} +define void @lgl_VertexAttrib1sv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib1sv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib2d(i32 %a0, i32 %a1, i32 %a2) { +entry: + %f1 = sitofp i32 %a1 to double + %c1 = fmul double %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to double + %c2 = fmul double %f2, 0x3EF0000000000000 + call void @glVertexAttrib2d(i32 %a0, double %c1, double %c2) + ret void +} +define void @lgl_VertexAttrib2dv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib2dv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib2f(i32 %a0, i32 %a1, i32 %a2) { +entry: + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + call void @glVertexAttrib2f(i32 %a0, float %c1, float %c2) + ret void +} +define void @lgl_VertexAttrib2fv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib2fv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib2s(i32 %a0, i32 %a1, i32 %a2) { +entry: + %c1 = trunc i32 %a1 to i16 + %c2 = trunc i32 %a2 to i16 + call void @glVertexAttrib2s(i32 %a0, i16 %c1, i16 %c2) + ret void +} +define void @lgl_VertexAttrib2sv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib2sv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib3d(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %f1 = sitofp i32 %a1 to double + %c1 = fmul double %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to double + %c2 = fmul double %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to double + %c3 = fmul double %f3, 0x3EF0000000000000 + call void @glVertexAttrib3d(i32 %a0, double %c1, double %c2, double %c3) + ret void +} +define void @lgl_VertexAttrib3dv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib3dv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib3f(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to float + %c3 = fmul float %f3, 0x3EF0000000000000 + call void @glVertexAttrib3f(i32 %a0, float %c1, float %c2, float %c3) + ret void +} +define void @lgl_VertexAttrib3fv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib3fv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib3s(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %c1 = trunc i32 %a1 to i16 + %c2 = trunc i32 %a2 to i16 + %c3 = trunc i32 %a3 to i16 + call void @glVertexAttrib3s(i32 %a0, i16 %c1, i16 %c2, i16 %c3) + ret void +} +define void @lgl_VertexAttrib3sv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib3sv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib4Nbv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib4Nbv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib4Niv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib4Niv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib4Nsv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib4Nsv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib4Nub(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + %c1 = trunc i32 %a1 to i8 + %c2 = trunc i32 %a2 to i8 + %c3 = trunc i32 %a3 to i8 + %c4 = trunc i32 %a4 to i8 + call void @glVertexAttrib4Nub(i32 %a0, i8 %c1, i8 %c2, i8 %c3, i8 %c4) + ret void +} +define void @lgl_VertexAttrib4Nubv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib4Nubv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib4Nuiv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib4Nuiv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib4Nusv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib4Nusv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib4bv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib4bv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib4d(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + %f1 = sitofp i32 %a1 to double + %c1 = fmul double %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to double + %c2 = fmul double %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to double + %c3 = fmul double %f3, 0x3EF0000000000000 + %f4 = sitofp i32 %a4 to double + %c4 = fmul double %f4, 0x3EF0000000000000 + call void @glVertexAttrib4d(i32 %a0, double %c1, double %c2, double %c3, double %c4) + ret void +} +define void @lgl_VertexAttrib4dv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib4dv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib4f(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to float + %c3 = fmul float %f3, 0x3EF0000000000000 + %f4 = sitofp i32 %a4 to float + %c4 = fmul float %f4, 0x3EF0000000000000 + call void @glVertexAttrib4f(i32 %a0, float %c1, float %c2, float %c3, float %c4) + ret void +} +define void @lgl_VertexAttrib4fv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib4fv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib4iv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib4iv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib4s(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + %c1 = trunc i32 %a1 to i16 + %c2 = trunc i32 %a2 to i16 + %c3 = trunc i32 %a3 to i16 + %c4 = trunc i32 %a4 to i16 + call void @glVertexAttrib4s(i32 %a0, i16 %c1, i16 %c2, i16 %c3, i16 %c4) + ret void +} +define void @lgl_VertexAttrib4sv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib4sv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib4ubv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib4ubv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib4uiv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib4uiv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttrib4usv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttrib4usv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribPointer(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, ptr %a5) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glVertexAttribPointer(i32 %a0, i32 %a1, i32 %a2, i8 %c3, i32 %a4, ptr %a5) + ret void +} +define void @lgl_UniformMatrix2x3fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix2x3fv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix3x2fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix3x2fv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix2x4fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix2x4fv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix4x2fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix4x2fv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix3x4fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix3x4fv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix4x3fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix4x3fv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_ColorMaski(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + %c1 = trunc i32 %a1 to i8 + %c2 = trunc i32 %a2 to i8 + %c3 = trunc i32 %a3 to i8 + %c4 = trunc i32 %a4 to i8 + call void @glColorMaski(i32 %a0, i8 %c1, i8 %c2, i8 %c3, i8 %c4) + ret void +} +define void @lgl_GetBooleani_v(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetBooleani_v(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetIntegeri_v(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetIntegeri_v(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Enablei(i32 %a0, i32 %a1) { +entry: + call void @glEnablei(i32 %a0, i32 %a1) + ret void +} +define void @lgl_Disablei(i32 %a0, i32 %a1) { +entry: + call void @glDisablei(i32 %a0, i32 %a1) + ret void +} +define i32 @lgl_IsEnabledi(i32 %a0, i32 %a1) { +entry: + %r = call i8 @glIsEnabledi(i32 %a0, i32 %a1) + %z = zext i8 %r to i32 + ret i32 %z +} +define void @lgl_BeginTransformFeedback(i32 %a0) { +entry: + call void @glBeginTransformFeedback(i32 %a0) + ret void +} +define void @lgl_EndTransformFeedback() { +entry: + call void @glEndTransformFeedback() + ret void +} +define void @lgl_BindBufferRange(i32 %a0, i32 %a1, i32 %a2, i64 %a3, i64 %a4) { +entry: + call void @glBindBufferRange(i32 %a0, i32 %a1, i32 %a2, i64 %a3, i64 %a4) + ret void +} +define void @lgl_BindBufferBase(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glBindBufferBase(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_TransformFeedbackVaryings(i32 %a0, i32 %a1, ptr %a2, i32 %a3) { +entry: + call void @glTransformFeedbackVaryings(i32 %a0, i32 %a1, ptr %a2, i32 %a3) + ret void +} +define void @lgl_GetTransformFeedbackVarying(i32 %a0, i32 %a1, i32 %a2, ptr %a3, ptr %a4, ptr %a5, ptr %a6) { +entry: + call void @glGetTransformFeedbackVarying(i32 %a0, i32 %a1, i32 %a2, ptr %a3, ptr %a4, ptr %a5, ptr %a6) + ret void +} +define void @lgl_ClampColor(i32 %a0, i32 %a1) { +entry: + call void @glClampColor(i32 %a0, i32 %a1) + ret void +} +define void @lgl_BeginConditionalRender(i32 %a0, i32 %a1) { +entry: + call void @glBeginConditionalRender(i32 %a0, i32 %a1) + ret void +} +define void @lgl_EndConditionalRender() { +entry: + call void @glEndConditionalRender() + ret void +} +define void @lgl_VertexAttribIPointer(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + call void @glVertexAttribIPointer(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) + ret void +} +define void @lgl_GetVertexAttribIiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetVertexAttribIiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetVertexAttribIuiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetVertexAttribIuiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_VertexAttribI1i(i32 %a0, i32 %a1) { +entry: + call void @glVertexAttribI1i(i32 %a0, i32 %a1) + ret void +} +define void @lgl_VertexAttribI2i(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glVertexAttribI2i(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_VertexAttribI3i(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glVertexAttribI3i(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_VertexAttribI4i(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + call void @glVertexAttribI4i(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) + ret void +} +define void @lgl_VertexAttribI1ui(i32 %a0, i32 %a1) { +entry: + call void @glVertexAttribI1ui(i32 %a0, i32 %a1) + ret void +} +define void @lgl_VertexAttribI2ui(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glVertexAttribI2ui(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_VertexAttribI3ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glVertexAttribI3ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_VertexAttribI4ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + call void @glVertexAttribI4ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) + ret void +} +define void @lgl_VertexAttribI1iv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribI1iv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribI2iv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribI2iv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribI3iv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribI3iv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribI4iv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribI4iv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribI1uiv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribI1uiv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribI2uiv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribI2uiv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribI3uiv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribI3uiv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribI4uiv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribI4uiv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribI4bv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribI4bv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribI4sv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribI4sv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribI4ubv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribI4ubv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribI4usv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribI4usv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_GetUniformuiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetUniformuiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_BindFragDataLocation(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glBindFragDataLocation(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define i32 @lgl_GetFragDataLocation(i32 %a0, ptr %a1) { +entry: + %r = call i32 @glGetFragDataLocation(i32 %a0, ptr %a1) + ret i32 %r +} +define void @lgl_Uniform1ui(i32 %a0, i32 %a1) { +entry: + call void @glUniform1ui(i32 %a0, i32 %a1) + ret void +} +define void @lgl_Uniform2ui(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glUniform2ui(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_Uniform3ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glUniform3ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_Uniform4ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + call void @glUniform4ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) + ret void +} +define void @lgl_Uniform1uiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform1uiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Uniform2uiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform2uiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Uniform3uiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform3uiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Uniform4uiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform4uiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_TexParameterIiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glTexParameterIiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_TexParameterIuiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glTexParameterIuiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetTexParameterIiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetTexParameterIiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetTexParameterIuiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetTexParameterIuiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_ClearBufferiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glClearBufferiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_ClearBufferuiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glClearBufferuiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_ClearBufferfv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glClearBufferfv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_ClearBufferfi(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + call void @glClearBufferfi(i32 %a0, i32 %a1, float %c2, i32 %a3) + ret void +} +define ptr @lgl_GetStringi(i32 %a0, i32 %a1) { +entry: + %r = call ptr @glGetStringi(i32 %a0, i32 %a1) + ret ptr %r +} +define void @lgl_DrawArraysInstanced(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glDrawArraysInstanced(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_DrawElementsInstanced(i32 %a0, i32 %a1, i32 %a2, ptr %a3, i32 %a4) { +entry: + call void @glDrawElementsInstanced(i32 %a0, i32 %a1, i32 %a2, ptr %a3, i32 %a4) + ret void +} +define void @lgl_TexBuffer(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glTexBuffer(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_PrimitiveRestartIndex(i32 %a0) { +entry: + call void @glPrimitiveRestartIndex(i32 %a0) + ret void +} +define void @lgl_GetInteger64i_v(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetInteger64i_v(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetBufferParameteri64v(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetBufferParameteri64v(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_FramebufferTexture(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glFramebufferTexture(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_VertexAttribDivisor(i32 %a0, i32 %a1) { +entry: + call void @glVertexAttribDivisor(i32 %a0, i32 %a1) + ret void +} +define void @lgl_MinSampleShading(i32 %a0) { +entry: + %f0 = sitofp i32 %a0 to float + %c0 = fmul float %f0, 0x3EF0000000000000 + call void @glMinSampleShading(float %c0) + ret void +} +define void @lgl_BlendEquationi(i32 %a0, i32 %a1) { +entry: + call void @glBlendEquationi(i32 %a0, i32 %a1) + ret void +} +define void @lgl_BlendEquationSeparatei(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glBlendEquationSeparatei(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_BlendFunci(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glBlendFunci(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_BlendFuncSeparatei(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + call void @glBlendFuncSeparatei(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) + ret void +} +define i32 @lgl_IsRenderbuffer(i32 %a0) { +entry: + %r = call i8 @glIsRenderbuffer(i32 %a0) + %z = zext i8 %r to i32 + ret i32 %z +} +define void @lgl_BindRenderbuffer(i32 %a0, i32 %a1) { +entry: + call void @glBindRenderbuffer(i32 %a0, i32 %a1) + ret void +} +define void @lgl_DeleteRenderbuffers(i32 %a0, ptr %a1) { +entry: + call void @glDeleteRenderbuffers(i32 %a0, ptr %a1) + ret void +} +define void @lgl_GenRenderbuffers(i32 %a0, ptr %a1) { +entry: + call void @glGenRenderbuffers(i32 %a0, ptr %a1) + ret void +} +define void @lgl_RenderbufferStorage(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glRenderbufferStorage(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_GetRenderbufferParameteriv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetRenderbufferParameteriv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define i32 @lgl_IsFramebuffer(i32 %a0) { +entry: + %r = call i8 @glIsFramebuffer(i32 %a0) + %z = zext i8 %r to i32 + ret i32 %z +} +define void @lgl_BindFramebuffer(i32 %a0, i32 %a1) { +entry: + call void @glBindFramebuffer(i32 %a0, i32 %a1) + ret void +} +define void @lgl_DeleteFramebuffers(i32 %a0, ptr %a1) { +entry: + call void @glDeleteFramebuffers(i32 %a0, ptr %a1) + ret void +} +define void @lgl_GenFramebuffers(i32 %a0, ptr %a1) { +entry: + call void @glGenFramebuffers(i32 %a0, ptr %a1) + ret void +} +define i32 @lgl_CheckFramebufferStatus(i32 %a0) { +entry: + %r = call i32 @glCheckFramebufferStatus(i32 %a0) + ret i32 %r +} +define void @lgl_FramebufferTexture1D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + call void @glFramebufferTexture1D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) + ret void +} +define void @lgl_FramebufferTexture2D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + call void @glFramebufferTexture2D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) + ret void +} +define void @lgl_FramebufferTexture3D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5) { +entry: + call void @glFramebufferTexture3D(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5) + ret void +} +define void @lgl_FramebufferRenderbuffer(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glFramebufferRenderbuffer(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_GetFramebufferAttachmentParameteriv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glGetFramebufferAttachmentParameteriv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_GenerateMipmap(i32 %a0) { +entry: + call void @glGenerateMipmap(i32 %a0) + ret void +} +define void @lgl_BlitFramebuffer(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, i32 %a8, i32 %a9) { +entry: + call void @glBlitFramebuffer(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, i32 %a8, i32 %a9) + ret void +} +define void @lgl_RenderbufferStorageMultisample(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + call void @glRenderbufferStorageMultisample(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) + ret void +} +define void @lgl_FramebufferTextureLayer(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + call void @glFramebufferTextureLayer(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) + ret void +} +define ptr @lgl_MapBufferRange(i32 %a0, i64 %a1, i64 %a2, i32 %a3) { +entry: + %r = call ptr @glMapBufferRange(i32 %a0, i64 %a1, i64 %a2, i32 %a3) + ret ptr %r +} +define void @lgl_FlushMappedBufferRange(i32 %a0, i64 %a1, i64 %a2) { +entry: + call void @glFlushMappedBufferRange(i32 %a0, i64 %a1, i64 %a2) + ret void +} +define void @lgl_BindVertexArray(i32 %a0) { +entry: + call void @glBindVertexArray(i32 %a0) + ret void +} +define void @lgl_DeleteVertexArrays(i32 %a0, ptr %a1) { +entry: + call void @glDeleteVertexArrays(i32 %a0, ptr %a1) + ret void +} +define void @lgl_GenVertexArrays(i32 %a0, ptr %a1) { +entry: + call void @glGenVertexArrays(i32 %a0, ptr %a1) + ret void +} +define i32 @lgl_IsVertexArray(i32 %a0) { +entry: + %r = call i8 @glIsVertexArray(i32 %a0) + %z = zext i8 %r to i32 + ret i32 %z +} +define void @lgl_GetUniformIndices(i32 %a0, i32 %a1, ptr %a2, ptr %a3) { +entry: + call void @glGetUniformIndices(i32 %a0, i32 %a1, ptr %a2, ptr %a3) + ret void +} +define void @lgl_GetActiveUniformsiv(i32 %a0, i32 %a1, ptr %a2, i32 %a3, ptr %a4) { +entry: + call void @glGetActiveUniformsiv(i32 %a0, i32 %a1, ptr %a2, i32 %a3, ptr %a4) + ret void +} +define void @lgl_GetActiveUniformName(i32 %a0, i32 %a1, i32 %a2, ptr %a3, ptr %a4) { +entry: + call void @glGetActiveUniformName(i32 %a0, i32 %a1, i32 %a2, ptr %a3, ptr %a4) + ret void +} +define i32 @lgl_GetUniformBlockIndex(i32 %a0, ptr %a1) { +entry: + %r = call i32 @glGetUniformBlockIndex(i32 %a0, ptr %a1) + ret i32 %r +} +define void @lgl_GetActiveUniformBlockiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glGetActiveUniformBlockiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_GetActiveUniformBlockName(i32 %a0, i32 %a1, i32 %a2, ptr %a3, ptr %a4) { +entry: + call void @glGetActiveUniformBlockName(i32 %a0, i32 %a1, i32 %a2, ptr %a3, ptr %a4) + ret void +} +define void @lgl_UniformBlockBinding(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glUniformBlockBinding(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_CopyBufferSubData(i32 %a0, i32 %a1, i64 %a2, i64 %a3, i64 %a4) { +entry: + call void @glCopyBufferSubData(i32 %a0, i32 %a1, i64 %a2, i64 %a3, i64 %a4) + ret void +} +define void @lgl_DrawElementsBaseVertex(i32 %a0, i32 %a1, i32 %a2, ptr %a3, i32 %a4) { +entry: + call void @glDrawElementsBaseVertex(i32 %a0, i32 %a1, i32 %a2, ptr %a3, i32 %a4) + ret void +} +define void @lgl_DrawRangeElementsBaseVertex(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, ptr %a5, i32 %a6) { +entry: + call void @glDrawRangeElementsBaseVertex(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, ptr %a5, i32 %a6) + ret void +} +define void @lgl_DrawElementsInstancedBaseVertex(i32 %a0, i32 %a1, i32 %a2, ptr %a3, i32 %a4, i32 %a5) { +entry: + call void @glDrawElementsInstancedBaseVertex(i32 %a0, i32 %a1, i32 %a2, ptr %a3, i32 %a4, i32 %a5) + ret void +} +define void @lgl_MultiDrawElementsBaseVertex(i32 %a0, ptr %a1, i32 %a2, ptr %a3, i32 %a4, ptr %a5) { +entry: + call void @glMultiDrawElementsBaseVertex(i32 %a0, ptr %a1, i32 %a2, ptr %a3, i32 %a4, ptr %a5) + ret void +} +define void @lgl_ProvokingVertex(i32 %a0) { +entry: + call void @glProvokingVertex(i32 %a0) + ret void +} +define ptr @lgl_FenceSync(i32 %a0, i32 %a1) { +entry: + %r = call ptr @glFenceSync(i32 %a0, i32 %a1) + ret ptr %r +} +define i32 @lgl_IsSync(ptr %a0) { +entry: + %r = call i8 @glIsSync(ptr %a0) + %z = zext i8 %r to i32 + ret i32 %z +} +define void @lgl_DeleteSync(ptr %a0) { +entry: + call void @glDeleteSync(ptr %a0) + ret void +} +define i32 @lgl_ClientWaitSync(ptr %a0, i32 %a1, i64 %a2) { +entry: + %r = call i32 @glClientWaitSync(ptr %a0, i32 %a1, i64 %a2) + ret i32 %r +} +define void @lgl_WaitSync(ptr %a0, i32 %a1, i64 %a2) { +entry: + call void @glWaitSync(ptr %a0, i32 %a1, i64 %a2) + ret void +} +define void @lgl_GetInteger64v(i32 %a0, ptr %a1) { +entry: + call void @glGetInteger64v(i32 %a0, ptr %a1) + ret void +} +define void @lgl_GetSynciv(ptr %a0, i32 %a1, i32 %a2, ptr %a3, ptr %a4) { +entry: + call void @glGetSynciv(ptr %a0, i32 %a1, i32 %a2, ptr %a3, ptr %a4) + ret void +} +define void @lgl_TexImage2DMultisample(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5) { +entry: + %c5 = trunc i32 %a5 to i8 + call void @glTexImage2DMultisample(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i8 %c5) + ret void +} +define void @lgl_TexImage3DMultisample(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6) { +entry: + %c6 = trunc i32 %a6 to i8 + call void @glTexImage3DMultisample(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i8 %c6) + ret void +} +define void @lgl_GetMultisamplefv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetMultisamplefv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_SampleMaski(i32 %a0, i32 %a1) { +entry: + call void @glSampleMaski(i32 %a0, i32 %a1) + ret void +} +define void @lgl_BindFragDataLocationIndexed(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glBindFragDataLocationIndexed(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define i32 @lgl_GetFragDataIndex(i32 %a0, ptr %a1) { +entry: + %r = call i32 @glGetFragDataIndex(i32 %a0, ptr %a1) + ret i32 %r +} +define void @lgl_GenSamplers(i32 %a0, ptr %a1) { +entry: + call void @glGenSamplers(i32 %a0, ptr %a1) + ret void +} +define void @lgl_DeleteSamplers(i32 %a0, ptr %a1) { +entry: + call void @glDeleteSamplers(i32 %a0, ptr %a1) + ret void +} +define i32 @lgl_IsSampler(i32 %a0) { +entry: + %r = call i8 @glIsSampler(i32 %a0) + %z = zext i8 %r to i32 + ret i32 %z +} +define void @lgl_BindSampler(i32 %a0, i32 %a1) { +entry: + call void @glBindSampler(i32 %a0, i32 %a1) + ret void +} +define void @lgl_SamplerParameteri(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glSamplerParameteri(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_SamplerParameteriv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glSamplerParameteriv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_SamplerParameterf(i32 %a0, i32 %a1, i32 %a2) { +entry: + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + call void @glSamplerParameterf(i32 %a0, i32 %a1, float %c2) + ret void +} +define void @lgl_SamplerParameterfv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glSamplerParameterfv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_SamplerParameterIiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glSamplerParameterIiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_SamplerParameterIuiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glSamplerParameterIuiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetSamplerParameteriv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetSamplerParameteriv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetSamplerParameterIiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetSamplerParameterIiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetSamplerParameterfv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetSamplerParameterfv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetSamplerParameterIuiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetSamplerParameterIuiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_QueryCounter(i32 %a0, i32 %a1) { +entry: + call void @glQueryCounter(i32 %a0, i32 %a1) + ret void +} +define void @lgl_GetQueryObjecti64v(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetQueryObjecti64v(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetQueryObjectui64v(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetQueryObjectui64v(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_VertexAttribP1ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glVertexAttribP1ui(i32 %a0, i32 %a1, i8 %c2, i32 %a3) + ret void +} +define void @lgl_VertexAttribP1uiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glVertexAttribP1uiv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_VertexAttribP2ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glVertexAttribP2ui(i32 %a0, i32 %a1, i8 %c2, i32 %a3) + ret void +} +define void @lgl_VertexAttribP2uiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glVertexAttribP2uiv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_VertexAttribP3ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glVertexAttribP3ui(i32 %a0, i32 %a1, i8 %c2, i32 %a3) + ret void +} +define void @lgl_VertexAttribP3uiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glVertexAttribP3uiv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_VertexAttribP4ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glVertexAttribP4ui(i32 %a0, i32 %a1, i8 %c2, i32 %a3) + ret void +} +define void @lgl_VertexAttribP4uiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glVertexAttribP4uiv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_DrawArraysIndirect(i32 %a0, ptr %a1) { +entry: + call void @glDrawArraysIndirect(i32 %a0, ptr %a1) + ret void +} +define void @lgl_DrawElementsIndirect(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glDrawElementsIndirect(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Uniform1d(i32 %a0, i32 %a1) { +entry: + %f1 = sitofp i32 %a1 to double + %c1 = fmul double %f1, 0x3EF0000000000000 + call void @glUniform1d(i32 %a0, double %c1) + ret void +} +define void @lgl_Uniform2d(i32 %a0, i32 %a1, i32 %a2) { +entry: + %f1 = sitofp i32 %a1 to double + %c1 = fmul double %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to double + %c2 = fmul double %f2, 0x3EF0000000000000 + call void @glUniform2d(i32 %a0, double %c1, double %c2) + ret void +} +define void @lgl_Uniform3d(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %f1 = sitofp i32 %a1 to double + %c1 = fmul double %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to double + %c2 = fmul double %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to double + %c3 = fmul double %f3, 0x3EF0000000000000 + call void @glUniform3d(i32 %a0, double %c1, double %c2, double %c3) + ret void +} +define void @lgl_Uniform4d(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + %f1 = sitofp i32 %a1 to double + %c1 = fmul double %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to double + %c2 = fmul double %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to double + %c3 = fmul double %f3, 0x3EF0000000000000 + %f4 = sitofp i32 %a4 to double + %c4 = fmul double %f4, 0x3EF0000000000000 + call void @glUniform4d(i32 %a0, double %c1, double %c2, double %c3, double %c4) + ret void +} +define void @lgl_Uniform1dv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform1dv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Uniform2dv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform2dv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Uniform3dv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform3dv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_Uniform4dv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniform4dv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_UniformMatrix2dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix2dv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix3dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix3dv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix4dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix4dv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix2x3dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix2x3dv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix2x4dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix2x4dv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix3x2dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix3x2dv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix3x4dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix3x4dv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix4x2dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix4x2dv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_UniformMatrix4x3dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + %c2 = trunc i32 %a2 to i8 + call void @glUniformMatrix4x3dv(i32 %a0, i32 %a1, i8 %c2, ptr %a3) + ret void +} +define void @lgl_GetUniformdv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetUniformdv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define i32 @lgl_GetSubroutineUniformLocation(i32 %a0, i32 %a1, ptr %a2) { +entry: + %r = call i32 @glGetSubroutineUniformLocation(i32 %a0, i32 %a1, ptr %a2) + ret i32 %r +} +define i32 @lgl_GetSubroutineIndex(i32 %a0, i32 %a1, ptr %a2) { +entry: + %r = call i32 @glGetSubroutineIndex(i32 %a0, i32 %a1, ptr %a2) + ret i32 %r +} +define void @lgl_GetActiveSubroutineUniformiv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + call void @glGetActiveSubroutineUniformiv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) + ret void +} +define void @lgl_GetActiveSubroutineUniformName(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4, ptr %a5) { +entry: + call void @glGetActiveSubroutineUniformName(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4, ptr %a5) + ret void +} +define void @lgl_GetActiveSubroutineName(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4, ptr %a5) { +entry: + call void @glGetActiveSubroutineName(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4, ptr %a5) + ret void +} +define void @lgl_UniformSubroutinesuiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glUniformSubroutinesuiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetUniformSubroutineuiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetUniformSubroutineuiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetProgramStageiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glGetProgramStageiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_PatchParameteri(i32 %a0, i32 %a1) { +entry: + call void @glPatchParameteri(i32 %a0, i32 %a1) + ret void +} +define void @lgl_PatchParameterfv(i32 %a0, ptr %a1) { +entry: + call void @glPatchParameterfv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_BindTransformFeedback(i32 %a0, i32 %a1) { +entry: + call void @glBindTransformFeedback(i32 %a0, i32 %a1) + ret void +} +define void @lgl_DeleteTransformFeedbacks(i32 %a0, ptr %a1) { +entry: + call void @glDeleteTransformFeedbacks(i32 %a0, ptr %a1) + ret void +} +define void @lgl_GenTransformFeedbacks(i32 %a0, ptr %a1) { +entry: + call void @glGenTransformFeedbacks(i32 %a0, ptr %a1) + ret void +} +define i32 @lgl_IsTransformFeedback(i32 %a0) { +entry: + %r = call i8 @glIsTransformFeedback(i32 %a0) + %z = zext i8 %r to i32 + ret i32 %z +} +define void @lgl_PauseTransformFeedback() { +entry: + call void @glPauseTransformFeedback() + ret void +} +define void @lgl_ResumeTransformFeedback() { +entry: + call void @glResumeTransformFeedback() + ret void +} +define void @lgl_DrawTransformFeedback(i32 %a0, i32 %a1) { +entry: + call void @glDrawTransformFeedback(i32 %a0, i32 %a1) + ret void +} +define void @lgl_DrawTransformFeedbackStream(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glDrawTransformFeedbackStream(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_BeginQueryIndexed(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glBeginQueryIndexed(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_EndQueryIndexed(i32 %a0, i32 %a1) { +entry: + call void @glEndQueryIndexed(i32 %a0, i32 %a1) + ret void +} +define void @lgl_GetQueryIndexediv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glGetQueryIndexediv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ReleaseShaderCompiler() { +entry: + call void @glReleaseShaderCompiler() + ret void +} +define void @lgl_ShaderBinary(i32 %a0, ptr %a1, i32 %a2, ptr %a3, i32 %a4) { +entry: + call void @glShaderBinary(i32 %a0, ptr %a1, i32 %a2, ptr %a3, i32 %a4) + ret void +} +define void @lgl_GetShaderPrecisionFormat(i32 %a0, i32 %a1, ptr %a2, ptr %a3) { +entry: + call void @glGetShaderPrecisionFormat(i32 %a0, i32 %a1, ptr %a2, ptr %a3) + ret void +} +define void @lgl_DepthRangef(i32 %a0, i32 %a1) { +entry: + %f0 = sitofp i32 %a0 to float + %c0 = fmul float %f0, 0x3EF0000000000000 + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + call void @glDepthRangef(float %c0, float %c1) + ret void +} +define void @lgl_ClearDepthf(i32 %a0) { +entry: + %f0 = sitofp i32 %a0 to float + %c0 = fmul float %f0, 0x3EF0000000000000 + call void @glClearDepthf(float %c0) + ret void +} +define void @lgl_GetProgramBinary(i32 %a0, i32 %a1, ptr %a2, ptr %a3, ptr %a4) { +entry: + call void @glGetProgramBinary(i32 %a0, i32 %a1, ptr %a2, ptr %a3, ptr %a4) + ret void +} +define void @lgl_ProgramBinary(i32 %a0, i32 %a1, ptr %a2, i32 %a3) { +entry: + call void @glProgramBinary(i32 %a0, i32 %a1, ptr %a2, i32 %a3) + ret void +} +define void @lgl_ProgramParameteri(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glProgramParameteri(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_UseProgramStages(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glUseProgramStages(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_ActiveShaderProgram(i32 %a0, i32 %a1) { +entry: + call void @glActiveShaderProgram(i32 %a0, i32 %a1) + ret void +} +define i32 @lgl_CreateShaderProgramv(i32 %a0, i32 %a1, ptr %a2) { +entry: + %r = call i32 @glCreateShaderProgramv(i32 %a0, i32 %a1, ptr %a2) + ret i32 %r +} +define void @lgl_BindProgramPipeline(i32 %a0) { +entry: + call void @glBindProgramPipeline(i32 %a0) + ret void +} +define void @lgl_DeleteProgramPipelines(i32 %a0, ptr %a1) { +entry: + call void @glDeleteProgramPipelines(i32 %a0, ptr %a1) + ret void +} +define void @lgl_GenProgramPipelines(i32 %a0, ptr %a1) { +entry: + call void @glGenProgramPipelines(i32 %a0, ptr %a1) + ret void +} +define i32 @lgl_IsProgramPipeline(i32 %a0) { +entry: + %r = call i8 @glIsProgramPipeline(i32 %a0) + %z = zext i8 %r to i32 + ret i32 %z +} +define void @lgl_GetProgramPipelineiv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetProgramPipelineiv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_ProgramUniform1i(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glProgramUniform1i(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_ProgramUniform1iv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform1iv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform1f(i32 %a0, i32 %a1, i32 %a2) { +entry: + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + call void @glProgramUniform1f(i32 %a0, i32 %a1, float %c2) + ret void +} +define void @lgl_ProgramUniform1fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform1fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform1d(i32 %a0, i32 %a1, i32 %a2) { +entry: + %f2 = sitofp i32 %a2 to double + %c2 = fmul double %f2, 0x3EF0000000000000 + call void @glProgramUniform1d(i32 %a0, i32 %a1, double %c2) + ret void +} +define void @lgl_ProgramUniform1dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform1dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform1ui(i32 %a0, i32 %a1, i32 %a2) { +entry: + call void @glProgramUniform1ui(i32 %a0, i32 %a1, i32 %a2) + ret void +} +define void @lgl_ProgramUniform1uiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform1uiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform2i(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glProgramUniform2i(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_ProgramUniform2iv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform2iv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform2f(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to float + %c3 = fmul float %f3, 0x3EF0000000000000 + call void @glProgramUniform2f(i32 %a0, i32 %a1, float %c2, float %c3) + ret void +} +define void @lgl_ProgramUniform2fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform2fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform2d(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %f2 = sitofp i32 %a2 to double + %c2 = fmul double %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to double + %c3 = fmul double %f3, 0x3EF0000000000000 + call void @glProgramUniform2d(i32 %a0, i32 %a1, double %c2, double %c3) + ret void +} +define void @lgl_ProgramUniform2dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform2dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform2ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + call void @glProgramUniform2ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3) + ret void +} +define void @lgl_ProgramUniform2uiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform2uiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform3i(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + call void @glProgramUniform3i(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) + ret void +} +define void @lgl_ProgramUniform3iv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform3iv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform3f(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to float + %c3 = fmul float %f3, 0x3EF0000000000000 + %f4 = sitofp i32 %a4 to float + %c4 = fmul float %f4, 0x3EF0000000000000 + call void @glProgramUniform3f(i32 %a0, i32 %a1, float %c2, float %c3, float %c4) + ret void +} +define void @lgl_ProgramUniform3fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform3fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform3d(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + %f2 = sitofp i32 %a2 to double + %c2 = fmul double %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to double + %c3 = fmul double %f3, 0x3EF0000000000000 + %f4 = sitofp i32 %a4 to double + %c4 = fmul double %f4, 0x3EF0000000000000 + call void @glProgramUniform3d(i32 %a0, i32 %a1, double %c2, double %c3, double %c4) + ret void +} +define void @lgl_ProgramUniform3dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform3dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform3ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + call void @glProgramUniform3ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) + ret void +} +define void @lgl_ProgramUniform3uiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform3uiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform4i(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5) { +entry: + call void @glProgramUniform4i(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5) + ret void +} +define void @lgl_ProgramUniform4iv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform4iv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform4f(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5) { +entry: + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to float + %c3 = fmul float %f3, 0x3EF0000000000000 + %f4 = sitofp i32 %a4 to float + %c4 = fmul float %f4, 0x3EF0000000000000 + %f5 = sitofp i32 %a5 to float + %c5 = fmul float %f5, 0x3EF0000000000000 + call void @glProgramUniform4f(i32 %a0, i32 %a1, float %c2, float %c3, float %c4, float %c5) + ret void +} +define void @lgl_ProgramUniform4fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform4fv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform4d(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5) { +entry: + %f2 = sitofp i32 %a2 to double + %c2 = fmul double %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to double + %c3 = fmul double %f3, 0x3EF0000000000000 + %f4 = sitofp i32 %a4 to double + %c4 = fmul double %f4, 0x3EF0000000000000 + %f5 = sitofp i32 %a5 to double + %c5 = fmul double %f5, 0x3EF0000000000000 + call void @glProgramUniform4d(i32 %a0, i32 %a1, double %c2, double %c3, double %c4, double %c5) + ret void +} +define void @lgl_ProgramUniform4dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform4dv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniform4ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5) { +entry: + call void @glProgramUniform4ui(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5) + ret void +} +define void @lgl_ProgramUniform4uiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) { +entry: + call void @glProgramUniform4uiv(i32 %a0, i32 %a1, i32 %a2, ptr %a3) + ret void +} +define void @lgl_ProgramUniformMatrix2fv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix2fv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix3fv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix3fv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix4fv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix4fv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix2dv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix2dv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix3dv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix3dv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix4dv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix4dv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix2x3fv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix2x3fv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix3x2fv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix3x2fv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix2x4fv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix2x4fv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix4x2fv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix4x2fv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix3x4fv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix3x4fv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix4x3fv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix4x3fv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix2x3dv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix2x3dv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix3x2dv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix3x2dv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix2x4dv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix2x4dv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix4x2dv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix4x2dv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix3x4dv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix3x4dv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ProgramUniformMatrix4x3dv(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + %c3 = trunc i32 %a3 to i8 + call void @glProgramUniformMatrix4x3dv(i32 %a0, i32 %a1, i32 %a2, i8 %c3, ptr %a4) + ret void +} +define void @lgl_ValidateProgramPipeline(i32 %a0) { +entry: + call void @glValidateProgramPipeline(i32 %a0) + ret void +} +define void @lgl_GetProgramPipelineInfoLog(i32 %a0, i32 %a1, ptr %a2, ptr %a3) { +entry: + call void @glGetProgramPipelineInfoLog(i32 %a0, i32 %a1, ptr %a2, ptr %a3) + ret void +} +define void @lgl_VertexAttribL1d(i32 %a0, i32 %a1) { +entry: + %f1 = sitofp i32 %a1 to double + %c1 = fmul double %f1, 0x3EF0000000000000 + call void @glVertexAttribL1d(i32 %a0, double %c1) + ret void +} +define void @lgl_VertexAttribL2d(i32 %a0, i32 %a1, i32 %a2) { +entry: + %f1 = sitofp i32 %a1 to double + %c1 = fmul double %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to double + %c2 = fmul double %f2, 0x3EF0000000000000 + call void @glVertexAttribL2d(i32 %a0, double %c1, double %c2) + ret void +} +define void @lgl_VertexAttribL3d(i32 %a0, i32 %a1, i32 %a2, i32 %a3) { +entry: + %f1 = sitofp i32 %a1 to double + %c1 = fmul double %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to double + %c2 = fmul double %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to double + %c3 = fmul double %f3, 0x3EF0000000000000 + call void @glVertexAttribL3d(i32 %a0, double %c1, double %c2, double %c3) + ret void +} +define void @lgl_VertexAttribL4d(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + %f1 = sitofp i32 %a1 to double + %c1 = fmul double %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to double + %c2 = fmul double %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to double + %c3 = fmul double %f3, 0x3EF0000000000000 + %f4 = sitofp i32 %a4 to double + %c4 = fmul double %f4, 0x3EF0000000000000 + call void @glVertexAttribL4d(i32 %a0, double %c1, double %c2, double %c3, double %c4) + ret void +} +define void @lgl_VertexAttribL1dv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribL1dv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribL2dv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribL2dv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribL3dv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribL3dv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribL4dv(i32 %a0, ptr %a1) { +entry: + call void @glVertexAttribL4dv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_VertexAttribLPointer(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) { +entry: + call void @glVertexAttribLPointer(i32 %a0, i32 %a1, i32 %a2, i32 %a3, ptr %a4) + ret void +} +define void @lgl_GetVertexAttribLdv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetVertexAttribLdv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_ViewportArrayv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glViewportArrayv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_ViewportIndexedf(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + %f1 = sitofp i32 %a1 to float + %c1 = fmul float %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to float + %c2 = fmul float %f2, 0x3EF0000000000000 + %f3 = sitofp i32 %a3 to float + %c3 = fmul float %f3, 0x3EF0000000000000 + %f4 = sitofp i32 %a4 to float + %c4 = fmul float %f4, 0x3EF0000000000000 + call void @glViewportIndexedf(i32 %a0, float %c1, float %c2, float %c3, float %c4) + ret void +} +define void @lgl_ViewportIndexedfv(i32 %a0, ptr %a1) { +entry: + call void @glViewportIndexedfv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_ScissorArrayv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glScissorArrayv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_ScissorIndexed(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) { +entry: + call void @glScissorIndexed(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) + ret void +} +define void @lgl_ScissorIndexedv(i32 %a0, ptr %a1) { +entry: + call void @glScissorIndexedv(i32 %a0, ptr %a1) + ret void +} +define void @lgl_DepthRangeArrayv(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glDepthRangeArrayv(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_DepthRangeIndexed(i32 %a0, i32 %a1, i32 %a2) { +entry: + %f1 = sitofp i32 %a1 to double + %c1 = fmul double %f1, 0x3EF0000000000000 + %f2 = sitofp i32 %a2 to double + %c2 = fmul double %f2, 0x3EF0000000000000 + call void @glDepthRangeIndexed(i32 %a0, double %c1, double %c2) + ret void +} +define void @lgl_GetFloati_v(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetFloati_v(i32 %a0, i32 %a1, ptr %a2) + ret void +} +define void @lgl_GetDoublei_v(i32 %a0, i32 %a1, ptr %a2) { +entry: + call void @glGetDoublei_v(i32 %a0, i32 %a1, ptr %a2) + ret void +} diff --git a/runtime/native/inflate.ludic b/runtime/native/inflate.ludic index 1164d258..aa8b5f93 100644 --- a/runtime/native/inflate.ludic +++ b/runtime/native/inflate.ludic @@ -7,9 +7,12 @@ # a dependency to read a sprite is a poor trade when the algorithm is this # small. So it lives here, in the language. # -# The decoder is the canonical-Huffman formulation from Mark Adler's `puff`: -# a symbol table plus per-length counts, walked one bit at a time. Slower than -# a lookup-table decoder, and entirely fast enough to load sprites at startup. +# The decoder is the canonical-Huffman formulation from Mark Adler's `puff`: a +# symbol table plus per-length counts. Short codes (<= Z_FAST bits, which is the +# overwhelming majority) resolve in a single lookup out of a 512-entry table built +# with the symbol table; longer ones fall back to puff's walk, one bit at a time. +# The walk alone was fine for sprites, but a PBR scene inflates hundreds of +# megabytes of texture at load, and there the table is worth its 2 KB. # ============================================================================ # ---- bit reader (DEFLATE packs bits least-significant-first) --------------- @@ -21,6 +24,7 @@ var z_bitcnt: int = 0 var z_err: int = 0 function z_start(src: pointer, len: int) -> void { + z_tables_once() z_src = src z_len = len z_pos = 0 @@ -29,6 +33,17 @@ function z_start(src: pointer, len: int) -> void { z_err = 0 } +# Fill the bit buffer to at least `n` bits without consuming any (n <= 16, so the +# buffer never shifts a byte past bit 15 and cannot reach the sign bit). +function z_need(n: int) -> void { + while z_bitcnt < n { + if z_pos >= z_len { return } + z_bitbuf = (z_bitbuf | (z_src[z_pos] << z_bitcnt)) + z_pos += 1 + z_bitcnt += 8 + } +} + function z_bits(need: int) -> int { var val = z_bitbuf while z_bitcnt < need { @@ -46,10 +61,17 @@ function z_bits(need: int) -> int { } # ---- Huffman tables ------------------------------------------------------- -# A table is a single buffer: 16 length-counts followed by the symbols in -# canonical order. One allocation, no structs. +# One buffer per table: 16 length-counts, then a Z_FASTSZ-entry lookup keyed by +# the next Z_FAST bits of the stream, then the symbols in canonical order. +# A lookup entry is (length << 16) | symbol, or 0 when no code that short matches. +# Z_FAST = 10 measured fastest over a 493 MB corpus (9 and 11 are both ~8% slower: +# 9 misses the table more often, 11 spends more clearing it per dynamic block). +const Z_FAST: int = 10 +const Z_FASTSZ: int = 1024 # 1 << Z_FAST +const Z_SYMS: int = 1040 # 16 + Z_FASTSZ: where the symbols start + function z_table_new(nsym: int) -> pointer { - return words((16 + nsym)) + return words((Z_SYMS + nsym)) } # lengths[i] = code length of symbol i (0 = symbol unused) @@ -71,14 +93,65 @@ function z_table_build(table: words, lengths: words, n: int) -> void { for s in 0 .. n { let l = lengths[s] if l != 0 { - table[16 + offs[l]] = s + table[Z_SYMS + offs[l]] = s offs[l] += 1 } } free(offs) + + # ---- the fast lookup ---- + for i in 0 .. Z_FASTSZ { + table[16 + i] = 0 + } + # first canonical code of each length + let firstc: words = words(17) + var code = 0 + for l in 1 .. 16 { + code = ((code + table[l - 1]) << 1) + firstc[l] = code + } + var idx = 0 + for l in 1 .. 16 { + let cnt = table[l] + var k = 0 + while k < cnt { + let sym = table[Z_SYMS + idx] + if l <= Z_FAST { + # DEFLATE reads a code most-significant-bit first out of a stream packed + # least-significant-bit first, so the table is keyed by the reversed code + let c = firstc[l] + k + var rev = 0 + var b = 0 + while b < l { + rev = ((rev << 1) | ((c >> b) & 1)) + b += 1 + } + let entry = ((l << 16) | sym) + var j = rev + while j < Z_FASTSZ { + table[16 + j] = entry + j += (1 << l) + } + } + idx += 1 + k += 1 + } + } + free(firstc) } function z_decode(table: words) -> int { + z_need(Z_FAST) + if z_bitcnt >= Z_FAST { + let e = table[16 + (z_bitbuf & (Z_FASTSZ - 1))] + if e != 0 { + let l = (e >> 16) + z_bitbuf = (z_bitbuf >> l) + z_bitcnt -= l + return (e & 65535) + } + } + # a code longer than Z_FAST bits (or a stream too short to peek): walk it var code = 0 var first = 0 var index = 0 @@ -86,7 +159,7 @@ function z_decode(table: words) -> int { code = (code | z_bits(1)) let count = table[len] if code - first < count { - return table[16 + index + (code - first)] + return table[Z_SYMS + index + (code - first)] } index += count first = ((first + count) << 1) @@ -123,6 +196,29 @@ function z_dist_extra(sym: int) -> int { return (sym - 2) / 2 } +# The RFC tables above are pure functions of the symbol; compute them once rather +# than dividing per match. +var z_lbase: words = null +var z_lext: words = null +var z_dbase: words = null +var z_dext: words = null + +function z_tables_once() -> void { + if z_lbase != null { return } + z_lbase = words(29) + z_lext = words(29) + for s in 0 .. 29 { + z_lbase[s] = z_len_base(s) + z_lext[s] = z_len_extra(s) + } + z_dbase = words(30) + z_dext = words(30) + for s in 0 .. 30 { + z_dbase[s] = z_dist_base(s) + z_dext[s] = z_dist_extra(s) + } +} + # ---- block decoders ------------------------------------------------------- # `out` is the destination window; returns the new write position, or -1. function z_stored(out: pointer, at: int, cap: int) -> int { @@ -156,15 +252,20 @@ function z_codes(out: pointer, at: int, cap: int, lit: pointer, dist: pointer) - if sym > 256 { let s = sym - 257 if s >= 29 { return -1 } - let length = z_len_base(s) + z_bits(z_len_extra(s)) + let length = z_lbase[s] + z_bits(z_lext[s]) let d = z_decode(dist) if d < 0 { return -1 } - let distance = z_dist_base(d) + z_bits(z_dist_extra(d)) + if d >= 30 { return -1 } + let distance = z_dbase[d] + z_bits(z_dext[d]) if distance > w { return -1 } - for k in 0 .. length { - if w >= cap { return -1 } - out[w] = out[w - distance] + if w + length > cap { return -1 } # bounds once, not per byte + var sp = w - distance + var k = 0 + while k < length { + out[w] = out[sp] w += 1 + sp += 1 + k += 1 } } sym = z_decode(lit) diff --git a/runtime/native/input.ludic b/runtime/native/input.ludic index 2baec649..daef3679 100644 --- a/runtime/native/input.ludic +++ b/runtime/native/input.ludic @@ -223,6 +223,9 @@ var in_mx0: int = 0 # x/y at the previous frame (for the delta) var in_my0: int = 0 var in_mdx: int = 0 # delta this frame var in_mdy: int = 0 +var in_rdx: int = 0 # the raw motion the platform reports while captured +var in_rdy: int = 0 +var in_cursor_mode: int = 0 var in_mbtn: int = 0 # button bitmask (bit 0 left, 1 right, 2 middle) var in_wheel: int = 0 # wheel delta this frame # gamepads: connected flag, button bitmask, and IN_AXES fixed axes each @@ -298,9 +301,11 @@ function input_device_commit(k: int, replaying: int) -> void { # headless, from the single polled key. Injection (in_sim) is OR-ed on top. if is_windowed() { win_held(in_dev) - let mbuf = words(4) # [x, y, button-mask, wheel] + let mbuf = words(6) # [x, y, button-mask, wheel, raw dx, raw dy] + mbuf[4] = 0; mbuf[5] = 0 win_mouse(mbuf) in_mx = mbuf[0]; in_my = mbuf[1]; in_mbtn = mbuf[2]; in_wheel = mbuf[3] + in_rdx = mbuf[4]; in_rdy = mbuf[5] # #51 — feed the platform gamepad + touch state into the same buffers the # read APIs use. Each is windowed-only glue (win_pad / win_touch are DCE'd # in a headless build); on hardware they overwrite the injected state. @@ -334,6 +339,8 @@ function input_device_commit(k: int, replaying: int) -> void { # platform above when windowed, by Input.set_mouse before this poll otherwise). in_mdx = in_mx - in_mx0 in_mdy = in_my - in_my0 + # captured (mode 2): the cursor is a clamped reticle, the motion is the raw delta + if is_windowed() and in_cursor_mode == 2 { in_mdx = in_rdx; in_mdy = in_rdy } in_mx0 = in_mx in_my0 = in_my } @@ -438,6 +445,7 @@ enum CursorMode { Normal, Hidden, Locked, Confined } # Input.cursor_mode(mode: enum PadButton { A, B, X, Y, LeftShoulder, RightShoulder, Back, Start } # Input.bind_pad(button:) / pad_button enum MouseButton { Left, Right, Middle } # Input.mouse_down(button:) function input_cursor_mode(mode: int) -> void { + in_cursor_mode = mode if is_windowed() { win_cursor_mode(mode) } } diff --git a/runtime/native/value.ludic b/runtime/native/value.ludic index 879f045e..b03aa89d 100644 --- a/runtime/native/value.ludic +++ b/runtime/native/value.ludic @@ -221,12 +221,40 @@ function jp_number(p: JP) -> Val { di -= 1 } var raw = ip * 65536 + frac + raw = jp_exponent(p, raw) + if neg != 0 { raw = -raw } + return value_fixed(raw) + } + if p.i < p.n and (p.s[p.i] == 'e' or p.s[p.i] == 'E') { # 1e-05: an exponent makes it a fixed + var raw = jp_exponent(p, ip * 65536) if neg != 0 { raw = -raw } return value_fixed(raw) } if neg != 0 { ip = -ip } return value_int(ip) } +# an optional exponent after a number's digits, applied to a raw Q16.16 value. Exporters +# write noise like 7.49e-09 for a zero; a fixed rounds that to 0, which is what it was. +function jp_exponent(p: JP, raw0: int) -> int { + var raw = raw0 + if p.i >= p.n or (p.s[p.i] != 'e' and p.s[p.i] != 'E') { return raw } + p.i += 1 + var eneg = 0 + if p.i < p.n and p.s[p.i] == '-' { eneg = 1; p.i += 1 } + else if p.i < p.n and p.s[p.i] == '+' { p.i += 1 } + var e = 0 + while p.i < p.n and p.s[p.i] >= '0' and p.s[p.i] <= '9' { + e = e * 10 + (p.s[p.i] - 48) + p.i += 1 + } + if e > 12 { e = 12 } + var k = 0 + while k < e { + if eneg != 0 { raw = raw / 10 } else { raw = raw * 10 } + k += 1 + } + return raw +} function jp_list(p: JP) -> Val { let out = value_list() diff --git a/selfhost/backend/emit_call.ludic b/selfhost/backend/emit_call.ludic index 145f925c..e0df77d4 100644 --- a/selfhost/backend/emit_call.ludic +++ b/selfhost/backend/emit_call.ludic @@ -875,6 +875,20 @@ function emit_ns_call(ns: pointer, meth: pointer, e: Node) -> Val { # #62: a package-provided namespace (declared with @Namespace(Foo)) that none # of the hardcoded core blocks matched — alias Foo.method to the bare function # foo_method (positional args), the same generic path the core aliases use. + # Gl.* — OpenGL (runtime/native/gl.ludic + the generated gl_api.ludic): the + # 478 gl3.h entry points bound as externs gl_, plus the Ludic + # helpers (gl_open / gl_swap / gl_screenshot / gl_program / …). Labels are the + # declaration's parameter names, so `Gl.clear_color(red: 0.1, …)` works. + if (ns == "Gl") and (bare == null) { + bare = "gl_" + meth + var gdecl = find_fn(bare) + if (gdecl == null) { gdecl = find_extern(bare) } + if (gdecl != null) { + let gnames = param_labels(gdecl) + var gi = 0 + while gi < len(gnames) { push(labels, gnames[gi]); gi += 1 } + } + } if (bare == null) and is_registered_namespace(ns) { bare = ns_lower(ns) + ("_") + meth # #76: a namespace declared with a block controls its public surface — an diff --git a/selfhost/frontend/parse.ludic b/selfhost/frontend/parse.ludic index ffa08d4d..01687f1d 100644 --- a/selfhost/frontend/parse.ludic +++ b/selfhost/frontend/parse.ludic @@ -249,6 +249,8 @@ function p_postfix() -> Node { if e.a.kind == E_ID and e.a.s == "Audio" { g_uses_audio = true } # Http.* (#6) — any Http method splices the HTTP client runtime. if e.a.kind == E_ID and e.a.s == "Http" { g_uses_http = true } + # Gl.* — any Gl method splices the OpenGL runtime (and links the GL backend). + if e.a.kind == E_ID and e.a.s == "Gl" { g_uses_gl = true } # Tween.to/chain/delay/value/stop/parallel (#48): the fluent stateful handles # live in tween.ludic, advanced by an engine-owned system each Update tick. if e.a.kind == E_ID and e.a.s == "Tween" and (e.s == "to" or e.s == "chain" or e.s == "delay" or e.s == "value" or e.s == "stop" or e.s == "parallel") { g_uses_tween_rt = true } @@ -636,6 +638,7 @@ var g_uses_tween_rt: bool = false # Tween.to/chain/delay/… (#48) -> splice tw var g_uses_fx: bool = false # Fx.sparks/number/clear -> splice fx.ludic; fx_tick each Update, fx_draw each Render var g_uses_audio: bool = false # Audio.* (#22) -> splice audio.ludic; a windowed build also links audio.ll + AVFoundation var g_uses_http: bool = false # Http.* (#6) -> splice http.ludic; links http.ll + Foundation (macOS) +var g_uses_gl: bool = false # Gl.* -> splice gl.ludic (+ generated gl_api.ludic); links gl.ll + gl_thunks.ll + OpenGL # issue #64: functions marked @System(Phase) in a prebuilt binary module — the # compiler registers each with the host at load (it supplies the fn address, # which Ludic source cannot take). Parallel arrays: fn name -> phase name. @@ -1123,6 +1126,14 @@ function maybe_splice_runtime() -> void { do_import("runtime/native/http.ludic") cur_dir = saved } + # Gl.*: splice the OpenGL surface (gl.ludic + the generated gl_api.ludic). The + # native calls are the linked GL entry points themselves; the window attach is + # is_windowed()-guarded, so a headless build renders into an offscreen context. + if g_uses_gl { + cur_dir = "" + do_import("runtime/native/gl.ludic") + cur_dir = saved + } # Anim.play/Motion.to sugar (#48): the writes live in systems.ludic and use the # reflection ABI, so splice it and force the world table even when the game does # not otherwise trip uses_engine_systems. @@ -1193,6 +1204,7 @@ function parse_program() -> void { g_onlisten = new []Node g_toggled_layers = new []pointer g_uses_regex = false + g_uses_gl = false g_uses_bignum = false g_uses_dict = false g_uses_numeric = false diff --git a/selfhost/ludicc.seed.ll b/selfhost/ludicc.seed.ll index 8cab8f54..151622ab 100644 --- a/selfhost/ludicc.seed.ll +++ b/selfhost/ludicc.seed.ll @@ -98,6 +98,7 @@ declare void @hs_free(i32) @g_g_uses_fx = internal global i32 0 @g_g_uses_audio = internal global i32 0 @g_g_uses_http = internal global i32 0 +@g_g_uses_gl = internal global i32 0 @g_g_mod_sys_fn = internal global ptr null @g_g_mod_sys_phase = internal global ptr null @g_g_esys_comp = internal global ptr null @@ -319,10649 +320,10659 @@ declare void @hs_free(i32) @.str135 = private unnamed_addr constant [3 x i8] c"to\00" @.str136 = private unnamed_addr constant [6 x i8] c"Audio\00" @.str137 = private unnamed_addr constant [5 x i8] c"Http\00" -@.str138 = private unnamed_addr constant [6 x i8] c"Tween\00" -@.str139 = private unnamed_addr constant [3 x i8] c"to\00" -@.str140 = private unnamed_addr constant [6 x i8] c"chain\00" -@.str141 = private unnamed_addr constant [6 x i8] c"delay\00" -@.str142 = private unnamed_addr constant [6 x i8] c"value\00" -@.str143 = private unnamed_addr constant [5 x i8] c"stop\00" -@.str144 = private unnamed_addr constant [9 x i8] c"parallel\00" -@.str145 = private unnamed_addr constant [3 x i8] c"Fx\00" -@.str146 = private unnamed_addr constant [2 x i8] c"[\00" -@.str147 = private unnamed_addr constant [3 x i8] c"..\00" -@.str148 = private unnamed_addr constant [2 x i8] c"]\00" +@.str138 = private unnamed_addr constant [3 x i8] c"Gl\00" +@.str139 = private unnamed_addr constant [6 x i8] c"Tween\00" +@.str140 = private unnamed_addr constant [3 x i8] c"to\00" +@.str141 = private unnamed_addr constant [6 x i8] c"chain\00" +@.str142 = private unnamed_addr constant [6 x i8] c"delay\00" +@.str143 = private unnamed_addr constant [6 x i8] c"value\00" +@.str144 = private unnamed_addr constant [5 x i8] c"stop\00" +@.str145 = private unnamed_addr constant [9 x i8] c"parallel\00" +@.str146 = private unnamed_addr constant [3 x i8] c"Fx\00" +@.str147 = private unnamed_addr constant [2 x i8] c"[\00" +@.str148 = private unnamed_addr constant [3 x i8] c"..\00" @.str149 = private unnamed_addr constant [2 x i8] c"]\00" -@.str150 = private unnamed_addr constant [2 x i8] c"(\00" -@.str151 = private unnamed_addr constant [12 x i8] c"draw_sprite\00" -@.str152 = private unnamed_addr constant [19 x i8] c"draw_sprite_scaled\00" -@.str153 = private unnamed_addr constant [2 x i8] c"-\00" +@.str150 = private unnamed_addr constant [2 x i8] c"]\00" +@.str151 = private unnamed_addr constant [2 x i8] c"(\00" +@.str152 = private unnamed_addr constant [12 x i8] c"draw_sprite\00" +@.str153 = private unnamed_addr constant [19 x i8] c"draw_sprite_scaled\00" @.str154 = private unnamed_addr constant [2 x i8] c"-\00" -@.str155 = private unnamed_addr constant [2 x i8] c"~\00" +@.str155 = private unnamed_addr constant [2 x i8] c"-\00" @.str156 = private unnamed_addr constant [2 x i8] c"~\00" -@.str157 = private unnamed_addr constant [4 x i8] c"not\00" +@.str157 = private unnamed_addr constant [2 x i8] c"~\00" @.str158 = private unnamed_addr constant [4 x i8] c"not\00" -@.str159 = private unnamed_addr constant [2 x i8] c"*\00" -@.str160 = private unnamed_addr constant [2 x i8] c"/\00" -@.str161 = private unnamed_addr constant [2 x i8] c"%\00" -@.str162 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str163 = private unnamed_addr constant [3 x i8] c">>\00" -@.str164 = private unnamed_addr constant [2 x i8] c"&\00" -@.str165 = private unnamed_addr constant [2 x i8] c"+\00" -@.str166 = private unnamed_addr constant [2 x i8] c"-\00" -@.str167 = private unnamed_addr constant [2 x i8] c"|\00" -@.str168 = private unnamed_addr constant [2 x i8] c"^\00" -@.str169 = private unnamed_addr constant [2 x i8] c"<\00" -@.str170 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str171 = private unnamed_addr constant [2 x i8] c">\00" -@.str172 = private unnamed_addr constant [3 x i8] c">=\00" -@.str173 = private unnamed_addr constant [3 x i8] c"==\00" -@.str174 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str175 = private unnamed_addr constant [4 x i8] c"and\00" +@.str159 = private unnamed_addr constant [4 x i8] c"not\00" +@.str160 = private unnamed_addr constant [2 x i8] c"*\00" +@.str161 = private unnamed_addr constant [2 x i8] c"/\00" +@.str162 = private unnamed_addr constant [2 x i8] c"%\00" +@.str163 = private unnamed_addr constant [3 x i8] c"<<\00" +@.str164 = private unnamed_addr constant [3 x i8] c">>\00" +@.str165 = private unnamed_addr constant [2 x i8] c"&\00" +@.str166 = private unnamed_addr constant [2 x i8] c"+\00" +@.str167 = private unnamed_addr constant [2 x i8] c"-\00" +@.str168 = private unnamed_addr constant [2 x i8] c"|\00" +@.str169 = private unnamed_addr constant [2 x i8] c"^\00" +@.str170 = private unnamed_addr constant [2 x i8] c"<\00" +@.str171 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str172 = private unnamed_addr constant [2 x i8] c">\00" +@.str173 = private unnamed_addr constant [3 x i8] c">=\00" +@.str174 = private unnamed_addr constant [3 x i8] c"==\00" +@.str175 = private unnamed_addr constant [3 x i8] c"!=\00" @.str176 = private unnamed_addr constant [4 x i8] c"and\00" -@.str177 = private unnamed_addr constant [3 x i8] c"or\00" +@.str177 = private unnamed_addr constant [4 x i8] c"and\00" @.str178 = private unnamed_addr constant [3 x i8] c"or\00" -@.str179 = private unnamed_addr constant [2 x i8] c"{\00" -@.str180 = private unnamed_addr constant [2 x i8] c"}\00" -@.str181 = private unnamed_addr constant [2 x i8] c":\00" -@.str182 = private unnamed_addr constant [2 x i8] c",\00" -@.str183 = private unnamed_addr constant [2 x i8] c"}\00" -@.str184 = private unnamed_addr constant [2 x i8] c"{\00" -@.str185 = private unnamed_addr constant [2 x i8] c"}\00" +@.str179 = private unnamed_addr constant [3 x i8] c"or\00" +@.str180 = private unnamed_addr constant [2 x i8] c"{\00" +@.str181 = private unnamed_addr constant [2 x i8] c"}\00" +@.str182 = private unnamed_addr constant [2 x i8] c":\00" +@.str183 = private unnamed_addr constant [2 x i8] c",\00" +@.str184 = private unnamed_addr constant [2 x i8] c"}\00" +@.str185 = private unnamed_addr constant [2 x i8] c"{\00" @.str186 = private unnamed_addr constant [2 x i8] c"}\00" -@.str187 = private unnamed_addr constant [43 x i8] c"expected newline or ';' between statements\00" -@.str188 = private unnamed_addr constant [2 x i8] c"}\00" -@.str189 = private unnamed_addr constant [4 x i8] c"let\00" -@.str190 = private unnamed_addr constant [4 x i8] c"var\00" +@.str187 = private unnamed_addr constant [2 x i8] c"}\00" +@.str188 = private unnamed_addr constant [43 x i8] c"expected newline or ';' between statements\00" +@.str189 = private unnamed_addr constant [2 x i8] c"}\00" +@.str190 = private unnamed_addr constant [4 x i8] c"let\00" @.str191 = private unnamed_addr constant [4 x i8] c"var\00" -@.str192 = private unnamed_addr constant [2 x i8] c":\00" -@.str193 = private unnamed_addr constant [2 x i8] c"=\00" -@.str194 = private unnamed_addr constant [7 x i8] c"return\00" -@.str195 = private unnamed_addr constant [2 x i8] c"}\00" -@.str196 = private unnamed_addr constant [3 x i8] c"if\00" -@.str197 = private unnamed_addr constant [5 x i8] c"else\00" -@.str198 = private unnamed_addr constant [3 x i8] c"if\00" -@.str199 = private unnamed_addr constant [6 x i8] c"while\00" -@.str200 = private unnamed_addr constant [4 x i8] c"for\00" -@.str201 = private unnamed_addr constant [2 x i8] c"(\00" -@.str202 = private unnamed_addr constant [3 x i8] c"..\00" -@.str203 = private unnamed_addr constant [6 x i8] c"spawn\00" -@.str204 = private unnamed_addr constant [8 x i8] c"machine\00" -@.str205 = private unnamed_addr constant [2 x i8] c"{\00" -@.str206 = private unnamed_addr constant [2 x i8] c"}\00" -@.str207 = private unnamed_addr constant [2 x i8] c"=\00" -@.str208 = private unnamed_addr constant [2 x i8] c"}\00" -@.str209 = private unnamed_addr constant [5 x i8] c"emit\00" -@.str210 = private unnamed_addr constant [7 x i8] c"become\00" -@.str211 = private unnamed_addr constant [8 x i8] c"despawn\00" -@.str212 = private unnamed_addr constant [7 x i8] c"enable\00" -@.str213 = private unnamed_addr constant [8 x i8] c"disable\00" -@.str214 = private unnamed_addr constant [7 x i8] c"enable\00" -@.str215 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str192 = private unnamed_addr constant [4 x i8] c"var\00" +@.str193 = private unnamed_addr constant [2 x i8] c":\00" +@.str194 = private unnamed_addr constant [2 x i8] c"=\00" +@.str195 = private unnamed_addr constant [7 x i8] c"return\00" +@.str196 = private unnamed_addr constant [2 x i8] c"}\00" +@.str197 = private unnamed_addr constant [3 x i8] c"if\00" +@.str198 = private unnamed_addr constant [5 x i8] c"else\00" +@.str199 = private unnamed_addr constant [3 x i8] c"if\00" +@.str200 = private unnamed_addr constant [6 x i8] c"while\00" +@.str201 = private unnamed_addr constant [4 x i8] c"for\00" +@.str202 = private unnamed_addr constant [2 x i8] c"(\00" +@.str203 = private unnamed_addr constant [3 x i8] c"..\00" +@.str204 = private unnamed_addr constant [6 x i8] c"spawn\00" +@.str205 = private unnamed_addr constant [8 x i8] c"machine\00" +@.str206 = private unnamed_addr constant [2 x i8] c"{\00" +@.str207 = private unnamed_addr constant [2 x i8] c"}\00" +@.str208 = private unnamed_addr constant [2 x i8] c"=\00" +@.str209 = private unnamed_addr constant [2 x i8] c"}\00" +@.str210 = private unnamed_addr constant [5 x i8] c"emit\00" +@.str211 = private unnamed_addr constant [7 x i8] c"become\00" +@.str212 = private unnamed_addr constant [8 x i8] c"despawn\00" +@.str213 = private unnamed_addr constant [7 x i8] c"enable\00" +@.str214 = private unnamed_addr constant [8 x i8] c"disable\00" +@.str215 = private unnamed_addr constant [7 x i8] c"enable\00" @.str216 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str217 = private unnamed_addr constant [7 x i8] c"system\00" +@.str217 = private unnamed_addr constant [6 x i8] c"layer\00" @.str218 = private unnamed_addr constant [7 x i8] c"system\00" -@.str219 = private unnamed_addr constant [3 x i8] c"on\00" -@.str220 = private unnamed_addr constant [7 x i8] c"attach\00" -@.str221 = private unnamed_addr constant [3 x i8] c"on\00" -@.str222 = private unnamed_addr constant [27 x i8] c"attach needs 'on '\00" -@.str223 = private unnamed_addr constant [2 x i8] c"{\00" -@.str224 = private unnamed_addr constant [7 x i8] c"detach\00" -@.str225 = private unnamed_addr constant [3 x i8] c"on\00" -@.str226 = private unnamed_addr constant [27 x i8] c"detach needs 'on '\00" -@.str227 = private unnamed_addr constant [6 x i8] c"break\00" -@.str228 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str229 = private unnamed_addr constant [7 x i8] c"cancel\00" -@.str230 = private unnamed_addr constant [6 x i8] c"match\00" -@.str231 = private unnamed_addr constant [2 x i8] c"{\00" -@.str232 = private unnamed_addr constant [2 x i8] c"}\00" -@.str233 = private unnamed_addr constant [2 x i8] c",\00" -@.str234 = private unnamed_addr constant [3 x i8] c"=>\00" -@.str235 = private unnamed_addr constant [2 x i8] c"{\00" -@.str236 = private unnamed_addr constant [2 x i8] c"}\00" -@.str237 = private unnamed_addr constant [2 x i8] c"=\00" -@.str238 = private unnamed_addr constant [3 x i8] c"+=\00" -@.str239 = private unnamed_addr constant [3 x i8] c"-=\00" -@.str240 = private unnamed_addr constant [3 x i8] c"*=\00" -@.str241 = private unnamed_addr constant [3 x i8] c"/=\00" -@.str242 = private unnamed_addr constant [2 x i8] c":\00" -@.str243 = private unnamed_addr constant [2 x i8] c"=\00" -@.str244 = private unnamed_addr constant [2 x i8] c":\00" -@.str245 = private unnamed_addr constant [2 x i8] c"=\00" -@.str246 = private unnamed_addr constant [4 x i8] c"new\00" -@.str247 = private unnamed_addr constant [6 x i8] c"match\00" -@.str248 = private unnamed_addr constant [8 x i8] c"machine\00" -@.str249 = private unnamed_addr constant [7 x i8] c"become\00" -@.str250 = private unnamed_addr constant [6 x i8] c"spawn\00" -@.str251 = private unnamed_addr constant [8 x i8] c"despawn\00" -@.str252 = private unnamed_addr constant [6 x i8] c"query\00" -@.str253 = private unnamed_addr constant [7 x i8] c"cancel\00" -@.str254 = private unnamed_addr constant [6 x i8] c"scene\00" -@.str255 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str256 = private unnamed_addr constant [8 x i8] c"handler\00" -@.str257 = private unnamed_addr constant [9 x i8] c"property\00" -@.str258 = private unnamed_addr constant [6 x i8] c"model\00" -@.str259 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str260 = private unnamed_addr constant [6 x i8] c"event\00" -@.str261 = private unnamed_addr constant [10 x i8] c"namespace\00" -@.str262 = private unnamed_addr constant [9 x i8] c"function\00" -@.str263 = private unnamed_addr constant [4 x i8] c"let\00" -@.str264 = private unnamed_addr constant [7 x i8] c"prefab\00" -@.str265 = private unnamed_addr constant [4 x i8] c"var\00" -@.str266 = private unnamed_addr constant [6 x i8] c"const\00" -@.str267 = private unnamed_addr constant [3 x i8] c"if\00" -@.str268 = private unnamed_addr constant [5 x i8] c"else\00" -@.str269 = private unnamed_addr constant [6 x i8] c"while\00" -@.str270 = private unnamed_addr constant [4 x i8] c"for\00" -@.str271 = private unnamed_addr constant [7 x i8] c"return\00" -@.str272 = private unnamed_addr constant [7 x i8] c"import\00" -@.str273 = private unnamed_addr constant [8 x i8] c"program\00" -@.str274 = private unnamed_addr constant [6 x i8] c"entry\00" -@.str275 = private unnamed_addr constant [3 x i8] c"ui\00" -@.str276 = private unnamed_addr constant [6 x i8] c"break\00" -@.str277 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str278 = private unnamed_addr constant [4 x i8] c"and\00" -@.str279 = private unnamed_addr constant [3 x i8] c"or\00" -@.str280 = private unnamed_addr constant [4 x i8] c"not\00" -@.str281 = private unnamed_addr constant [5 x i8] c"true\00" -@.str282 = private unnamed_addr constant [6 x i8] c"false\00" -@.str283 = private unnamed_addr constant [5 x i8] c"null\00" -@.str284 = private unnamed_addr constant [2 x i8] c"(\00" -@.str285 = private unnamed_addr constant [2 x i8] c"'\00" -@.str286 = private unnamed_addr constant [48 x i8] c"' is a reserved word and cannot name a function\00" -@.str287 = private unnamed_addr constant [2 x i8] c")\00" -@.str288 = private unnamed_addr constant [2 x i8] c":\00" -@.str289 = private unnamed_addr constant [2 x i8] c",\00" -@.str290 = private unnamed_addr constant [2 x i8] c")\00" -@.str291 = private unnamed_addr constant [5 x i8] c"void\00" -@.str292 = private unnamed_addr constant [3 x i8] c"->\00" -@.str293 = private unnamed_addr constant [2 x i8] c"{\00" -@.str294 = private unnamed_addr constant [2 x i8] c"}\00" -@.str295 = private unnamed_addr constant [7 x i8] c"export\00" -@.str296 = private unnamed_addr constant [9 x i8] c"internal\00" -@.str297 = private unnamed_addr constant [9 x i8] c"function\00" -@.str298 = private unnamed_addr constant [54 x i8] c"a namespace body holds functions: expected `function`\00" -@.str299 = private unnamed_addr constant [2 x i8] c"}\00" -@.str300 = private unnamed_addr constant [2 x i8] c"_\00" -@.str301 = private unnamed_addr constant [1 x i8] c"\00" -@.str302 = private unnamed_addr constant [11 x i8] c"LUDIC_HOME\00" -@.str303 = private unnamed_addr constant [1 x i8] c"\00" -@.str304 = private unnamed_addr constant [5 x i8] c"bin/\00" -@.str305 = private unnamed_addr constant [5 x i8] c"PATH\00" -@.str306 = private unnamed_addr constant [1 x i8] c"\00" -@.str307 = private unnamed_addr constant [3 x i8] c"rb\00" -@.str308 = private unnamed_addr constant [1 x i8] c"\00" -@.str309 = private unnamed_addr constant [23 x i8] c"ludicc: warning: bare \00" -@.str310 = private unnamed_addr constant [139 x i8] c"(...) is deprecated (#85) \E2\80\94 use Screen.sprite / Screen.sprite_scaled, or declare a Sprite component for the engine sprite-render system\0A\00" -@.str311 = private unnamed_addr constant [2 x i8] c"@\00" -@.str312 = private unnamed_addr constant [7 x i8] c"export\00" -@.str313 = private unnamed_addr constant [7 x i8] c"Public\00" -@.str314 = private unnamed_addr constant [3 x i8] c"On\00" -@.str315 = private unnamed_addr constant [2 x i8] c"(\00" -@.str316 = private unnamed_addr constant [2 x i8] c")\00" -@.str317 = private unnamed_addr constant [8 x i8] c"Queries\00" -@.str318 = private unnamed_addr constant [8 x i8] c"OnSpawn\00" -@.str319 = private unnamed_addr constant [2 x i8] c"(\00" -@.str320 = private unnamed_addr constant [2 x i8] c")\00" -@.str321 = private unnamed_addr constant [10 x i8] c"OnDespawn\00" -@.str322 = private unnamed_addr constant [2 x i8] c"(\00" -@.str323 = private unnamed_addr constant [2 x i8] c",\00" -@.str324 = private unnamed_addr constant [2 x i8] c":\00" -@.str325 = private unnamed_addr constant [2 x i8] c")\00" -@.str326 = private unnamed_addr constant [9 x i8] c"OnAttach\00" -@.str327 = private unnamed_addr constant [2 x i8] c"(\00" -@.str328 = private unnamed_addr constant [2 x i8] c")\00" -@.str329 = private unnamed_addr constant [9 x i8] c"OnDetach\00" -@.str330 = private unnamed_addr constant [2 x i8] c"(\00" -@.str331 = private unnamed_addr constant [2 x i8] c")\00" -@.str332 = private unnamed_addr constant [9 x i8] c"OnEnable\00" -@.str333 = private unnamed_addr constant [2 x i8] c"(\00" -@.str334 = private unnamed_addr constant [2 x i8] c")\00" -@.str335 = private unnamed_addr constant [10 x i8] c"OnDisable\00" -@.str336 = private unnamed_addr constant [2 x i8] c"(\00" -@.str337 = private unnamed_addr constant [2 x i8] c")\00" -@.str338 = private unnamed_addr constant [8 x i8] c"OnStart\00" -@.str339 = private unnamed_addr constant [6 x i8] c"Start\00" -@.str340 = private unnamed_addr constant [7 x i8] c"OnQuit\00" +@.str219 = private unnamed_addr constant [7 x i8] c"system\00" +@.str220 = private unnamed_addr constant [3 x i8] c"on\00" +@.str221 = private unnamed_addr constant [7 x i8] c"attach\00" +@.str222 = private unnamed_addr constant [3 x i8] c"on\00" +@.str223 = private unnamed_addr constant [27 x i8] c"attach needs 'on '\00" +@.str224 = private unnamed_addr constant [2 x i8] c"{\00" +@.str225 = private unnamed_addr constant [7 x i8] c"detach\00" +@.str226 = private unnamed_addr constant [3 x i8] c"on\00" +@.str227 = private unnamed_addr constant [27 x i8] c"detach needs 'on '\00" +@.str228 = private unnamed_addr constant [6 x i8] c"break\00" +@.str229 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str230 = private unnamed_addr constant [7 x i8] c"cancel\00" +@.str231 = private unnamed_addr constant [6 x i8] c"match\00" +@.str232 = private unnamed_addr constant [2 x i8] c"{\00" +@.str233 = private unnamed_addr constant [2 x i8] c"}\00" +@.str234 = private unnamed_addr constant [2 x i8] c",\00" +@.str235 = private unnamed_addr constant [3 x i8] c"=>\00" +@.str236 = private unnamed_addr constant [2 x i8] c"{\00" +@.str237 = private unnamed_addr constant [2 x i8] c"}\00" +@.str238 = private unnamed_addr constant [2 x i8] c"=\00" +@.str239 = private unnamed_addr constant [3 x i8] c"+=\00" +@.str240 = private unnamed_addr constant [3 x i8] c"-=\00" +@.str241 = private unnamed_addr constant [3 x i8] c"*=\00" +@.str242 = private unnamed_addr constant [3 x i8] c"/=\00" +@.str243 = private unnamed_addr constant [2 x i8] c":\00" +@.str244 = private unnamed_addr constant [2 x i8] c"=\00" +@.str245 = private unnamed_addr constant [2 x i8] c":\00" +@.str246 = private unnamed_addr constant [2 x i8] c"=\00" +@.str247 = private unnamed_addr constant [4 x i8] c"new\00" +@.str248 = private unnamed_addr constant [6 x i8] c"match\00" +@.str249 = private unnamed_addr constant [8 x i8] c"machine\00" +@.str250 = private unnamed_addr constant [7 x i8] c"become\00" +@.str251 = private unnamed_addr constant [6 x i8] c"spawn\00" +@.str252 = private unnamed_addr constant [8 x i8] c"despawn\00" +@.str253 = private unnamed_addr constant [6 x i8] c"query\00" +@.str254 = private unnamed_addr constant [7 x i8] c"cancel\00" +@.str255 = private unnamed_addr constant [6 x i8] c"scene\00" +@.str256 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str257 = private unnamed_addr constant [8 x i8] c"handler\00" +@.str258 = private unnamed_addr constant [9 x i8] c"property\00" +@.str259 = private unnamed_addr constant [6 x i8] c"model\00" +@.str260 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str261 = private unnamed_addr constant [6 x i8] c"event\00" +@.str262 = private unnamed_addr constant [10 x i8] c"namespace\00" +@.str263 = private unnamed_addr constant [9 x i8] c"function\00" +@.str264 = private unnamed_addr constant [4 x i8] c"let\00" +@.str265 = private unnamed_addr constant [7 x i8] c"prefab\00" +@.str266 = private unnamed_addr constant [4 x i8] c"var\00" +@.str267 = private unnamed_addr constant [6 x i8] c"const\00" +@.str268 = private unnamed_addr constant [3 x i8] c"if\00" +@.str269 = private unnamed_addr constant [5 x i8] c"else\00" +@.str270 = private unnamed_addr constant [6 x i8] c"while\00" +@.str271 = private unnamed_addr constant [4 x i8] c"for\00" +@.str272 = private unnamed_addr constant [7 x i8] c"return\00" +@.str273 = private unnamed_addr constant [7 x i8] c"import\00" +@.str274 = private unnamed_addr constant [8 x i8] c"program\00" +@.str275 = private unnamed_addr constant [6 x i8] c"entry\00" +@.str276 = private unnamed_addr constant [3 x i8] c"ui\00" +@.str277 = private unnamed_addr constant [6 x i8] c"break\00" +@.str278 = private unnamed_addr constant [9 x i8] c"continue\00" +@.str279 = private unnamed_addr constant [4 x i8] c"and\00" +@.str280 = private unnamed_addr constant [3 x i8] c"or\00" +@.str281 = private unnamed_addr constant [4 x i8] c"not\00" +@.str282 = private unnamed_addr constant [5 x i8] c"true\00" +@.str283 = private unnamed_addr constant [6 x i8] c"false\00" +@.str284 = private unnamed_addr constant [5 x i8] c"null\00" +@.str285 = private unnamed_addr constant [2 x i8] c"(\00" +@.str286 = private unnamed_addr constant [2 x i8] c"'\00" +@.str287 = private unnamed_addr constant [48 x i8] c"' is a reserved word and cannot name a function\00" +@.str288 = private unnamed_addr constant [2 x i8] c")\00" +@.str289 = private unnamed_addr constant [2 x i8] c":\00" +@.str290 = private unnamed_addr constant [2 x i8] c",\00" +@.str291 = private unnamed_addr constant [2 x i8] c")\00" +@.str292 = private unnamed_addr constant [5 x i8] c"void\00" +@.str293 = private unnamed_addr constant [3 x i8] c"->\00" +@.str294 = private unnamed_addr constant [2 x i8] c"{\00" +@.str295 = private unnamed_addr constant [2 x i8] c"}\00" +@.str296 = private unnamed_addr constant [7 x i8] c"export\00" +@.str297 = private unnamed_addr constant [9 x i8] c"internal\00" +@.str298 = private unnamed_addr constant [9 x i8] c"function\00" +@.str299 = private unnamed_addr constant [54 x i8] c"a namespace body holds functions: expected `function`\00" +@.str300 = private unnamed_addr constant [2 x i8] c"}\00" +@.str301 = private unnamed_addr constant [2 x i8] c"_\00" +@.str302 = private unnamed_addr constant [1 x i8] c"\00" +@.str303 = private unnamed_addr constant [11 x i8] c"LUDIC_HOME\00" +@.str304 = private unnamed_addr constant [1 x i8] c"\00" +@.str305 = private unnamed_addr constant [5 x i8] c"bin/\00" +@.str306 = private unnamed_addr constant [5 x i8] c"PATH\00" +@.str307 = private unnamed_addr constant [1 x i8] c"\00" +@.str308 = private unnamed_addr constant [3 x i8] c"rb\00" +@.str309 = private unnamed_addr constant [1 x i8] c"\00" +@.str310 = private unnamed_addr constant [23 x i8] c"ludicc: warning: bare \00" +@.str311 = private unnamed_addr constant [139 x i8] c"(...) is deprecated (#85) \E2\80\94 use Screen.sprite / Screen.sprite_scaled, or declare a Sprite component for the engine sprite-render system\0A\00" +@.str312 = private unnamed_addr constant [2 x i8] c"@\00" +@.str313 = private unnamed_addr constant [7 x i8] c"export\00" +@.str314 = private unnamed_addr constant [7 x i8] c"Public\00" +@.str315 = private unnamed_addr constant [3 x i8] c"On\00" +@.str316 = private unnamed_addr constant [2 x i8] c"(\00" +@.str317 = private unnamed_addr constant [2 x i8] c")\00" +@.str318 = private unnamed_addr constant [8 x i8] c"Queries\00" +@.str319 = private unnamed_addr constant [8 x i8] c"OnSpawn\00" +@.str320 = private unnamed_addr constant [2 x i8] c"(\00" +@.str321 = private unnamed_addr constant [2 x i8] c")\00" +@.str322 = private unnamed_addr constant [10 x i8] c"OnDespawn\00" +@.str323 = private unnamed_addr constant [2 x i8] c"(\00" +@.str324 = private unnamed_addr constant [2 x i8] c",\00" +@.str325 = private unnamed_addr constant [2 x i8] c":\00" +@.str326 = private unnamed_addr constant [2 x i8] c")\00" +@.str327 = private unnamed_addr constant [9 x i8] c"OnAttach\00" +@.str328 = private unnamed_addr constant [2 x i8] c"(\00" +@.str329 = private unnamed_addr constant [2 x i8] c")\00" +@.str330 = private unnamed_addr constant [9 x i8] c"OnDetach\00" +@.str331 = private unnamed_addr constant [2 x i8] c"(\00" +@.str332 = private unnamed_addr constant [2 x i8] c")\00" +@.str333 = private unnamed_addr constant [9 x i8] c"OnEnable\00" +@.str334 = private unnamed_addr constant [2 x i8] c"(\00" +@.str335 = private unnamed_addr constant [2 x i8] c")\00" +@.str336 = private unnamed_addr constant [10 x i8] c"OnDisable\00" +@.str337 = private unnamed_addr constant [2 x i8] c"(\00" +@.str338 = private unnamed_addr constant [2 x i8] c")\00" +@.str339 = private unnamed_addr constant [8 x i8] c"OnStart\00" +@.str340 = private unnamed_addr constant [6 x i8] c"Start\00" @.str341 = private unnamed_addr constant [7 x i8] c"OnQuit\00" -@.str342 = private unnamed_addr constant [5 x i8] c"Sync\00" -@.str343 = private unnamed_addr constant [6 x i8] c"Owned\00" -@.str344 = private unnamed_addr constant [7 x i8] c"Server\00" -@.str345 = private unnamed_addr constant [7 x i8] c"server\00" -@.str346 = private unnamed_addr constant [10 x i8] c"Predicted\00" -@.str347 = private unnamed_addr constant [10 x i8] c"predicted\00" -@.str348 = private unnamed_addr constant [9 x i8] c"ToServer\00" -@.str349 = private unnamed_addr constant [9 x i8] c"toserver\00" -@.str350 = private unnamed_addr constant [10 x i8] c"ToClients\00" -@.str351 = private unnamed_addr constant [10 x i8] c"toclients\00" -@.str352 = private unnamed_addr constant [7 x i8] c"System\00" -@.str353 = private unnamed_addr constant [7 x i8] c"Update\00" -@.str354 = private unnamed_addr constant [2 x i8] c"(\00" -@.str355 = private unnamed_addr constant [2 x i8] c")\00" -@.str356 = private unnamed_addr constant [13 x i8] c"EngineSystem\00" -@.str357 = private unnamed_addr constant [2 x i8] c"(\00" -@.str358 = private unnamed_addr constant [2 x i8] c",\00" -@.str359 = private unnamed_addr constant [2 x i8] c")\00" -@.str360 = private unnamed_addr constant [10 x i8] c"Namespace\00" -@.str361 = private unnamed_addr constant [2 x i8] c"(\00" -@.str362 = private unnamed_addr constant [2 x i8] c")\00" -@.str363 = private unnamed_addr constant [11 x i8] c"ClearColor\00" -@.str364 = private unnamed_addr constant [2 x i8] c"(\00" -@.str365 = private unnamed_addr constant [2 x i8] c")\00" -@.str366 = private unnamed_addr constant [2 x i8] c"(\00" +@.str342 = private unnamed_addr constant [7 x i8] c"OnQuit\00" +@.str343 = private unnamed_addr constant [5 x i8] c"Sync\00" +@.str344 = private unnamed_addr constant [6 x i8] c"Owned\00" +@.str345 = private unnamed_addr constant [7 x i8] c"Server\00" +@.str346 = private unnamed_addr constant [7 x i8] c"server\00" +@.str347 = private unnamed_addr constant [10 x i8] c"Predicted\00" +@.str348 = private unnamed_addr constant [10 x i8] c"predicted\00" +@.str349 = private unnamed_addr constant [9 x i8] c"ToServer\00" +@.str350 = private unnamed_addr constant [9 x i8] c"toserver\00" +@.str351 = private unnamed_addr constant [10 x i8] c"ToClients\00" +@.str352 = private unnamed_addr constant [10 x i8] c"toclients\00" +@.str353 = private unnamed_addr constant [7 x i8] c"System\00" +@.str354 = private unnamed_addr constant [7 x i8] c"Update\00" +@.str355 = private unnamed_addr constant [2 x i8] c"(\00" +@.str356 = private unnamed_addr constant [2 x i8] c")\00" +@.str357 = private unnamed_addr constant [13 x i8] c"EngineSystem\00" +@.str358 = private unnamed_addr constant [2 x i8] c"(\00" +@.str359 = private unnamed_addr constant [2 x i8] c",\00" +@.str360 = private unnamed_addr constant [2 x i8] c")\00" +@.str361 = private unnamed_addr constant [10 x i8] c"Namespace\00" +@.str362 = private unnamed_addr constant [2 x i8] c"(\00" +@.str363 = private unnamed_addr constant [2 x i8] c")\00" +@.str364 = private unnamed_addr constant [11 x i8] c"ClearColor\00" +@.str365 = private unnamed_addr constant [2 x i8] c"(\00" +@.str366 = private unnamed_addr constant [2 x i8] c")\00" @.str367 = private unnamed_addr constant [2 x i8] c"(\00" -@.str368 = private unnamed_addr constant [2 x i8] c")\00" -@.str369 = private unnamed_addr constant [7 x i8] c"import\00" -@.str370 = private unnamed_addr constant [29 x i8] c"expected \22path\22 after import\00" -@.str371 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str372 = private unnamed_addr constant [6 x i8] c"event\00" -@.str373 = private unnamed_addr constant [9 x i8] c"property\00" -@.str374 = private unnamed_addr constant [6 x i8] c"model\00" -@.str375 = private unnamed_addr constant [6 x i8] c"scene\00" -@.str376 = private unnamed_addr constant [7 x i8] c"prefab\00" -@.str377 = private unnamed_addr constant [8 x i8] c"handler\00" -@.str378 = private unnamed_addr constant [7 x i8] c"server\00" -@.str379 = private unnamed_addr constant [7 x i8] c"model_\00" -@.str380 = private unnamed_addr constant [7 x i8] c"_spawn\00" -@.str381 = private unnamed_addr constant [7 x i8] c"model_\00" -@.str382 = private unnamed_addr constant [9 x i8] c"_despawn\00" -@.str383 = private unnamed_addr constant [6 x i8] c"prop_\00" -@.str384 = private unnamed_addr constant [8 x i8] c"_attach\00" -@.str385 = private unnamed_addr constant [6 x i8] c"prop_\00" -@.str386 = private unnamed_addr constant [8 x i8] c"_detach\00" -@.str387 = private unnamed_addr constant [6 x i8] c"prop_\00" -@.str388 = private unnamed_addr constant [8 x i8] c"_enable\00" -@.str389 = private unnamed_addr constant [6 x i8] c"prop_\00" -@.str390 = private unnamed_addr constant [9 x i8] c"_disable\00" -@.str391 = private unnamed_addr constant [6 x i8] c"Start\00" -@.str392 = private unnamed_addr constant [14 x i8] c"program_start\00" -@.str393 = private unnamed_addr constant [13 x i8] c"program_quit\00" -@.str394 = private unnamed_addr constant [3 x i8] c"ui\00" -@.str395 = private unnamed_addr constant [10 x i8] c"namespace\00" -@.str396 = private unnamed_addr constant [4 x i8] c"var\00" -@.str397 = private unnamed_addr constant [6 x i8] c"const\00" -@.str398 = private unnamed_addr constant [9 x i8] c"function\00" -@.str399 = private unnamed_addr constant [7 x i8] c"extern\00" -@.str400 = private unnamed_addr constant [6 x i8] c"entry\00" -@.str401 = private unnamed_addr constant [5 x i8] c"test\00" -@.str402 = private unnamed_addr constant [71 x i8] c"expected a declaration (property, model, handler, function, \E2\80\A6), got \00" -@.str403 = private unnamed_addr constant [36 x i8] c"expected a \22name\22 string after test\00" -@.str404 = private unnamed_addr constant [9 x i8] c"runtime/\00" -@.str405 = private unnamed_addr constant [22 x i8] c"import: no directory \00" -@.str406 = private unnamed_addr constant [7 x i8] c".ludic\00" -@.str407 = private unnamed_addr constant [2 x i8] c"/\00" -@.str408 = private unnamed_addr constant [9 x i8] c"/*.ludic\00" -@.str409 = private unnamed_addr constant [14 x i8] c"LUDIC_MODULES\00" -@.str410 = private unnamed_addr constant [14 x i8] c"ludic_modules\00" -@.str411 = private unnamed_addr constant [10 x i8] c"packages/\00" -@.str412 = private unnamed_addr constant [20 x i8] c"cannot open import \00" -@.str413 = private unnamed_addr constant [27 x i8] c"runtime/native/audio.ludic\00" -@.str414 = private unnamed_addr constant [1 x i8] c"\00" -@.str415 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" -@.str416 = private unnamed_addr constant [1 x i8] c"\00" -@.str417 = private unnamed_addr constant [27 x i8] c"runtime/native/regex.ludic\00" -@.str418 = private unnamed_addr constant [30 x i8] c"runtime/native/regex_vm.ludic\00" -@.str419 = private unnamed_addr constant [1 x i8] c"\00" -@.str420 = private unnamed_addr constant [28 x i8] c"runtime/native/bignum.ludic\00" -@.str421 = private unnamed_addr constant [1 x i8] c"\00" -@.str422 = private unnamed_addr constant [26 x i8] c"runtime/native/dict.ludic\00" -@.str423 = private unnamed_addr constant [1 x i8] c"\00" -@.str424 = private unnamed_addr constant [29 x i8] c"runtime/native/numeric.ludic\00" -@.str425 = private unnamed_addr constant [1 x i8] c"\00" -@.str426 = private unnamed_addr constant [26 x i8] c"runtime/native/jobs.ludic\00" -@.str427 = private unnamed_addr constant [1 x i8] c"\00" -@.str428 = private unnamed_addr constant [27 x i8] c"runtime/native/query.ludic\00" -@.str429 = private unnamed_addr constant [1 x i8] c"\00" -@.str430 = private unnamed_addr constant [27 x i8] c"runtime/native/light.ludic\00" -@.str431 = private unnamed_addr constant [1 x i8] c"\00" -@.str432 = private unnamed_addr constant [27 x i8] c"runtime/native/value.ludic\00" -@.str433 = private unnamed_addr constant [1 x i8] c"\00" -@.str434 = private unnamed_addr constant [25 x i8] c"runtime/native/xml.ludic\00" -@.str435 = private unnamed_addr constant [1 x i8] c"\00" -@.str436 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" -@.str437 = private unnamed_addr constant [27 x i8] c"runtime/native/audio.ludic\00" -@.str438 = private unnamed_addr constant [27 x i8] c"runtime/native/atlas.ludic\00" -@.str439 = private unnamed_addr constant [1 x i8] c"\00" -@.str440 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" -@.str441 = private unnamed_addr constant [24 x i8] c"runtime/native/fx.ludic\00" -@.str442 = private unnamed_addr constant [1 x i8] c"\00" -@.str443 = private unnamed_addr constant [29 x i8] c"runtime/native/inflate.ludic\00" -@.str444 = private unnamed_addr constant [26 x i8] c"runtime/native/zstd.ludic\00" -@.str445 = private unnamed_addr constant [28 x i8] c"runtime/native/base64.ludic\00" -@.str446 = private unnamed_addr constant [1 x i8] c"\00" -@.str447 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" -@.str448 = private unnamed_addr constant [25 x i8] c"runtime/native/xml.ludic\00" -@.str449 = private unnamed_addr constant [29 x i8] c"runtime/native/inflate.ludic\00" -@.str450 = private unnamed_addr constant [26 x i8] c"runtime/native/zstd.ludic\00" -@.str451 = private unnamed_addr constant [28 x i8] c"runtime/native/base64.ludic\00" -@.str452 = private unnamed_addr constant [27 x i8] c"runtime/native/value.ludic\00" -@.str453 = private unnamed_addr constant [27 x i8] c"runtime/native/tiled.ludic\00" -@.str454 = private unnamed_addr constant [33 x i8] c"runtime/native/tiled_spawn.ludic\00" -@.str455 = private unnamed_addr constant [1 x i8] c"\00" -@.str456 = private unnamed_addr constant [32 x i8] c"runtime/native/reflect_io.ludic\00" -@.str457 = private unnamed_addr constant [1 x i8] c"\00" -@.str458 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" -@.str459 = private unnamed_addr constant [27 x i8] c"runtime/native/input.ludic\00" -@.str460 = private unnamed_addr constant [1 x i8] c"\00" -@.str461 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" -@.str462 = private unnamed_addr constant [27 x i8] c"runtime/native/tween.ludic\00" -@.str463 = private unnamed_addr constant [1 x i8] c"\00" -@.str464 = private unnamed_addr constant [27 x i8] c"runtime/native/audio.ludic\00" -@.str465 = private unnamed_addr constant [1 x i8] c"\00" -@.str466 = private unnamed_addr constant [26 x i8] c"runtime/native/http.ludic\00" -@.str467 = private unnamed_addr constant [1 x i8] c"\00" -@.str468 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" -@.str469 = private unnamed_addr constant [29 x i8] c"runtime/native/systems.ludic\00" +@.str368 = private unnamed_addr constant [2 x i8] c"(\00" +@.str369 = private unnamed_addr constant [2 x i8] c")\00" +@.str370 = private unnamed_addr constant [7 x i8] c"import\00" +@.str371 = private unnamed_addr constant [29 x i8] c"expected \22path\22 after import\00" +@.str372 = private unnamed_addr constant [5 x i8] c"enum\00" +@.str373 = private unnamed_addr constant [6 x i8] c"event\00" +@.str374 = private unnamed_addr constant [9 x i8] c"property\00" +@.str375 = private unnamed_addr constant [6 x i8] c"model\00" +@.str376 = private unnamed_addr constant [6 x i8] c"scene\00" +@.str377 = private unnamed_addr constant [7 x i8] c"prefab\00" +@.str378 = private unnamed_addr constant [8 x i8] c"handler\00" +@.str379 = private unnamed_addr constant [7 x i8] c"server\00" +@.str380 = private unnamed_addr constant [7 x i8] c"model_\00" +@.str381 = private unnamed_addr constant [7 x i8] c"_spawn\00" +@.str382 = private unnamed_addr constant [7 x i8] c"model_\00" +@.str383 = private unnamed_addr constant [9 x i8] c"_despawn\00" +@.str384 = private unnamed_addr constant [6 x i8] c"prop_\00" +@.str385 = private unnamed_addr constant [8 x i8] c"_attach\00" +@.str386 = private unnamed_addr constant [6 x i8] c"prop_\00" +@.str387 = private unnamed_addr constant [8 x i8] c"_detach\00" +@.str388 = private unnamed_addr constant [6 x i8] c"prop_\00" +@.str389 = private unnamed_addr constant [8 x i8] c"_enable\00" +@.str390 = private unnamed_addr constant [6 x i8] c"prop_\00" +@.str391 = private unnamed_addr constant [9 x i8] c"_disable\00" +@.str392 = private unnamed_addr constant [6 x i8] c"Start\00" +@.str393 = private unnamed_addr constant [14 x i8] c"program_start\00" +@.str394 = private unnamed_addr constant [13 x i8] c"program_quit\00" +@.str395 = private unnamed_addr constant [3 x i8] c"ui\00" +@.str396 = private unnamed_addr constant [10 x i8] c"namespace\00" +@.str397 = private unnamed_addr constant [4 x i8] c"var\00" +@.str398 = private unnamed_addr constant [6 x i8] c"const\00" +@.str399 = private unnamed_addr constant [9 x i8] c"function\00" +@.str400 = private unnamed_addr constant [7 x i8] c"extern\00" +@.str401 = private unnamed_addr constant [6 x i8] c"entry\00" +@.str402 = private unnamed_addr constant [5 x i8] c"test\00" +@.str403 = private unnamed_addr constant [71 x i8] c"expected a declaration (property, model, handler, function, \E2\80\A6), got \00" +@.str404 = private unnamed_addr constant [36 x i8] c"expected a \22name\22 string after test\00" +@.str405 = private unnamed_addr constant [9 x i8] c"runtime/\00" +@.str406 = private unnamed_addr constant [22 x i8] c"import: no directory \00" +@.str407 = private unnamed_addr constant [7 x i8] c".ludic\00" +@.str408 = private unnamed_addr constant [2 x i8] c"/\00" +@.str409 = private unnamed_addr constant [9 x i8] c"/*.ludic\00" +@.str410 = private unnamed_addr constant [14 x i8] c"LUDIC_MODULES\00" +@.str411 = private unnamed_addr constant [14 x i8] c"ludic_modules\00" +@.str412 = private unnamed_addr constant [10 x i8] c"packages/\00" +@.str413 = private unnamed_addr constant [20 x i8] c"cannot open import \00" +@.str414 = private unnamed_addr constant [27 x i8] c"runtime/native/audio.ludic\00" +@.str415 = private unnamed_addr constant [1 x i8] c"\00" +@.str416 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" +@.str417 = private unnamed_addr constant [1 x i8] c"\00" +@.str418 = private unnamed_addr constant [27 x i8] c"runtime/native/regex.ludic\00" +@.str419 = private unnamed_addr constant [30 x i8] c"runtime/native/regex_vm.ludic\00" +@.str420 = private unnamed_addr constant [1 x i8] c"\00" +@.str421 = private unnamed_addr constant [28 x i8] c"runtime/native/bignum.ludic\00" +@.str422 = private unnamed_addr constant [1 x i8] c"\00" +@.str423 = private unnamed_addr constant [26 x i8] c"runtime/native/dict.ludic\00" +@.str424 = private unnamed_addr constant [1 x i8] c"\00" +@.str425 = private unnamed_addr constant [29 x i8] c"runtime/native/numeric.ludic\00" +@.str426 = private unnamed_addr constant [1 x i8] c"\00" +@.str427 = private unnamed_addr constant [26 x i8] c"runtime/native/jobs.ludic\00" +@.str428 = private unnamed_addr constant [1 x i8] c"\00" +@.str429 = private unnamed_addr constant [27 x i8] c"runtime/native/query.ludic\00" +@.str430 = private unnamed_addr constant [1 x i8] c"\00" +@.str431 = private unnamed_addr constant [27 x i8] c"runtime/native/light.ludic\00" +@.str432 = private unnamed_addr constant [1 x i8] c"\00" +@.str433 = private unnamed_addr constant [27 x i8] c"runtime/native/value.ludic\00" +@.str434 = private unnamed_addr constant [1 x i8] c"\00" +@.str435 = private unnamed_addr constant [25 x i8] c"runtime/native/xml.ludic\00" +@.str436 = private unnamed_addr constant [1 x i8] c"\00" +@.str437 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" +@.str438 = private unnamed_addr constant [27 x i8] c"runtime/native/audio.ludic\00" +@.str439 = private unnamed_addr constant [27 x i8] c"runtime/native/atlas.ludic\00" +@.str440 = private unnamed_addr constant [1 x i8] c"\00" +@.str441 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" +@.str442 = private unnamed_addr constant [24 x i8] c"runtime/native/fx.ludic\00" +@.str443 = private unnamed_addr constant [1 x i8] c"\00" +@.str444 = private unnamed_addr constant [29 x i8] c"runtime/native/inflate.ludic\00" +@.str445 = private unnamed_addr constant [26 x i8] c"runtime/native/zstd.ludic\00" +@.str446 = private unnamed_addr constant [28 x i8] c"runtime/native/base64.ludic\00" +@.str447 = private unnamed_addr constant [1 x i8] c"\00" +@.str448 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" +@.str449 = private unnamed_addr constant [25 x i8] c"runtime/native/xml.ludic\00" +@.str450 = private unnamed_addr constant [29 x i8] c"runtime/native/inflate.ludic\00" +@.str451 = private unnamed_addr constant [26 x i8] c"runtime/native/zstd.ludic\00" +@.str452 = private unnamed_addr constant [28 x i8] c"runtime/native/base64.ludic\00" +@.str453 = private unnamed_addr constant [27 x i8] c"runtime/native/value.ludic\00" +@.str454 = private unnamed_addr constant [27 x i8] c"runtime/native/tiled.ludic\00" +@.str455 = private unnamed_addr constant [33 x i8] c"runtime/native/tiled_spawn.ludic\00" +@.str456 = private unnamed_addr constant [1 x i8] c"\00" +@.str457 = private unnamed_addr constant [32 x i8] c"runtime/native/reflect_io.ludic\00" +@.str458 = private unnamed_addr constant [1 x i8] c"\00" +@.str459 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" +@.str460 = private unnamed_addr constant [27 x i8] c"runtime/native/input.ludic\00" +@.str461 = private unnamed_addr constant [1 x i8] c"\00" +@.str462 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" +@.str463 = private unnamed_addr constant [27 x i8] c"runtime/native/tween.ludic\00" +@.str464 = private unnamed_addr constant [1 x i8] c"\00" +@.str465 = private unnamed_addr constant [27 x i8] c"runtime/native/audio.ludic\00" +@.str466 = private unnamed_addr constant [1 x i8] c"\00" +@.str467 = private unnamed_addr constant [26 x i8] c"runtime/native/http.ludic\00" +@.str468 = private unnamed_addr constant [1 x i8] c"\00" +@.str469 = private unnamed_addr constant [24 x i8] c"runtime/native/gl.ludic\00" @.str470 = private unnamed_addr constant [1 x i8] c"\00" -@.str471 = private unnamed_addr constant [11 x i8] c"SpriteAnim\00" -@.str472 = private unnamed_addr constant [7 x i8] c"Motion\00" -@.str473 = private unnamed_addr constant [29 x i8] c"runtime/native/systems.ludic\00" -@.str474 = private unnamed_addr constant [5 x i8] c"Body\00" -@.str475 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" -@.str476 = private unnamed_addr constant [34 x i8] c"runtime/native/systems_move.ludic\00" -@.str477 = private unnamed_addr constant [7 x i8] c"Sprite\00" +@.str471 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" +@.str472 = private unnamed_addr constant [29 x i8] c"runtime/native/systems.ludic\00" +@.str473 = private unnamed_addr constant [1 x i8] c"\00" +@.str474 = private unnamed_addr constant [11 x i8] c"SpriteAnim\00" +@.str475 = private unnamed_addr constant [7 x i8] c"Motion\00" +@.str476 = private unnamed_addr constant [29 x i8] c"runtime/native/systems.ludic\00" +@.str477 = private unnamed_addr constant [5 x i8] c"Body\00" @.str478 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" -@.str479 = private unnamed_addr constant [36 x i8] c"runtime/native/systems_sprite.ludic\00" -@.str480 = private unnamed_addr constant [9 x i8] c"TileSkin\00" +@.str479 = private unnamed_addr constant [34 x i8] c"runtime/native/systems_move.ludic\00" +@.str480 = private unnamed_addr constant [7 x i8] c"Sprite\00" @.str481 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" -@.str482 = private unnamed_addr constant [38 x i8] c"runtime/native/systems_tileskin.ludic\00" -@.str483 = private unnamed_addr constant [7 x i8] c"Bounds\00" -@.str484 = private unnamed_addr constant [36 x i8] c"runtime/native/systems_bounds.ludic\00" -@.str485 = private unnamed_addr constant [8 x i8] c"Light2D\00" -@.str486 = private unnamed_addr constant [9 x i8] c"Occluder\00" -@.str487 = private unnamed_addr constant [27 x i8] c"runtime/native/light.ludic\00" -@.str488 = private unnamed_addr constant [35 x i8] c"runtime/native/systems_light.ludic\00" -@.str489 = private unnamed_addr constant [11 x i8] c"SpriteAnim\00" -@.str490 = private unnamed_addr constant [16 x i8] c"esys_spriteanim\00" -@.str491 = private unnamed_addr constant [7 x i8] c"Update\00" -@.str492 = private unnamed_addr constant [7 x i8] c"Motion\00" -@.str493 = private unnamed_addr constant [12 x i8] c"esys_motion\00" +@.str482 = private unnamed_addr constant [36 x i8] c"runtime/native/systems_sprite.ludic\00" +@.str483 = private unnamed_addr constant [9 x i8] c"TileSkin\00" +@.str484 = private unnamed_addr constant [26 x i8] c"runtime/native/core.ludic\00" +@.str485 = private unnamed_addr constant [38 x i8] c"runtime/native/systems_tileskin.ludic\00" +@.str486 = private unnamed_addr constant [7 x i8] c"Bounds\00" +@.str487 = private unnamed_addr constant [36 x i8] c"runtime/native/systems_bounds.ludic\00" +@.str488 = private unnamed_addr constant [8 x i8] c"Light2D\00" +@.str489 = private unnamed_addr constant [9 x i8] c"Occluder\00" +@.str490 = private unnamed_addr constant [27 x i8] c"runtime/native/light.ludic\00" +@.str491 = private unnamed_addr constant [35 x i8] c"runtime/native/systems_light.ludic\00" +@.str492 = private unnamed_addr constant [11 x i8] c"SpriteAnim\00" +@.str493 = private unnamed_addr constant [16 x i8] c"esys_spriteanim\00" @.str494 = private unnamed_addr constant [7 x i8] c"Update\00" -@.str495 = private unnamed_addr constant [5 x i8] c"Body\00" -@.str496 = private unnamed_addr constant [10 x i8] c"esys_move\00" +@.str495 = private unnamed_addr constant [7 x i8] c"Motion\00" +@.str496 = private unnamed_addr constant [12 x i8] c"esys_motion\00" @.str497 = private unnamed_addr constant [7 x i8] c"Update\00" -@.str498 = private unnamed_addr constant [7 x i8] c"Bounds\00" -@.str499 = private unnamed_addr constant [12 x i8] c"esys_bounds\00" -@.str500 = private unnamed_addr constant [11 x i8] c"LateUpdate\00" -@.str501 = private unnamed_addr constant [9 x i8] c"TileSkin\00" -@.str502 = private unnamed_addr constant [14 x i8] c"esys_tileskin\00" -@.str503 = private unnamed_addr constant [7 x i8] c"Render\00" -@.str504 = private unnamed_addr constant [7 x i8] c"Sprite\00" -@.str505 = private unnamed_addr constant [12 x i8] c"esys_sprite\00" +@.str498 = private unnamed_addr constant [5 x i8] c"Body\00" +@.str499 = private unnamed_addr constant [10 x i8] c"esys_move\00" +@.str500 = private unnamed_addr constant [7 x i8] c"Update\00" +@.str501 = private unnamed_addr constant [7 x i8] c"Bounds\00" +@.str502 = private unnamed_addr constant [12 x i8] c"esys_bounds\00" +@.str503 = private unnamed_addr constant [11 x i8] c"LateUpdate\00" +@.str504 = private unnamed_addr constant [9 x i8] c"TileSkin\00" +@.str505 = private unnamed_addr constant [14 x i8] c"esys_tileskin\00" @.str506 = private unnamed_addr constant [7 x i8] c"Render\00" -@.str507 = private unnamed_addr constant [8 x i8] c"Light2D\00" -@.str508 = private unnamed_addr constant [13 x i8] c"esys_light2d\00" +@.str507 = private unnamed_addr constant [7 x i8] c"Sprite\00" +@.str508 = private unnamed_addr constant [12 x i8] c"esys_sprite\00" @.str509 = private unnamed_addr constant [7 x i8] c"Render\00" -@.str510 = private unnamed_addr constant [6 x i8] c"Ludic\00" -@.str511 = private unnamed_addr constant [7 x i8] c"import\00" -@.str512 = private unnamed_addr constant [2 x i8] c"@\00" -@.str513 = private unnamed_addr constant [2 x i8] c"(\00" -@.str514 = private unnamed_addr constant [2 x i8] c"(\00" -@.str515 = private unnamed_addr constant [2 x i8] c")\00" -@.str516 = private unnamed_addr constant [8 x i8] c"program\00" -@.str517 = private unnamed_addr constant [2 x i8] c"{\00" -@.str518 = private unnamed_addr constant [2 x i8] c"}\00" -@.str519 = private unnamed_addr constant [2 x i8] c"{\00" -@.str520 = private unnamed_addr constant [2 x i8] c"}\00" -@.str521 = private unnamed_addr constant [2 x i8] c"@\00" -@.str522 = private unnamed_addr constant [9 x i8] c"Computed\00" -@.str523 = private unnamed_addr constant [5 x i8] c"Sync\00" -@.str524 = private unnamed_addr constant [2 x i8] c":\00" -@.str525 = private unnamed_addr constant [2 x i8] c"=\00" -@.str526 = private unnamed_addr constant [2 x i8] c",\00" -@.str527 = private unnamed_addr constant [2 x i8] c"}\00" -@.str528 = private unnamed_addr constant [12 x i8] c"cancellable\00" -@.str529 = private unnamed_addr constant [2 x i8] c"{\00" +@.str510 = private unnamed_addr constant [8 x i8] c"Light2D\00" +@.str511 = private unnamed_addr constant [13 x i8] c"esys_light2d\00" +@.str512 = private unnamed_addr constant [7 x i8] c"Render\00" +@.str513 = private unnamed_addr constant [6 x i8] c"Ludic\00" +@.str514 = private unnamed_addr constant [7 x i8] c"import\00" +@.str515 = private unnamed_addr constant [2 x i8] c"@\00" +@.str516 = private unnamed_addr constant [2 x i8] c"(\00" +@.str517 = private unnamed_addr constant [2 x i8] c"(\00" +@.str518 = private unnamed_addr constant [2 x i8] c")\00" +@.str519 = private unnamed_addr constant [8 x i8] c"program\00" +@.str520 = private unnamed_addr constant [2 x i8] c"{\00" +@.str521 = private unnamed_addr constant [2 x i8] c"}\00" +@.str522 = private unnamed_addr constant [2 x i8] c"{\00" +@.str523 = private unnamed_addr constant [2 x i8] c"}\00" +@.str524 = private unnamed_addr constant [2 x i8] c"@\00" +@.str525 = private unnamed_addr constant [9 x i8] c"Computed\00" +@.str526 = private unnamed_addr constant [5 x i8] c"Sync\00" +@.str527 = private unnamed_addr constant [2 x i8] c":\00" +@.str528 = private unnamed_addr constant [2 x i8] c"=\00" +@.str529 = private unnamed_addr constant [2 x i8] c",\00" @.str530 = private unnamed_addr constant [2 x i8] c"}\00" -@.str531 = private unnamed_addr constant [2 x i8] c":\00" -@.str532 = private unnamed_addr constant [2 x i8] c"=\00" -@.str533 = private unnamed_addr constant [2 x i8] c",\00" -@.str534 = private unnamed_addr constant [2 x i8] c"}\00" -@.str535 = private unnamed_addr constant [7 x i8] c"Update\00" -@.str536 = private unnamed_addr constant [2 x i8] c"@\00" -@.str537 = private unnamed_addr constant [2 x i8] c"(\00" -@.str538 = private unnamed_addr constant [2 x i8] c"(\00" -@.str539 = private unnamed_addr constant [2 x i8] c")\00" -@.str540 = private unnamed_addr constant [6 x i8] c"phase\00" -@.str541 = private unnamed_addr constant [16 x i8] c"unknown phase '\00" -@.str542 = private unnamed_addr constant [78 x i8] c"' (expected Start, Input, FixedUpdate, Update, LateUpdate, Render or Overlay)\00" -@.str543 = private unnamed_addr constant [2 x i8] c"[\00" -@.str544 = private unnamed_addr constant [2 x i8] c"]\00" -@.str545 = private unnamed_addr constant [2 x i8] c"{\00" -@.str546 = private unnamed_addr constant [2 x i8] c"}\00" -@.str547 = private unnamed_addr constant [2 x i8] c",\00" -@.str548 = private unnamed_addr constant [2 x i8] c"]\00" -@.str549 = private unnamed_addr constant [6 x i8] c"where\00" -@.str550 = private unnamed_addr constant [2 x i8] c"(\00" -@.str551 = private unnamed_addr constant [2 x i8] c")\00" -@.str552 = private unnamed_addr constant [2 x i8] c",\00" -@.str553 = private unnamed_addr constant [2 x i8] c")\00" -@.str554 = private unnamed_addr constant [6 x i8] c"query\00" -@.str555 = private unnamed_addr constant [29 x i8] c"expected 'query' in for-loop\00" -@.str556 = private unnamed_addr constant [4 x i8] c"and\00" -@.str557 = private unnamed_addr constant [2 x i8] c"(\00" -@.str558 = private unnamed_addr constant [2 x i8] c")\00" -@.str559 = private unnamed_addr constant [2 x i8] c")\00" -@.str560 = private unnamed_addr constant [2 x i8] c":\00" -@.str561 = private unnamed_addr constant [6 x i8] c"these\00" -@.str562 = private unnamed_addr constant [2 x i8] c"[\00" -@.str563 = private unnamed_addr constant [2 x i8] c"]\00" -@.str564 = private unnamed_addr constant [2 x i8] c"{\00" -@.str565 = private unnamed_addr constant [2 x i8] c"}\00" -@.str566 = private unnamed_addr constant [2 x i8] c",\00" -@.str567 = private unnamed_addr constant [2 x i8] c"]\00" -@.str568 = private unnamed_addr constant [3 x i8] c"on\00" +@.str531 = private unnamed_addr constant [12 x i8] c"cancellable\00" +@.str532 = private unnamed_addr constant [2 x i8] c"{\00" +@.str533 = private unnamed_addr constant [2 x i8] c"}\00" +@.str534 = private unnamed_addr constant [2 x i8] c":\00" +@.str535 = private unnamed_addr constant [2 x i8] c"=\00" +@.str536 = private unnamed_addr constant [2 x i8] c",\00" +@.str537 = private unnamed_addr constant [2 x i8] c"}\00" +@.str538 = private unnamed_addr constant [7 x i8] c"Update\00" +@.str539 = private unnamed_addr constant [2 x i8] c"@\00" +@.str540 = private unnamed_addr constant [2 x i8] c"(\00" +@.str541 = private unnamed_addr constant [2 x i8] c"(\00" +@.str542 = private unnamed_addr constant [2 x i8] c")\00" +@.str543 = private unnamed_addr constant [6 x i8] c"phase\00" +@.str544 = private unnamed_addr constant [16 x i8] c"unknown phase '\00" +@.str545 = private unnamed_addr constant [78 x i8] c"' (expected Start, Input, FixedUpdate, Update, LateUpdate, Render or Overlay)\00" +@.str546 = private unnamed_addr constant [2 x i8] c"[\00" +@.str547 = private unnamed_addr constant [2 x i8] c"]\00" +@.str548 = private unnamed_addr constant [2 x i8] c"{\00" +@.str549 = private unnamed_addr constant [2 x i8] c"}\00" +@.str550 = private unnamed_addr constant [2 x i8] c",\00" +@.str551 = private unnamed_addr constant [2 x i8] c"]\00" +@.str552 = private unnamed_addr constant [6 x i8] c"where\00" +@.str553 = private unnamed_addr constant [2 x i8] c"(\00" +@.str554 = private unnamed_addr constant [2 x i8] c")\00" +@.str555 = private unnamed_addr constant [2 x i8] c",\00" +@.str556 = private unnamed_addr constant [2 x i8] c")\00" +@.str557 = private unnamed_addr constant [6 x i8] c"query\00" +@.str558 = private unnamed_addr constant [29 x i8] c"expected 'query' in for-loop\00" +@.str559 = private unnamed_addr constant [4 x i8] c"and\00" +@.str560 = private unnamed_addr constant [2 x i8] c"(\00" +@.str561 = private unnamed_addr constant [2 x i8] c")\00" +@.str562 = private unnamed_addr constant [2 x i8] c")\00" +@.str563 = private unnamed_addr constant [2 x i8] c":\00" +@.str564 = private unnamed_addr constant [6 x i8] c"these\00" +@.str565 = private unnamed_addr constant [2 x i8] c"[\00" +@.str566 = private unnamed_addr constant [2 x i8] c"]\00" +@.str567 = private unnamed_addr constant [2 x i8] c"{\00" +@.str568 = private unnamed_addr constant [2 x i8] c"}\00" @.str569 = private unnamed_addr constant [2 x i8] c",\00" -@.str570 = private unnamed_addr constant [2 x i8] c")\00" -@.str571 = private unnamed_addr constant [2 x i8] c"{\00" -@.str572 = private unnamed_addr constant [2 x i8] c"}\00" -@.str573 = private unnamed_addr constant [2 x i8] c"}\00" -@.str574 = private unnamed_addr constant [2 x i8] c",\00" -@.str575 = private unnamed_addr constant [2 x i8] c":\00" -@.str576 = private unnamed_addr constant [2 x i8] c"{\00" -@.str577 = private unnamed_addr constant [2 x i8] c"}\00" -@.str578 = private unnamed_addr constant [6 x i8] c"start\00" -@.str579 = private unnamed_addr constant [7 x i8] c"public\00" -@.str580 = private unnamed_addr constant [6 x i8] c"shows\00" -@.str581 = private unnamed_addr constant [6 x i8] c"lasts\00" -@.str582 = private unnamed_addr constant [6 x i8] c"loads\00" -@.str583 = private unnamed_addr constant [6 x i8] c"start\00" -@.str584 = private unnamed_addr constant [6 x i8] c"shows\00" -@.str585 = private unnamed_addr constant [6 x i8] c"lasts\00" -@.str586 = private unnamed_addr constant [5 x i8] c"then\00" -@.str587 = private unnamed_addr constant [27 x i8] c"lasts N needs `then Scene`\00" -@.str588 = private unnamed_addr constant [6 x i8] c"loads\00" +@.str570 = private unnamed_addr constant [2 x i8] c"]\00" +@.str571 = private unnamed_addr constant [3 x i8] c"on\00" +@.str572 = private unnamed_addr constant [2 x i8] c",\00" +@.str573 = private unnamed_addr constant [2 x i8] c")\00" +@.str574 = private unnamed_addr constant [2 x i8] c"{\00" +@.str575 = private unnamed_addr constant [2 x i8] c"}\00" +@.str576 = private unnamed_addr constant [2 x i8] c"}\00" +@.str577 = private unnamed_addr constant [2 x i8] c",\00" +@.str578 = private unnamed_addr constant [2 x i8] c":\00" +@.str579 = private unnamed_addr constant [2 x i8] c"{\00" +@.str580 = private unnamed_addr constant [2 x i8] c"}\00" +@.str581 = private unnamed_addr constant [6 x i8] c"start\00" +@.str582 = private unnamed_addr constant [7 x i8] c"public\00" +@.str583 = private unnamed_addr constant [6 x i8] c"shows\00" +@.str584 = private unnamed_addr constant [6 x i8] c"lasts\00" +@.str585 = private unnamed_addr constant [6 x i8] c"loads\00" +@.str586 = private unnamed_addr constant [6 x i8] c"start\00" +@.str587 = private unnamed_addr constant [6 x i8] c"shows\00" +@.str588 = private unnamed_addr constant [6 x i8] c"lasts\00" @.str589 = private unnamed_addr constant [5 x i8] c"then\00" -@.str590 = private unnamed_addr constant [25 x i8] c"loads needs `then Scene`\00" -@.str591 = private unnamed_addr constant [7 x i8] c"scene_\00" -@.str592 = private unnamed_addr constant [7 x i8] c"_enter\00" -@.str593 = private unnamed_addr constant [7 x i8] c"scene_\00" -@.str594 = private unnamed_addr constant [6 x i8] c"_exit\00" -@.str595 = private unnamed_addr constant [2 x i8] c"{\00" -@.str596 = private unnamed_addr constant [2 x i8] c"}\00" -@.str597 = private unnamed_addr constant [3 x i8] c"on\00" -@.str598 = private unnamed_addr constant [6 x i8] c"enter\00" -@.str599 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str600 = private unnamed_addr constant [38 x i8] c"expected 'enter' or 'exit' after 'on'\00" -@.str601 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str602 = private unnamed_addr constant [7 x i8] c"public\00" -@.str603 = private unnamed_addr constant [7 x i8] c"layer_\00" -@.str604 = private unnamed_addr constant [6 x i8] c"_show\00" -@.str605 = private unnamed_addr constant [7 x i8] c"layer_\00" -@.str606 = private unnamed_addr constant [6 x i8] c"_hide\00" -@.str607 = private unnamed_addr constant [2 x i8] c"{\00" -@.str608 = private unnamed_addr constant [2 x i8] c"}\00" -@.str609 = private unnamed_addr constant [2 x i8] c"@\00" -@.str610 = private unnamed_addr constant [8 x i8] c"Queries\00" -@.str611 = private unnamed_addr constant [56 x i8] c"a handler inside a layer may only carry @Queries (got @\00" -@.str612 = private unnamed_addr constant [2 x i8] c")\00" -@.str613 = private unnamed_addr constant [8 x i8] c"handler\00" -@.str614 = private unnamed_addr constant [28 x i8] c"expected 'handler' in layer\00" -@.str615 = private unnamed_addr constant [2 x i8] c"_\00" -@.str616 = private unnamed_addr constant [2 x i8] c"}\00" -@.str617 = private unnamed_addr constant [39 x i8] c"expected 'on', 'layer' or '}' in scene\00" -@.str618 = private unnamed_addr constant [2 x i8] c"}\00" -@.str619 = private unnamed_addr constant [8 x i8] c"_Loader\00" -@.str620 = private unnamed_addr constant [7 x i8] c"Update\00" -@.str621 = private unnamed_addr constant [7 x i8] c"Assets\00" -@.str622 = private unnamed_addr constant [5 x i8] c"pump\00" -@.str623 = private unnamed_addr constant [7 x i8] c"Assets\00" -@.str624 = private unnamed_addr constant [6 x i8] c"ready\00" -@.str625 = private unnamed_addr constant [11 x i8] c"_LoaderBar\00" -@.str626 = private unnamed_addr constant [7 x i8] c"Render\00" -@.str627 = private unnamed_addr constant [21 x i8] c"assets_draw_progress\00" -@.str628 = private unnamed_addr constant [7 x i8] c"scene_\00" -@.str629 = private unnamed_addr constant [6 x i8] c"_left\00" -@.str630 = private unnamed_addr constant [4 x i8] c"int\00" -@.str631 = private unnamed_addr constant [2 x i8] c"=\00" -@.str632 = private unnamed_addr constant [7 x i8] c"_Timer\00" -@.str633 = private unnamed_addr constant [7 x i8] c"Update\00" -@.str634 = private unnamed_addr constant [3 x i8] c"-=\00" -@.str635 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str636 = private unnamed_addr constant [3 x i8] c"id\00" -@.str637 = private unnamed_addr constant [5 x i8] c"goto\00" -@.str638 = private unnamed_addr constant [3 x i8] c"==\00" +@.str590 = private unnamed_addr constant [27 x i8] c"lasts N needs `then Scene`\00" +@.str591 = private unnamed_addr constant [6 x i8] c"loads\00" +@.str592 = private unnamed_addr constant [5 x i8] c"then\00" +@.str593 = private unnamed_addr constant [25 x i8] c"loads needs `then Scene`\00" +@.str594 = private unnamed_addr constant [7 x i8] c"scene_\00" +@.str595 = private unnamed_addr constant [7 x i8] c"_enter\00" +@.str596 = private unnamed_addr constant [7 x i8] c"scene_\00" +@.str597 = private unnamed_addr constant [6 x i8] c"_exit\00" +@.str598 = private unnamed_addr constant [2 x i8] c"{\00" +@.str599 = private unnamed_addr constant [2 x i8] c"}\00" +@.str600 = private unnamed_addr constant [3 x i8] c"on\00" +@.str601 = private unnamed_addr constant [6 x i8] c"enter\00" +@.str602 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str603 = private unnamed_addr constant [38 x i8] c"expected 'enter' or 'exit' after 'on'\00" +@.str604 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str605 = private unnamed_addr constant [7 x i8] c"public\00" +@.str606 = private unnamed_addr constant [7 x i8] c"layer_\00" +@.str607 = private unnamed_addr constant [6 x i8] c"_show\00" +@.str608 = private unnamed_addr constant [7 x i8] c"layer_\00" +@.str609 = private unnamed_addr constant [6 x i8] c"_hide\00" +@.str610 = private unnamed_addr constant [2 x i8] c"{\00" +@.str611 = private unnamed_addr constant [2 x i8] c"}\00" +@.str612 = private unnamed_addr constant [2 x i8] c"@\00" +@.str613 = private unnamed_addr constant [8 x i8] c"Queries\00" +@.str614 = private unnamed_addr constant [56 x i8] c"a handler inside a layer may only carry @Queries (got @\00" +@.str615 = private unnamed_addr constant [2 x i8] c")\00" +@.str616 = private unnamed_addr constant [8 x i8] c"handler\00" +@.str617 = private unnamed_addr constant [28 x i8] c"expected 'handler' in layer\00" +@.str618 = private unnamed_addr constant [2 x i8] c"_\00" +@.str619 = private unnamed_addr constant [2 x i8] c"}\00" +@.str620 = private unnamed_addr constant [39 x i8] c"expected 'on', 'layer' or '}' in scene\00" +@.str621 = private unnamed_addr constant [2 x i8] c"}\00" +@.str622 = private unnamed_addr constant [8 x i8] c"_Loader\00" +@.str623 = private unnamed_addr constant [7 x i8] c"Update\00" +@.str624 = private unnamed_addr constant [7 x i8] c"Assets\00" +@.str625 = private unnamed_addr constant [5 x i8] c"pump\00" +@.str626 = private unnamed_addr constant [7 x i8] c"Assets\00" +@.str627 = private unnamed_addr constant [6 x i8] c"ready\00" +@.str628 = private unnamed_addr constant [11 x i8] c"_LoaderBar\00" +@.str629 = private unnamed_addr constant [7 x i8] c"Render\00" +@.str630 = private unnamed_addr constant [21 x i8] c"assets_draw_progress\00" +@.str631 = private unnamed_addr constant [7 x i8] c"scene_\00" +@.str632 = private unnamed_addr constant [6 x i8] c"_left\00" +@.str633 = private unnamed_addr constant [4 x i8] c"int\00" +@.str634 = private unnamed_addr constant [2 x i8] c"=\00" +@.str635 = private unnamed_addr constant [7 x i8] c"_Timer\00" +@.str636 = private unnamed_addr constant [7 x i8] c"Update\00" +@.str637 = private unnamed_addr constant [3 x i8] c"-=\00" +@.str638 = private unnamed_addr constant [3 x i8] c"<=\00" @.str639 = private unnamed_addr constant [3 x i8] c"id\00" -@.str640 = private unnamed_addr constant [4 x i8] c"UI_\00" -@.str641 = private unnamed_addr constant [10 x i8] c"UiClicked\00" -@.str642 = private unnamed_addr constant [2 x i8] c"{\00" -@.str643 = private unnamed_addr constant [2 x i8] c"}\00" -@.str644 = private unnamed_addr constant [2 x i8] c"(\00" -@.str645 = private unnamed_addr constant [2 x i8] c")\00" -@.str646 = private unnamed_addr constant [2 x i8] c",\00" -@.str647 = private unnamed_addr constant [2 x i8] c")\00" -@.str648 = private unnamed_addr constant [2 x i8] c",\00" -@.str649 = private unnamed_addr constant [2 x i8] c"}\00" -@.str650 = private unnamed_addr constant [2 x i8] c"{\00" -@.str651 = private unnamed_addr constant [2 x i8] c"}\00" -@.str652 = private unnamed_addr constant [2 x i8] c"@\00" -@.str653 = private unnamed_addr constant [5 x i8] c"Sync\00" -@.str654 = private unnamed_addr constant [2 x i8] c",\00" -@.str655 = private unnamed_addr constant [2 x i8] c"}\00" -@.str656 = private unnamed_addr constant [2 x i8] c"(\00" -@.str657 = private unnamed_addr constant [2 x i8] c")\00" -@.str658 = private unnamed_addr constant [2 x i8] c":\00" -@.str659 = private unnamed_addr constant [2 x i8] c",\00" +@.str640 = private unnamed_addr constant [5 x i8] c"goto\00" +@.str641 = private unnamed_addr constant [3 x i8] c"==\00" +@.str642 = private unnamed_addr constant [3 x i8] c"id\00" +@.str643 = private unnamed_addr constant [4 x i8] c"UI_\00" +@.str644 = private unnamed_addr constant [10 x i8] c"UiClicked\00" +@.str645 = private unnamed_addr constant [2 x i8] c"{\00" +@.str646 = private unnamed_addr constant [2 x i8] c"}\00" +@.str647 = private unnamed_addr constant [2 x i8] c"(\00" +@.str648 = private unnamed_addr constant [2 x i8] c")\00" +@.str649 = private unnamed_addr constant [2 x i8] c",\00" +@.str650 = private unnamed_addr constant [2 x i8] c")\00" +@.str651 = private unnamed_addr constant [2 x i8] c",\00" +@.str652 = private unnamed_addr constant [2 x i8] c"}\00" +@.str653 = private unnamed_addr constant [2 x i8] c"{\00" +@.str654 = private unnamed_addr constant [2 x i8] c"}\00" +@.str655 = private unnamed_addr constant [2 x i8] c"@\00" +@.str656 = private unnamed_addr constant [5 x i8] c"Sync\00" +@.str657 = private unnamed_addr constant [2 x i8] c",\00" +@.str658 = private unnamed_addr constant [2 x i8] c"}\00" +@.str659 = private unnamed_addr constant [2 x i8] c"(\00" @.str660 = private unnamed_addr constant [2 x i8] c")\00" -@.str661 = private unnamed_addr constant [5 x i8] c"void\00" -@.str662 = private unnamed_addr constant [3 x i8] c"->\00" -@.str663 = private unnamed_addr constant [2 x i8] c"=\00" -@.str664 = private unnamed_addr constant [2 x i8] c":\00" -@.str665 = private unnamed_addr constant [2 x i8] c":\00" -@.str666 = private unnamed_addr constant [2 x i8] c"{\00" -@.str667 = private unnamed_addr constant [2 x i8] c"}\00" -@.str668 = private unnamed_addr constant [2 x i8] c"}\00" +@.str661 = private unnamed_addr constant [2 x i8] c":\00" +@.str662 = private unnamed_addr constant [2 x i8] c",\00" +@.str663 = private unnamed_addr constant [2 x i8] c")\00" +@.str664 = private unnamed_addr constant [5 x i8] c"void\00" +@.str665 = private unnamed_addr constant [3 x i8] c"->\00" +@.str666 = private unnamed_addr constant [2 x i8] c"=\00" +@.str667 = private unnamed_addr constant [2 x i8] c":\00" +@.str668 = private unnamed_addr constant [2 x i8] c":\00" @.str669 = private unnamed_addr constant [2 x i8] c"{\00" @.str670 = private unnamed_addr constant [2 x i8] c"}\00" -@.str671 = private unnamed_addr constant [3 x i8] c" \00" -@.str672 = private unnamed_addr constant [53 x i8] c" = getelementptr inbounds i32, ptr @L_cov_hits, i32 \00" -@.str673 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str674 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str675 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str676 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str677 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str678 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str679 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str680 = private unnamed_addr constant [3 x i8] c"%t\00" -@.str681 = private unnamed_addr constant [3 x i8] c" \00" -@.str682 = private unnamed_addr constant [11 x i8] c" = alloca \00" -@.str683 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str684 = private unnamed_addr constant [3 x i8] c"%t\00" -@.str685 = private unnamed_addr constant [4 x i8] c"int\00" -@.str686 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str687 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str688 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str689 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str690 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str691 = private unnamed_addr constant [10 x i8] c"countdown\00" +@.str671 = private unnamed_addr constant [2 x i8] c"}\00" +@.str672 = private unnamed_addr constant [2 x i8] c"{\00" +@.str673 = private unnamed_addr constant [2 x i8] c"}\00" +@.str674 = private unnamed_addr constant [3 x i8] c" \00" +@.str675 = private unnamed_addr constant [53 x i8] c" = getelementptr inbounds i32, ptr @L_cov_hits, i32 \00" +@.str676 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str677 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str678 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str679 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str680 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str681 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str682 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str683 = private unnamed_addr constant [3 x i8] c"%t\00" +@.str684 = private unnamed_addr constant [3 x i8] c" \00" +@.str685 = private unnamed_addr constant [11 x i8] c" = alloca \00" +@.str686 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str687 = private unnamed_addr constant [3 x i8] c"%t\00" +@.str688 = private unnamed_addr constant [4 x i8] c"int\00" +@.str689 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str690 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str691 = private unnamed_addr constant [7 x i8] c"entity\00" @.str692 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str693 = private unnamed_addr constant [5 x i8] c"long\00" -@.str694 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str695 = private unnamed_addr constant [7 x i8] c"Vector\00" -@.str696 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str697 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str698 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str699 = private unnamed_addr constant [5 x i8] c"Rect\00" -@.str700 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str701 = private unnamed_addr constant [5 x i8] c"byte\00" -@.str702 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str703 = private unnamed_addr constant [6 x i8] c"words\00" -@.str704 = private unnamed_addr constant [7 x i8] c"fixeds\00" -@.str705 = private unnamed_addr constant [9 x i8] c"pointers\00" -@.str706 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str707 = private unnamed_addr constant [5 x i8] c"void\00" -@.str708 = private unnamed_addr constant [5 x i8] c"void\00" +@.str693 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str694 = private unnamed_addr constant [10 x i8] c"countdown\00" +@.str695 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str696 = private unnamed_addr constant [5 x i8] c"long\00" +@.str697 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str698 = private unnamed_addr constant [7 x i8] c"Vector\00" +@.str699 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str700 = private unnamed_addr constant [6 x i8] c"IVec2\00" +@.str701 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str702 = private unnamed_addr constant [5 x i8] c"Rect\00" +@.str703 = private unnamed_addr constant [5 x i8] c"i128\00" +@.str704 = private unnamed_addr constant [5 x i8] c"byte\00" +@.str705 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str706 = private unnamed_addr constant [6 x i8] c"words\00" +@.str707 = private unnamed_addr constant [7 x i8] c"fixeds\00" +@.str708 = private unnamed_addr constant [9 x i8] c"pointers\00" @.str709 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str710 = private unnamed_addr constant [6 x i8] c"%Cmp_\00" -@.str711 = private unnamed_addr constant [4 x i8] c"int\00" -@.str712 = private unnamed_addr constant [10 x i8] c"EndReason\00" -@.str713 = private unnamed_addr constant [10 x i8] c"Despawned\00" -@.str714 = private unnamed_addr constant [10 x i8] c"SceneExit\00" -@.str715 = private unnamed_addr constant [5 x i8] c"Quit\00" -@.str716 = private unnamed_addr constant [10 x i8] c"countdown\00" -@.str717 = private unnamed_addr constant [2 x i8] c".\00" -@.str718 = private unnamed_addr constant [2 x i8] c".\00" -@.str719 = private unnamed_addr constant [3 x i8] c"of\00" -@.str720 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str721 = private unnamed_addr constant [5 x i8] c"make\00" -@.str722 = private unnamed_addr constant [5 x i8] c"zero\00" -@.str723 = private unnamed_addr constant [4 x i8] c"add\00" -@.str724 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str725 = private unnamed_addr constant [6 x i8] c"scale\00" -@.str726 = private unnamed_addr constant [6 x i8] c"along\00" -@.str727 = private unnamed_addr constant [5 x i8] c"step\00" -@.str728 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str729 = private unnamed_addr constant [4 x i8] c"Map\00" -@.str730 = private unnamed_addr constant [12 x i8] c"random_cell\00" -@.str731 = private unnamed_addr constant [16 x i8] c"random_cell_far\00" -@.str732 = private unnamed_addr constant [8 x i8] c"to_tile\00" -@.str733 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str734 = private unnamed_addr constant [9 x i8] c"Collider\00" -@.str735 = private unnamed_addr constant [7 x i8] c"center\00" +@.str710 = private unnamed_addr constant [5 x i8] c"void\00" +@.str711 = private unnamed_addr constant [5 x i8] c"void\00" +@.str712 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str713 = private unnamed_addr constant [6 x i8] c"%Cmp_\00" +@.str714 = private unnamed_addr constant [4 x i8] c"int\00" +@.str715 = private unnamed_addr constant [10 x i8] c"EndReason\00" +@.str716 = private unnamed_addr constant [10 x i8] c"Despawned\00" +@.str717 = private unnamed_addr constant [10 x i8] c"SceneExit\00" +@.str718 = private unnamed_addr constant [5 x i8] c"Quit\00" +@.str719 = private unnamed_addr constant [10 x i8] c"countdown\00" +@.str720 = private unnamed_addr constant [2 x i8] c".\00" +@.str721 = private unnamed_addr constant [2 x i8] c".\00" +@.str722 = private unnamed_addr constant [3 x i8] c"of\00" +@.str723 = private unnamed_addr constant [6 x i8] c"IVec2\00" +@.str724 = private unnamed_addr constant [5 x i8] c"make\00" +@.str725 = private unnamed_addr constant [5 x i8] c"zero\00" +@.str726 = private unnamed_addr constant [4 x i8] c"add\00" +@.str727 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str728 = private unnamed_addr constant [6 x i8] c"scale\00" +@.str729 = private unnamed_addr constant [6 x i8] c"along\00" +@.str730 = private unnamed_addr constant [5 x i8] c"step\00" +@.str731 = private unnamed_addr constant [6 x i8] c"IVec2\00" +@.str732 = private unnamed_addr constant [4 x i8] c"Map\00" +@.str733 = private unnamed_addr constant [12 x i8] c"random_cell\00" +@.str734 = private unnamed_addr constant [16 x i8] c"random_cell_far\00" +@.str735 = private unnamed_addr constant [8 x i8] c"to_tile\00" @.str736 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str737 = private unnamed_addr constant [6 x i8] c"Input\00" -@.str738 = private unnamed_addr constant [7 x i8] c"move_i\00" +@.str737 = private unnamed_addr constant [9 x i8] c"Collider\00" +@.str738 = private unnamed_addr constant [7 x i8] c"center\00" @.str739 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str740 = private unnamed_addr constant [2 x i8] c"_\00" -@.str741 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str742 = private unnamed_addr constant [7 x i8] c"string\00" -@.str743 = private unnamed_addr constant [4 x i8] c"int\00" -@.str744 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str745 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str746 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str747 = private unnamed_addr constant [4 x i8] c"int\00" -@.str748 = private unnamed_addr constant [7 x i8] c"reason\00" -@.str749 = private unnamed_addr constant [4 x i8] c"int\00" -@.str750 = private unnamed_addr constant [6 x i8] c"@.str\00" -@.str751 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00" -@.str752 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" -@.str753 = private unnamed_addr constant [6 x i8] c"\5C00\22\0A\00" -@.str754 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str755 = private unnamed_addr constant [5 x i8] c"null\00" -@.str756 = private unnamed_addr constant [2 x i8] c"0\00" -@.str757 = private unnamed_addr constant [2 x i8] c"-\00" -@.str758 = private unnamed_addr constant [2 x i8] c"-\00" -@.str759 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str760 = private unnamed_addr constant [5 x i8] c"null\00" -@.str761 = private unnamed_addr constant [2 x i8] c"0\00" -@.str762 = private unnamed_addr constant [2 x i8] c"-\00" -@.str763 = private unnamed_addr constant [5 x i8] c"void\00" -@.str764 = private unnamed_addr constant [9 x i8] c" store \00" -@.str765 = private unnamed_addr constant [2 x i8] c" \00" -@.str766 = private unnamed_addr constant [10 x i8] c", ptr @g_\00" -@.str767 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str768 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" -@.str769 = private unnamed_addr constant [40 x i8] c"define void @L_init_globals() {\0Aentry:\0A\00" -@.str770 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" -@.str771 = private unnamed_addr constant [34 x i8] c"; Ludic (self-hosted) -> LLVM IR\0A\00" -@.str772 = private unnamed_addr constant [31 x i8] c"declare i32 @printf(ptr, ...)\0A\00" -@.str773 = private unnamed_addr constant [26 x i8] c"declare ptr @malloc(i64)\0A\00" -@.str774 = private unnamed_addr constant [32 x i8] c"declare ptr @realloc(ptr, i64)\0A\00" -@.str775 = private unnamed_addr constant [25 x i8] c"declare void @free(ptr)\0A\00" -@.str776 = private unnamed_addr constant [30 x i8] c"declare ptr @fopen(ptr, ptr)\0A\00" -@.str777 = private unnamed_addr constant [40 x i8] c"declare i64 @fread(ptr, i64, i64, ptr)\0A\00" -@.str778 = private unnamed_addr constant [41 x i8] c"declare i64 @fwrite(ptr, i64, i64, ptr)\0A\00" -@.str779 = private unnamed_addr constant [35 x i8] c"declare i32 @fseek(ptr, i64, i32)\0A\00" -@.str780 = private unnamed_addr constant [25 x i8] c"declare i64 @ftell(ptr)\0A\00" -@.str781 = private unnamed_addr constant [26 x i8] c"declare i32 @fclose(ptr)\0A\00" -@.str782 = private unnamed_addr constant [25 x i8] c"declare void @exit(i32)\0A\00" -@.str783 = private unnamed_addr constant [26 x i8] c"declare i32 @system(ptr)\0A\00" -@.str784 = private unnamed_addr constant [26 x i8] c"declare ptr @getenv(ptr)\0A\00" -@.str785 = private unnamed_addr constant [36 x i8] c"declare ptr @memcpy(ptr, ptr, i64)\0A\00" -@.str786 = private unnamed_addr constant [36 x i8] c"declare ptr @memset(ptr, i32, i64)\0A\00" -@.str787 = private unnamed_addr constant [26 x i8] c"declare i64 @strlen(ptr)\0A\00" -@.str788 = private unnamed_addr constant [31 x i8] c"declare i32 @strcmp(ptr, ptr)\0A\00" -@.str789 = private unnamed_addr constant [37 x i8] c"declare i32 @strncmp(ptr, ptr, i64)\0A\00" -@.str790 = private unnamed_addr constant [31 x i8] c"declare ptr @strstr(ptr, ptr)\0A\00" -@.str791 = private unnamed_addr constant [24 x i8] c"declare i32 @atoi(ptr)\0A\00" -@.str792 = private unnamed_addr constant [24 x i8] c"declare i32 @getchar()\0A\00" -@.str793 = private unnamed_addr constant [27 x i8] c"declare i32 @putchar(i32)\0A\00" -@.str794 = private unnamed_addr constant [24 x i8] c"declare i64 @time(ptr)\0A\00" -@.str795 = private unnamed_addr constant [44 x i8] c"declare void @win_open(i32, i32, i32, ptr)\0A\00" -@.str796 = private unnamed_addr constant [25 x i8] c"declare i32 @win_poll()\0A\00" -@.str797 = private unnamed_addr constant [42 x i8] c"declare void @win_present(ptr, i32, i32)\0A\00" -@.str798 = private unnamed_addr constant [28 x i8] c"declare i32 @win_running()\0A\00" -@.str799 = private unnamed_addr constant [27 x i8] c"declare void @win_close()\0A\00" -@.str800 = private unnamed_addr constant [29 x i8] c"declare void @win_held(ptr)\0A\00" -@.str801 = private unnamed_addr constant [30 x i8] c"declare void @win_mouse(ptr)\0A\00" -@.str802 = private unnamed_addr constant [28 x i8] c"declare void @win_pad(ptr)\0A\00" -@.str803 = private unnamed_addr constant [30 x i8] c"declare void @win_touch(ptr)\0A\00" -@.str804 = private unnamed_addr constant [36 x i8] c"declare void @win_cursor_mode(i32)\0A\00" -@.str805 = private unnamed_addr constant [28 x i8] c"declare ptr @snd_load(ptr)\0A\00" -@.str806 = private unnamed_addr constant [44 x i8] c"declare void @snd_play(ptr, i32, i32, i32)\0A\00" -@.str807 = private unnamed_addr constant [29 x i8] c"declare void @snd_stop(ptr)\0A\00" -@.str808 = private unnamed_addr constant [31 x i8] c"declare i32 @snd_playing(ptr)\0A\00" -@.str809 = private unnamed_addr constant [40 x i8] c"declare void @snd_set_volume(ptr, i32)\0A\00" -@.str810 = private unnamed_addr constant [38 x i8] c"declare void @snd_set_rate(ptr, i32)\0A\00" -@.str811 = private unnamed_addr constant [35 x i8] c"declare ptr @hs_req_new(ptr, ptr)\0A\00" -@.str812 = private unnamed_addr constant [44 x i8] c"declare void @hs_req_header(ptr, ptr, ptr)\0A\00" -@.str813 = private unnamed_addr constant [42 x i8] c"declare void @hs_req_body(ptr, ptr, i32)\0A\00" -@.str814 = private unnamed_addr constant [33 x i8] c"declare void @hs_send(i32, ptr)\0A\00" -@.str815 = private unnamed_addr constant [27 x i8] c"declare i32 @hs_done(i32)\0A\00" -@.str816 = private unnamed_addr constant [29 x i8] c"declare i32 @hs_status(i32)\0A\00" -@.str817 = private unnamed_addr constant [27 x i8] c"declare ptr @hs_body(i32)\0A\00" -@.str818 = private unnamed_addr constant [27 x i8] c"declare i32 @hs_blen(i32)\0A\00" -@.str819 = private unnamed_addr constant [34 x i8] c"declare ptr @hs_header(i32, ptr)\0A\00" -@.str820 = private unnamed_addr constant [28 x i8] c"declare void @hs_free(i32)\0A\00" -@.str821 = private unnamed_addr constant [34 x i8] c"@__stderrp = external global ptr\0A\00" -@.str822 = private unnamed_addr constant [34 x i8] c"@__stdoutp = external global ptr\0A\00" -@.str823 = private unnamed_addr constant [64 x i8] c"@.fmt_int = private unnamed_addr constant [4 x i8] c\22%d\5C0A\5C00\22\0A\00" -@.str824 = private unnamed_addr constant [67 x i8] c"@.fmt_long = private unnamed_addr constant [6 x i8] c\22%lld\5C0A\5C00\22\0A\00" -@.str825 = private unnamed_addr constant [65 x i8] c"@.fmt_line = private unnamed_addr constant [4 x i8] c\22%s\5C0A\5C00\22\0A\00" -@.str826 = private unnamed_addr constant [33 x i8] c"@L_argc = internal global i32 0\0A\00" -@.str827 = private unnamed_addr constant [36 x i8] c"@L_argv = internal global ptr null\0A\00" -@.str828 = private unnamed_addr constant [34 x i8] c"@L_clock = internal global i32 0\0A\00" -@.str829 = private unnamed_addr constant [46 x i8] c"@.gametitle = private unnamed_addr constant [\00" -@.str830 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" -@.str831 = private unnamed_addr constant [6 x i8] c"\5C00\22\0A\00" -@.str832 = private unnamed_addr constant [34 x i8] c"%LSlice = type { ptr, i32, i32 }\0A\00" -@.str833 = private unnamed_addr constant [10 x i8] c"property \00" -@.str834 = private unnamed_addr constant [63 x i8] c" is also a property of the engine runtime; choose another name\00" -@.str835 = private unnamed_addr constant [10 x i8] c"property \00" -@.str836 = private unnamed_addr constant [19 x i8] c" is declared twice\00" -@.str837 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str838 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str839 = private unnamed_addr constant [3 x i8] c", \00" -@.str840 = private unnamed_addr constant [4 x i8] c" }\0A\00" -@.str841 = private unnamed_addr constant [10 x i8] c"variable \00" -@.str842 = private unnamed_addr constant [63 x i8] c" is also a variable of the engine runtime; choose another name\00" -@.str843 = private unnamed_addr constant [10 x i8] c"variable \00" -@.str844 = private unnamed_addr constant [19 x i8] c" is declared twice\00" -@.str845 = private unnamed_addr constant [4 x i8] c"@g_\00" -@.str846 = private unnamed_addr constant [20 x i8] c" = internal global \00" -@.str847 = private unnamed_addr constant [2 x i8] c" \00" -@.str848 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str849 = private unnamed_addr constant [9 x i8] c"declare \00" -@.str850 = private unnamed_addr constant [3 x i8] c" @\00" -@.str851 = private unnamed_addr constant [2 x i8] c"(\00" -@.str852 = private unnamed_addr constant [3 x i8] c", \00" -@.str853 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str854 = private unnamed_addr constant [41 x i8] c"define i32 @lp_str_eq(ptr %a, ptr %b) {\0A\00" -@.str855 = private unnamed_addr constant [25 x i8] c"entry:\0A br label %loop\0A\00" -@.str856 = private unnamed_addr constant [52 x i8] c"loop:\0A %i = phi i32 [ 0, %entry ], [ %i1, %cont ]\0A\00" -@.str857 = private unnamed_addr constant [51 x i8] c" %pa = getelementptr inbounds i8, ptr %a, i32 %i\0A\00" -@.str858 = private unnamed_addr constant [51 x i8] c" %pb = getelementptr inbounds i8, ptr %b, i32 %i\0A\00" -@.str859 = private unnamed_addr constant [51 x i8] c" %ca = load i8, ptr %pa\0A %cb = load i8, ptr %pb\0A\00" -@.str860 = private unnamed_addr constant [66 x i8] c" %df = icmp ne i8 %ca, %cb\0A br i1 %df, label %ret0, label %chk\0A\00" -@.str861 = private unnamed_addr constant [70 x i8] c"chk:\0A %zt = icmp eq i8 %ca, 0\0A br i1 %zt, label %ret1, label %cont\0A\00" -@.str862 = private unnamed_addr constant [46 x i8] c"cont:\0A %i1 = add i32 %i, 1\0A br label %loop\0A\00" -@.str863 = private unnamed_addr constant [39 x i8] c"ret1:\0A ret i32 1\0Aret0:\0A ret i32 0\0A}\0A\00" -@.str864 = private unnamed_addr constant [45 x i8] c"define ptr @lp_str_concat(ptr %a, ptr %b) {\0A\00" -@.str865 = private unnamed_addr constant [23 x i8] c"entry:\0A br label %al\0A\00" -@.str866 = private unnamed_addr constant [51 x i8] c"al:\0A %ia = phi i32 [ 0, %entry ], [ %ia1, %alb ]\0A\00" -@.str867 = private unnamed_addr constant [78 x i8] c" %pa = getelementptr inbounds i8, ptr %a, i32 %ia\0A %cca = load i8, ptr %pa\0A\00" -@.str868 = private unnamed_addr constant [64 x i8] c" %za = icmp eq i8 %cca, 0\0A br i1 %za, label %bl0, label %alb\0A\00" -@.str869 = private unnamed_addr constant [45 x i8] c"alb:\0A %ia1 = add i32 %ia, 1\0A br label %al\0A\00" -@.str870 = private unnamed_addr constant [21 x i8] c"bl0:\0A br label %bl\0A\00" -@.str871 = private unnamed_addr constant [49 x i8] c"bl:\0A %ib = phi i32 [ 0, %bl0 ], [ %ib1, %blb ]\0A\00" -@.str872 = private unnamed_addr constant [78 x i8] c" %pb = getelementptr inbounds i8, ptr %b, i32 %ib\0A %ccb = load i8, ptr %pb\0A\00" -@.str873 = private unnamed_addr constant [66 x i8] c" %zb = icmp eq i8 %ccb, 0\0A br i1 %zb, label %alloc, label %blb\0A\00" -@.str874 = private unnamed_addr constant [45 x i8] c"blb:\0A %ib1 = add i32 %ib, 1\0A br label %bl\0A\00" -@.str875 = private unnamed_addr constant [58 x i8] c"alloc:\0A %sum = add i32 %ia, %ib\0A %sz = add i32 %sum, 1\0A\00" -@.str876 = private unnamed_addr constant [83 x i8] c" %sz64 = sext i32 %sz to i64\0A %out = call ptr @malloc(i64 %sz64)\0A br label %c1\0A\00" -@.str877 = private unnamed_addr constant [49 x i8] c"c1:\0A %i = phi i32 [ 0, %alloc ], [ %i1, %c1b ]\0A\00" -@.str878 = private unnamed_addr constant [66 x i8] c" %d1 = icmp slt i32 %i, %ia\0A br i1 %d1, label %c1b, label %c2i\0A\00" -@.str879 = private unnamed_addr constant [81 x i8] c"c1b:\0A %s1 = getelementptr inbounds i8, ptr %a, i32 %i\0A %v1 = load i8, ptr %s1\0A\00" -@.str880 = private unnamed_addr constant [77 x i8] c" %o1 = getelementptr inbounds i8, ptr %out, i32 %i\0A store i8 %v1, ptr %o1\0A\00" -@.str881 = private unnamed_addr constant [38 x i8] c" %i1 = add i32 %i, 1\0A br label %c1\0A\00" -@.str882 = private unnamed_addr constant [21 x i8] c"c2i:\0A br label %c2\0A\00" -@.str883 = private unnamed_addr constant [47 x i8] c"c2:\0A %j = phi i32 [ 0, %c2i ], [ %j1, %c2b ]\0A\00" -@.str884 = private unnamed_addr constant [66 x i8] c" %d2 = icmp slt i32 %j, %ib\0A br i1 %d2, label %c2b, label %fin\0A\00" -@.str885 = private unnamed_addr constant [81 x i8] c"c2b:\0A %s2 = getelementptr inbounds i8, ptr %b, i32 %j\0A %v2 = load i8, ptr %s2\0A\00" -@.str886 = private unnamed_addr constant [102 x i8] c" %oj = add i32 %ia, %j\0A %o2 = getelementptr inbounds i8, ptr %out, i32 %oj\0A store i8 %v2, ptr %o2\0A\00" -@.str887 = private unnamed_addr constant [38 x i8] c" %j1 = add i32 %j, 1\0A br label %c2\0A\00" -@.str888 = private unnamed_addr constant [99 x i8] c"fin:\0A %pe = getelementptr inbounds i8, ptr %out, i32 %sum\0A store i8 0, ptr %pe\0A ret ptr %out\0A}\0A\00" -@.str889 = private unnamed_addr constant [35 x i8] c"define ptr @lp_int_str(i32 %n0) {\0A\00" -@.str890 = private unnamed_addr constant [42 x i8] c"entry:\0A %buf = call ptr @malloc(i64 24)\0A\00" -@.str891 = private unnamed_addr constant [56 x i8] c" %isneg = icmp slt i32 %n0, 0\0A %neg = sub i32 0, %n0\0A\00" -@.str892 = private unnamed_addr constant [44 x i8] c" %n = select i1 %isneg, i32 %neg, i32 %n0\0A\00" -@.str893 = private unnamed_addr constant [79 x i8] c" %term = getelementptr inbounds i8, ptr %buf, i32 23\0A store i8 0, ptr %term\0A\00" -@.str894 = private unnamed_addr constant [70 x i8] c" %iszero = icmp eq i32 %n0, 0\0A br i1 %iszero, label %zc, label %dl\0A\00" -@.str895 = private unnamed_addr constant [94 x i8] c"zc:\0A %zp = getelementptr inbounds i8, ptr %buf, i32 22\0A store i8 48, ptr %zp\0A ret ptr %zp\0A\00" -@.str896 = private unnamed_addr constant [23 x i8] c"dl:\0A br label %dloop\0A\00" -@.str897 = private unnamed_addr constant [104 x i8] c"dloop:\0A %pos = phi i32 [ 22, %dl ], [ %pos2, %dbody ]\0A %cur = phi i32 [ %n, %dl ], [ %cur2, %dbody ]\0A\00" -@.str898 = private unnamed_addr constant [72 x i8] c" %done = icmp eq i32 %cur, 0\0A br i1 %done, label %sign, label %dbody\0A\00" -@.str899 = private unnamed_addr constant [85 x i8] c"dbody:\0A %d = urem i32 %cur, 10\0A %ch = add i32 %d, 48\0A %ch8 = trunc i32 %ch to i8\0A\00" -@.str900 = private unnamed_addr constant [80 x i8] c" %pp = getelementptr inbounds i8, ptr %buf, i32 %pos\0A store i8 %ch8, ptr %pp\0A\00" -@.str901 = private unnamed_addr constant [73 x i8] c" %cur2 = udiv i32 %cur, 10\0A %pos2 = sub i32 %pos, 1\0A br label %dloop\0A\00" -@.str902 = private unnamed_addr constant [49 x i8] c"sign:\0A br i1 %isneg, label %addneg, label %fin\0A\00" -@.str903 = private unnamed_addr constant [128 x i8] c"addneg:\0A %sp = getelementptr inbounds i8, ptr %buf, i32 %pos\0A store i8 45, ptr %sp\0A %posn = sub i32 %pos, 1\0A br label %fin\0A\00" -@.str904 = private unnamed_addr constant [60 x i8] c"fin:\0A %fpos = phi i32 [ %pos, %sign ], [ %posn, %addneg ]\0A\00" -@.str905 = private unnamed_addr constant [101 x i8] c" %rpos = add i32 %fpos, 1\0A %res = getelementptr inbounds i8, ptr %buf, i32 %rpos\0A ret ptr %res\0A}\0A\00" -@.str906 = private unnamed_addr constant [36 x i8] c"define ptr @lp_long_str(i64 %n0) {\0A\00" -@.str907 = private unnamed_addr constant [42 x i8] c"entry:\0A %buf = call ptr @malloc(i64 24)\0A\00" -@.str908 = private unnamed_addr constant [56 x i8] c" %isneg = icmp slt i64 %n0, 0\0A %neg = sub i64 0, %n0\0A\00" -@.str909 = private unnamed_addr constant [44 x i8] c" %n = select i1 %isneg, i64 %neg, i64 %n0\0A\00" -@.str910 = private unnamed_addr constant [79 x i8] c" %term = getelementptr inbounds i8, ptr %buf, i32 23\0A store i8 0, ptr %term\0A\00" -@.str911 = private unnamed_addr constant [70 x i8] c" %iszero = icmp eq i64 %n0, 0\0A br i1 %iszero, label %zc, label %dl\0A\00" -@.str912 = private unnamed_addr constant [94 x i8] c"zc:\0A %zp = getelementptr inbounds i8, ptr %buf, i32 22\0A store i8 48, ptr %zp\0A ret ptr %zp\0A\00" -@.str913 = private unnamed_addr constant [23 x i8] c"dl:\0A br label %dloop\0A\00" -@.str914 = private unnamed_addr constant [104 x i8] c"dloop:\0A %pos = phi i32 [ 22, %dl ], [ %pos2, %dbody ]\0A %cur = phi i64 [ %n, %dl ], [ %cur2, %dbody ]\0A\00" -@.str915 = private unnamed_addr constant [72 x i8] c" %done = icmp eq i64 %cur, 0\0A br i1 %done, label %sign, label %dbody\0A\00" -@.str916 = private unnamed_addr constant [116 x i8] c"dbody:\0A %d = urem i64 %cur, 10\0A %d32 = trunc i64 %d to i32\0A %ch = add i32 %d32, 48\0A %ch8 = trunc i32 %ch to i8\0A\00" -@.str917 = private unnamed_addr constant [80 x i8] c" %pp = getelementptr inbounds i8, ptr %buf, i32 %pos\0A store i8 %ch8, ptr %pp\0A\00" -@.str918 = private unnamed_addr constant [73 x i8] c" %cur2 = udiv i64 %cur, 10\0A %pos2 = sub i32 %pos, 1\0A br label %dloop\0A\00" -@.str919 = private unnamed_addr constant [49 x i8] c"sign:\0A br i1 %isneg, label %addneg, label %fin\0A\00" -@.str920 = private unnamed_addr constant [128 x i8] c"addneg:\0A %sp = getelementptr inbounds i8, ptr %buf, i32 %pos\0A store i8 45, ptr %sp\0A %posn = sub i32 %pos, 1\0A br label %fin\0A\00" -@.str921 = private unnamed_addr constant [60 x i8] c"fin:\0A %fpos = phi i32 [ %pos, %sign ], [ %posn, %addneg ]\0A\00" -@.str922 = private unnamed_addr constant [101 x i8] c" %rpos = add i32 %fpos, 1\0A %res = getelementptr inbounds i8, ptr %buf, i32 %rpos\0A ret ptr %res\0A}\0A\00" -@.str923 = private unnamed_addr constant [58 x i8] c"define ptr @lp_str_slice(ptr %s, i32 %start, i32 %end) {\0A\00" -@.str924 = private unnamed_addr constant [62 x i8] c"entry:\0A %len = sub i32 %end, %start\0A %sz = add i32 %len, 1\0A\00" -@.str925 = private unnamed_addr constant [85 x i8] c" %sz64 = sext i32 %sz to i64\0A %out = call ptr @malloc(i64 %sz64)\0A br label %loop\0A\00" -@.str926 = private unnamed_addr constant [52 x i8] c"loop:\0A %i = phi i32 [ 0, %entry ], [ %i1, %body ]\0A\00" -@.str927 = private unnamed_addr constant [66 x i8] c" %d = icmp slt i32 %i, %len\0A br i1 %d, label %body, label %fin\0A\00" -@.str928 = private unnamed_addr constant [109 x i8] c"body:\0A %si = add i32 %start, %i\0A %sp = getelementptr inbounds i8, ptr %s, i32 %si\0A %c = load i8, ptr %sp\0A\00" -@.str929 = private unnamed_addr constant [115 x i8] c" %op = getelementptr inbounds i8, ptr %out, i32 %i\0A store i8 %c, ptr %op\0A %i1 = add i32 %i, 1\0A br label %loop\0A\00" -@.str930 = private unnamed_addr constant [99 x i8] c"fin:\0A %tp = getelementptr inbounds i8, ptr %out, i32 %len\0A store i8 0, ptr %tp\0A ret ptr %out\0A}\0A\00" -@.str931 = private unnamed_addr constant [32 x i8] c"member access on non-aggregate \00" -@.str932 = private unnamed_addr constant [15 x i8] c"no such field \00" -@.str933 = private unnamed_addr constant [3 x i8] c" \00" -@.str934 = private unnamed_addr constant [27 x i8] c" = getelementptr inbounds \00" -@.str935 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str936 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str937 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str938 = private unnamed_addr constant [6 x i8] c"words\00" -@.str939 = private unnamed_addr constant [33 x i8] c"getelementptr inbounds i32, ptr \00" -@.str940 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str941 = private unnamed_addr constant [4 x i8] c"int\00" -@.str942 = private unnamed_addr constant [7 x i8] c"fixeds\00" -@.str943 = private unnamed_addr constant [33 x i8] c"getelementptr inbounds i32, ptr \00" -@.str944 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str945 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str946 = private unnamed_addr constant [9 x i8] c"pointers\00" -@.str947 = private unnamed_addr constant [33 x i8] c"getelementptr inbounds ptr, ptr \00" -@.str948 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str949 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str950 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" +@.str740 = private unnamed_addr constant [6 x i8] c"Input\00" +@.str741 = private unnamed_addr constant [7 x i8] c"move_i\00" +@.str742 = private unnamed_addr constant [6 x i8] c"IVec2\00" +@.str743 = private unnamed_addr constant [2 x i8] c"_\00" +@.str744 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str745 = private unnamed_addr constant [7 x i8] c"string\00" +@.str746 = private unnamed_addr constant [4 x i8] c"int\00" +@.str747 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str748 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str749 = private unnamed_addr constant [7 x i8] c"entity\00" +@.str750 = private unnamed_addr constant [4 x i8] c"int\00" +@.str751 = private unnamed_addr constant [7 x i8] c"reason\00" +@.str752 = private unnamed_addr constant [4 x i8] c"int\00" +@.str753 = private unnamed_addr constant [6 x i8] c"@.str\00" +@.str754 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00" +@.str755 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" +@.str756 = private unnamed_addr constant [6 x i8] c"\5C00\22\0A\00" +@.str757 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str758 = private unnamed_addr constant [5 x i8] c"null\00" +@.str759 = private unnamed_addr constant [2 x i8] c"0\00" +@.str760 = private unnamed_addr constant [2 x i8] c"-\00" +@.str761 = private unnamed_addr constant [2 x i8] c"-\00" +@.str762 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str763 = private unnamed_addr constant [5 x i8] c"null\00" +@.str764 = private unnamed_addr constant [2 x i8] c"0\00" +@.str765 = private unnamed_addr constant [2 x i8] c"-\00" +@.str766 = private unnamed_addr constant [5 x i8] c"void\00" +@.str767 = private unnamed_addr constant [9 x i8] c" store \00" +@.str768 = private unnamed_addr constant [2 x i8] c" \00" +@.str769 = private unnamed_addr constant [10 x i8] c", ptr @g_\00" +@.str770 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str771 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" +@.str772 = private unnamed_addr constant [40 x i8] c"define void @L_init_globals() {\0Aentry:\0A\00" +@.str773 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" +@.str774 = private unnamed_addr constant [34 x i8] c"; Ludic (self-hosted) -> LLVM IR\0A\00" +@.str775 = private unnamed_addr constant [31 x i8] c"declare i32 @printf(ptr, ...)\0A\00" +@.str776 = private unnamed_addr constant [26 x i8] c"declare ptr @malloc(i64)\0A\00" +@.str777 = private unnamed_addr constant [32 x i8] c"declare ptr @realloc(ptr, i64)\0A\00" +@.str778 = private unnamed_addr constant [25 x i8] c"declare void @free(ptr)\0A\00" +@.str779 = private unnamed_addr constant [30 x i8] c"declare ptr @fopen(ptr, ptr)\0A\00" +@.str780 = private unnamed_addr constant [40 x i8] c"declare i64 @fread(ptr, i64, i64, ptr)\0A\00" +@.str781 = private unnamed_addr constant [41 x i8] c"declare i64 @fwrite(ptr, i64, i64, ptr)\0A\00" +@.str782 = private unnamed_addr constant [35 x i8] c"declare i32 @fseek(ptr, i64, i32)\0A\00" +@.str783 = private unnamed_addr constant [25 x i8] c"declare i64 @ftell(ptr)\0A\00" +@.str784 = private unnamed_addr constant [26 x i8] c"declare i32 @fclose(ptr)\0A\00" +@.str785 = private unnamed_addr constant [25 x i8] c"declare void @exit(i32)\0A\00" +@.str786 = private unnamed_addr constant [26 x i8] c"declare i32 @system(ptr)\0A\00" +@.str787 = private unnamed_addr constant [26 x i8] c"declare ptr @getenv(ptr)\0A\00" +@.str788 = private unnamed_addr constant [36 x i8] c"declare ptr @memcpy(ptr, ptr, i64)\0A\00" +@.str789 = private unnamed_addr constant [36 x i8] c"declare ptr @memset(ptr, i32, i64)\0A\00" +@.str790 = private unnamed_addr constant [26 x i8] c"declare i64 @strlen(ptr)\0A\00" +@.str791 = private unnamed_addr constant [31 x i8] c"declare i32 @strcmp(ptr, ptr)\0A\00" +@.str792 = private unnamed_addr constant [37 x i8] c"declare i32 @strncmp(ptr, ptr, i64)\0A\00" +@.str793 = private unnamed_addr constant [31 x i8] c"declare ptr @strstr(ptr, ptr)\0A\00" +@.str794 = private unnamed_addr constant [24 x i8] c"declare i32 @atoi(ptr)\0A\00" +@.str795 = private unnamed_addr constant [24 x i8] c"declare i32 @getchar()\0A\00" +@.str796 = private unnamed_addr constant [27 x i8] c"declare i32 @putchar(i32)\0A\00" +@.str797 = private unnamed_addr constant [24 x i8] c"declare i64 @time(ptr)\0A\00" +@.str798 = private unnamed_addr constant [44 x i8] c"declare void @win_open(i32, i32, i32, ptr)\0A\00" +@.str799 = private unnamed_addr constant [25 x i8] c"declare i32 @win_poll()\0A\00" +@.str800 = private unnamed_addr constant [42 x i8] c"declare void @win_present(ptr, i32, i32)\0A\00" +@.str801 = private unnamed_addr constant [28 x i8] c"declare i32 @win_running()\0A\00" +@.str802 = private unnamed_addr constant [27 x i8] c"declare void @win_close()\0A\00" +@.str803 = private unnamed_addr constant [29 x i8] c"declare void @win_held(ptr)\0A\00" +@.str804 = private unnamed_addr constant [30 x i8] c"declare void @win_mouse(ptr)\0A\00" +@.str805 = private unnamed_addr constant [28 x i8] c"declare void @win_pad(ptr)\0A\00" +@.str806 = private unnamed_addr constant [30 x i8] c"declare void @win_touch(ptr)\0A\00" +@.str807 = private unnamed_addr constant [36 x i8] c"declare void @win_cursor_mode(i32)\0A\00" +@.str808 = private unnamed_addr constant [28 x i8] c"declare ptr @snd_load(ptr)\0A\00" +@.str809 = private unnamed_addr constant [44 x i8] c"declare void @snd_play(ptr, i32, i32, i32)\0A\00" +@.str810 = private unnamed_addr constant [29 x i8] c"declare void @snd_stop(ptr)\0A\00" +@.str811 = private unnamed_addr constant [31 x i8] c"declare i32 @snd_playing(ptr)\0A\00" +@.str812 = private unnamed_addr constant [40 x i8] c"declare void @snd_set_volume(ptr, i32)\0A\00" +@.str813 = private unnamed_addr constant [38 x i8] c"declare void @snd_set_rate(ptr, i32)\0A\00" +@.str814 = private unnamed_addr constant [35 x i8] c"declare ptr @hs_req_new(ptr, ptr)\0A\00" +@.str815 = private unnamed_addr constant [44 x i8] c"declare void @hs_req_header(ptr, ptr, ptr)\0A\00" +@.str816 = private unnamed_addr constant [42 x i8] c"declare void @hs_req_body(ptr, ptr, i32)\0A\00" +@.str817 = private unnamed_addr constant [33 x i8] c"declare void @hs_send(i32, ptr)\0A\00" +@.str818 = private unnamed_addr constant [27 x i8] c"declare i32 @hs_done(i32)\0A\00" +@.str819 = private unnamed_addr constant [29 x i8] c"declare i32 @hs_status(i32)\0A\00" +@.str820 = private unnamed_addr constant [27 x i8] c"declare ptr @hs_body(i32)\0A\00" +@.str821 = private unnamed_addr constant [27 x i8] c"declare i32 @hs_blen(i32)\0A\00" +@.str822 = private unnamed_addr constant [34 x i8] c"declare ptr @hs_header(i32, ptr)\0A\00" +@.str823 = private unnamed_addr constant [28 x i8] c"declare void @hs_free(i32)\0A\00" +@.str824 = private unnamed_addr constant [34 x i8] c"@__stderrp = external global ptr\0A\00" +@.str825 = private unnamed_addr constant [34 x i8] c"@__stdoutp = external global ptr\0A\00" +@.str826 = private unnamed_addr constant [64 x i8] c"@.fmt_int = private unnamed_addr constant [4 x i8] c\22%d\5C0A\5C00\22\0A\00" +@.str827 = private unnamed_addr constant [67 x i8] c"@.fmt_long = private unnamed_addr constant [6 x i8] c\22%lld\5C0A\5C00\22\0A\00" +@.str828 = private unnamed_addr constant [65 x i8] c"@.fmt_line = private unnamed_addr constant [4 x i8] c\22%s\5C0A\5C00\22\0A\00" +@.str829 = private unnamed_addr constant [33 x i8] c"@L_argc = internal global i32 0\0A\00" +@.str830 = private unnamed_addr constant [36 x i8] c"@L_argv = internal global ptr null\0A\00" +@.str831 = private unnamed_addr constant [34 x i8] c"@L_clock = internal global i32 0\0A\00" +@.str832 = private unnamed_addr constant [46 x i8] c"@.gametitle = private unnamed_addr constant [\00" +@.str833 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" +@.str834 = private unnamed_addr constant [6 x i8] c"\5C00\22\0A\00" +@.str835 = private unnamed_addr constant [34 x i8] c"%LSlice = type { ptr, i32, i32 }\0A\00" +@.str836 = private unnamed_addr constant [10 x i8] c"property \00" +@.str837 = private unnamed_addr constant [63 x i8] c" is also a property of the engine runtime; choose another name\00" +@.str838 = private unnamed_addr constant [10 x i8] c"property \00" +@.str839 = private unnamed_addr constant [19 x i8] c" is declared twice\00" +@.str840 = private unnamed_addr constant [11 x i8] c" = type { \00" +@.str841 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str842 = private unnamed_addr constant [3 x i8] c", \00" +@.str843 = private unnamed_addr constant [4 x i8] c" }\0A\00" +@.str844 = private unnamed_addr constant [10 x i8] c"variable \00" +@.str845 = private unnamed_addr constant [63 x i8] c" is also a variable of the engine runtime; choose another name\00" +@.str846 = private unnamed_addr constant [10 x i8] c"variable \00" +@.str847 = private unnamed_addr constant [19 x i8] c" is declared twice\00" +@.str848 = private unnamed_addr constant [4 x i8] c"@g_\00" +@.str849 = private unnamed_addr constant [20 x i8] c" = internal global \00" +@.str850 = private unnamed_addr constant [2 x i8] c" \00" +@.str851 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str852 = private unnamed_addr constant [9 x i8] c"declare \00" +@.str853 = private unnamed_addr constant [3 x i8] c" @\00" +@.str854 = private unnamed_addr constant [2 x i8] c"(\00" +@.str855 = private unnamed_addr constant [3 x i8] c", \00" +@.str856 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str857 = private unnamed_addr constant [41 x i8] c"define i32 @lp_str_eq(ptr %a, ptr %b) {\0A\00" +@.str858 = private unnamed_addr constant [25 x i8] c"entry:\0A br label %loop\0A\00" +@.str859 = private unnamed_addr constant [52 x i8] c"loop:\0A %i = phi i32 [ 0, %entry ], [ %i1, %cont ]\0A\00" +@.str860 = private unnamed_addr constant [51 x i8] c" %pa = getelementptr inbounds i8, ptr %a, i32 %i\0A\00" +@.str861 = private unnamed_addr constant [51 x i8] c" %pb = getelementptr inbounds i8, ptr %b, i32 %i\0A\00" +@.str862 = private unnamed_addr constant [51 x i8] c" %ca = load i8, ptr %pa\0A %cb = load i8, ptr %pb\0A\00" +@.str863 = private unnamed_addr constant [66 x i8] c" %df = icmp ne i8 %ca, %cb\0A br i1 %df, label %ret0, label %chk\0A\00" +@.str864 = private unnamed_addr constant [70 x i8] c"chk:\0A %zt = icmp eq i8 %ca, 0\0A br i1 %zt, label %ret1, label %cont\0A\00" +@.str865 = private unnamed_addr constant [46 x i8] c"cont:\0A %i1 = add i32 %i, 1\0A br label %loop\0A\00" +@.str866 = private unnamed_addr constant [39 x i8] c"ret1:\0A ret i32 1\0Aret0:\0A ret i32 0\0A}\0A\00" +@.str867 = private unnamed_addr constant [45 x i8] c"define ptr @lp_str_concat(ptr %a, ptr %b) {\0A\00" +@.str868 = private unnamed_addr constant [23 x i8] c"entry:\0A br label %al\0A\00" +@.str869 = private unnamed_addr constant [51 x i8] c"al:\0A %ia = phi i32 [ 0, %entry ], [ %ia1, %alb ]\0A\00" +@.str870 = private unnamed_addr constant [78 x i8] c" %pa = getelementptr inbounds i8, ptr %a, i32 %ia\0A %cca = load i8, ptr %pa\0A\00" +@.str871 = private unnamed_addr constant [64 x i8] c" %za = icmp eq i8 %cca, 0\0A br i1 %za, label %bl0, label %alb\0A\00" +@.str872 = private unnamed_addr constant [45 x i8] c"alb:\0A %ia1 = add i32 %ia, 1\0A br label %al\0A\00" +@.str873 = private unnamed_addr constant [21 x i8] c"bl0:\0A br label %bl\0A\00" +@.str874 = private unnamed_addr constant [49 x i8] c"bl:\0A %ib = phi i32 [ 0, %bl0 ], [ %ib1, %blb ]\0A\00" +@.str875 = private unnamed_addr constant [78 x i8] c" %pb = getelementptr inbounds i8, ptr %b, i32 %ib\0A %ccb = load i8, ptr %pb\0A\00" +@.str876 = private unnamed_addr constant [66 x i8] c" %zb = icmp eq i8 %ccb, 0\0A br i1 %zb, label %alloc, label %blb\0A\00" +@.str877 = private unnamed_addr constant [45 x i8] c"blb:\0A %ib1 = add i32 %ib, 1\0A br label %bl\0A\00" +@.str878 = private unnamed_addr constant [58 x i8] c"alloc:\0A %sum = add i32 %ia, %ib\0A %sz = add i32 %sum, 1\0A\00" +@.str879 = private unnamed_addr constant [83 x i8] c" %sz64 = sext i32 %sz to i64\0A %out = call ptr @malloc(i64 %sz64)\0A br label %c1\0A\00" +@.str880 = private unnamed_addr constant [49 x i8] c"c1:\0A %i = phi i32 [ 0, %alloc ], [ %i1, %c1b ]\0A\00" +@.str881 = private unnamed_addr constant [66 x i8] c" %d1 = icmp slt i32 %i, %ia\0A br i1 %d1, label %c1b, label %c2i\0A\00" +@.str882 = private unnamed_addr constant [81 x i8] c"c1b:\0A %s1 = getelementptr inbounds i8, ptr %a, i32 %i\0A %v1 = load i8, ptr %s1\0A\00" +@.str883 = private unnamed_addr constant [77 x i8] c" %o1 = getelementptr inbounds i8, ptr %out, i32 %i\0A store i8 %v1, ptr %o1\0A\00" +@.str884 = private unnamed_addr constant [38 x i8] c" %i1 = add i32 %i, 1\0A br label %c1\0A\00" +@.str885 = private unnamed_addr constant [21 x i8] c"c2i:\0A br label %c2\0A\00" +@.str886 = private unnamed_addr constant [47 x i8] c"c2:\0A %j = phi i32 [ 0, %c2i ], [ %j1, %c2b ]\0A\00" +@.str887 = private unnamed_addr constant [66 x i8] c" %d2 = icmp slt i32 %j, %ib\0A br i1 %d2, label %c2b, label %fin\0A\00" +@.str888 = private unnamed_addr constant [81 x i8] c"c2b:\0A %s2 = getelementptr inbounds i8, ptr %b, i32 %j\0A %v2 = load i8, ptr %s2\0A\00" +@.str889 = private unnamed_addr constant [102 x i8] c" %oj = add i32 %ia, %j\0A %o2 = getelementptr inbounds i8, ptr %out, i32 %oj\0A store i8 %v2, ptr %o2\0A\00" +@.str890 = private unnamed_addr constant [38 x i8] c" %j1 = add i32 %j, 1\0A br label %c2\0A\00" +@.str891 = private unnamed_addr constant [99 x i8] c"fin:\0A %pe = getelementptr inbounds i8, ptr %out, i32 %sum\0A store i8 0, ptr %pe\0A ret ptr %out\0A}\0A\00" +@.str892 = private unnamed_addr constant [35 x i8] c"define ptr @lp_int_str(i32 %n0) {\0A\00" +@.str893 = private unnamed_addr constant [42 x i8] c"entry:\0A %buf = call ptr @malloc(i64 24)\0A\00" +@.str894 = private unnamed_addr constant [56 x i8] c" %isneg = icmp slt i32 %n0, 0\0A %neg = sub i32 0, %n0\0A\00" +@.str895 = private unnamed_addr constant [44 x i8] c" %n = select i1 %isneg, i32 %neg, i32 %n0\0A\00" +@.str896 = private unnamed_addr constant [79 x i8] c" %term = getelementptr inbounds i8, ptr %buf, i32 23\0A store i8 0, ptr %term\0A\00" +@.str897 = private unnamed_addr constant [70 x i8] c" %iszero = icmp eq i32 %n0, 0\0A br i1 %iszero, label %zc, label %dl\0A\00" +@.str898 = private unnamed_addr constant [94 x i8] c"zc:\0A %zp = getelementptr inbounds i8, ptr %buf, i32 22\0A store i8 48, ptr %zp\0A ret ptr %zp\0A\00" +@.str899 = private unnamed_addr constant [23 x i8] c"dl:\0A br label %dloop\0A\00" +@.str900 = private unnamed_addr constant [104 x i8] c"dloop:\0A %pos = phi i32 [ 22, %dl ], [ %pos2, %dbody ]\0A %cur = phi i32 [ %n, %dl ], [ %cur2, %dbody ]\0A\00" +@.str901 = private unnamed_addr constant [72 x i8] c" %done = icmp eq i32 %cur, 0\0A br i1 %done, label %sign, label %dbody\0A\00" +@.str902 = private unnamed_addr constant [85 x i8] c"dbody:\0A %d = urem i32 %cur, 10\0A %ch = add i32 %d, 48\0A %ch8 = trunc i32 %ch to i8\0A\00" +@.str903 = private unnamed_addr constant [80 x i8] c" %pp = getelementptr inbounds i8, ptr %buf, i32 %pos\0A store i8 %ch8, ptr %pp\0A\00" +@.str904 = private unnamed_addr constant [73 x i8] c" %cur2 = udiv i32 %cur, 10\0A %pos2 = sub i32 %pos, 1\0A br label %dloop\0A\00" +@.str905 = private unnamed_addr constant [49 x i8] c"sign:\0A br i1 %isneg, label %addneg, label %fin\0A\00" +@.str906 = private unnamed_addr constant [128 x i8] c"addneg:\0A %sp = getelementptr inbounds i8, ptr %buf, i32 %pos\0A store i8 45, ptr %sp\0A %posn = sub i32 %pos, 1\0A br label %fin\0A\00" +@.str907 = private unnamed_addr constant [60 x i8] c"fin:\0A %fpos = phi i32 [ %pos, %sign ], [ %posn, %addneg ]\0A\00" +@.str908 = private unnamed_addr constant [101 x i8] c" %rpos = add i32 %fpos, 1\0A %res = getelementptr inbounds i8, ptr %buf, i32 %rpos\0A ret ptr %res\0A}\0A\00" +@.str909 = private unnamed_addr constant [36 x i8] c"define ptr @lp_long_str(i64 %n0) {\0A\00" +@.str910 = private unnamed_addr constant [42 x i8] c"entry:\0A %buf = call ptr @malloc(i64 24)\0A\00" +@.str911 = private unnamed_addr constant [56 x i8] c" %isneg = icmp slt i64 %n0, 0\0A %neg = sub i64 0, %n0\0A\00" +@.str912 = private unnamed_addr constant [44 x i8] c" %n = select i1 %isneg, i64 %neg, i64 %n0\0A\00" +@.str913 = private unnamed_addr constant [79 x i8] c" %term = getelementptr inbounds i8, ptr %buf, i32 23\0A store i8 0, ptr %term\0A\00" +@.str914 = private unnamed_addr constant [70 x i8] c" %iszero = icmp eq i64 %n0, 0\0A br i1 %iszero, label %zc, label %dl\0A\00" +@.str915 = private unnamed_addr constant [94 x i8] c"zc:\0A %zp = getelementptr inbounds i8, ptr %buf, i32 22\0A store i8 48, ptr %zp\0A ret ptr %zp\0A\00" +@.str916 = private unnamed_addr constant [23 x i8] c"dl:\0A br label %dloop\0A\00" +@.str917 = private unnamed_addr constant [104 x i8] c"dloop:\0A %pos = phi i32 [ 22, %dl ], [ %pos2, %dbody ]\0A %cur = phi i64 [ %n, %dl ], [ %cur2, %dbody ]\0A\00" +@.str918 = private unnamed_addr constant [72 x i8] c" %done = icmp eq i64 %cur, 0\0A br i1 %done, label %sign, label %dbody\0A\00" +@.str919 = private unnamed_addr constant [116 x i8] c"dbody:\0A %d = urem i64 %cur, 10\0A %d32 = trunc i64 %d to i32\0A %ch = add i32 %d32, 48\0A %ch8 = trunc i32 %ch to i8\0A\00" +@.str920 = private unnamed_addr constant [80 x i8] c" %pp = getelementptr inbounds i8, ptr %buf, i32 %pos\0A store i8 %ch8, ptr %pp\0A\00" +@.str921 = private unnamed_addr constant [73 x i8] c" %cur2 = udiv i64 %cur, 10\0A %pos2 = sub i32 %pos, 1\0A br label %dloop\0A\00" +@.str922 = private unnamed_addr constant [49 x i8] c"sign:\0A br i1 %isneg, label %addneg, label %fin\0A\00" +@.str923 = private unnamed_addr constant [128 x i8] c"addneg:\0A %sp = getelementptr inbounds i8, ptr %buf, i32 %pos\0A store i8 45, ptr %sp\0A %posn = sub i32 %pos, 1\0A br label %fin\0A\00" +@.str924 = private unnamed_addr constant [60 x i8] c"fin:\0A %fpos = phi i32 [ %pos, %sign ], [ %posn, %addneg ]\0A\00" +@.str925 = private unnamed_addr constant [101 x i8] c" %rpos = add i32 %fpos, 1\0A %res = getelementptr inbounds i8, ptr %buf, i32 %rpos\0A ret ptr %res\0A}\0A\00" +@.str926 = private unnamed_addr constant [58 x i8] c"define ptr @lp_str_slice(ptr %s, i32 %start, i32 %end) {\0A\00" +@.str927 = private unnamed_addr constant [62 x i8] c"entry:\0A %len = sub i32 %end, %start\0A %sz = add i32 %len, 1\0A\00" +@.str928 = private unnamed_addr constant [85 x i8] c" %sz64 = sext i32 %sz to i64\0A %out = call ptr @malloc(i64 %sz64)\0A br label %loop\0A\00" +@.str929 = private unnamed_addr constant [52 x i8] c"loop:\0A %i = phi i32 [ 0, %entry ], [ %i1, %body ]\0A\00" +@.str930 = private unnamed_addr constant [66 x i8] c" %d = icmp slt i32 %i, %len\0A br i1 %d, label %body, label %fin\0A\00" +@.str931 = private unnamed_addr constant [109 x i8] c"body:\0A %si = add i32 %start, %i\0A %sp = getelementptr inbounds i8, ptr %s, i32 %si\0A %c = load i8, ptr %sp\0A\00" +@.str932 = private unnamed_addr constant [115 x i8] c" %op = getelementptr inbounds i8, ptr %out, i32 %i\0A store i8 %c, ptr %op\0A %i1 = add i32 %i, 1\0A br label %loop\0A\00" +@.str933 = private unnamed_addr constant [99 x i8] c"fin:\0A %tp = getelementptr inbounds i8, ptr %out, i32 %len\0A store i8 0, ptr %tp\0A ret ptr %out\0A}\0A\00" +@.str934 = private unnamed_addr constant [32 x i8] c"member access on non-aggregate \00" +@.str935 = private unnamed_addr constant [15 x i8] c"no such field \00" +@.str936 = private unnamed_addr constant [3 x i8] c" \00" +@.str937 = private unnamed_addr constant [27 x i8] c" = getelementptr inbounds \00" +@.str938 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str939 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str940 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str941 = private unnamed_addr constant [6 x i8] c"words\00" +@.str942 = private unnamed_addr constant [33 x i8] c"getelementptr inbounds i32, ptr \00" +@.str943 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str944 = private unnamed_addr constant [4 x i8] c"int\00" +@.str945 = private unnamed_addr constant [7 x i8] c"fixeds\00" +@.str946 = private unnamed_addr constant [33 x i8] c"getelementptr inbounds i32, ptr \00" +@.str947 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str948 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str949 = private unnamed_addr constant [9 x i8] c"pointers\00" +@.str950 = private unnamed_addr constant [33 x i8] c"getelementptr inbounds ptr, ptr \00" @.str951 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str952 = private unnamed_addr constant [5 x i8] c"byte\00" -@.str953 = private unnamed_addr constant [3 x i8] c" \00" -@.str954 = private unnamed_addr constant [40 x i8] c" = getelementptr inbounds %LSlice, ptr \00" -@.str955 = private unnamed_addr constant [16 x i8] c", i32 0, i32 0\0A\00" +@.str952 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str953 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" +@.str954 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str955 = private unnamed_addr constant [5 x i8] c"byte\00" @.str956 = private unnamed_addr constant [3 x i8] c" \00" -@.str957 = private unnamed_addr constant [18 x i8] c" = load ptr, ptr \00" -@.str958 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str957 = private unnamed_addr constant [40 x i8] c" = getelementptr inbounds %LSlice, ptr \00" +@.str958 = private unnamed_addr constant [16 x i8] c", i32 0, i32 0\0A\00" @.str959 = private unnamed_addr constant [3 x i8] c" \00" -@.str960 = private unnamed_addr constant [27 x i8] c" = getelementptr inbounds \00" -@.str961 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str962 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str963 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str964 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str965 = private unnamed_addr constant [10 x i8] c"file_open\00" -@.str966 = private unnamed_addr constant [10 x i8] c"file_read\00" -@.str967 = private unnamed_addr constant [11 x i8] c"file_write\00" -@.str968 = private unnamed_addr constant [10 x i8] c"file_seek\00" -@.str969 = private unnamed_addr constant [10 x i8] c"file_tell\00" -@.str970 = private unnamed_addr constant [11 x i8] c"file_close\00" -@.str971 = private unnamed_addr constant [10 x i8] c"arg_count\00" -@.str972 = private unnamed_addr constant [4 x i8] c"arg\00" -@.str973 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str974 = private unnamed_addr constant [12 x i8] c"file_stderr\00" -@.str975 = private unnamed_addr constant [12 x i8] c"file_stdout\00" -@.str976 = private unnamed_addr constant [4 x i8] c"run\00" -@.str977 = private unnamed_addr constant [7 x i8] c"getenv\00" -@.str978 = private unnamed_addr constant [14 x i8] c"world_despawn\00" -@.str979 = private unnamed_addr constant [3 x i8] c" \00" -@.str980 = private unnamed_addr constant [4 x i8] c" = \00" -@.str981 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str982 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str983 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str984 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str985 = private unnamed_addr constant [23 x i8] c"call ptr @realloc(ptr \00" -@.str986 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str987 = private unnamed_addr constant [2 x i8] c")\00" -@.str988 = private unnamed_addr constant [8 x i8] c"pointer\00" -@.str989 = private unnamed_addr constant [10 x i8] c"file_open\00" -@.str990 = private unnamed_addr constant [21 x i8] c"call ptr @fopen(ptr \00" -@.str991 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str992 = private unnamed_addr constant [2 x i8] c")\00" -@.str993 = private unnamed_addr constant [8 x i8] c"pointer\00" -@.str994 = private unnamed_addr constant [10 x i8] c"file_read\00" -@.str995 = private unnamed_addr constant [11 x i8] c"file_write\00" -@.str996 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str997 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str998 = private unnamed_addr constant [7 x i8] c"@fread\00" -@.str999 = private unnamed_addr constant [11 x i8] c"file_write\00" -@.str1000 = private unnamed_addr constant [8 x i8] c"@fwrite\00" -@.str1001 = private unnamed_addr constant [10 x i8] c"call i64 \00" -@.str1002 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str1003 = private unnamed_addr constant [14 x i8] c", i64 1, i64 \00" -@.str1004 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str1005 = private unnamed_addr constant [2 x i8] c")\00" -@.str1006 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str1007 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str1008 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1009 = private unnamed_addr constant [10 x i8] c"file_seek\00" -@.str1010 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str1011 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str1012 = private unnamed_addr constant [21 x i8] c"call i32 @fseek(ptr \00" -@.str1013 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str1014 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1015 = private unnamed_addr constant [2 x i8] c")\00" -@.str1016 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1017 = private unnamed_addr constant [10 x i8] c"file_tell\00" -@.str1018 = private unnamed_addr constant [21 x i8] c"call i64 @ftell(ptr \00" -@.str1019 = private unnamed_addr constant [2 x i8] c")\00" -@.str1020 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str1021 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str1022 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1023 = private unnamed_addr constant [11 x i8] c"file_close\00" -@.str1024 = private unnamed_addr constant [24 x i8] c" call i32 @fclose(ptr \00" -@.str1025 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1026 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1027 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1028 = private unnamed_addr constant [14 x i8] c"world_despawn\00" -@.str1029 = private unnamed_addr constant [35 x i8] c" call void @fn_world_despawn(i32 \00" -@.str1030 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1031 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1032 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1033 = private unnamed_addr constant [10 x i8] c"arg_count\00" -@.str1034 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_argc\00" -@.str1035 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1036 = private unnamed_addr constant [4 x i8] c"arg\00" -@.str1037 = private unnamed_addr constant [22 x i8] c"load ptr, ptr @L_argv\00" -@.str1038 = private unnamed_addr constant [24 x i8] c"getelementptr ptr, ptr \00" -@.str1039 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1040 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" -@.str1041 = private unnamed_addr constant [7 x i8] c"string\00" -@.str1042 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str1043 = private unnamed_addr constant [23 x i8] c" call void @exit(i32 \00" -@.str1044 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1045 = private unnamed_addr constant [15 x i8] c" unreachable\0A\00" -@.str1046 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1047 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1048 = private unnamed_addr constant [12 x i8] c"file_stderr\00" -@.str1049 = private unnamed_addr constant [25 x i8] c"load ptr, ptr @__stderrp\00" -@.str1050 = private unnamed_addr constant [8 x i8] c"pointer\00" -@.str1051 = private unnamed_addr constant [12 x i8] c"file_stdout\00" -@.str1052 = private unnamed_addr constant [25 x i8] c"load ptr, ptr @__stdoutp\00" +@.str960 = private unnamed_addr constant [18 x i8] c" = load ptr, ptr \00" +@.str961 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str962 = private unnamed_addr constant [3 x i8] c" \00" +@.str963 = private unnamed_addr constant [27 x i8] c" = getelementptr inbounds \00" +@.str964 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str965 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str966 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str967 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str968 = private unnamed_addr constant [10 x i8] c"file_open\00" +@.str969 = private unnamed_addr constant [10 x i8] c"file_read\00" +@.str970 = private unnamed_addr constant [11 x i8] c"file_write\00" +@.str971 = private unnamed_addr constant [10 x i8] c"file_seek\00" +@.str972 = private unnamed_addr constant [10 x i8] c"file_tell\00" +@.str973 = private unnamed_addr constant [11 x i8] c"file_close\00" +@.str974 = private unnamed_addr constant [10 x i8] c"arg_count\00" +@.str975 = private unnamed_addr constant [4 x i8] c"arg\00" +@.str976 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str977 = private unnamed_addr constant [12 x i8] c"file_stderr\00" +@.str978 = private unnamed_addr constant [12 x i8] c"file_stdout\00" +@.str979 = private unnamed_addr constant [4 x i8] c"run\00" +@.str980 = private unnamed_addr constant [7 x i8] c"getenv\00" +@.str981 = private unnamed_addr constant [14 x i8] c"world_despawn\00" +@.str982 = private unnamed_addr constant [3 x i8] c" \00" +@.str983 = private unnamed_addr constant [4 x i8] c" = \00" +@.str984 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str985 = private unnamed_addr constant [7 x i8] c"resize\00" +@.str986 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str987 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str988 = private unnamed_addr constant [23 x i8] c"call ptr @realloc(ptr \00" +@.str989 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str990 = private unnamed_addr constant [2 x i8] c")\00" +@.str991 = private unnamed_addr constant [8 x i8] c"pointer\00" +@.str992 = private unnamed_addr constant [10 x i8] c"file_open\00" +@.str993 = private unnamed_addr constant [21 x i8] c"call ptr @fopen(ptr \00" +@.str994 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str995 = private unnamed_addr constant [2 x i8] c")\00" +@.str996 = private unnamed_addr constant [8 x i8] c"pointer\00" +@.str997 = private unnamed_addr constant [10 x i8] c"file_read\00" +@.str998 = private unnamed_addr constant [11 x i8] c"file_write\00" +@.str999 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str1000 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str1001 = private unnamed_addr constant [7 x i8] c"@fread\00" +@.str1002 = private unnamed_addr constant [11 x i8] c"file_write\00" +@.str1003 = private unnamed_addr constant [8 x i8] c"@fwrite\00" +@.str1004 = private unnamed_addr constant [10 x i8] c"call i64 \00" +@.str1005 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str1006 = private unnamed_addr constant [14 x i8] c", i64 1, i64 \00" +@.str1007 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str1008 = private unnamed_addr constant [2 x i8] c")\00" +@.str1009 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str1010 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str1011 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1012 = private unnamed_addr constant [10 x i8] c"file_seek\00" +@.str1013 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str1014 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str1015 = private unnamed_addr constant [21 x i8] c"call i32 @fseek(ptr \00" +@.str1016 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str1017 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1018 = private unnamed_addr constant [2 x i8] c")\00" +@.str1019 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1020 = private unnamed_addr constant [10 x i8] c"file_tell\00" +@.str1021 = private unnamed_addr constant [21 x i8] c"call i64 @ftell(ptr \00" +@.str1022 = private unnamed_addr constant [2 x i8] c")\00" +@.str1023 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str1024 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str1025 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1026 = private unnamed_addr constant [11 x i8] c"file_close\00" +@.str1027 = private unnamed_addr constant [24 x i8] c" call i32 @fclose(ptr \00" +@.str1028 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1029 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1030 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1031 = private unnamed_addr constant [14 x i8] c"world_despawn\00" +@.str1032 = private unnamed_addr constant [35 x i8] c" call void @fn_world_despawn(i32 \00" +@.str1033 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1034 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1035 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1036 = private unnamed_addr constant [10 x i8] c"arg_count\00" +@.str1037 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_argc\00" +@.str1038 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1039 = private unnamed_addr constant [4 x i8] c"arg\00" +@.str1040 = private unnamed_addr constant [22 x i8] c"load ptr, ptr @L_argv\00" +@.str1041 = private unnamed_addr constant [24 x i8] c"getelementptr ptr, ptr \00" +@.str1042 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1043 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" +@.str1044 = private unnamed_addr constant [7 x i8] c"string\00" +@.str1045 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str1046 = private unnamed_addr constant [23 x i8] c" call void @exit(i32 \00" +@.str1047 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1048 = private unnamed_addr constant [15 x i8] c" unreachable\0A\00" +@.str1049 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1050 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1051 = private unnamed_addr constant [12 x i8] c"file_stderr\00" +@.str1052 = private unnamed_addr constant [25 x i8] c"load ptr, ptr @__stderrp\00" @.str1053 = private unnamed_addr constant [8 x i8] c"pointer\00" -@.str1054 = private unnamed_addr constant [4 x i8] c"run\00" -@.str1055 = private unnamed_addr constant [22 x i8] c"call i32 @system(ptr \00" -@.str1056 = private unnamed_addr constant [2 x i8] c")\00" -@.str1057 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1058 = private unnamed_addr constant [7 x i8] c"getenv\00" -@.str1059 = private unnamed_addr constant [22 x i8] c"call ptr @getenv(ptr \00" -@.str1060 = private unnamed_addr constant [2 x i8] c")\00" -@.str1061 = private unnamed_addr constant [7 x i8] c"string\00" -@.str1062 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1063 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1064 = private unnamed_addr constant [5 x i8] c"free\00" -@.str1065 = private unnamed_addr constant [5 x i8] c"fill\00" -@.str1066 = private unnamed_addr constant [7 x i8] c"offset\00" -@.str1067 = private unnamed_addr constant [10 x i8] c"read_char\00" -@.str1068 = private unnamed_addr constant [9 x i8] c"as_fixed\00" -@.str1069 = private unnamed_addr constant [7 x i8] c"as_int\00" -@.str1070 = private unnamed_addr constant [12 x i8] c"is_windowed\00" -@.str1071 = private unnamed_addr constant [11 x i8] c"game_title\00" -@.str1072 = private unnamed_addr constant [9 x i8] c"win_open\00" -@.str1073 = private unnamed_addr constant [9 x i8] c"win_poll\00" -@.str1074 = private unnamed_addr constant [12 x i8] c"win_present\00" -@.str1075 = private unnamed_addr constant [12 x i8] c"win_running\00" -@.str1076 = private unnamed_addr constant [10 x i8] c"win_close\00" -@.str1077 = private unnamed_addr constant [9 x i8] c"win_held\00" -@.str1078 = private unnamed_addr constant [10 x i8] c"win_mouse\00" -@.str1079 = private unnamed_addr constant [8 x i8] c"win_pad\00" -@.str1080 = private unnamed_addr constant [10 x i8] c"win_touch\00" -@.str1081 = private unnamed_addr constant [16 x i8] c"win_cursor_mode\00" -@.str1082 = private unnamed_addr constant [9 x i8] c"snd_load\00" -@.str1083 = private unnamed_addr constant [9 x i8] c"snd_play\00" -@.str1084 = private unnamed_addr constant [9 x i8] c"snd_stop\00" -@.str1085 = private unnamed_addr constant [12 x i8] c"snd_playing\00" -@.str1086 = private unnamed_addr constant [15 x i8] c"snd_set_volume\00" -@.str1087 = private unnamed_addr constant [13 x i8] c"snd_set_rate\00" -@.str1088 = private unnamed_addr constant [11 x i8] c"hs_req_new\00" -@.str1089 = private unnamed_addr constant [14 x i8] c"hs_req_header\00" -@.str1090 = private unnamed_addr constant [12 x i8] c"hs_req_body\00" -@.str1091 = private unnamed_addr constant [8 x i8] c"hs_send\00" -@.str1092 = private unnamed_addr constant [8 x i8] c"hs_done\00" -@.str1093 = private unnamed_addr constant [10 x i8] c"hs_status\00" -@.str1094 = private unnamed_addr constant [8 x i8] c"hs_body\00" -@.str1095 = private unnamed_addr constant [8 x i8] c"hs_blen\00" -@.str1096 = private unnamed_addr constant [10 x i8] c"hs_header\00" -@.str1097 = private unnamed_addr constant [8 x i8] c"hs_free\00" -@.str1098 = private unnamed_addr constant [5 x i8] c"free\00" -@.str1099 = private unnamed_addr constant [23 x i8] c" call void @free(ptr \00" -@.str1100 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1101 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1102 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1103 = private unnamed_addr constant [5 x i8] c"fill\00" -@.str1104 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str1105 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str1106 = private unnamed_addr constant [24 x i8] c" call ptr @memset(ptr \00" -@.str1107 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1108 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str1109 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1110 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1111 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1112 = private unnamed_addr constant [7 x i8] c"offset\00" -@.str1113 = private unnamed_addr constant [3 x i8] c" \00" -@.str1114 = private unnamed_addr constant [35 x i8] c" = getelementptr inbounds i8, ptr \00" -@.str1115 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1116 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str1117 = private unnamed_addr constant [8 x i8] c"pointer\00" -@.str1118 = private unnamed_addr constant [10 x i8] c"read_char\00" -@.str1119 = private unnamed_addr constant [20 x i8] c"call i32 @getchar()\00" -@.str1120 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1121 = private unnamed_addr constant [9 x i8] c"as_fixed\00" -@.str1122 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1123 = private unnamed_addr constant [7 x i8] c"as_int\00" -@.str1124 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1125 = private unnamed_addr constant [12 x i8] c"is_windowed\00" -@.str1126 = private unnamed_addr constant [2 x i8] c"1\00" -@.str1127 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str1128 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1129 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str1130 = private unnamed_addr constant [11 x i8] c"game_title\00" -@.str1131 = private unnamed_addr constant [12 x i8] c"@.gametitle\00" -@.str1132 = private unnamed_addr constant [7 x i8] c"string\00" -@.str1133 = private unnamed_addr constant [9 x i8] c"win_poll\00" -@.str1134 = private unnamed_addr constant [21 x i8] c"call i32 @win_poll()\00" -@.str1135 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1136 = private unnamed_addr constant [12 x i8] c"win_running\00" -@.str1137 = private unnamed_addr constant [24 x i8] c"call i32 @win_running()\00" -@.str1138 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str1139 = private unnamed_addr constant [9 x i8] c"win_open\00" -@.str1140 = private unnamed_addr constant [27 x i8] c" call void @win_open(i32 \00" -@.str1141 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1142 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1143 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str1144 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1145 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1146 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1147 = private unnamed_addr constant [12 x i8] c"win_present\00" -@.str1148 = private unnamed_addr constant [30 x i8] c" call void @win_present(ptr \00" -@.str1149 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1150 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1151 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1152 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1153 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1154 = private unnamed_addr constant [10 x i8] c"win_close\00" -@.str1155 = private unnamed_addr constant [26 x i8] c" call void @win_close()\0A\00" -@.str1156 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1157 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1158 = private unnamed_addr constant [9 x i8] c"win_held\00" -@.str1159 = private unnamed_addr constant [27 x i8] c" call void @win_held(ptr \00" -@.str1160 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1161 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1162 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1163 = private unnamed_addr constant [10 x i8] c"win_mouse\00" -@.str1164 = private unnamed_addr constant [28 x i8] c" call void @win_mouse(ptr \00" -@.str1165 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1166 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1167 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1168 = private unnamed_addr constant [8 x i8] c"win_pad\00" -@.str1169 = private unnamed_addr constant [26 x i8] c" call void @win_pad(ptr \00" -@.str1170 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1171 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1172 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1173 = private unnamed_addr constant [10 x i8] c"win_touch\00" -@.str1174 = private unnamed_addr constant [28 x i8] c" call void @win_touch(ptr \00" -@.str1175 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1176 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1177 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1178 = private unnamed_addr constant [16 x i8] c"win_cursor_mode\00" -@.str1179 = private unnamed_addr constant [34 x i8] c" call void @win_cursor_mode(i32 \00" -@.str1180 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1181 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1182 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1183 = private unnamed_addr constant [9 x i8] c"snd_load\00" -@.str1184 = private unnamed_addr constant [24 x i8] c"call ptr @snd_load(ptr \00" -@.str1185 = private unnamed_addr constant [2 x i8] c")\00" -@.str1186 = private unnamed_addr constant [8 x i8] c"pointer\00" -@.str1187 = private unnamed_addr constant [9 x i8] c"snd_play\00" -@.str1188 = private unnamed_addr constant [27 x i8] c" call void @snd_play(ptr \00" -@.str1189 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1190 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1191 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1192 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1193 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1194 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1195 = private unnamed_addr constant [9 x i8] c"snd_stop\00" -@.str1196 = private unnamed_addr constant [27 x i8] c" call void @snd_stop(ptr \00" -@.str1197 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1198 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1199 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1200 = private unnamed_addr constant [12 x i8] c"snd_playing\00" -@.str1201 = private unnamed_addr constant [27 x i8] c"call i32 @snd_playing(ptr \00" -@.str1202 = private unnamed_addr constant [2 x i8] c")\00" -@.str1203 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1204 = private unnamed_addr constant [15 x i8] c"snd_set_volume\00" -@.str1205 = private unnamed_addr constant [33 x i8] c" call void @snd_set_volume(ptr \00" -@.str1206 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1207 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1208 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1209 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1210 = private unnamed_addr constant [13 x i8] c"snd_set_rate\00" -@.str1211 = private unnamed_addr constant [31 x i8] c" call void @snd_set_rate(ptr \00" -@.str1212 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1213 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1214 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1215 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1216 = private unnamed_addr constant [11 x i8] c"hs_req_new\00" -@.str1217 = private unnamed_addr constant [26 x i8] c"call ptr @hs_req_new(ptr \00" -@.str1218 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str1219 = private unnamed_addr constant [2 x i8] c")\00" -@.str1220 = private unnamed_addr constant [8 x i8] c"pointer\00" -@.str1221 = private unnamed_addr constant [14 x i8] c"hs_req_header\00" -@.str1222 = private unnamed_addr constant [32 x i8] c" call void @hs_req_header(ptr \00" -@.str1223 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str1224 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str1225 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1226 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1227 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1228 = private unnamed_addr constant [12 x i8] c"hs_req_body\00" -@.str1229 = private unnamed_addr constant [30 x i8] c" call void @hs_req_body(ptr \00" -@.str1230 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str1231 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1232 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1233 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1234 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1235 = private unnamed_addr constant [8 x i8] c"hs_send\00" -@.str1236 = private unnamed_addr constant [26 x i8] c" call void @hs_send(i32 \00" -@.str1237 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str1238 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1239 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1240 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1241 = private unnamed_addr constant [8 x i8] c"hs_done\00" -@.str1242 = private unnamed_addr constant [23 x i8] c"call i32 @hs_done(i32 \00" -@.str1243 = private unnamed_addr constant [2 x i8] c")\00" -@.str1244 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1245 = private unnamed_addr constant [10 x i8] c"hs_status\00" -@.str1246 = private unnamed_addr constant [25 x i8] c"call i32 @hs_status(i32 \00" -@.str1247 = private unnamed_addr constant [2 x i8] c")\00" -@.str1248 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1249 = private unnamed_addr constant [8 x i8] c"hs_body\00" -@.str1250 = private unnamed_addr constant [23 x i8] c"call ptr @hs_body(i32 \00" -@.str1251 = private unnamed_addr constant [2 x i8] c")\00" -@.str1252 = private unnamed_addr constant [8 x i8] c"pointer\00" -@.str1253 = private unnamed_addr constant [8 x i8] c"hs_blen\00" -@.str1254 = private unnamed_addr constant [23 x i8] c"call i32 @hs_blen(i32 \00" -@.str1255 = private unnamed_addr constant [2 x i8] c")\00" -@.str1256 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1257 = private unnamed_addr constant [10 x i8] c"hs_header\00" -@.str1258 = private unnamed_addr constant [25 x i8] c"call ptr @hs_header(i32 \00" -@.str1259 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str1260 = private unnamed_addr constant [2 x i8] c")\00" -@.str1261 = private unnamed_addr constant [8 x i8] c"pointer\00" -@.str1262 = private unnamed_addr constant [8 x i8] c"hs_free\00" -@.str1263 = private unnamed_addr constant [26 x i8] c" call void @hs_free(i32 \00" -@.str1264 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str1265 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1266 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1267 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1268 = private unnamed_addr constant [5 x i8] c"void\00" -@.str1269 = private unnamed_addr constant [4 x i8] c"min\00" -@.str1270 = private unnamed_addr constant [4 x i8] c"max\00" -@.str1271 = private unnamed_addr constant [4 x i8] c"abs\00" -@.str1272 = private unnamed_addr constant [6 x i8] c"clamp\00" -@.str1273 = private unnamed_addr constant [4 x i8] c"abs\00" -@.str1274 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str1275 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str1276 = private unnamed_addr constant [12 x i8] c"sub i32 0, \00" -@.str1277 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1278 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1279 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1280 = private unnamed_addr constant [4 x i8] c"min\00" -@.str1281 = private unnamed_addr constant [4 x i8] c"max\00" -@.str1282 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str1283 = private unnamed_addr constant [4 x i8] c"max\00" -@.str1284 = private unnamed_addr constant [4 x i8] c"sgt\00" -@.str1285 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str1286 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str1287 = private unnamed_addr constant [3 x i8] c", \00" -@.str1288 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1289 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1290 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1291 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str1292 = private unnamed_addr constant [3 x i8] c", \00" -@.str1293 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1294 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1295 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1296 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" -@.str1297 = private unnamed_addr constant [3 x i8] c", \00" -@.str1298 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1299 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1300 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1301 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str1302 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str1303 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str1304 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str1305 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str1306 = private unnamed_addr constant [3 x i8] c", \00" -@.str1307 = private unnamed_addr constant [10 x i8] c"ashr i64 \00" -@.str1308 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str1309 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str1310 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str1311 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str1312 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str1313 = private unnamed_addr constant [9 x i8] c"shl i64 \00" -@.str1314 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str1315 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str1316 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str1317 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" -@.str1318 = private unnamed_addr constant [3 x i8] c", \00" -@.str1319 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str1320 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str1321 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1322 = private unnamed_addr constant [3 x i8] c", \00" -@.str1323 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1324 = private unnamed_addr constant [3 x i8] c", \00" -@.str1325 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1326 = private unnamed_addr constant [3 x i8] c", \00" -@.str1327 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1328 = private unnamed_addr constant [3 x i8] c", \00" -@.str1329 = private unnamed_addr constant [4 x i8] c"min\00" -@.str1330 = private unnamed_addr constant [4 x i8] c"max\00" -@.str1331 = private unnamed_addr constant [4 x i8] c"abs\00" -@.str1332 = private unnamed_addr constant [6 x i8] c"clamp\00" -@.str1333 = private unnamed_addr constant [5 x i8] c"sign\00" -@.str1334 = private unnamed_addr constant [6 x i8] c"floor\00" -@.str1335 = private unnamed_addr constant [5 x i8] c"ceil\00" -@.str1336 = private unnamed_addr constant [6 x i8] c"round\00" -@.str1337 = private unnamed_addr constant [5 x i8] c"lerp\00" -@.str1338 = private unnamed_addr constant [13 x i8] c"inverse_lerp\00" -@.str1339 = private unnamed_addr constant [6 x i8] c"remap\00" -@.str1340 = private unnamed_addr constant [5 x i8] c"sqrt\00" -@.str1341 = private unnamed_addr constant [4 x i8] c"sin\00" -@.str1342 = private unnamed_addr constant [4 x i8] c"cos\00" -@.str1343 = private unnamed_addr constant [4 x i8] c"tan\00" -@.str1344 = private unnamed_addr constant [6 x i8] c"hypot\00" -@.str1345 = private unnamed_addr constant [6 x i8] c"atan2\00" -@.str1346 = private unnamed_addr constant [5 x i8] c"asin\00" -@.str1347 = private unnamed_addr constant [5 x i8] c"acos\00" -@.str1348 = private unnamed_addr constant [11 x i8] c"deg_to_rad\00" -@.str1349 = private unnamed_addr constant [11 x i8] c"rad_to_deg\00" -@.str1350 = private unnamed_addr constant [7 x i8] c"posmod\00" -@.str1351 = private unnamed_addr constant [5 x i8] c"wrap\00" -@.str1352 = private unnamed_addr constant [10 x i8] c"ping_pong\00" -@.str1353 = private unnamed_addr constant [8 x i8] c"snapped\00" -@.str1354 = private unnamed_addr constant [12 x i8] c"move_toward\00" -@.str1355 = private unnamed_addr constant [11 x i8] c"smoothstep\00" -@.str1356 = private unnamed_addr constant [5 x i8] c"dist\00" -@.str1357 = private unnamed_addr constant [6 x i8] c"dist2\00" -@.str1358 = private unnamed_addr constant [4 x i8] c"exp\00" -@.str1359 = private unnamed_addr constant [4 x i8] c"log\00" -@.str1360 = private unnamed_addr constant [4 x i8] c"pow\00" -@.str1361 = private unnamed_addr constant [4 x i8] c"min\00" -@.str1362 = private unnamed_addr constant [4 x i8] c"max\00" -@.str1363 = private unnamed_addr constant [4 x i8] c"abs\00" -@.str1364 = private unnamed_addr constant [6 x i8] c"clamp\00" -@.str1365 = private unnamed_addr constant [5 x i8] c"sign\00" -@.str1366 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" -@.str1367 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str1368 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str1369 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str1370 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1371 = private unnamed_addr constant [16 x i8] c", i32 -1, i32 0\00" -@.str1372 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1373 = private unnamed_addr constant [14 x i8] c", i32 1, i32 \00" -@.str1374 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1375 = private unnamed_addr constant [6 x i8] c"floor\00" -@.str1376 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str1377 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str1378 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1379 = private unnamed_addr constant [5 x i8] c"ceil\00" -@.str1380 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1381 = private unnamed_addr constant [8 x i8] c", 65535\00" -@.str1382 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str1383 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str1384 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1385 = private unnamed_addr constant [6 x i8] c"round\00" -@.str1386 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1387 = private unnamed_addr constant [8 x i8] c", 32768\00" -@.str1388 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str1389 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str1390 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1391 = private unnamed_addr constant [5 x i8] c"lerp\00" -@.str1392 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1393 = private unnamed_addr constant [13 x i8] c"inverse_lerp\00" -@.str1394 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1395 = private unnamed_addr constant [5 x i8] c"sqrt\00" -@.str1396 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" -@.str1397 = private unnamed_addr constant [2 x i8] c")\00" -@.str1398 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1399 = private unnamed_addr constant [4 x i8] c"sin\00" -@.str1400 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" -@.str1401 = private unnamed_addr constant [2 x i8] c")\00" -@.str1402 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1403 = private unnamed_addr constant [4 x i8] c"cos\00" -@.str1404 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1405 = private unnamed_addr constant [9 x i8] c", 102944\00" -@.str1406 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" -@.str1407 = private unnamed_addr constant [2 x i8] c")\00" -@.str1408 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1409 = private unnamed_addr constant [4 x i8] c"tan\00" -@.str1410 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" -@.str1411 = private unnamed_addr constant [2 x i8] c")\00" -@.str1412 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1413 = private unnamed_addr constant [9 x i8] c", 102944\00" -@.str1414 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" -@.str1415 = private unnamed_addr constant [2 x i8] c")\00" -@.str1416 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1417 = private unnamed_addr constant [6 x i8] c"atan2\00" -@.str1418 = private unnamed_addr constant [27 x i8] c"call i32 @lp_fx_atan2(i32 \00" -@.str1419 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1420 = private unnamed_addr constant [2 x i8] c")\00" -@.str1421 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1422 = private unnamed_addr constant [5 x i8] c"asin\00" -@.str1423 = private unnamed_addr constant [16 x i8] c"sub i32 65536, \00" -@.str1424 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" -@.str1425 = private unnamed_addr constant [2 x i8] c")\00" -@.str1426 = private unnamed_addr constant [27 x i8] c"call i32 @lp_fx_atan2(i32 \00" -@.str1427 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1054 = private unnamed_addr constant [12 x i8] c"file_stdout\00" +@.str1055 = private unnamed_addr constant [25 x i8] c"load ptr, ptr @__stdoutp\00" +@.str1056 = private unnamed_addr constant [8 x i8] c"pointer\00" +@.str1057 = private unnamed_addr constant [4 x i8] c"run\00" +@.str1058 = private unnamed_addr constant [22 x i8] c"call i32 @system(ptr \00" +@.str1059 = private unnamed_addr constant [2 x i8] c")\00" +@.str1060 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1061 = private unnamed_addr constant [7 x i8] c"getenv\00" +@.str1062 = private unnamed_addr constant [22 x i8] c"call ptr @getenv(ptr \00" +@.str1063 = private unnamed_addr constant [2 x i8] c")\00" +@.str1064 = private unnamed_addr constant [7 x i8] c"string\00" +@.str1065 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1066 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1067 = private unnamed_addr constant [5 x i8] c"free\00" +@.str1068 = private unnamed_addr constant [5 x i8] c"fill\00" +@.str1069 = private unnamed_addr constant [7 x i8] c"offset\00" +@.str1070 = private unnamed_addr constant [10 x i8] c"read_char\00" +@.str1071 = private unnamed_addr constant [9 x i8] c"as_fixed\00" +@.str1072 = private unnamed_addr constant [7 x i8] c"as_int\00" +@.str1073 = private unnamed_addr constant [12 x i8] c"is_windowed\00" +@.str1074 = private unnamed_addr constant [11 x i8] c"game_title\00" +@.str1075 = private unnamed_addr constant [9 x i8] c"win_open\00" +@.str1076 = private unnamed_addr constant [9 x i8] c"win_poll\00" +@.str1077 = private unnamed_addr constant [12 x i8] c"win_present\00" +@.str1078 = private unnamed_addr constant [12 x i8] c"win_running\00" +@.str1079 = private unnamed_addr constant [10 x i8] c"win_close\00" +@.str1080 = private unnamed_addr constant [9 x i8] c"win_held\00" +@.str1081 = private unnamed_addr constant [10 x i8] c"win_mouse\00" +@.str1082 = private unnamed_addr constant [8 x i8] c"win_pad\00" +@.str1083 = private unnamed_addr constant [10 x i8] c"win_touch\00" +@.str1084 = private unnamed_addr constant [16 x i8] c"win_cursor_mode\00" +@.str1085 = private unnamed_addr constant [9 x i8] c"snd_load\00" +@.str1086 = private unnamed_addr constant [9 x i8] c"snd_play\00" +@.str1087 = private unnamed_addr constant [9 x i8] c"snd_stop\00" +@.str1088 = private unnamed_addr constant [12 x i8] c"snd_playing\00" +@.str1089 = private unnamed_addr constant [15 x i8] c"snd_set_volume\00" +@.str1090 = private unnamed_addr constant [13 x i8] c"snd_set_rate\00" +@.str1091 = private unnamed_addr constant [11 x i8] c"hs_req_new\00" +@.str1092 = private unnamed_addr constant [14 x i8] c"hs_req_header\00" +@.str1093 = private unnamed_addr constant [12 x i8] c"hs_req_body\00" +@.str1094 = private unnamed_addr constant [8 x i8] c"hs_send\00" +@.str1095 = private unnamed_addr constant [8 x i8] c"hs_done\00" +@.str1096 = private unnamed_addr constant [10 x i8] c"hs_status\00" +@.str1097 = private unnamed_addr constant [8 x i8] c"hs_body\00" +@.str1098 = private unnamed_addr constant [8 x i8] c"hs_blen\00" +@.str1099 = private unnamed_addr constant [10 x i8] c"hs_header\00" +@.str1100 = private unnamed_addr constant [8 x i8] c"hs_free\00" +@.str1101 = private unnamed_addr constant [5 x i8] c"free\00" +@.str1102 = private unnamed_addr constant [23 x i8] c" call void @free(ptr \00" +@.str1103 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1104 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1105 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1106 = private unnamed_addr constant [5 x i8] c"fill\00" +@.str1107 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str1108 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str1109 = private unnamed_addr constant [24 x i8] c" call ptr @memset(ptr \00" +@.str1110 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1111 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str1112 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1113 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1114 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1115 = private unnamed_addr constant [7 x i8] c"offset\00" +@.str1116 = private unnamed_addr constant [3 x i8] c" \00" +@.str1117 = private unnamed_addr constant [35 x i8] c" = getelementptr inbounds i8, ptr \00" +@.str1118 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1119 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str1120 = private unnamed_addr constant [8 x i8] c"pointer\00" +@.str1121 = private unnamed_addr constant [10 x i8] c"read_char\00" +@.str1122 = private unnamed_addr constant [20 x i8] c"call i32 @getchar()\00" +@.str1123 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1124 = private unnamed_addr constant [9 x i8] c"as_fixed\00" +@.str1125 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1126 = private unnamed_addr constant [7 x i8] c"as_int\00" +@.str1127 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1128 = private unnamed_addr constant [12 x i8] c"is_windowed\00" +@.str1129 = private unnamed_addr constant [2 x i8] c"1\00" +@.str1130 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str1131 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1132 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str1133 = private unnamed_addr constant [11 x i8] c"game_title\00" +@.str1134 = private unnamed_addr constant [12 x i8] c"@.gametitle\00" +@.str1135 = private unnamed_addr constant [7 x i8] c"string\00" +@.str1136 = private unnamed_addr constant [9 x i8] c"win_poll\00" +@.str1137 = private unnamed_addr constant [21 x i8] c"call i32 @win_poll()\00" +@.str1138 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1139 = private unnamed_addr constant [12 x i8] c"win_running\00" +@.str1140 = private unnamed_addr constant [24 x i8] c"call i32 @win_running()\00" +@.str1141 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str1142 = private unnamed_addr constant [9 x i8] c"win_open\00" +@.str1143 = private unnamed_addr constant [27 x i8] c" call void @win_open(i32 \00" +@.str1144 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1145 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1146 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str1147 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1148 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1149 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1150 = private unnamed_addr constant [12 x i8] c"win_present\00" +@.str1151 = private unnamed_addr constant [30 x i8] c" call void @win_present(ptr \00" +@.str1152 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1153 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1154 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1155 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1156 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1157 = private unnamed_addr constant [10 x i8] c"win_close\00" +@.str1158 = private unnamed_addr constant [26 x i8] c" call void @win_close()\0A\00" +@.str1159 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1160 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1161 = private unnamed_addr constant [9 x i8] c"win_held\00" +@.str1162 = private unnamed_addr constant [27 x i8] c" call void @win_held(ptr \00" +@.str1163 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1164 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1165 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1166 = private unnamed_addr constant [10 x i8] c"win_mouse\00" +@.str1167 = private unnamed_addr constant [28 x i8] c" call void @win_mouse(ptr \00" +@.str1168 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1169 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1170 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1171 = private unnamed_addr constant [8 x i8] c"win_pad\00" +@.str1172 = private unnamed_addr constant [26 x i8] c" call void @win_pad(ptr \00" +@.str1173 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1174 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1175 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1176 = private unnamed_addr constant [10 x i8] c"win_touch\00" +@.str1177 = private unnamed_addr constant [28 x i8] c" call void @win_touch(ptr \00" +@.str1178 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1179 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1180 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1181 = private unnamed_addr constant [16 x i8] c"win_cursor_mode\00" +@.str1182 = private unnamed_addr constant [34 x i8] c" call void @win_cursor_mode(i32 \00" +@.str1183 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1184 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1185 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1186 = private unnamed_addr constant [9 x i8] c"snd_load\00" +@.str1187 = private unnamed_addr constant [24 x i8] c"call ptr @snd_load(ptr \00" +@.str1188 = private unnamed_addr constant [2 x i8] c")\00" +@.str1189 = private unnamed_addr constant [8 x i8] c"pointer\00" +@.str1190 = private unnamed_addr constant [9 x i8] c"snd_play\00" +@.str1191 = private unnamed_addr constant [27 x i8] c" call void @snd_play(ptr \00" +@.str1192 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1193 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1194 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1195 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1196 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1197 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1198 = private unnamed_addr constant [9 x i8] c"snd_stop\00" +@.str1199 = private unnamed_addr constant [27 x i8] c" call void @snd_stop(ptr \00" +@.str1200 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1201 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1202 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1203 = private unnamed_addr constant [12 x i8] c"snd_playing\00" +@.str1204 = private unnamed_addr constant [27 x i8] c"call i32 @snd_playing(ptr \00" +@.str1205 = private unnamed_addr constant [2 x i8] c")\00" +@.str1206 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1207 = private unnamed_addr constant [15 x i8] c"snd_set_volume\00" +@.str1208 = private unnamed_addr constant [33 x i8] c" call void @snd_set_volume(ptr \00" +@.str1209 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1210 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1211 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1212 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1213 = private unnamed_addr constant [13 x i8] c"snd_set_rate\00" +@.str1214 = private unnamed_addr constant [31 x i8] c" call void @snd_set_rate(ptr \00" +@.str1215 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1216 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1217 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1218 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1219 = private unnamed_addr constant [11 x i8] c"hs_req_new\00" +@.str1220 = private unnamed_addr constant [26 x i8] c"call ptr @hs_req_new(ptr \00" +@.str1221 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str1222 = private unnamed_addr constant [2 x i8] c")\00" +@.str1223 = private unnamed_addr constant [8 x i8] c"pointer\00" +@.str1224 = private unnamed_addr constant [14 x i8] c"hs_req_header\00" +@.str1225 = private unnamed_addr constant [32 x i8] c" call void @hs_req_header(ptr \00" +@.str1226 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str1227 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str1228 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1229 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1230 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1231 = private unnamed_addr constant [12 x i8] c"hs_req_body\00" +@.str1232 = private unnamed_addr constant [30 x i8] c" call void @hs_req_body(ptr \00" +@.str1233 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str1234 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1235 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1236 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1237 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1238 = private unnamed_addr constant [8 x i8] c"hs_send\00" +@.str1239 = private unnamed_addr constant [26 x i8] c" call void @hs_send(i32 \00" +@.str1240 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str1241 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1242 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1243 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1244 = private unnamed_addr constant [8 x i8] c"hs_done\00" +@.str1245 = private unnamed_addr constant [23 x i8] c"call i32 @hs_done(i32 \00" +@.str1246 = private unnamed_addr constant [2 x i8] c")\00" +@.str1247 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1248 = private unnamed_addr constant [10 x i8] c"hs_status\00" +@.str1249 = private unnamed_addr constant [25 x i8] c"call i32 @hs_status(i32 \00" +@.str1250 = private unnamed_addr constant [2 x i8] c")\00" +@.str1251 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1252 = private unnamed_addr constant [8 x i8] c"hs_body\00" +@.str1253 = private unnamed_addr constant [23 x i8] c"call ptr @hs_body(i32 \00" +@.str1254 = private unnamed_addr constant [2 x i8] c")\00" +@.str1255 = private unnamed_addr constant [8 x i8] c"pointer\00" +@.str1256 = private unnamed_addr constant [8 x i8] c"hs_blen\00" +@.str1257 = private unnamed_addr constant [23 x i8] c"call i32 @hs_blen(i32 \00" +@.str1258 = private unnamed_addr constant [2 x i8] c")\00" +@.str1259 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1260 = private unnamed_addr constant [10 x i8] c"hs_header\00" +@.str1261 = private unnamed_addr constant [25 x i8] c"call ptr @hs_header(i32 \00" +@.str1262 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str1263 = private unnamed_addr constant [2 x i8] c")\00" +@.str1264 = private unnamed_addr constant [8 x i8] c"pointer\00" +@.str1265 = private unnamed_addr constant [8 x i8] c"hs_free\00" +@.str1266 = private unnamed_addr constant [26 x i8] c" call void @hs_free(i32 \00" +@.str1267 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str1268 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1269 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1270 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1271 = private unnamed_addr constant [5 x i8] c"void\00" +@.str1272 = private unnamed_addr constant [4 x i8] c"min\00" +@.str1273 = private unnamed_addr constant [4 x i8] c"max\00" +@.str1274 = private unnamed_addr constant [4 x i8] c"abs\00" +@.str1275 = private unnamed_addr constant [6 x i8] c"clamp\00" +@.str1276 = private unnamed_addr constant [4 x i8] c"abs\00" +@.str1277 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str1278 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str1279 = private unnamed_addr constant [12 x i8] c"sub i32 0, \00" +@.str1280 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1281 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1282 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1283 = private unnamed_addr constant [4 x i8] c"min\00" +@.str1284 = private unnamed_addr constant [4 x i8] c"max\00" +@.str1285 = private unnamed_addr constant [4 x i8] c"slt\00" +@.str1286 = private unnamed_addr constant [4 x i8] c"max\00" +@.str1287 = private unnamed_addr constant [4 x i8] c"sgt\00" +@.str1288 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str1289 = private unnamed_addr constant [6 x i8] c" i32 \00" +@.str1290 = private unnamed_addr constant [3 x i8] c", \00" +@.str1291 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1292 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1293 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1294 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str1295 = private unnamed_addr constant [3 x i8] c", \00" +@.str1296 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1297 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1298 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1299 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" +@.str1300 = private unnamed_addr constant [3 x i8] c", \00" +@.str1301 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1302 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1303 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1304 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str1305 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str1306 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str1307 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str1308 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str1309 = private unnamed_addr constant [3 x i8] c", \00" +@.str1310 = private unnamed_addr constant [10 x i8] c"ashr i64 \00" +@.str1311 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str1312 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str1313 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str1314 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str1315 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str1316 = private unnamed_addr constant [9 x i8] c"shl i64 \00" +@.str1317 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str1318 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str1319 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str1320 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" +@.str1321 = private unnamed_addr constant [3 x i8] c", \00" +@.str1322 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str1323 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str1324 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1325 = private unnamed_addr constant [3 x i8] c", \00" +@.str1326 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1327 = private unnamed_addr constant [3 x i8] c", \00" +@.str1328 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1329 = private unnamed_addr constant [3 x i8] c", \00" +@.str1330 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1331 = private unnamed_addr constant [3 x i8] c", \00" +@.str1332 = private unnamed_addr constant [4 x i8] c"min\00" +@.str1333 = private unnamed_addr constant [4 x i8] c"max\00" +@.str1334 = private unnamed_addr constant [4 x i8] c"abs\00" +@.str1335 = private unnamed_addr constant [6 x i8] c"clamp\00" +@.str1336 = private unnamed_addr constant [5 x i8] c"sign\00" +@.str1337 = private unnamed_addr constant [6 x i8] c"floor\00" +@.str1338 = private unnamed_addr constant [5 x i8] c"ceil\00" +@.str1339 = private unnamed_addr constant [6 x i8] c"round\00" +@.str1340 = private unnamed_addr constant [5 x i8] c"lerp\00" +@.str1341 = private unnamed_addr constant [13 x i8] c"inverse_lerp\00" +@.str1342 = private unnamed_addr constant [6 x i8] c"remap\00" +@.str1343 = private unnamed_addr constant [5 x i8] c"sqrt\00" +@.str1344 = private unnamed_addr constant [4 x i8] c"sin\00" +@.str1345 = private unnamed_addr constant [4 x i8] c"cos\00" +@.str1346 = private unnamed_addr constant [4 x i8] c"tan\00" +@.str1347 = private unnamed_addr constant [6 x i8] c"hypot\00" +@.str1348 = private unnamed_addr constant [6 x i8] c"atan2\00" +@.str1349 = private unnamed_addr constant [5 x i8] c"asin\00" +@.str1350 = private unnamed_addr constant [5 x i8] c"acos\00" +@.str1351 = private unnamed_addr constant [11 x i8] c"deg_to_rad\00" +@.str1352 = private unnamed_addr constant [11 x i8] c"rad_to_deg\00" +@.str1353 = private unnamed_addr constant [7 x i8] c"posmod\00" +@.str1354 = private unnamed_addr constant [5 x i8] c"wrap\00" +@.str1355 = private unnamed_addr constant [10 x i8] c"ping_pong\00" +@.str1356 = private unnamed_addr constant [8 x i8] c"snapped\00" +@.str1357 = private unnamed_addr constant [12 x i8] c"move_toward\00" +@.str1358 = private unnamed_addr constant [11 x i8] c"smoothstep\00" +@.str1359 = private unnamed_addr constant [5 x i8] c"dist\00" +@.str1360 = private unnamed_addr constant [6 x i8] c"dist2\00" +@.str1361 = private unnamed_addr constant [4 x i8] c"exp\00" +@.str1362 = private unnamed_addr constant [4 x i8] c"log\00" +@.str1363 = private unnamed_addr constant [4 x i8] c"pow\00" +@.str1364 = private unnamed_addr constant [4 x i8] c"min\00" +@.str1365 = private unnamed_addr constant [4 x i8] c"max\00" +@.str1366 = private unnamed_addr constant [4 x i8] c"abs\00" +@.str1367 = private unnamed_addr constant [6 x i8] c"clamp\00" +@.str1368 = private unnamed_addr constant [5 x i8] c"sign\00" +@.str1369 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" +@.str1370 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str1371 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str1372 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str1373 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1374 = private unnamed_addr constant [16 x i8] c", i32 -1, i32 0\00" +@.str1375 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1376 = private unnamed_addr constant [14 x i8] c", i32 1, i32 \00" +@.str1377 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1378 = private unnamed_addr constant [6 x i8] c"floor\00" +@.str1379 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str1380 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str1381 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1382 = private unnamed_addr constant [5 x i8] c"ceil\00" +@.str1383 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1384 = private unnamed_addr constant [8 x i8] c", 65535\00" +@.str1385 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str1386 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str1387 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1388 = private unnamed_addr constant [6 x i8] c"round\00" +@.str1389 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1390 = private unnamed_addr constant [8 x i8] c", 32768\00" +@.str1391 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str1392 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str1393 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1394 = private unnamed_addr constant [5 x i8] c"lerp\00" +@.str1395 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1396 = private unnamed_addr constant [13 x i8] c"inverse_lerp\00" +@.str1397 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1398 = private unnamed_addr constant [5 x i8] c"sqrt\00" +@.str1399 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" +@.str1400 = private unnamed_addr constant [2 x i8] c")\00" +@.str1401 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1402 = private unnamed_addr constant [4 x i8] c"sin\00" +@.str1403 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" +@.str1404 = private unnamed_addr constant [2 x i8] c")\00" +@.str1405 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1406 = private unnamed_addr constant [4 x i8] c"cos\00" +@.str1407 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1408 = private unnamed_addr constant [9 x i8] c", 102944\00" +@.str1409 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" +@.str1410 = private unnamed_addr constant [2 x i8] c")\00" +@.str1411 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1412 = private unnamed_addr constant [4 x i8] c"tan\00" +@.str1413 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" +@.str1414 = private unnamed_addr constant [2 x i8] c")\00" +@.str1415 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1416 = private unnamed_addr constant [9 x i8] c", 102944\00" +@.str1417 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" +@.str1418 = private unnamed_addr constant [2 x i8] c")\00" +@.str1419 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1420 = private unnamed_addr constant [6 x i8] c"atan2\00" +@.str1421 = private unnamed_addr constant [27 x i8] c"call i32 @lp_fx_atan2(i32 \00" +@.str1422 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1423 = private unnamed_addr constant [2 x i8] c")\00" +@.str1424 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1425 = private unnamed_addr constant [5 x i8] c"asin\00" +@.str1426 = private unnamed_addr constant [16 x i8] c"sub i32 65536, \00" +@.str1427 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" @.str1428 = private unnamed_addr constant [2 x i8] c")\00" -@.str1429 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1430 = private unnamed_addr constant [5 x i8] c"acos\00" -@.str1431 = private unnamed_addr constant [16 x i8] c"sub i32 65536, \00" -@.str1432 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" -@.str1433 = private unnamed_addr constant [2 x i8] c")\00" -@.str1434 = private unnamed_addr constant [27 x i8] c"call i32 @lp_fx_atan2(i32 \00" -@.str1435 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1429 = private unnamed_addr constant [27 x i8] c"call i32 @lp_fx_atan2(i32 \00" +@.str1430 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1431 = private unnamed_addr constant [2 x i8] c")\00" +@.str1432 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1433 = private unnamed_addr constant [5 x i8] c"acos\00" +@.str1434 = private unnamed_addr constant [16 x i8] c"sub i32 65536, \00" +@.str1435 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" @.str1436 = private unnamed_addr constant [2 x i8] c")\00" -@.str1437 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1438 = private unnamed_addr constant [6 x i8] c"hypot\00" -@.str1439 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1440 = private unnamed_addr constant [3 x i8] c", \00" -@.str1441 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" -@.str1442 = private unnamed_addr constant [2 x i8] c")\00" -@.str1443 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1444 = private unnamed_addr constant [6 x i8] c"dist2\00" -@.str1445 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1446 = private unnamed_addr constant [3 x i8] c", \00" -@.str1447 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1448 = private unnamed_addr constant [3 x i8] c", \00" -@.str1449 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1450 = private unnamed_addr constant [3 x i8] c", \00" -@.str1451 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1452 = private unnamed_addr constant [5 x i8] c"dist\00" -@.str1453 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1454 = private unnamed_addr constant [3 x i8] c", \00" -@.str1455 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1456 = private unnamed_addr constant [3 x i8] c", \00" -@.str1457 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1458 = private unnamed_addr constant [3 x i8] c", \00" -@.str1459 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" -@.str1460 = private unnamed_addr constant [2 x i8] c")\00" -@.str1461 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1462 = private unnamed_addr constant [4 x i8] c"exp\00" -@.str1463 = private unnamed_addr constant [6 x i8] c"94548\00" -@.str1464 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_exp2(i32 \00" -@.str1465 = private unnamed_addr constant [2 x i8] c")\00" -@.str1466 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1467 = private unnamed_addr constant [4 x i8] c"log\00" -@.str1468 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_log2(i32 \00" -@.str1469 = private unnamed_addr constant [2 x i8] c")\00" -@.str1470 = private unnamed_addr constant [6 x i8] c"45426\00" -@.str1471 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1472 = private unnamed_addr constant [4 x i8] c"pow\00" -@.str1473 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_log2(i32 \00" -@.str1474 = private unnamed_addr constant [2 x i8] c")\00" -@.str1475 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_exp2(i32 \00" -@.str1476 = private unnamed_addr constant [2 x i8] c")\00" -@.str1477 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1478 = private unnamed_addr constant [11 x i8] c"deg_to_rad\00" -@.str1479 = private unnamed_addr constant [5 x i8] c"1144\00" +@.str1437 = private unnamed_addr constant [27 x i8] c"call i32 @lp_fx_atan2(i32 \00" +@.str1438 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1439 = private unnamed_addr constant [2 x i8] c")\00" +@.str1440 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1441 = private unnamed_addr constant [6 x i8] c"hypot\00" +@.str1442 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1443 = private unnamed_addr constant [3 x i8] c", \00" +@.str1444 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" +@.str1445 = private unnamed_addr constant [2 x i8] c")\00" +@.str1446 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1447 = private unnamed_addr constant [6 x i8] c"dist2\00" +@.str1448 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1449 = private unnamed_addr constant [3 x i8] c", \00" +@.str1450 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1451 = private unnamed_addr constant [3 x i8] c", \00" +@.str1452 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1453 = private unnamed_addr constant [3 x i8] c", \00" +@.str1454 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1455 = private unnamed_addr constant [5 x i8] c"dist\00" +@.str1456 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1457 = private unnamed_addr constant [3 x i8] c", \00" +@.str1458 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1459 = private unnamed_addr constant [3 x i8] c", \00" +@.str1460 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1461 = private unnamed_addr constant [3 x i8] c", \00" +@.str1462 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" +@.str1463 = private unnamed_addr constant [2 x i8] c")\00" +@.str1464 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1465 = private unnamed_addr constant [4 x i8] c"exp\00" +@.str1466 = private unnamed_addr constant [6 x i8] c"94548\00" +@.str1467 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_exp2(i32 \00" +@.str1468 = private unnamed_addr constant [2 x i8] c")\00" +@.str1469 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1470 = private unnamed_addr constant [4 x i8] c"log\00" +@.str1471 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_log2(i32 \00" +@.str1472 = private unnamed_addr constant [2 x i8] c")\00" +@.str1473 = private unnamed_addr constant [6 x i8] c"45426\00" +@.str1474 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1475 = private unnamed_addr constant [4 x i8] c"pow\00" +@.str1476 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_log2(i32 \00" +@.str1477 = private unnamed_addr constant [2 x i8] c")\00" +@.str1478 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_exp2(i32 \00" +@.str1479 = private unnamed_addr constant [2 x i8] c")\00" @.str1480 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1481 = private unnamed_addr constant [11 x i8] c"rad_to_deg\00" -@.str1482 = private unnamed_addr constant [8 x i8] c"3754936\00" +@.str1481 = private unnamed_addr constant [11 x i8] c"deg_to_rad\00" +@.str1482 = private unnamed_addr constant [5 x i8] c"1144\00" @.str1483 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1484 = private unnamed_addr constant [7 x i8] c"posmod\00" -@.str1485 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str1486 = private unnamed_addr constant [3 x i8] c", \00" -@.str1487 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1488 = private unnamed_addr constant [3 x i8] c", \00" -@.str1489 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str1490 = private unnamed_addr constant [3 x i8] c", \00" -@.str1491 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1492 = private unnamed_addr constant [5 x i8] c"wrap\00" -@.str1493 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1494 = private unnamed_addr constant [3 x i8] c", \00" -@.str1495 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1496 = private unnamed_addr constant [3 x i8] c", \00" -@.str1497 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str1498 = private unnamed_addr constant [3 x i8] c", \00" -@.str1499 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1500 = private unnamed_addr constant [3 x i8] c", \00" -@.str1501 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str1502 = private unnamed_addr constant [3 x i8] c", \00" -@.str1503 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1504 = private unnamed_addr constant [3 x i8] c", \00" -@.str1505 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1506 = private unnamed_addr constant [10 x i8] c"ping_pong\00" -@.str1507 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str1508 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str1509 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str1510 = private unnamed_addr constant [3 x i8] c", \00" -@.str1511 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1512 = private unnamed_addr constant [3 x i8] c", \00" -@.str1513 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str1514 = private unnamed_addr constant [3 x i8] c", \00" -@.str1515 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1516 = private unnamed_addr constant [3 x i8] c", \00" -@.str1517 = private unnamed_addr constant [12 x i8] c"sub i32 0, \00" -@.str1518 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str1519 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str1520 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1521 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1522 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1523 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1524 = private unnamed_addr constant [3 x i8] c", \00" -@.str1525 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1526 = private unnamed_addr constant [8 x i8] c"snapped\00" -@.str1527 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1528 = private unnamed_addr constant [8 x i8] c", 32768\00" -@.str1529 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str1530 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str1531 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str1532 = private unnamed_addr constant [3 x i8] c", \00" -@.str1533 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1534 = private unnamed_addr constant [12 x i8] c"move_toward\00" -@.str1535 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1536 = private unnamed_addr constant [3 x i8] c", \00" -@.str1537 = private unnamed_addr constant [12 x i8] c"sub i32 0, \00" -@.str1538 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str1539 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str1540 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1541 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1542 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1543 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" -@.str1544 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str1545 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str1546 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str1547 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1548 = private unnamed_addr constant [16 x i8] c", i32 -1, i32 0\00" -@.str1549 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1550 = private unnamed_addr constant [14 x i8] c", i32 1, i32 \00" -@.str1551 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str1552 = private unnamed_addr constant [3 x i8] c", \00" -@.str1553 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1554 = private unnamed_addr constant [3 x i8] c", \00" -@.str1555 = private unnamed_addr constant [14 x i8] c"icmp sle i32 \00" -@.str1556 = private unnamed_addr constant [3 x i8] c", \00" -@.str1557 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1558 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1559 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1560 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1561 = private unnamed_addr constant [11 x i8] c"smoothstep\00" -@.str1562 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str1563 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str1564 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1565 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str1566 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" -@.str1567 = private unnamed_addr constant [8 x i8] c", 65536\00" -@.str1568 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1569 = private unnamed_addr constant [18 x i8] c", i32 65536, i32 \00" -@.str1570 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str1571 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str1572 = private unnamed_addr constant [17 x i8] c"sub i32 196608, \00" -@.str1573 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1574 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1575 = private unnamed_addr constant [2968 x i8] c"@L_sin_tab = private unnamed_addr constant [256 x i32] [i32 0, i32 1608, i32 3216, i32 4821, i32 6424, i32 8022, i32 9616, i32 11204, i32 12785, i32 14359, i32 15924, i32 17479, i32 19024, i32 20557, i32 22078, i32 23586, i32 25080, i32 26558, i32 28020, i32 29466, i32 30893, i32 32303, i32 33692, i32 35062, i32 36410, i32 37736, i32 39040, i32 40320, i32 41576, i32 42806, i32 44011, i32 45190, i32 46341, i32 47464, i32 48559, i32 49624, i32 50660, i32 51665, i32 52639, i32 53581, i32 54491, i32 55368, i32 56212, i32 57022, i32 57798, i32 58538, i32 59244, i32 59914, i32 60547, i32 61145, i32 61705, i32 62228, i32 62714, i32 63162, i32 63572, i32 63944, i32 64277, i32 64571, i32 64827, i32 65043, i32 65220, i32 65358, i32 65457, i32 65516, i32 65536, i32 65516, i32 65457, i32 65358, i32 65220, i32 65043, i32 64827, i32 64571, i32 64277, i32 63944, i32 63572, i32 63162, i32 62714, i32 62228, i32 61705, i32 61145, i32 60547, i32 59914, i32 59244, i32 58538, i32 57798, i32 57022, i32 56212, i32 55368, i32 54491, i32 53581, i32 52639, i32 51665, i32 50660, i32 49624, i32 48559, i32 47464, i32 46341, i32 45190, i32 44011, i32 42806, i32 41576, i32 40320, i32 39040, i32 37736, i32 36410, i32 35062, i32 33692, i32 32303, i32 30893, i32 29466, i32 28020, i32 26558, i32 25080, i32 23586, i32 22078, i32 20557, i32 19024, i32 17479, i32 15924, i32 14359, i32 12785, i32 11204, i32 9616, i32 8022, i32 6424, i32 4821, i32 3216, i32 1608, i32 0, i32 -1608, i32 -3216, i32 -4821, i32 -6424, i32 -8022, i32 -9616, i32 -11204, i32 -12785, i32 -14359, i32 -15924, i32 -17479, i32 -19024, i32 -20557, i32 -22078, i32 -23586, i32 -25080, i32 -26558, i32 -28020, i32 -29466, i32 -30893, i32 -32303, i32 -33692, i32 -35062, i32 -36410, i32 -37736, i32 -39040, i32 -40320, i32 -41576, i32 -42806, i32 -44011, i32 -45190, i32 -46341, i32 -47464, i32 -48559, i32 -49624, i32 -50660, i32 -51665, i32 -52639, i32 -53581, i32 -54491, i32 -55368, i32 -56212, i32 -57022, i32 -57798, i32 -58538, i32 -59244, i32 -59914, i32 -60547, i32 -61145, i32 -61705, i32 -62228, i32 -62714, i32 -63162, i32 -63572, i32 -63944, i32 -64277, i32 -64571, i32 -64827, i32 -65043, i32 -65220, i32 -65358, i32 -65457, i32 -65516, i32 -65536, i32 -65516, i32 -65457, i32 -65358, i32 -65220, i32 -65043, i32 -64827, i32 -64571, i32 -64277, i32 -63944, i32 -63572, i32 -63162, i32 -62714, i32 -62228, i32 -61705, i32 -61145, i32 -60547, i32 -59914, i32 -59244, i32 -58538, i32 -57798, i32 -57022, i32 -56212, i32 -55368, i32 -54491, i32 -53581, i32 -52639, i32 -51665, i32 -50660, i32 -49624, i32 -48559, i32 -47464, i32 -46341, i32 -45190, i32 -44011, i32 -42806, i32 -41576, i32 -40320, i32 -39040, i32 -37736, i32 -36410, i32 -35062, i32 -33692, i32 -32303, i32 -30893, i32 -29466, i32 -28020, i32 -26558, i32 -25080, i32 -23586, i32 -22078, i32 -20557, i32 -19024, i32 -17479, i32 -15924, i32 -14359, i32 -12785, i32 -11204, i32 -9616, i32 -8022, i32 -6424, i32 -4821, i32 -3216, i32 -1608]\0A\00" -@.str1576 = private unnamed_addr constant [34 x i8] c"define i32 @lp_fx_sqrt(i32 %x) {\0A\00" -@.str1577 = private unnamed_addr constant [73 x i8] c"entry:\0A %neg = icmp slt i32 %x, 0\0A br i1 %neg, label %ret0, label %go\0A\00" -@.str1578 = private unnamed_addr constant [19 x i8] c"ret0:\0A ret i32 0\0A\00" -@.str1579 = private unnamed_addr constant [58 x i8] c"go:\0A %x64 = sext i32 %x to i64\0A %n0 = shl i64 %x64, 16\0A\00" -@.str1580 = private unnamed_addr constant [58 x i8] c" %np = alloca i64\0A %rp = alloca i64\0A %bp = alloca i64\0A\00" -@.str1581 = private unnamed_addr constant [106 x i8] c" store i64 %n0, ptr %np\0A store i64 0, ptr %rp\0A store i64 4611686018427387904, ptr %bp\0A br label %adj\0A\00" -@.str1582 = private unnamed_addr constant [126 x i8] c"adj:\0A %b1 = load i64, ptr %bp\0A %n1 = load i64, ptr %np\0A %tb = icmp ugt i64 %b1, %n1\0A br i1 %tb, label %adjb, label %loop\0A\00" -@.str1583 = private unnamed_addr constant [72 x i8] c"adjb:\0A %b2 = lshr i64 %b1, 2\0A store i64 %b2, ptr %bp\0A br label %adj\0A\00" -@.str1584 = private unnamed_addr constant [98 x i8] c"loop:\0A %b3 = load i64, ptr %bp\0A %bz = icmp eq i64 %b3, 0\0A br i1 %bz, label %done, label %body\0A\00" -@.str1585 = private unnamed_addr constant [152 x i8] c"body:\0A %r1 = load i64, ptr %rp\0A %n2 = load i64, ptr %np\0A %rb = add i64 %r1, %b3\0A %ge = icmp uge i64 %n2, %rb\0A br i1 %ge, label %sub, label %shift\0A\00" -@.str1586 = private unnamed_addr constant [153 x i8] c"sub:\0A %n3 = sub i64 %n2, %rb\0A store i64 %n3, ptr %np\0A %rsh = lshr i64 %r1, 1\0A %rnew = add i64 %rsh, %b3\0A store i64 %rnew, ptr %rp\0A br label %next\0A\00" -@.str1587 = private unnamed_addr constant [78 x i8] c"shift:\0A %rsh2 = lshr i64 %r1, 1\0A store i64 %rsh2, ptr %rp\0A br label %next\0A\00" -@.str1588 = private unnamed_addr constant [73 x i8] c"next:\0A %b4 = lshr i64 %b3, 2\0A store i64 %b4, ptr %bp\0A br label %loop\0A\00" -@.str1589 = private unnamed_addr constant [80 x i8] c"done:\0A %rf = load i64, ptr %rp\0A %r32 = trunc i64 %rf to i32\0A ret i32 %r32\0A}\0A\00" -@.str1590 = private unnamed_addr constant [33 x i8] c"define i32 @lp_fx_sin(i32 %x) {\0A\00" -@.str1591 = private unnamed_addr constant [82 x i8] c" %xe = sext i32 %x to i64\0A %m = mul i64 %xe, 2670177\0A %idxf = ashr i64 %m, 16\0A\00" -@.str1592 = private unnamed_addr constant [85 x i8] c" %i0 = ashr i64 %idxf, 16\0A %i0m = and i64 %i0, 255\0A %frac = and i64 %idxf, 65535\0A\00" -@.str1593 = private unnamed_addr constant [51 x i8] c" %i1 = add i64 %i0m, 1\0A %i1m = and i64 %i1, 255\0A\00" -@.str1594 = private unnamed_addr constant [94 x i8] c" %p0 = getelementptr [256 x i32], ptr @L_sin_tab, i64 0, i64 %i0m\0A %v0 = load i32, ptr %p0\0A\00" -@.str1595 = private unnamed_addr constant [94 x i8] c" %p1 = getelementptr [256 x i32], ptr @L_sin_tab, i64 0, i64 %i1m\0A %v1 = load i32, ptr %p1\0A\00" -@.str1596 = private unnamed_addr constant [184 x i8] c" %d = sub i32 %v1, %v0\0A %de = sext i32 %d to i64\0A %dm = mul i64 %de, %frac\0A %dsh = ashr i64 %dm, 16\0A %dsh32 = trunc i64 %dsh to i32\0A %res = add i32 %v0, %dsh32\0A ret i32 %res\0A}\0A\00" -@.str1597 = private unnamed_addr constant [43 x i8] c"define i32 @lp_fx_atan2(i32 %y, i32 %x) {\0A\00" -@.str1598 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str1599 = private unnamed_addr constant [27 x i8] c" %xz = icmp eq i32 %x, 0\0A\00" -@.str1600 = private unnamed_addr constant [27 x i8] c" %yz = icmp eq i32 %y, 0\0A\00" -@.str1601 = private unnamed_addr constant [28 x i8] c" %both0 = and i1 %xz, %yz\0A\00" -@.str1602 = private unnamed_addr constant [37 x i8] c" br i1 %both0, label %z, label %go\0A\00" -@.str1603 = private unnamed_addr constant [4 x i8] c"z:\0A\00" -@.str1604 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" -@.str1605 = private unnamed_addr constant [5 x i8] c"go:\0A\00" -@.str1606 = private unnamed_addr constant [30 x i8] c" %yneg = icmp slt i32 %y, 0\0A\00" -@.str1607 = private unnamed_addr constant [24 x i8] c" %yng = sub i32 0, %y\0A\00" -@.str1608 = private unnamed_addr constant [44 x i8] c" %ay0 = select i1 %yneg, i32 %yng, i32 %y\0A\00" -@.str1609 = private unnamed_addr constant [25 x i8] c" %ay = add i32 %ay0, 1\0A\00" -@.str1610 = private unnamed_addr constant [30 x i8] c" %xpos = icmp sge i32 %x, 0\0A\00" -@.str1611 = private unnamed_addr constant [37 x i8] c" br i1 %xpos, label %xp, label %xn\0A\00" -@.str1612 = private unnamed_addr constant [5 x i8] c"xp:\0A\00" -@.str1613 = private unnamed_addr constant [25 x i8] c" %n1 = sub i32 %x, %ay\0A\00" -@.str1614 = private unnamed_addr constant [25 x i8] c" %d1 = add i32 %x, %ay\0A\00" -@.str1615 = private unnamed_addr constant [16 x i8] c" br label %dv\0A\00" -@.str1616 = private unnamed_addr constant [5 x i8] c"xn:\0A\00" -@.str1617 = private unnamed_addr constant [25 x i8] c" %n2 = add i32 %x, %ay\0A\00" -@.str1618 = private unnamed_addr constant [25 x i8] c" %d2 = sub i32 %ay, %x\0A\00" -@.str1619 = private unnamed_addr constant [16 x i8] c" br label %dv\0A\00" -@.str1620 = private unnamed_addr constant [5 x i8] c"dv:\0A\00" -@.str1621 = private unnamed_addr constant [45 x i8] c" %num = phi i32 [ %n1, %xp ], [ %n2, %xn ]\0A\00" -@.str1622 = private unnamed_addr constant [45 x i8] c" %den = phi i32 [ %d1, %xp ], [ %d2, %xn ]\0A\00" -@.str1623 = private unnamed_addr constant [51 x i8] c" %base = phi i32 [ 51472, %xp ], [ 154416, %xn ]\0A\00" -@.str1624 = private unnamed_addr constant [31 x i8] c" %n64 = sext i32 %num to i64\0A\00" -@.str1625 = private unnamed_addr constant [27 x i8] c" %nsh = shl i64 %n64, 16\0A\00" -@.str1626 = private unnamed_addr constant [31 x i8] c" %d64 = sext i32 %den to i64\0A\00" -@.str1627 = private unnamed_addr constant [30 x i8] c" %rdv = sdiv i64 %nsh, %d64\0A\00" -@.str1628 = private unnamed_addr constant [30 x i8] c" %r = trunc i64 %rdv to i32\0A\00" -@.str1629 = private unnamed_addr constant [30 x i8] c" %r64a = sext i32 %r to i64\0A\00" -@.str1630 = private unnamed_addr constant [30 x i8] c" %r64b = sext i32 %r to i64\0A\00" -@.str1631 = private unnamed_addr constant [30 x i8] c" %rr = mul i64 %r64a, %r64b\0A\00" -@.str1632 = private unnamed_addr constant [27 x i8] c" %rrs = ashr i64 %rr, 16\0A\00" -@.str1633 = private unnamed_addr constant [31 x i8] c" %r2 = trunc i64 %rrs to i32\0A\00" -@.str1634 = private unnamed_addr constant [30 x i8] c" %r2e = sext i32 %r2 to i64\0A\00" -@.str1635 = private unnamed_addr constant [28 x i8] c" %re = sext i32 %r to i64\0A\00" -@.str1636 = private unnamed_addr constant [28 x i8] c" %r3m = mul i64 %r2e, %re\0A\00" -@.str1637 = private unnamed_addr constant [28 x i8] c" %r3s = ashr i64 %r3m, 16\0A\00" -@.str1638 = private unnamed_addr constant [31 x i8] c" %r3 = trunc i64 %r3s to i32\0A\00" -@.str1639 = private unnamed_addr constant [30 x i8] c" %r3e = sext i32 %r3 to i64\0A\00" -@.str1640 = private unnamed_addr constant [29 x i8] c" %c1 = mul i64 %r3e, 12865\0A\00" -@.str1641 = private unnamed_addr constant [27 x i8] c" %c1s = ashr i64 %c1, 16\0A\00" -@.str1642 = private unnamed_addr constant [31 x i8] c" %t1 = trunc i64 %c1s to i32\0A\00" -@.str1643 = private unnamed_addr constant [29 x i8] c" %re2 = sext i32 %r to i64\0A\00" -@.str1644 = private unnamed_addr constant [29 x i8] c" %c2 = mul i64 %re2, 64337\0A\00" -@.str1645 = private unnamed_addr constant [27 x i8] c" %c2s = ashr i64 %c2, 16\0A\00" -@.str1646 = private unnamed_addr constant [31 x i8] c" %t2 = trunc i64 %c2s to i32\0A\00" -@.str1647 = private unnamed_addr constant [28 x i8] c" %poly = sub i32 %t1, %t2\0A\00" -@.str1648 = private unnamed_addr constant [33 x i8] c" %angle = add i32 %poly, %base\0A\00" -@.str1649 = private unnamed_addr constant [31 x i8] c" %angneg = sub i32 0, %angle\0A\00" -@.str1650 = private unnamed_addr constant [51 x i8] c" %res = select i1 %yneg, i32 %angneg, i32 %angle\0A\00" -@.str1651 = private unnamed_addr constant [16 x i8] c" ret i32 %res\0A\00" -@.str1652 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str1653 = private unnamed_addr constant [34 x i8] c"define i32 @lp_fx_exp2(i32 %x) {\0A\00" -@.str1654 = private unnamed_addr constant [76 x i8] c" %i = ashr i32 %x, 16\0A %f = and i32 %x, 65535\0A %fe = sext i32 %f to i64\0A\00" -@.str1655 = private unnamed_addr constant [75 x i8] c" %m5 = mul i64 %fe, 87\0A %s5 = ashr i64 %m5, 16\0A %p5 = add i64 %s5, 630\0A\00" -@.str1656 = private unnamed_addr constant [77 x i8] c" %m4 = mul i64 %fe, %p5\0A %s4 = ashr i64 %m4, 16\0A %p4 = add i64 %s4, 3638\0A\00" -@.str1657 = private unnamed_addr constant [78 x i8] c" %m3 = mul i64 %fe, %p4\0A %s3 = ashr i64 %m3, 16\0A %p3 = add i64 %s3, 15744\0A\00" -@.str1658 = private unnamed_addr constant [78 x i8] c" %m2 = mul i64 %fe, %p3\0A %s2 = ashr i64 %m2, 16\0A %p2 = add i64 %s2, 45426\0A\00" -@.str1659 = private unnamed_addr constant [78 x i8] c" %m1 = mul i64 %fe, %p2\0A %s1 = ashr i64 %m1, 16\0A %p1 = add i64 %s1, 65536\0A\00" -@.str1660 = private unnamed_addr constant [29 x i8] c" %p = trunc i64 %p1 to i32\0A\00" -@.str1661 = private unnamed_addr constant [30 x i8] c" %ipos = icmp sge i32 %i, 0\0A\00" -@.str1662 = private unnamed_addr constant [115 x i8] c" %sa0 = select i1 %ipos, i32 %i, i32 0\0A %sahi = icmp sgt i32 %sa0, 30\0A %sa = select i1 %sahi, i32 30, i32 %sa0\0A\00" -@.str1663 = private unnamed_addr constant [26 x i8] c" %shl = shl i32 %p, %sa\0A\00" -@.str1664 = private unnamed_addr constant [138 x i8] c" %ni = sub i32 0, %i\0A %ra0 = select i1 %ipos, i32 0, i32 %ni\0A %rahi = icmp sgt i32 %ra0, 31\0A %ra = select i1 %rahi, i32 31, i32 %ra0\0A\00" -@.str1665 = private unnamed_addr constant [27 x i8] c" %shr = ashr i32 %p, %ra\0A\00" -@.str1666 = private unnamed_addr constant [63 x i8] c" %res = select i1 %ipos, i32 %shl, i32 %shr\0A ret i32 %res\0A}\0A\00" -@.str1667 = private unnamed_addr constant [37 x i8] c"declare i32 @llvm.ctlz.i32(i32, i1)\0A\00" -@.str1668 = private unnamed_addr constant [34 x i8] c"define i32 @lp_fx_log2(i32 %x) {\0A\00" -@.str1669 = private unnamed_addr constant [72 x i8] c"entry:\0A %pos = icmp sgt i32 %x, 0\0A br i1 %pos, label %go, label %neg\0A\00" -@.str1670 = private unnamed_addr constant [28 x i8] c"neg:\0A ret i32 -2147483648\0A\00" -@.str1671 = private unnamed_addr constant [80 x i8] c"go:\0A %lz = call i32 @llvm.ctlz.i32(i32 %x, i1 true)\0A %pmsb = sub i32 31, %lz\0A\00" -@.str1672 = private unnamed_addr constant [49 x i8] c" %e = sub i32 %pmsb, 16\0A %ef = shl i32 %e, 16\0A\00" -@.str1673 = private unnamed_addr constant [82 x i8] c" %sh = sub i32 16, %pmsb\0A %shpos = icmp sge i32 %sh, 0\0A %nsh = sub i32 0, %sh\0A\00" -@.str1674 = private unnamed_addr constant [93 x i8] c" %mL = shl i32 %x, %sh\0A %mR = ashr i32 %x, %nsh\0A %m = select i1 %shpos, i32 %mL, i32 %mR\0A\00" -@.str1675 = private unnamed_addr constant [55 x i8] c" %num = sub i32 %m, 65536\0A %den = add i32 %m, 65536\0A\00" -@.str1676 = private unnamed_addr constant [147 x i8] c" %n64 = sext i32 %num to i64\0A %nshl = shl i64 %n64, 16\0A %d64 = sext i32 %den to i64\0A %rdv = sdiv i64 %nshl, %d64\0A %r = trunc i64 %rdv to i32\0A\00" -@.str1677 = private unnamed_addr constant [78 x i8] c" %re = sext i32 %r to i64\0A %rr = mul i64 %re, %re\0A %r2 = ashr i64 %rr, 16\0A\00" -@.str1678 = private unnamed_addr constant [81 x i8] c" %c3 = mul i64 %r2, 9362\0A %c3s = ashr i64 %c3, 16\0A %q3 = add i64 %c3s, 13107\0A\00" -@.str1679 = private unnamed_addr constant [80 x i8] c" %c2 = mul i64 %r2, %q3\0A %c2s = ashr i64 %c2, 16\0A %q2 = add i64 %c2s, 21845\0A\00" -@.str1680 = private unnamed_addr constant [80 x i8] c" %c1 = mul i64 %r2, %q2\0A %c1s = ashr i64 %c1, 16\0A %q1 = add i64 %c1s, 65536\0A\00" -@.str1681 = private unnamed_addr constant [77 x i8] c" %rp = mul i64 %re, %q1\0A %rps = ashr i64 %rp, 16\0A %lnm = shl i64 %rps, 1\0A\00" -@.str1682 = private unnamed_addr constant [86 x i8] c" %lm = mul i64 %lnm, 94548\0A %lms = ashr i64 %lm, 16\0A %l2m = trunc i64 %lms to i32\0A\00" -@.str1683 = private unnamed_addr constant [45 x i8] c" %res = add i32 %ef, %l2m\0A ret i32 %res\0A}\0A\00" -@.str1684 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str1685 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str1686 = private unnamed_addr constant [9 x i8] c"shl i64 \00" -@.str1687 = private unnamed_addr constant [5 x i8] c", 32\00" -@.str1688 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str1689 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str1690 = private unnamed_addr constant [8 x i8] c"or i64 \00" -@.str1691 = private unnamed_addr constant [3 x i8] c", \00" -@.str1692 = private unnamed_addr constant [10 x i8] c"lshr i64 \00" -@.str1693 = private unnamed_addr constant [5 x i8] c", 32\00" -@.str1694 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str1695 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str1696 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str1697 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str1698 = private unnamed_addr constant [5 x i8] c"make\00" -@.str1699 = private unnamed_addr constant [5 x i8] c"zero\00" -@.str1700 = private unnamed_addr constant [2 x i8] c"x\00" -@.str1701 = private unnamed_addr constant [2 x i8] c"y\00" -@.str1702 = private unnamed_addr constant [4 x i8] c"add\00" -@.str1703 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str1704 = private unnamed_addr constant [6 x i8] c"scale\00" -@.str1705 = private unnamed_addr constant [4 x i8] c"dot\00" -@.str1706 = private unnamed_addr constant [7 x i8] c"length\00" -@.str1707 = private unnamed_addr constant [9 x i8] c"distance\00" -@.str1708 = private unnamed_addr constant [10 x i8] c"normalize\00" -@.str1709 = private unnamed_addr constant [5 x i8] c"lerp\00" -@.str1710 = private unnamed_addr constant [7 x i8] c"rotate\00" -@.str1711 = private unnamed_addr constant [6 x i8] c"angle\00" -@.str1712 = private unnamed_addr constant [11 x i8] c"from_angle\00" -@.str1713 = private unnamed_addr constant [5 x i8] c"zero\00" -@.str1714 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1715 = private unnamed_addr constant [7 x i8] c"Vector\00" -@.str1716 = private unnamed_addr constant [5 x i8] c"make\00" -@.str1717 = private unnamed_addr constant [7 x i8] c"Vector\00" -@.str1718 = private unnamed_addr constant [2 x i8] c"x\00" -@.str1719 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1720 = private unnamed_addr constant [2 x i8] c"y\00" -@.str1721 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1722 = private unnamed_addr constant [4 x i8] c"add\00" -@.str1723 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1724 = private unnamed_addr constant [3 x i8] c", \00" -@.str1725 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1726 = private unnamed_addr constant [3 x i8] c", \00" -@.str1727 = private unnamed_addr constant [7 x i8] c"Vector\00" -@.str1728 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str1729 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1730 = private unnamed_addr constant [3 x i8] c", \00" -@.str1731 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1732 = private unnamed_addr constant [3 x i8] c", \00" -@.str1733 = private unnamed_addr constant [7 x i8] c"Vector\00" -@.str1734 = private unnamed_addr constant [6 x i8] c"scale\00" -@.str1735 = private unnamed_addr constant [7 x i8] c"Vector\00" -@.str1736 = private unnamed_addr constant [4 x i8] c"dot\00" -@.str1737 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1738 = private unnamed_addr constant [3 x i8] c", \00" -@.str1739 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1740 = private unnamed_addr constant [7 x i8] c"length\00" -@.str1741 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1742 = private unnamed_addr constant [3 x i8] c", \00" -@.str1743 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" -@.str1744 = private unnamed_addr constant [2 x i8] c")\00" -@.str1745 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1746 = private unnamed_addr constant [9 x i8] c"distance\00" -@.str1747 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1748 = private unnamed_addr constant [3 x i8] c", \00" -@.str1749 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1750 = private unnamed_addr constant [3 x i8] c", \00" -@.str1751 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1752 = private unnamed_addr constant [3 x i8] c", \00" -@.str1753 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" -@.str1754 = private unnamed_addr constant [2 x i8] c")\00" -@.str1755 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1756 = private unnamed_addr constant [10 x i8] c"normalize\00" -@.str1757 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1758 = private unnamed_addr constant [3 x i8] c", \00" -@.str1759 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" -@.str1760 = private unnamed_addr constant [2 x i8] c")\00" -@.str1761 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str1762 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str1763 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1764 = private unnamed_addr constant [18 x i8] c", i32 65536, i32 \00" -@.str1765 = private unnamed_addr constant [6 x i8] c"65536\00" -@.str1766 = private unnamed_addr constant [7 x i8] c"Vector\00" -@.str1767 = private unnamed_addr constant [7 x i8] c"rotate\00" -@.str1768 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" -@.str1769 = private unnamed_addr constant [2 x i8] c")\00" -@.str1770 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1771 = private unnamed_addr constant [9 x i8] c", 102944\00" -@.str1772 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" -@.str1773 = private unnamed_addr constant [2 x i8] c")\00" -@.str1774 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1775 = private unnamed_addr constant [3 x i8] c", \00" -@.str1776 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1777 = private unnamed_addr constant [3 x i8] c", \00" -@.str1778 = private unnamed_addr constant [7 x i8] c"Vector\00" -@.str1779 = private unnamed_addr constant [6 x i8] c"angle\00" -@.str1780 = private unnamed_addr constant [27 x i8] c"call i32 @lp_fx_atan2(i32 \00" -@.str1781 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1782 = private unnamed_addr constant [2 x i8] c")\00" -@.str1783 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1784 = private unnamed_addr constant [11 x i8] c"from_angle\00" -@.str1785 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" -@.str1786 = private unnamed_addr constant [2 x i8] c")\00" -@.str1787 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1788 = private unnamed_addr constant [9 x i8] c", 102944\00" -@.str1789 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" -@.str1790 = private unnamed_addr constant [2 x i8] c")\00" -@.str1791 = private unnamed_addr constant [7 x i8] c"Vector\00" -@.str1792 = private unnamed_addr constant [7 x i8] c"Vector\00" -@.str1793 = private unnamed_addr constant [12 x i8] c"sub i32 0, \00" -@.str1794 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str1795 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str1796 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str1797 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1798 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1799 = private unnamed_addr constant [5 x i8] c"make\00" -@.str1800 = private unnamed_addr constant [5 x i8] c"zero\00" -@.str1801 = private unnamed_addr constant [2 x i8] c"x\00" -@.str1802 = private unnamed_addr constant [2 x i8] c"y\00" -@.str1803 = private unnamed_addr constant [4 x i8] c"add\00" -@.str1804 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str1805 = private unnamed_addr constant [6 x i8] c"scale\00" -@.str1806 = private unnamed_addr constant [4 x i8] c"dot\00" -@.str1807 = private unnamed_addr constant [6 x i8] c"equal\00" -@.str1808 = private unnamed_addr constant [10 x i8] c"manhattan\00" -@.str1809 = private unnamed_addr constant [10 x i8] c"to_vector\00" -@.str1810 = private unnamed_addr constant [10 x i8] c"distance2\00" -@.str1811 = private unnamed_addr constant [7 x i8] c"within\00" -@.str1812 = private unnamed_addr constant [8 x i8] c"heading\00" -@.str1813 = private unnamed_addr constant [6 x i8] c"along\00" -@.str1814 = private unnamed_addr constant [5 x i8] c"step\00" -@.str1815 = private unnamed_addr constant [5 x i8] c"zero\00" -@.str1816 = private unnamed_addr constant [2 x i8] c"0\00" -@.str1817 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str1818 = private unnamed_addr constant [5 x i8] c"make\00" -@.str1819 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str1820 = private unnamed_addr constant [2 x i8] c"x\00" -@.str1821 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1822 = private unnamed_addr constant [2 x i8] c"y\00" -@.str1823 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1824 = private unnamed_addr constant [10 x i8] c"distance2\00" -@.str1825 = private unnamed_addr constant [7 x i8] c"within\00" -@.str1826 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1827 = private unnamed_addr constant [3 x i8] c", \00" -@.str1828 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1829 = private unnamed_addr constant [3 x i8] c", \00" -@.str1830 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str1831 = private unnamed_addr constant [3 x i8] c", \00" -@.str1832 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str1833 = private unnamed_addr constant [3 x i8] c", \00" -@.str1834 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1835 = private unnamed_addr constant [3 x i8] c", \00" -@.str1836 = private unnamed_addr constant [10 x i8] c"distance2\00" -@.str1837 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1838 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str1839 = private unnamed_addr constant [3 x i8] c", \00" -@.str1840 = private unnamed_addr constant [14 x i8] c"icmp sle i32 \00" -@.str1841 = private unnamed_addr constant [3 x i8] c", \00" -@.str1842 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str1843 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str1844 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str1845 = private unnamed_addr constant [8 x i8] c"heading\00" -@.str1846 = private unnamed_addr constant [16 x i8] c"rt_ivec_heading\00" -@.str1847 = private unnamed_addr constant [39 x i8] c"IVec2.heading needs the engine runtime\00" -@.str1848 = private unnamed_addr constant [34 x i8] c"call i32 @fn_rt_ivec_heading(i64 \00" -@.str1849 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str1850 = private unnamed_addr constant [2 x i8] c")\00" -@.str1851 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1852 = private unnamed_addr constant [6 x i8] c"along\00" -@.str1853 = private unnamed_addr constant [14 x i8] c"rt_ivec_along\00" -@.str1854 = private unnamed_addr constant [37 x i8] c"IVec2.along needs the engine runtime\00" -@.str1855 = private unnamed_addr constant [32 x i8] c"call i64 @fn_rt_ivec_along(i64 \00" -@.str1856 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1857 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str1858 = private unnamed_addr constant [2 x i8] c")\00" -@.str1859 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str1860 = private unnamed_addr constant [5 x i8] c"step\00" -@.str1861 = private unnamed_addr constant [13 x i8] c"rt_ivec_step\00" -@.str1862 = private unnamed_addr constant [36 x i8] c"IVec2.step needs the engine runtime\00" -@.str1863 = private unnamed_addr constant [31 x i8] c"call i64 @fn_rt_ivec_step(i32 \00" -@.str1864 = private unnamed_addr constant [2 x i8] c")\00" -@.str1865 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str1866 = private unnamed_addr constant [4 x i8] c"add\00" -@.str1867 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1868 = private unnamed_addr constant [3 x i8] c", \00" -@.str1869 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1870 = private unnamed_addr constant [3 x i8] c", \00" -@.str1871 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str1872 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str1873 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1874 = private unnamed_addr constant [3 x i8] c", \00" -@.str1875 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1876 = private unnamed_addr constant [3 x i8] c", \00" -@.str1877 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str1878 = private unnamed_addr constant [6 x i8] c"scale\00" -@.str1879 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str1880 = private unnamed_addr constant [3 x i8] c", \00" -@.str1881 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str1882 = private unnamed_addr constant [3 x i8] c", \00" -@.str1883 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str1884 = private unnamed_addr constant [4 x i8] c"dot\00" -@.str1885 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str1886 = private unnamed_addr constant [3 x i8] c", \00" -@.str1887 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str1888 = private unnamed_addr constant [3 x i8] c", \00" -@.str1889 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1890 = private unnamed_addr constant [3 x i8] c", \00" -@.str1891 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1892 = private unnamed_addr constant [6 x i8] c"equal\00" -@.str1893 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str1894 = private unnamed_addr constant [3 x i8] c", \00" -@.str1895 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str1896 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str1897 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str1898 = private unnamed_addr constant [10 x i8] c"manhattan\00" -@.str1899 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1900 = private unnamed_addr constant [3 x i8] c", \00" -@.str1901 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str1902 = private unnamed_addr constant [3 x i8] c", \00" -@.str1903 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1904 = private unnamed_addr constant [3 x i8] c", \00" -@.str1905 = private unnamed_addr constant [4 x i8] c"int\00" -@.str1906 = private unnamed_addr constant [9 x i8] c"shl i32 \00" -@.str1907 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str1908 = private unnamed_addr constant [9 x i8] c"shl i32 \00" -@.str1909 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str1910 = private unnamed_addr constant [7 x i8] c"Vector\00" -@.str1911 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str1912 = private unnamed_addr constant [9 x i8] c" to i128\00" -@.str1913 = private unnamed_addr constant [10 x i8] c"shl i128 \00" -@.str1914 = private unnamed_addr constant [5 x i8] c", 96\00" -@.str1915 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str1916 = private unnamed_addr constant [9 x i8] c" to i128\00" -@.str1917 = private unnamed_addr constant [10 x i8] c"shl i128 \00" -@.str1918 = private unnamed_addr constant [5 x i8] c", 64\00" -@.str1919 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str1920 = private unnamed_addr constant [9 x i8] c" to i128\00" -@.str1921 = private unnamed_addr constant [10 x i8] c"shl i128 \00" -@.str1922 = private unnamed_addr constant [5 x i8] c", 32\00" -@.str1923 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str1924 = private unnamed_addr constant [9 x i8] c" to i128\00" -@.str1925 = private unnamed_addr constant [9 x i8] c"or i128 \00" -@.str1926 = private unnamed_addr constant [3 x i8] c", \00" -@.str1927 = private unnamed_addr constant [9 x i8] c"or i128 \00" -@.str1928 = private unnamed_addr constant [3 x i8] c", \00" -@.str1929 = private unnamed_addr constant [9 x i8] c"or i128 \00" -@.str1930 = private unnamed_addr constant [3 x i8] c", \00" -@.str1931 = private unnamed_addr constant [12 x i8] c"trunc i128 \00" -@.str1932 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str1933 = private unnamed_addr constant [11 x i8] c"lshr i128 \00" -@.str1934 = private unnamed_addr constant [3 x i8] c", \00" -@.str1935 = private unnamed_addr constant [12 x i8] c"trunc i128 \00" -@.str1936 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str1937 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str1938 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str1939 = private unnamed_addr constant [3 x i8] c", \00" -@.str1940 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str1941 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str1942 = private unnamed_addr constant [5 x i8] c"make\00" -@.str1943 = private unnamed_addr constant [2 x i8] c"x\00" -@.str1944 = private unnamed_addr constant [2 x i8] c"y\00" -@.str1945 = private unnamed_addr constant [2 x i8] c"w\00" -@.str1946 = private unnamed_addr constant [2 x i8] c"h\00" -@.str1947 = private unnamed_addr constant [6 x i8] c"right\00" -@.str1948 = private unnamed_addr constant [7 x i8] c"bottom\00" -@.str1949 = private unnamed_addr constant [7 x i8] c"center\00" -@.str1950 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str1951 = private unnamed_addr constant [11 x i8] c"intersects\00" -@.str1952 = private unnamed_addr constant [5 x i8] c"make\00" -@.str1953 = private unnamed_addr constant [5 x i8] c"Rect\00" -@.str1954 = private unnamed_addr constant [2 x i8] c"x\00" -@.str1955 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1956 = private unnamed_addr constant [2 x i8] c"y\00" -@.str1957 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1958 = private unnamed_addr constant [2 x i8] c"w\00" -@.str1959 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1960 = private unnamed_addr constant [2 x i8] c"h\00" -@.str1961 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1962 = private unnamed_addr constant [6 x i8] c"right\00" -@.str1963 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1964 = private unnamed_addr constant [3 x i8] c", \00" -@.str1965 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1966 = private unnamed_addr constant [7 x i8] c"bottom\00" -@.str1967 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1968 = private unnamed_addr constant [3 x i8] c", \00" -@.str1969 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str1970 = private unnamed_addr constant [7 x i8] c"center\00" -@.str1971 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str1972 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str1973 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str1974 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str1975 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1976 = private unnamed_addr constant [3 x i8] c", \00" -@.str1977 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1978 = private unnamed_addr constant [3 x i8] c", \00" -@.str1979 = private unnamed_addr constant [7 x i8] c"Vector\00" -@.str1980 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str1981 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1982 = private unnamed_addr constant [3 x i8] c", \00" -@.str1983 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1984 = private unnamed_addr constant [3 x i8] c", \00" -@.str1985 = private unnamed_addr constant [4 x i8] c"sge\00" -@.str1986 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str1987 = private unnamed_addr constant [4 x i8] c"sge\00" -@.str1988 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str1989 = private unnamed_addr constant [9 x i8] c"and i32 \00" -@.str1990 = private unnamed_addr constant [3 x i8] c", \00" -@.str1991 = private unnamed_addr constant [9 x i8] c"and i32 \00" -@.str1992 = private unnamed_addr constant [3 x i8] c", \00" -@.str1993 = private unnamed_addr constant [9 x i8] c"and i32 \00" -@.str1994 = private unnamed_addr constant [3 x i8] c", \00" -@.str1995 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str1996 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1484 = private unnamed_addr constant [11 x i8] c"rad_to_deg\00" +@.str1485 = private unnamed_addr constant [8 x i8] c"3754936\00" +@.str1486 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1487 = private unnamed_addr constant [7 x i8] c"posmod\00" +@.str1488 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str1489 = private unnamed_addr constant [3 x i8] c", \00" +@.str1490 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1491 = private unnamed_addr constant [3 x i8] c", \00" +@.str1492 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str1493 = private unnamed_addr constant [3 x i8] c", \00" +@.str1494 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1495 = private unnamed_addr constant [5 x i8] c"wrap\00" +@.str1496 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1497 = private unnamed_addr constant [3 x i8] c", \00" +@.str1498 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1499 = private unnamed_addr constant [3 x i8] c", \00" +@.str1500 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str1501 = private unnamed_addr constant [3 x i8] c", \00" +@.str1502 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1503 = private unnamed_addr constant [3 x i8] c", \00" +@.str1504 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str1505 = private unnamed_addr constant [3 x i8] c", \00" +@.str1506 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1507 = private unnamed_addr constant [3 x i8] c", \00" +@.str1508 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1509 = private unnamed_addr constant [10 x i8] c"ping_pong\00" +@.str1510 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str1511 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str1512 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str1513 = private unnamed_addr constant [3 x i8] c", \00" +@.str1514 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1515 = private unnamed_addr constant [3 x i8] c", \00" +@.str1516 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str1517 = private unnamed_addr constant [3 x i8] c", \00" +@.str1518 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1519 = private unnamed_addr constant [3 x i8] c", \00" +@.str1520 = private unnamed_addr constant [12 x i8] c"sub i32 0, \00" +@.str1521 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str1522 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str1523 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1524 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1525 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1526 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1527 = private unnamed_addr constant [3 x i8] c", \00" +@.str1528 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1529 = private unnamed_addr constant [8 x i8] c"snapped\00" +@.str1530 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1531 = private unnamed_addr constant [8 x i8] c", 32768\00" +@.str1532 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str1533 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str1534 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str1535 = private unnamed_addr constant [3 x i8] c", \00" +@.str1536 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1537 = private unnamed_addr constant [12 x i8] c"move_toward\00" +@.str1538 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1539 = private unnamed_addr constant [3 x i8] c", \00" +@.str1540 = private unnamed_addr constant [12 x i8] c"sub i32 0, \00" +@.str1541 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str1542 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str1543 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1544 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1545 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1546 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" +@.str1547 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str1548 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str1549 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str1550 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1551 = private unnamed_addr constant [16 x i8] c", i32 -1, i32 0\00" +@.str1552 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1553 = private unnamed_addr constant [14 x i8] c", i32 1, i32 \00" +@.str1554 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str1555 = private unnamed_addr constant [3 x i8] c", \00" +@.str1556 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1557 = private unnamed_addr constant [3 x i8] c", \00" +@.str1558 = private unnamed_addr constant [14 x i8] c"icmp sle i32 \00" +@.str1559 = private unnamed_addr constant [3 x i8] c", \00" +@.str1560 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1561 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1562 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1563 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1564 = private unnamed_addr constant [11 x i8] c"smoothstep\00" +@.str1565 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str1566 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str1567 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1568 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str1569 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" +@.str1570 = private unnamed_addr constant [8 x i8] c", 65536\00" +@.str1571 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1572 = private unnamed_addr constant [18 x i8] c", i32 65536, i32 \00" +@.str1573 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str1574 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str1575 = private unnamed_addr constant [17 x i8] c"sub i32 196608, \00" +@.str1576 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1577 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1578 = private unnamed_addr constant [2968 x i8] c"@L_sin_tab = private unnamed_addr constant [256 x i32] [i32 0, i32 1608, i32 3216, i32 4821, i32 6424, i32 8022, i32 9616, i32 11204, i32 12785, i32 14359, i32 15924, i32 17479, i32 19024, i32 20557, i32 22078, i32 23586, i32 25080, i32 26558, i32 28020, i32 29466, i32 30893, i32 32303, i32 33692, i32 35062, i32 36410, i32 37736, i32 39040, i32 40320, i32 41576, i32 42806, i32 44011, i32 45190, i32 46341, i32 47464, i32 48559, i32 49624, i32 50660, i32 51665, i32 52639, i32 53581, i32 54491, i32 55368, i32 56212, i32 57022, i32 57798, i32 58538, i32 59244, i32 59914, i32 60547, i32 61145, i32 61705, i32 62228, i32 62714, i32 63162, i32 63572, i32 63944, i32 64277, i32 64571, i32 64827, i32 65043, i32 65220, i32 65358, i32 65457, i32 65516, i32 65536, i32 65516, i32 65457, i32 65358, i32 65220, i32 65043, i32 64827, i32 64571, i32 64277, i32 63944, i32 63572, i32 63162, i32 62714, i32 62228, i32 61705, i32 61145, i32 60547, i32 59914, i32 59244, i32 58538, i32 57798, i32 57022, i32 56212, i32 55368, i32 54491, i32 53581, i32 52639, i32 51665, i32 50660, i32 49624, i32 48559, i32 47464, i32 46341, i32 45190, i32 44011, i32 42806, i32 41576, i32 40320, i32 39040, i32 37736, i32 36410, i32 35062, i32 33692, i32 32303, i32 30893, i32 29466, i32 28020, i32 26558, i32 25080, i32 23586, i32 22078, i32 20557, i32 19024, i32 17479, i32 15924, i32 14359, i32 12785, i32 11204, i32 9616, i32 8022, i32 6424, i32 4821, i32 3216, i32 1608, i32 0, i32 -1608, i32 -3216, i32 -4821, i32 -6424, i32 -8022, i32 -9616, i32 -11204, i32 -12785, i32 -14359, i32 -15924, i32 -17479, i32 -19024, i32 -20557, i32 -22078, i32 -23586, i32 -25080, i32 -26558, i32 -28020, i32 -29466, i32 -30893, i32 -32303, i32 -33692, i32 -35062, i32 -36410, i32 -37736, i32 -39040, i32 -40320, i32 -41576, i32 -42806, i32 -44011, i32 -45190, i32 -46341, i32 -47464, i32 -48559, i32 -49624, i32 -50660, i32 -51665, i32 -52639, i32 -53581, i32 -54491, i32 -55368, i32 -56212, i32 -57022, i32 -57798, i32 -58538, i32 -59244, i32 -59914, i32 -60547, i32 -61145, i32 -61705, i32 -62228, i32 -62714, i32 -63162, i32 -63572, i32 -63944, i32 -64277, i32 -64571, i32 -64827, i32 -65043, i32 -65220, i32 -65358, i32 -65457, i32 -65516, i32 -65536, i32 -65516, i32 -65457, i32 -65358, i32 -65220, i32 -65043, i32 -64827, i32 -64571, i32 -64277, i32 -63944, i32 -63572, i32 -63162, i32 -62714, i32 -62228, i32 -61705, i32 -61145, i32 -60547, i32 -59914, i32 -59244, i32 -58538, i32 -57798, i32 -57022, i32 -56212, i32 -55368, i32 -54491, i32 -53581, i32 -52639, i32 -51665, i32 -50660, i32 -49624, i32 -48559, i32 -47464, i32 -46341, i32 -45190, i32 -44011, i32 -42806, i32 -41576, i32 -40320, i32 -39040, i32 -37736, i32 -36410, i32 -35062, i32 -33692, i32 -32303, i32 -30893, i32 -29466, i32 -28020, i32 -26558, i32 -25080, i32 -23586, i32 -22078, i32 -20557, i32 -19024, i32 -17479, i32 -15924, i32 -14359, i32 -12785, i32 -11204, i32 -9616, i32 -8022, i32 -6424, i32 -4821, i32 -3216, i32 -1608]\0A\00" +@.str1579 = private unnamed_addr constant [34 x i8] c"define i32 @lp_fx_sqrt(i32 %x) {\0A\00" +@.str1580 = private unnamed_addr constant [73 x i8] c"entry:\0A %neg = icmp slt i32 %x, 0\0A br i1 %neg, label %ret0, label %go\0A\00" +@.str1581 = private unnamed_addr constant [19 x i8] c"ret0:\0A ret i32 0\0A\00" +@.str1582 = private unnamed_addr constant [58 x i8] c"go:\0A %x64 = sext i32 %x to i64\0A %n0 = shl i64 %x64, 16\0A\00" +@.str1583 = private unnamed_addr constant [58 x i8] c" %np = alloca i64\0A %rp = alloca i64\0A %bp = alloca i64\0A\00" +@.str1584 = private unnamed_addr constant [106 x i8] c" store i64 %n0, ptr %np\0A store i64 0, ptr %rp\0A store i64 4611686018427387904, ptr %bp\0A br label %adj\0A\00" +@.str1585 = private unnamed_addr constant [126 x i8] c"adj:\0A %b1 = load i64, ptr %bp\0A %n1 = load i64, ptr %np\0A %tb = icmp ugt i64 %b1, %n1\0A br i1 %tb, label %adjb, label %loop\0A\00" +@.str1586 = private unnamed_addr constant [72 x i8] c"adjb:\0A %b2 = lshr i64 %b1, 2\0A store i64 %b2, ptr %bp\0A br label %adj\0A\00" +@.str1587 = private unnamed_addr constant [98 x i8] c"loop:\0A %b3 = load i64, ptr %bp\0A %bz = icmp eq i64 %b3, 0\0A br i1 %bz, label %done, label %body\0A\00" +@.str1588 = private unnamed_addr constant [152 x i8] c"body:\0A %r1 = load i64, ptr %rp\0A %n2 = load i64, ptr %np\0A %rb = add i64 %r1, %b3\0A %ge = icmp uge i64 %n2, %rb\0A br i1 %ge, label %sub, label %shift\0A\00" +@.str1589 = private unnamed_addr constant [153 x i8] c"sub:\0A %n3 = sub i64 %n2, %rb\0A store i64 %n3, ptr %np\0A %rsh = lshr i64 %r1, 1\0A %rnew = add i64 %rsh, %b3\0A store i64 %rnew, ptr %rp\0A br label %next\0A\00" +@.str1590 = private unnamed_addr constant [78 x i8] c"shift:\0A %rsh2 = lshr i64 %r1, 1\0A store i64 %rsh2, ptr %rp\0A br label %next\0A\00" +@.str1591 = private unnamed_addr constant [73 x i8] c"next:\0A %b4 = lshr i64 %b3, 2\0A store i64 %b4, ptr %bp\0A br label %loop\0A\00" +@.str1592 = private unnamed_addr constant [80 x i8] c"done:\0A %rf = load i64, ptr %rp\0A %r32 = trunc i64 %rf to i32\0A ret i32 %r32\0A}\0A\00" +@.str1593 = private unnamed_addr constant [33 x i8] c"define i32 @lp_fx_sin(i32 %x) {\0A\00" +@.str1594 = private unnamed_addr constant [82 x i8] c" %xe = sext i32 %x to i64\0A %m = mul i64 %xe, 2670177\0A %idxf = ashr i64 %m, 16\0A\00" +@.str1595 = private unnamed_addr constant [85 x i8] c" %i0 = ashr i64 %idxf, 16\0A %i0m = and i64 %i0, 255\0A %frac = and i64 %idxf, 65535\0A\00" +@.str1596 = private unnamed_addr constant [51 x i8] c" %i1 = add i64 %i0m, 1\0A %i1m = and i64 %i1, 255\0A\00" +@.str1597 = private unnamed_addr constant [94 x i8] c" %p0 = getelementptr [256 x i32], ptr @L_sin_tab, i64 0, i64 %i0m\0A %v0 = load i32, ptr %p0\0A\00" +@.str1598 = private unnamed_addr constant [94 x i8] c" %p1 = getelementptr [256 x i32], ptr @L_sin_tab, i64 0, i64 %i1m\0A %v1 = load i32, ptr %p1\0A\00" +@.str1599 = private unnamed_addr constant [184 x i8] c" %d = sub i32 %v1, %v0\0A %de = sext i32 %d to i64\0A %dm = mul i64 %de, %frac\0A %dsh = ashr i64 %dm, 16\0A %dsh32 = trunc i64 %dsh to i32\0A %res = add i32 %v0, %dsh32\0A ret i32 %res\0A}\0A\00" +@.str1600 = private unnamed_addr constant [43 x i8] c"define i32 @lp_fx_atan2(i32 %y, i32 %x) {\0A\00" +@.str1601 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str1602 = private unnamed_addr constant [27 x i8] c" %xz = icmp eq i32 %x, 0\0A\00" +@.str1603 = private unnamed_addr constant [27 x i8] c" %yz = icmp eq i32 %y, 0\0A\00" +@.str1604 = private unnamed_addr constant [28 x i8] c" %both0 = and i1 %xz, %yz\0A\00" +@.str1605 = private unnamed_addr constant [37 x i8] c" br i1 %both0, label %z, label %go\0A\00" +@.str1606 = private unnamed_addr constant [4 x i8] c"z:\0A\00" +@.str1607 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" +@.str1608 = private unnamed_addr constant [5 x i8] c"go:\0A\00" +@.str1609 = private unnamed_addr constant [30 x i8] c" %yneg = icmp slt i32 %y, 0\0A\00" +@.str1610 = private unnamed_addr constant [24 x i8] c" %yng = sub i32 0, %y\0A\00" +@.str1611 = private unnamed_addr constant [44 x i8] c" %ay0 = select i1 %yneg, i32 %yng, i32 %y\0A\00" +@.str1612 = private unnamed_addr constant [25 x i8] c" %ay = add i32 %ay0, 1\0A\00" +@.str1613 = private unnamed_addr constant [30 x i8] c" %xpos = icmp sge i32 %x, 0\0A\00" +@.str1614 = private unnamed_addr constant [37 x i8] c" br i1 %xpos, label %xp, label %xn\0A\00" +@.str1615 = private unnamed_addr constant [5 x i8] c"xp:\0A\00" +@.str1616 = private unnamed_addr constant [25 x i8] c" %n1 = sub i32 %x, %ay\0A\00" +@.str1617 = private unnamed_addr constant [25 x i8] c" %d1 = add i32 %x, %ay\0A\00" +@.str1618 = private unnamed_addr constant [16 x i8] c" br label %dv\0A\00" +@.str1619 = private unnamed_addr constant [5 x i8] c"xn:\0A\00" +@.str1620 = private unnamed_addr constant [25 x i8] c" %n2 = add i32 %x, %ay\0A\00" +@.str1621 = private unnamed_addr constant [25 x i8] c" %d2 = sub i32 %ay, %x\0A\00" +@.str1622 = private unnamed_addr constant [16 x i8] c" br label %dv\0A\00" +@.str1623 = private unnamed_addr constant [5 x i8] c"dv:\0A\00" +@.str1624 = private unnamed_addr constant [45 x i8] c" %num = phi i32 [ %n1, %xp ], [ %n2, %xn ]\0A\00" +@.str1625 = private unnamed_addr constant [45 x i8] c" %den = phi i32 [ %d1, %xp ], [ %d2, %xn ]\0A\00" +@.str1626 = private unnamed_addr constant [51 x i8] c" %base = phi i32 [ 51472, %xp ], [ 154416, %xn ]\0A\00" +@.str1627 = private unnamed_addr constant [31 x i8] c" %n64 = sext i32 %num to i64\0A\00" +@.str1628 = private unnamed_addr constant [27 x i8] c" %nsh = shl i64 %n64, 16\0A\00" +@.str1629 = private unnamed_addr constant [31 x i8] c" %d64 = sext i32 %den to i64\0A\00" +@.str1630 = private unnamed_addr constant [30 x i8] c" %rdv = sdiv i64 %nsh, %d64\0A\00" +@.str1631 = private unnamed_addr constant [30 x i8] c" %r = trunc i64 %rdv to i32\0A\00" +@.str1632 = private unnamed_addr constant [30 x i8] c" %r64a = sext i32 %r to i64\0A\00" +@.str1633 = private unnamed_addr constant [30 x i8] c" %r64b = sext i32 %r to i64\0A\00" +@.str1634 = private unnamed_addr constant [30 x i8] c" %rr = mul i64 %r64a, %r64b\0A\00" +@.str1635 = private unnamed_addr constant [27 x i8] c" %rrs = ashr i64 %rr, 16\0A\00" +@.str1636 = private unnamed_addr constant [31 x i8] c" %r2 = trunc i64 %rrs to i32\0A\00" +@.str1637 = private unnamed_addr constant [30 x i8] c" %r2e = sext i32 %r2 to i64\0A\00" +@.str1638 = private unnamed_addr constant [28 x i8] c" %re = sext i32 %r to i64\0A\00" +@.str1639 = private unnamed_addr constant [28 x i8] c" %r3m = mul i64 %r2e, %re\0A\00" +@.str1640 = private unnamed_addr constant [28 x i8] c" %r3s = ashr i64 %r3m, 16\0A\00" +@.str1641 = private unnamed_addr constant [31 x i8] c" %r3 = trunc i64 %r3s to i32\0A\00" +@.str1642 = private unnamed_addr constant [30 x i8] c" %r3e = sext i32 %r3 to i64\0A\00" +@.str1643 = private unnamed_addr constant [29 x i8] c" %c1 = mul i64 %r3e, 12865\0A\00" +@.str1644 = private unnamed_addr constant [27 x i8] c" %c1s = ashr i64 %c1, 16\0A\00" +@.str1645 = private unnamed_addr constant [31 x i8] c" %t1 = trunc i64 %c1s to i32\0A\00" +@.str1646 = private unnamed_addr constant [29 x i8] c" %re2 = sext i32 %r to i64\0A\00" +@.str1647 = private unnamed_addr constant [29 x i8] c" %c2 = mul i64 %re2, 64337\0A\00" +@.str1648 = private unnamed_addr constant [27 x i8] c" %c2s = ashr i64 %c2, 16\0A\00" +@.str1649 = private unnamed_addr constant [31 x i8] c" %t2 = trunc i64 %c2s to i32\0A\00" +@.str1650 = private unnamed_addr constant [28 x i8] c" %poly = sub i32 %t1, %t2\0A\00" +@.str1651 = private unnamed_addr constant [33 x i8] c" %angle = add i32 %poly, %base\0A\00" +@.str1652 = private unnamed_addr constant [31 x i8] c" %angneg = sub i32 0, %angle\0A\00" +@.str1653 = private unnamed_addr constant [51 x i8] c" %res = select i1 %yneg, i32 %angneg, i32 %angle\0A\00" +@.str1654 = private unnamed_addr constant [16 x i8] c" ret i32 %res\0A\00" +@.str1655 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str1656 = private unnamed_addr constant [34 x i8] c"define i32 @lp_fx_exp2(i32 %x) {\0A\00" +@.str1657 = private unnamed_addr constant [76 x i8] c" %i = ashr i32 %x, 16\0A %f = and i32 %x, 65535\0A %fe = sext i32 %f to i64\0A\00" +@.str1658 = private unnamed_addr constant [75 x i8] c" %m5 = mul i64 %fe, 87\0A %s5 = ashr i64 %m5, 16\0A %p5 = add i64 %s5, 630\0A\00" +@.str1659 = private unnamed_addr constant [77 x i8] c" %m4 = mul i64 %fe, %p5\0A %s4 = ashr i64 %m4, 16\0A %p4 = add i64 %s4, 3638\0A\00" +@.str1660 = private unnamed_addr constant [78 x i8] c" %m3 = mul i64 %fe, %p4\0A %s3 = ashr i64 %m3, 16\0A %p3 = add i64 %s3, 15744\0A\00" +@.str1661 = private unnamed_addr constant [78 x i8] c" %m2 = mul i64 %fe, %p3\0A %s2 = ashr i64 %m2, 16\0A %p2 = add i64 %s2, 45426\0A\00" +@.str1662 = private unnamed_addr constant [78 x i8] c" %m1 = mul i64 %fe, %p2\0A %s1 = ashr i64 %m1, 16\0A %p1 = add i64 %s1, 65536\0A\00" +@.str1663 = private unnamed_addr constant [29 x i8] c" %p = trunc i64 %p1 to i32\0A\00" +@.str1664 = private unnamed_addr constant [30 x i8] c" %ipos = icmp sge i32 %i, 0\0A\00" +@.str1665 = private unnamed_addr constant [115 x i8] c" %sa0 = select i1 %ipos, i32 %i, i32 0\0A %sahi = icmp sgt i32 %sa0, 30\0A %sa = select i1 %sahi, i32 30, i32 %sa0\0A\00" +@.str1666 = private unnamed_addr constant [26 x i8] c" %shl = shl i32 %p, %sa\0A\00" +@.str1667 = private unnamed_addr constant [138 x i8] c" %ni = sub i32 0, %i\0A %ra0 = select i1 %ipos, i32 0, i32 %ni\0A %rahi = icmp sgt i32 %ra0, 31\0A %ra = select i1 %rahi, i32 31, i32 %ra0\0A\00" +@.str1668 = private unnamed_addr constant [27 x i8] c" %shr = ashr i32 %p, %ra\0A\00" +@.str1669 = private unnamed_addr constant [63 x i8] c" %res = select i1 %ipos, i32 %shl, i32 %shr\0A ret i32 %res\0A}\0A\00" +@.str1670 = private unnamed_addr constant [37 x i8] c"declare i32 @llvm.ctlz.i32(i32, i1)\0A\00" +@.str1671 = private unnamed_addr constant [34 x i8] c"define i32 @lp_fx_log2(i32 %x) {\0A\00" +@.str1672 = private unnamed_addr constant [72 x i8] c"entry:\0A %pos = icmp sgt i32 %x, 0\0A br i1 %pos, label %go, label %neg\0A\00" +@.str1673 = private unnamed_addr constant [28 x i8] c"neg:\0A ret i32 -2147483648\0A\00" +@.str1674 = private unnamed_addr constant [80 x i8] c"go:\0A %lz = call i32 @llvm.ctlz.i32(i32 %x, i1 true)\0A %pmsb = sub i32 31, %lz\0A\00" +@.str1675 = private unnamed_addr constant [49 x i8] c" %e = sub i32 %pmsb, 16\0A %ef = shl i32 %e, 16\0A\00" +@.str1676 = private unnamed_addr constant [82 x i8] c" %sh = sub i32 16, %pmsb\0A %shpos = icmp sge i32 %sh, 0\0A %nsh = sub i32 0, %sh\0A\00" +@.str1677 = private unnamed_addr constant [93 x i8] c" %mL = shl i32 %x, %sh\0A %mR = ashr i32 %x, %nsh\0A %m = select i1 %shpos, i32 %mL, i32 %mR\0A\00" +@.str1678 = private unnamed_addr constant [55 x i8] c" %num = sub i32 %m, 65536\0A %den = add i32 %m, 65536\0A\00" +@.str1679 = private unnamed_addr constant [147 x i8] c" %n64 = sext i32 %num to i64\0A %nshl = shl i64 %n64, 16\0A %d64 = sext i32 %den to i64\0A %rdv = sdiv i64 %nshl, %d64\0A %r = trunc i64 %rdv to i32\0A\00" +@.str1680 = private unnamed_addr constant [78 x i8] c" %re = sext i32 %r to i64\0A %rr = mul i64 %re, %re\0A %r2 = ashr i64 %rr, 16\0A\00" +@.str1681 = private unnamed_addr constant [81 x i8] c" %c3 = mul i64 %r2, 9362\0A %c3s = ashr i64 %c3, 16\0A %q3 = add i64 %c3s, 13107\0A\00" +@.str1682 = private unnamed_addr constant [80 x i8] c" %c2 = mul i64 %r2, %q3\0A %c2s = ashr i64 %c2, 16\0A %q2 = add i64 %c2s, 21845\0A\00" +@.str1683 = private unnamed_addr constant [80 x i8] c" %c1 = mul i64 %r2, %q2\0A %c1s = ashr i64 %c1, 16\0A %q1 = add i64 %c1s, 65536\0A\00" +@.str1684 = private unnamed_addr constant [77 x i8] c" %rp = mul i64 %re, %q1\0A %rps = ashr i64 %rp, 16\0A %lnm = shl i64 %rps, 1\0A\00" +@.str1685 = private unnamed_addr constant [86 x i8] c" %lm = mul i64 %lnm, 94548\0A %lms = ashr i64 %lm, 16\0A %l2m = trunc i64 %lms to i32\0A\00" +@.str1686 = private unnamed_addr constant [45 x i8] c" %res = add i32 %ef, %l2m\0A ret i32 %res\0A}\0A\00" +@.str1687 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str1688 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str1689 = private unnamed_addr constant [9 x i8] c"shl i64 \00" +@.str1690 = private unnamed_addr constant [5 x i8] c", 32\00" +@.str1691 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str1692 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str1693 = private unnamed_addr constant [8 x i8] c"or i64 \00" +@.str1694 = private unnamed_addr constant [3 x i8] c", \00" +@.str1695 = private unnamed_addr constant [10 x i8] c"lshr i64 \00" +@.str1696 = private unnamed_addr constant [5 x i8] c", 32\00" +@.str1697 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str1698 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str1699 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str1700 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str1701 = private unnamed_addr constant [5 x i8] c"make\00" +@.str1702 = private unnamed_addr constant [5 x i8] c"zero\00" +@.str1703 = private unnamed_addr constant [2 x i8] c"x\00" +@.str1704 = private unnamed_addr constant [2 x i8] c"y\00" +@.str1705 = private unnamed_addr constant [4 x i8] c"add\00" +@.str1706 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str1707 = private unnamed_addr constant [6 x i8] c"scale\00" +@.str1708 = private unnamed_addr constant [4 x i8] c"dot\00" +@.str1709 = private unnamed_addr constant [7 x i8] c"length\00" +@.str1710 = private unnamed_addr constant [9 x i8] c"distance\00" +@.str1711 = private unnamed_addr constant [10 x i8] c"normalize\00" +@.str1712 = private unnamed_addr constant [5 x i8] c"lerp\00" +@.str1713 = private unnamed_addr constant [7 x i8] c"rotate\00" +@.str1714 = private unnamed_addr constant [6 x i8] c"angle\00" +@.str1715 = private unnamed_addr constant [11 x i8] c"from_angle\00" +@.str1716 = private unnamed_addr constant [5 x i8] c"zero\00" +@.str1717 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1718 = private unnamed_addr constant [7 x i8] c"Vector\00" +@.str1719 = private unnamed_addr constant [5 x i8] c"make\00" +@.str1720 = private unnamed_addr constant [7 x i8] c"Vector\00" +@.str1721 = private unnamed_addr constant [2 x i8] c"x\00" +@.str1722 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1723 = private unnamed_addr constant [2 x i8] c"y\00" +@.str1724 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1725 = private unnamed_addr constant [4 x i8] c"add\00" +@.str1726 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1727 = private unnamed_addr constant [3 x i8] c", \00" +@.str1728 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1729 = private unnamed_addr constant [3 x i8] c", \00" +@.str1730 = private unnamed_addr constant [7 x i8] c"Vector\00" +@.str1731 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str1732 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1733 = private unnamed_addr constant [3 x i8] c", \00" +@.str1734 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1735 = private unnamed_addr constant [3 x i8] c", \00" +@.str1736 = private unnamed_addr constant [7 x i8] c"Vector\00" +@.str1737 = private unnamed_addr constant [6 x i8] c"scale\00" +@.str1738 = private unnamed_addr constant [7 x i8] c"Vector\00" +@.str1739 = private unnamed_addr constant [4 x i8] c"dot\00" +@.str1740 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1741 = private unnamed_addr constant [3 x i8] c", \00" +@.str1742 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1743 = private unnamed_addr constant [7 x i8] c"length\00" +@.str1744 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1745 = private unnamed_addr constant [3 x i8] c", \00" +@.str1746 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" +@.str1747 = private unnamed_addr constant [2 x i8] c")\00" +@.str1748 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1749 = private unnamed_addr constant [9 x i8] c"distance\00" +@.str1750 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1751 = private unnamed_addr constant [3 x i8] c", \00" +@.str1752 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1753 = private unnamed_addr constant [3 x i8] c", \00" +@.str1754 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1755 = private unnamed_addr constant [3 x i8] c", \00" +@.str1756 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" +@.str1757 = private unnamed_addr constant [2 x i8] c")\00" +@.str1758 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1759 = private unnamed_addr constant [10 x i8] c"normalize\00" +@.str1760 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1761 = private unnamed_addr constant [3 x i8] c", \00" +@.str1762 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_sqrt(i32 \00" +@.str1763 = private unnamed_addr constant [2 x i8] c")\00" +@.str1764 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str1765 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str1766 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1767 = private unnamed_addr constant [18 x i8] c", i32 65536, i32 \00" +@.str1768 = private unnamed_addr constant [6 x i8] c"65536\00" +@.str1769 = private unnamed_addr constant [7 x i8] c"Vector\00" +@.str1770 = private unnamed_addr constant [7 x i8] c"rotate\00" +@.str1771 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" +@.str1772 = private unnamed_addr constant [2 x i8] c")\00" +@.str1773 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1774 = private unnamed_addr constant [9 x i8] c", 102944\00" +@.str1775 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" +@.str1776 = private unnamed_addr constant [2 x i8] c")\00" +@.str1777 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1778 = private unnamed_addr constant [3 x i8] c", \00" +@.str1779 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1780 = private unnamed_addr constant [3 x i8] c", \00" +@.str1781 = private unnamed_addr constant [7 x i8] c"Vector\00" +@.str1782 = private unnamed_addr constant [6 x i8] c"angle\00" +@.str1783 = private unnamed_addr constant [27 x i8] c"call i32 @lp_fx_atan2(i32 \00" +@.str1784 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1785 = private unnamed_addr constant [2 x i8] c")\00" +@.str1786 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1787 = private unnamed_addr constant [11 x i8] c"from_angle\00" +@.str1788 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" +@.str1789 = private unnamed_addr constant [2 x i8] c")\00" +@.str1790 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1791 = private unnamed_addr constant [9 x i8] c", 102944\00" +@.str1792 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" +@.str1793 = private unnamed_addr constant [2 x i8] c")\00" +@.str1794 = private unnamed_addr constant [7 x i8] c"Vector\00" +@.str1795 = private unnamed_addr constant [7 x i8] c"Vector\00" +@.str1796 = private unnamed_addr constant [12 x i8] c"sub i32 0, \00" +@.str1797 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str1798 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str1799 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str1800 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1801 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1802 = private unnamed_addr constant [5 x i8] c"make\00" +@.str1803 = private unnamed_addr constant [5 x i8] c"zero\00" +@.str1804 = private unnamed_addr constant [2 x i8] c"x\00" +@.str1805 = private unnamed_addr constant [2 x i8] c"y\00" +@.str1806 = private unnamed_addr constant [4 x i8] c"add\00" +@.str1807 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str1808 = private unnamed_addr constant [6 x i8] c"scale\00" +@.str1809 = private unnamed_addr constant [4 x i8] c"dot\00" +@.str1810 = private unnamed_addr constant [6 x i8] c"equal\00" +@.str1811 = private unnamed_addr constant [10 x i8] c"manhattan\00" +@.str1812 = private unnamed_addr constant [10 x i8] c"to_vector\00" +@.str1813 = private unnamed_addr constant [10 x i8] c"distance2\00" +@.str1814 = private unnamed_addr constant [7 x i8] c"within\00" +@.str1815 = private unnamed_addr constant [8 x i8] c"heading\00" +@.str1816 = private unnamed_addr constant [6 x i8] c"along\00" +@.str1817 = private unnamed_addr constant [5 x i8] c"step\00" +@.str1818 = private unnamed_addr constant [5 x i8] c"zero\00" +@.str1819 = private unnamed_addr constant [2 x i8] c"0\00" +@.str1820 = private unnamed_addr constant [6 x i8] c"IVec2\00" +@.str1821 = private unnamed_addr constant [5 x i8] c"make\00" +@.str1822 = private unnamed_addr constant [6 x i8] c"IVec2\00" +@.str1823 = private unnamed_addr constant [2 x i8] c"x\00" +@.str1824 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1825 = private unnamed_addr constant [2 x i8] c"y\00" +@.str1826 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1827 = private unnamed_addr constant [10 x i8] c"distance2\00" +@.str1828 = private unnamed_addr constant [7 x i8] c"within\00" +@.str1829 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1830 = private unnamed_addr constant [3 x i8] c", \00" +@.str1831 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1832 = private unnamed_addr constant [3 x i8] c", \00" +@.str1833 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str1834 = private unnamed_addr constant [3 x i8] c", \00" +@.str1835 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str1836 = private unnamed_addr constant [3 x i8] c", \00" +@.str1837 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1838 = private unnamed_addr constant [3 x i8] c", \00" +@.str1839 = private unnamed_addr constant [10 x i8] c"distance2\00" +@.str1840 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1841 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str1842 = private unnamed_addr constant [3 x i8] c", \00" +@.str1843 = private unnamed_addr constant [14 x i8] c"icmp sle i32 \00" +@.str1844 = private unnamed_addr constant [3 x i8] c", \00" +@.str1845 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str1846 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str1847 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str1848 = private unnamed_addr constant [8 x i8] c"heading\00" +@.str1849 = private unnamed_addr constant [16 x i8] c"rt_ivec_heading\00" +@.str1850 = private unnamed_addr constant [39 x i8] c"IVec2.heading needs the engine runtime\00" +@.str1851 = private unnamed_addr constant [34 x i8] c"call i32 @fn_rt_ivec_heading(i64 \00" +@.str1852 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str1853 = private unnamed_addr constant [2 x i8] c")\00" +@.str1854 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1855 = private unnamed_addr constant [6 x i8] c"along\00" +@.str1856 = private unnamed_addr constant [14 x i8] c"rt_ivec_along\00" +@.str1857 = private unnamed_addr constant [37 x i8] c"IVec2.along needs the engine runtime\00" +@.str1858 = private unnamed_addr constant [32 x i8] c"call i64 @fn_rt_ivec_along(i64 \00" +@.str1859 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1860 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str1861 = private unnamed_addr constant [2 x i8] c")\00" +@.str1862 = private unnamed_addr constant [6 x i8] c"IVec2\00" +@.str1863 = private unnamed_addr constant [5 x i8] c"step\00" +@.str1864 = private unnamed_addr constant [13 x i8] c"rt_ivec_step\00" +@.str1865 = private unnamed_addr constant [36 x i8] c"IVec2.step needs the engine runtime\00" +@.str1866 = private unnamed_addr constant [31 x i8] c"call i64 @fn_rt_ivec_step(i32 \00" +@.str1867 = private unnamed_addr constant [2 x i8] c")\00" +@.str1868 = private unnamed_addr constant [6 x i8] c"IVec2\00" +@.str1869 = private unnamed_addr constant [4 x i8] c"add\00" +@.str1870 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1871 = private unnamed_addr constant [3 x i8] c", \00" +@.str1872 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1873 = private unnamed_addr constant [3 x i8] c", \00" +@.str1874 = private unnamed_addr constant [6 x i8] c"IVec2\00" +@.str1875 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str1876 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1877 = private unnamed_addr constant [3 x i8] c", \00" +@.str1878 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1879 = private unnamed_addr constant [3 x i8] c", \00" +@.str1880 = private unnamed_addr constant [6 x i8] c"IVec2\00" +@.str1881 = private unnamed_addr constant [6 x i8] c"scale\00" +@.str1882 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str1883 = private unnamed_addr constant [3 x i8] c", \00" +@.str1884 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str1885 = private unnamed_addr constant [3 x i8] c", \00" +@.str1886 = private unnamed_addr constant [6 x i8] c"IVec2\00" +@.str1887 = private unnamed_addr constant [4 x i8] c"dot\00" +@.str1888 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str1889 = private unnamed_addr constant [3 x i8] c", \00" +@.str1890 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str1891 = private unnamed_addr constant [3 x i8] c", \00" +@.str1892 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1893 = private unnamed_addr constant [3 x i8] c", \00" +@.str1894 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1895 = private unnamed_addr constant [6 x i8] c"equal\00" +@.str1896 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" +@.str1897 = private unnamed_addr constant [3 x i8] c", \00" +@.str1898 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str1899 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str1900 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str1901 = private unnamed_addr constant [10 x i8] c"manhattan\00" +@.str1902 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1903 = private unnamed_addr constant [3 x i8] c", \00" +@.str1904 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str1905 = private unnamed_addr constant [3 x i8] c", \00" +@.str1906 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1907 = private unnamed_addr constant [3 x i8] c", \00" +@.str1908 = private unnamed_addr constant [4 x i8] c"int\00" +@.str1909 = private unnamed_addr constant [9 x i8] c"shl i32 \00" +@.str1910 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str1911 = private unnamed_addr constant [9 x i8] c"shl i32 \00" +@.str1912 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str1913 = private unnamed_addr constant [7 x i8] c"Vector\00" +@.str1914 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str1915 = private unnamed_addr constant [9 x i8] c" to i128\00" +@.str1916 = private unnamed_addr constant [10 x i8] c"shl i128 \00" +@.str1917 = private unnamed_addr constant [5 x i8] c", 96\00" +@.str1918 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str1919 = private unnamed_addr constant [9 x i8] c" to i128\00" +@.str1920 = private unnamed_addr constant [10 x i8] c"shl i128 \00" +@.str1921 = private unnamed_addr constant [5 x i8] c", 64\00" +@.str1922 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str1923 = private unnamed_addr constant [9 x i8] c" to i128\00" +@.str1924 = private unnamed_addr constant [10 x i8] c"shl i128 \00" +@.str1925 = private unnamed_addr constant [5 x i8] c", 32\00" +@.str1926 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str1927 = private unnamed_addr constant [9 x i8] c" to i128\00" +@.str1928 = private unnamed_addr constant [9 x i8] c"or i128 \00" +@.str1929 = private unnamed_addr constant [3 x i8] c", \00" +@.str1930 = private unnamed_addr constant [9 x i8] c"or i128 \00" +@.str1931 = private unnamed_addr constant [3 x i8] c", \00" +@.str1932 = private unnamed_addr constant [9 x i8] c"or i128 \00" +@.str1933 = private unnamed_addr constant [3 x i8] c", \00" +@.str1934 = private unnamed_addr constant [12 x i8] c"trunc i128 \00" +@.str1935 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str1936 = private unnamed_addr constant [11 x i8] c"lshr i128 \00" +@.str1937 = private unnamed_addr constant [3 x i8] c", \00" +@.str1938 = private unnamed_addr constant [12 x i8] c"trunc i128 \00" +@.str1939 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str1940 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str1941 = private unnamed_addr constant [6 x i8] c" i32 \00" +@.str1942 = private unnamed_addr constant [3 x i8] c", \00" +@.str1943 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str1944 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str1945 = private unnamed_addr constant [5 x i8] c"make\00" +@.str1946 = private unnamed_addr constant [2 x i8] c"x\00" +@.str1947 = private unnamed_addr constant [2 x i8] c"y\00" +@.str1948 = private unnamed_addr constant [2 x i8] c"w\00" +@.str1949 = private unnamed_addr constant [2 x i8] c"h\00" +@.str1950 = private unnamed_addr constant [6 x i8] c"right\00" +@.str1951 = private unnamed_addr constant [7 x i8] c"bottom\00" +@.str1952 = private unnamed_addr constant [7 x i8] c"center\00" +@.str1953 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str1954 = private unnamed_addr constant [11 x i8] c"intersects\00" +@.str1955 = private unnamed_addr constant [5 x i8] c"make\00" +@.str1956 = private unnamed_addr constant [5 x i8] c"Rect\00" +@.str1957 = private unnamed_addr constant [2 x i8] c"x\00" +@.str1958 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1959 = private unnamed_addr constant [2 x i8] c"y\00" +@.str1960 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1961 = private unnamed_addr constant [2 x i8] c"w\00" +@.str1962 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1963 = private unnamed_addr constant [2 x i8] c"h\00" +@.str1964 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1965 = private unnamed_addr constant [6 x i8] c"right\00" +@.str1966 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1967 = private unnamed_addr constant [3 x i8] c", \00" +@.str1968 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1969 = private unnamed_addr constant [7 x i8] c"bottom\00" +@.str1970 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1971 = private unnamed_addr constant [3 x i8] c", \00" +@.str1972 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str1973 = private unnamed_addr constant [7 x i8] c"center\00" +@.str1974 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str1975 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str1976 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str1977 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str1978 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1979 = private unnamed_addr constant [3 x i8] c", \00" +@.str1980 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1981 = private unnamed_addr constant [3 x i8] c", \00" +@.str1982 = private unnamed_addr constant [7 x i8] c"Vector\00" +@.str1983 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str1984 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1985 = private unnamed_addr constant [3 x i8] c", \00" +@.str1986 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str1987 = private unnamed_addr constant [3 x i8] c", \00" +@.str1988 = private unnamed_addr constant [4 x i8] c"sge\00" +@.str1989 = private unnamed_addr constant [4 x i8] c"slt\00" +@.str1990 = private unnamed_addr constant [4 x i8] c"sge\00" +@.str1991 = private unnamed_addr constant [4 x i8] c"slt\00" +@.str1992 = private unnamed_addr constant [9 x i8] c"and i32 \00" +@.str1993 = private unnamed_addr constant [3 x i8] c", \00" +@.str1994 = private unnamed_addr constant [9 x i8] c"and i32 \00" +@.str1995 = private unnamed_addr constant [3 x i8] c", \00" +@.str1996 = private unnamed_addr constant [9 x i8] c"and i32 \00" @.str1997 = private unnamed_addr constant [3 x i8] c", \00" -@.str1998 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str1999 = private unnamed_addr constant [3 x i8] c", \00" -@.str2000 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str2001 = private unnamed_addr constant [3 x i8] c", \00" -@.str2002 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str2003 = private unnamed_addr constant [3 x i8] c", \00" -@.str2004 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str2005 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str2006 = private unnamed_addr constant [4 x i8] c"slt\00" +@.str1998 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str1999 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str2000 = private unnamed_addr constant [3 x i8] c", \00" +@.str2001 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str2002 = private unnamed_addr constant [3 x i8] c", \00" +@.str2003 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str2004 = private unnamed_addr constant [3 x i8] c", \00" +@.str2005 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str2006 = private unnamed_addr constant [3 x i8] c", \00" @.str2007 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str2008 = private unnamed_addr constant [9 x i8] c"and i32 \00" -@.str2009 = private unnamed_addr constant [3 x i8] c", \00" -@.str2010 = private unnamed_addr constant [9 x i8] c"and i32 \00" -@.str2011 = private unnamed_addr constant [3 x i8] c", \00" -@.str2012 = private unnamed_addr constant [9 x i8] c"and i32 \00" -@.str2013 = private unnamed_addr constant [3 x i8] c", \00" -@.str2014 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str2015 = private unnamed_addr constant [7 x i8] c"length\00" -@.str2016 = private unnamed_addr constant [8 x i8] c"char_at\00" -@.str2017 = private unnamed_addr constant [6 x i8] c"slice\00" -@.str2018 = private unnamed_addr constant [7 x i8] c"equals\00" -@.str2019 = private unnamed_addr constant [7 x i8] c"concat\00" -@.str2020 = private unnamed_addr constant [7 x i8] c"to_int\00" -@.str2021 = private unnamed_addr constant [9 x i8] c"from_int\00" -@.str2022 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str2023 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str2024 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str2025 = private unnamed_addr constant [9 x i8] c"index_of\00" -@.str2026 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str2027 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str2028 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str2029 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str2030 = private unnamed_addr constant [9 x i8] c"pad_left\00" -@.str2031 = private unnamed_addr constant [10 x i8] c"pad_right\00" -@.str2032 = private unnamed_addr constant [6 x i8] c"split\00" -@.str2033 = private unnamed_addr constant [5 x i8] c"join\00" -@.str2034 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str2035 = private unnamed_addr constant [9 x i8] c"from_int\00" -@.str2036 = private unnamed_addr constant [26 x i8] c"call ptr @lp_int_str(i32 \00" -@.str2037 = private unnamed_addr constant [2 x i8] c")\00" -@.str2038 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2039 = private unnamed_addr constant [6 x i8] c"slice\00" -@.str2040 = private unnamed_addr constant [28 x i8] c"call ptr @lp_str_slice(ptr \00" -@.str2041 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str2042 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str2043 = private unnamed_addr constant [2 x i8] c")\00" -@.str2044 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2045 = private unnamed_addr constant [7 x i8] c"equals\00" -@.str2046 = private unnamed_addr constant [25 x i8] c"call i32 @lp_str_eq(ptr \00" -@.str2047 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str2048 = private unnamed_addr constant [2 x i8] c")\00" -@.str2049 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str2050 = private unnamed_addr constant [7 x i8] c"concat\00" -@.str2051 = private unnamed_addr constant [29 x i8] c"call ptr @lp_str_concat(ptr \00" -@.str2052 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str2053 = private unnamed_addr constant [2 x i8] c")\00" -@.str2054 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2055 = private unnamed_addr constant [7 x i8] c"length\00" -@.str2056 = private unnamed_addr constant [22 x i8] c"call i64 @strlen(ptr \00" -@.str2057 = private unnamed_addr constant [2 x i8] c")\00" -@.str2058 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str2059 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str2060 = private unnamed_addr constant [4 x i8] c"int\00" -@.str2061 = private unnamed_addr constant [8 x i8] c"char_at\00" -@.str2062 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str2063 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str2064 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" -@.str2065 = private unnamed_addr constant [9 x i8] c"zext i8 \00" -@.str2066 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str2067 = private unnamed_addr constant [4 x i8] c"int\00" -@.str2068 = private unnamed_addr constant [7 x i8] c"to_int\00" -@.str2069 = private unnamed_addr constant [20 x i8] c"call i32 @atoi(ptr \00" -@.str2070 = private unnamed_addr constant [2 x i8] c")\00" -@.str2071 = private unnamed_addr constant [4 x i8] c"int\00" -@.str2072 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str2073 = private unnamed_addr constant [28 x i8] c"call ptr @lp_str_upper(ptr \00" -@.str2074 = private unnamed_addr constant [2 x i8] c")\00" -@.str2075 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2076 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str2077 = private unnamed_addr constant [28 x i8] c"call ptr @lp_str_lower(ptr \00" -@.str2078 = private unnamed_addr constant [2 x i8] c")\00" -@.str2079 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2080 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str2081 = private unnamed_addr constant [27 x i8] c"call ptr @lp_str_trim(ptr \00" -@.str2082 = private unnamed_addr constant [2 x i8] c")\00" -@.str2083 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2084 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str2085 = private unnamed_addr constant [29 x i8] c"call ptr @lp_str_repeat(ptr \00" -@.str2086 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str2087 = private unnamed_addr constant [2 x i8] c")\00" -@.str2088 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2089 = private unnamed_addr constant [9 x i8] c"pad_left\00" -@.str2090 = private unnamed_addr constant [26 x i8] c"call ptr @lp_str_pad(ptr \00" -@.str2091 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str2092 = private unnamed_addr constant [8 x i8] c", i1 1)\00" -@.str2093 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2094 = private unnamed_addr constant [10 x i8] c"pad_right\00" -@.str2095 = private unnamed_addr constant [26 x i8] c"call ptr @lp_str_pad(ptr \00" -@.str2096 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str2097 = private unnamed_addr constant [8 x i8] c", i1 0)\00" -@.str2098 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2099 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str2100 = private unnamed_addr constant [30 x i8] c"call ptr @lp_str_replace(ptr \00" -@.str2101 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str2102 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str2103 = private unnamed_addr constant [2 x i8] c")\00" -@.str2104 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2105 = private unnamed_addr constant [6 x i8] c"split\00" -@.str2106 = private unnamed_addr constant [28 x i8] c"call ptr @lp_str_split(ptr \00" -@.str2107 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str2108 = private unnamed_addr constant [2 x i8] c")\00" -@.str2109 = private unnamed_addr constant [9 x i8] c"[]string\00" -@.str2110 = private unnamed_addr constant [5 x i8] c"join\00" -@.str2111 = private unnamed_addr constant [27 x i8] c"call ptr @lp_str_join(ptr \00" -@.str2112 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str2113 = private unnamed_addr constant [2 x i8] c")\00" -@.str2114 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2115 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str2116 = private unnamed_addr constant [9 x i8] c"index_of\00" -@.str2117 = private unnamed_addr constant [22 x i8] c"call ptr @strstr(ptr \00" -@.str2118 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str2119 = private unnamed_addr constant [2 x i8] c")\00" -@.str2120 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str2121 = private unnamed_addr constant [13 x i8] c"icmp ne ptr \00" -@.str2122 = private unnamed_addr constant [7 x i8] c", null\00" -@.str2123 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str2124 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str2125 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str2126 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str2127 = private unnamed_addr constant [7 x i8] c", null\00" -@.str2128 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str2129 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str2130 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str2131 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str2132 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str2133 = private unnamed_addr constant [3 x i8] c", \00" -@.str2134 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str2135 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str2136 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str2137 = private unnamed_addr constant [15 x i8] c", i32 -1, i32 \00" -@.str2138 = private unnamed_addr constant [4 x i8] c"int\00" -@.str2139 = private unnamed_addr constant [22 x i8] c"call i64 @strlen(ptr \00" -@.str2140 = private unnamed_addr constant [2 x i8] c")\00" -@.str2141 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str2142 = private unnamed_addr constant [23 x i8] c"call i32 @strncmp(ptr \00" -@.str2143 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str2144 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str2145 = private unnamed_addr constant [2 x i8] c")\00" -@.str2146 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str2147 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str2148 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str2149 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str2150 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str2151 = private unnamed_addr constant [22 x i8] c"call i64 @strlen(ptr \00" -@.str2152 = private unnamed_addr constant [2 x i8] c")\00" -@.str2153 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str2154 = private unnamed_addr constant [3 x i8] c", \00" -@.str2155 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str2156 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str2157 = private unnamed_addr constant [2 x i8] c"0\00" -@.str2158 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str2159 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str2160 = private unnamed_addr constant [7 x i8] c"ew_cmp\00" -@.str2161 = private unnamed_addr constant [7 x i8] c"ew_end\00" -@.str2162 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str2163 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str2164 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str2165 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str2166 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str2167 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str2168 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str2169 = private unnamed_addr constant [23 x i8] c"call i32 @strncmp(ptr \00" -@.str2170 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str2008 = private unnamed_addr constant [4 x i8] c"slt\00" +@.str2009 = private unnamed_addr constant [4 x i8] c"slt\00" +@.str2010 = private unnamed_addr constant [4 x i8] c"slt\00" +@.str2011 = private unnamed_addr constant [9 x i8] c"and i32 \00" +@.str2012 = private unnamed_addr constant [3 x i8] c", \00" +@.str2013 = private unnamed_addr constant [9 x i8] c"and i32 \00" +@.str2014 = private unnamed_addr constant [3 x i8] c", \00" +@.str2015 = private unnamed_addr constant [9 x i8] c"and i32 \00" +@.str2016 = private unnamed_addr constant [3 x i8] c", \00" +@.str2017 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str2018 = private unnamed_addr constant [7 x i8] c"length\00" +@.str2019 = private unnamed_addr constant [8 x i8] c"char_at\00" +@.str2020 = private unnamed_addr constant [6 x i8] c"slice\00" +@.str2021 = private unnamed_addr constant [7 x i8] c"equals\00" +@.str2022 = private unnamed_addr constant [7 x i8] c"concat\00" +@.str2023 = private unnamed_addr constant [7 x i8] c"to_int\00" +@.str2024 = private unnamed_addr constant [9 x i8] c"from_int\00" +@.str2025 = private unnamed_addr constant [12 x i8] c"starts_with\00" +@.str2026 = private unnamed_addr constant [10 x i8] c"ends_with\00" +@.str2027 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str2028 = private unnamed_addr constant [9 x i8] c"index_of\00" +@.str2029 = private unnamed_addr constant [6 x i8] c"upper\00" +@.str2030 = private unnamed_addr constant [6 x i8] c"lower\00" +@.str2031 = private unnamed_addr constant [5 x i8] c"trim\00" +@.str2032 = private unnamed_addr constant [7 x i8] c"repeat\00" +@.str2033 = private unnamed_addr constant [9 x i8] c"pad_left\00" +@.str2034 = private unnamed_addr constant [10 x i8] c"pad_right\00" +@.str2035 = private unnamed_addr constant [6 x i8] c"split\00" +@.str2036 = private unnamed_addr constant [5 x i8] c"join\00" +@.str2037 = private unnamed_addr constant [8 x i8] c"replace\00" +@.str2038 = private unnamed_addr constant [9 x i8] c"from_int\00" +@.str2039 = private unnamed_addr constant [26 x i8] c"call ptr @lp_int_str(i32 \00" +@.str2040 = private unnamed_addr constant [2 x i8] c")\00" +@.str2041 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2042 = private unnamed_addr constant [6 x i8] c"slice\00" +@.str2043 = private unnamed_addr constant [28 x i8] c"call ptr @lp_str_slice(ptr \00" +@.str2044 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str2045 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str2046 = private unnamed_addr constant [2 x i8] c")\00" +@.str2047 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2048 = private unnamed_addr constant [7 x i8] c"equals\00" +@.str2049 = private unnamed_addr constant [25 x i8] c"call i32 @lp_str_eq(ptr \00" +@.str2050 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str2051 = private unnamed_addr constant [2 x i8] c")\00" +@.str2052 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str2053 = private unnamed_addr constant [7 x i8] c"concat\00" +@.str2054 = private unnamed_addr constant [29 x i8] c"call ptr @lp_str_concat(ptr \00" +@.str2055 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str2056 = private unnamed_addr constant [2 x i8] c")\00" +@.str2057 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2058 = private unnamed_addr constant [7 x i8] c"length\00" +@.str2059 = private unnamed_addr constant [22 x i8] c"call i64 @strlen(ptr \00" +@.str2060 = private unnamed_addr constant [2 x i8] c")\00" +@.str2061 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str2062 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str2063 = private unnamed_addr constant [4 x i8] c"int\00" +@.str2064 = private unnamed_addr constant [8 x i8] c"char_at\00" +@.str2065 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" +@.str2066 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str2067 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" +@.str2068 = private unnamed_addr constant [9 x i8] c"zext i8 \00" +@.str2069 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str2070 = private unnamed_addr constant [4 x i8] c"int\00" +@.str2071 = private unnamed_addr constant [7 x i8] c"to_int\00" +@.str2072 = private unnamed_addr constant [20 x i8] c"call i32 @atoi(ptr \00" +@.str2073 = private unnamed_addr constant [2 x i8] c")\00" +@.str2074 = private unnamed_addr constant [4 x i8] c"int\00" +@.str2075 = private unnamed_addr constant [6 x i8] c"upper\00" +@.str2076 = private unnamed_addr constant [28 x i8] c"call ptr @lp_str_upper(ptr \00" +@.str2077 = private unnamed_addr constant [2 x i8] c")\00" +@.str2078 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2079 = private unnamed_addr constant [6 x i8] c"lower\00" +@.str2080 = private unnamed_addr constant [28 x i8] c"call ptr @lp_str_lower(ptr \00" +@.str2081 = private unnamed_addr constant [2 x i8] c")\00" +@.str2082 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2083 = private unnamed_addr constant [5 x i8] c"trim\00" +@.str2084 = private unnamed_addr constant [27 x i8] c"call ptr @lp_str_trim(ptr \00" +@.str2085 = private unnamed_addr constant [2 x i8] c")\00" +@.str2086 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2087 = private unnamed_addr constant [7 x i8] c"repeat\00" +@.str2088 = private unnamed_addr constant [29 x i8] c"call ptr @lp_str_repeat(ptr \00" +@.str2089 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str2090 = private unnamed_addr constant [2 x i8] c")\00" +@.str2091 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2092 = private unnamed_addr constant [9 x i8] c"pad_left\00" +@.str2093 = private unnamed_addr constant [26 x i8] c"call ptr @lp_str_pad(ptr \00" +@.str2094 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str2095 = private unnamed_addr constant [8 x i8] c", i1 1)\00" +@.str2096 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2097 = private unnamed_addr constant [10 x i8] c"pad_right\00" +@.str2098 = private unnamed_addr constant [26 x i8] c"call ptr @lp_str_pad(ptr \00" +@.str2099 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str2100 = private unnamed_addr constant [8 x i8] c", i1 0)\00" +@.str2101 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2102 = private unnamed_addr constant [8 x i8] c"replace\00" +@.str2103 = private unnamed_addr constant [30 x i8] c"call ptr @lp_str_replace(ptr \00" +@.str2104 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str2105 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str2106 = private unnamed_addr constant [2 x i8] c")\00" +@.str2107 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2108 = private unnamed_addr constant [6 x i8] c"split\00" +@.str2109 = private unnamed_addr constant [28 x i8] c"call ptr @lp_str_split(ptr \00" +@.str2110 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str2111 = private unnamed_addr constant [2 x i8] c")\00" +@.str2112 = private unnamed_addr constant [9 x i8] c"[]string\00" +@.str2113 = private unnamed_addr constant [5 x i8] c"join\00" +@.str2114 = private unnamed_addr constant [27 x i8] c"call ptr @lp_str_join(ptr \00" +@.str2115 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str2116 = private unnamed_addr constant [2 x i8] c")\00" +@.str2117 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2118 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str2119 = private unnamed_addr constant [9 x i8] c"index_of\00" +@.str2120 = private unnamed_addr constant [22 x i8] c"call ptr @strstr(ptr \00" +@.str2121 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str2122 = private unnamed_addr constant [2 x i8] c")\00" +@.str2123 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str2124 = private unnamed_addr constant [13 x i8] c"icmp ne ptr \00" +@.str2125 = private unnamed_addr constant [7 x i8] c", null\00" +@.str2126 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str2127 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str2128 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str2129 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str2130 = private unnamed_addr constant [7 x i8] c", null\00" +@.str2131 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" +@.str2132 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str2133 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" +@.str2134 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str2135 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str2136 = private unnamed_addr constant [3 x i8] c", \00" +@.str2137 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str2138 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str2139 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str2140 = private unnamed_addr constant [15 x i8] c", i32 -1, i32 \00" +@.str2141 = private unnamed_addr constant [4 x i8] c"int\00" +@.str2142 = private unnamed_addr constant [22 x i8] c"call i64 @strlen(ptr \00" +@.str2143 = private unnamed_addr constant [2 x i8] c")\00" +@.str2144 = private unnamed_addr constant [12 x i8] c"starts_with\00" +@.str2145 = private unnamed_addr constant [23 x i8] c"call i32 @strncmp(ptr \00" +@.str2146 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str2147 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str2148 = private unnamed_addr constant [2 x i8] c")\00" +@.str2149 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str2150 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str2151 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str2152 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str2153 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str2154 = private unnamed_addr constant [22 x i8] c"call i64 @strlen(ptr \00" +@.str2155 = private unnamed_addr constant [2 x i8] c")\00" +@.str2156 = private unnamed_addr constant [9 x i8] c"sub i64 \00" +@.str2157 = private unnamed_addr constant [3 x i8] c", \00" +@.str2158 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str2159 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str2160 = private unnamed_addr constant [2 x i8] c"0\00" +@.str2161 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" +@.str2162 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str2163 = private unnamed_addr constant [7 x i8] c"ew_cmp\00" +@.str2164 = private unnamed_addr constant [7 x i8] c"ew_end\00" +@.str2165 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str2166 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str2167 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str2168 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str2169 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str2170 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" @.str2171 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str2172 = private unnamed_addr constant [2 x i8] c")\00" -@.str2173 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str2174 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str2175 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str2176 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str2177 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str2178 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str2179 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str2180 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str2181 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str2182 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str2183 = private unnamed_addr constant [36 x i8] c"define ptr @lp_str_upper(ptr %s) {\0A\00" -@.str2184 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str2185 = private unnamed_addr constant [33 x i8] c" %n = call i64 @strlen(ptr %s)\0A\00" -@.str2186 = private unnamed_addr constant [23 x i8] c" %sz = add i64 %n, 1\0A\00" -@.str2187 = private unnamed_addr constant [36 x i8] c" %out = call ptr @malloc(i64 %sz)\0A\00" -@.str2188 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" -@.str2189 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" -@.str2190 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" -@.str2191 = private unnamed_addr constant [7 x i8] c"cond:\0A\00" -@.str2192 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" -@.str2193 = private unnamed_addr constant [28 x i8] c" %d = icmp ult i64 %i, %n\0A\00" -@.str2194 = private unnamed_addr constant [37 x i8] c" br i1 %d, label %body, label %fin\0A\00" -@.str2195 = private unnamed_addr constant [7 x i8] c"body:\0A\00" -@.str2196 = private unnamed_addr constant [42 x i8] c" %sp = getelementptr i8, ptr %s, i64 %i\0A\00" -@.str2197 = private unnamed_addr constant [25 x i8] c" %c = load i8, ptr %sp\0A\00" -@.str2198 = private unnamed_addr constant [28 x i8] c" %ge = icmp uge i8 %c, 97\0A\00" -@.str2199 = private unnamed_addr constant [29 x i8] c" %le = icmp ule i8 %c, 122\0A\00" -@.str2200 = private unnamed_addr constant [25 x i8] c" %in = and i1 %ge, %le\0A\00" -@.str2201 = private unnamed_addr constant [24 x i8] c" %cc = add i8 %c, -32\0A\00" -@.str2202 = private unnamed_addr constant [38 x i8] c" %oc = select i1 %in, i8 %cc, i8 %c\0A\00" -@.str2203 = private unnamed_addr constant [44 x i8] c" %op = getelementptr i8, ptr %out, i64 %i\0A\00" -@.str2204 = private unnamed_addr constant [25 x i8] c" store i8 %oc, ptr %op\0A\00" -@.str2205 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" -@.str2206 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" -@.str2207 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" -@.str2208 = private unnamed_addr constant [6 x i8] c"fin:\0A\00" -@.str2209 = private unnamed_addr constant [44 x i8] c" %tp = getelementptr i8, ptr %out, i64 %n\0A\00" -@.str2210 = private unnamed_addr constant [23 x i8] c" store i8 0, ptr %tp\0A\00" -@.str2211 = private unnamed_addr constant [16 x i8] c" ret ptr %out\0A\00" -@.str2212 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str2213 = private unnamed_addr constant [36 x i8] c"define ptr @lp_str_lower(ptr %s) {\0A\00" -@.str2214 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str2215 = private unnamed_addr constant [33 x i8] c" %n = call i64 @strlen(ptr %s)\0A\00" -@.str2216 = private unnamed_addr constant [23 x i8] c" %sz = add i64 %n, 1\0A\00" -@.str2217 = private unnamed_addr constant [36 x i8] c" %out = call ptr @malloc(i64 %sz)\0A\00" -@.str2218 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" -@.str2219 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" -@.str2220 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" -@.str2221 = private unnamed_addr constant [7 x i8] c"cond:\0A\00" -@.str2222 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" -@.str2223 = private unnamed_addr constant [28 x i8] c" %d = icmp ult i64 %i, %n\0A\00" -@.str2224 = private unnamed_addr constant [37 x i8] c" br i1 %d, label %body, label %fin\0A\00" -@.str2225 = private unnamed_addr constant [7 x i8] c"body:\0A\00" -@.str2226 = private unnamed_addr constant [42 x i8] c" %sp = getelementptr i8, ptr %s, i64 %i\0A\00" -@.str2227 = private unnamed_addr constant [25 x i8] c" %c = load i8, ptr %sp\0A\00" -@.str2228 = private unnamed_addr constant [28 x i8] c" %ge = icmp uge i8 %c, 65\0A\00" -@.str2229 = private unnamed_addr constant [28 x i8] c" %le = icmp ule i8 %c, 90\0A\00" -@.str2230 = private unnamed_addr constant [25 x i8] c" %in = and i1 %ge, %le\0A\00" -@.str2231 = private unnamed_addr constant [23 x i8] c" %cc = add i8 %c, 32\0A\00" -@.str2232 = private unnamed_addr constant [38 x i8] c" %oc = select i1 %in, i8 %cc, i8 %c\0A\00" -@.str2233 = private unnamed_addr constant [44 x i8] c" %op = getelementptr i8, ptr %out, i64 %i\0A\00" -@.str2234 = private unnamed_addr constant [25 x i8] c" store i8 %oc, ptr %op\0A\00" -@.str2235 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" -@.str2236 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" -@.str2237 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" -@.str2238 = private unnamed_addr constant [6 x i8] c"fin:\0A\00" -@.str2239 = private unnamed_addr constant [44 x i8] c" %tp = getelementptr i8, ptr %out, i64 %n\0A\00" -@.str2240 = private unnamed_addr constant [23 x i8] c" store i8 0, ptr %tp\0A\00" -@.str2241 = private unnamed_addr constant [16 x i8] c" ret ptr %out\0A\00" -@.str2242 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str2243 = private unnamed_addr constant [35 x i8] c"define ptr @lp_str_trim(ptr %s) {\0A\00" -@.str2244 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str2245 = private unnamed_addr constant [33 x i8] c" %n = call i64 @strlen(ptr %s)\0A\00" -@.str2246 = private unnamed_addr constant [20 x i8] c" %sp = alloca i64\0A\00" -@.str2247 = private unnamed_addr constant [20 x i8] c" %ep = alloca i64\0A\00" -@.str2248 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %sp\0A\00" -@.str2249 = private unnamed_addr constant [25 x i8] c" store i64 %n, ptr %ep\0A\00" -@.str2250 = private unnamed_addr constant [19 x i8] c" br label %lcond\0A\00" -@.str2251 = private unnamed_addr constant [8 x i8] c"lcond:\0A\00" -@.str2252 = private unnamed_addr constant [27 x i8] c" %a0 = load i64, ptr %sp\0A\00" -@.str2253 = private unnamed_addr constant [27 x i8] c" %e0 = load i64, ptr %ep\0A\00" -@.str2254 = private unnamed_addr constant [32 x i8] c" %lt0 = icmp ult i64 %a0, %e0\0A\00" -@.str2255 = private unnamed_addr constant [41 x i8] c" br i1 %lt0, label %lchk, label %rcond\0A\00" -@.str2256 = private unnamed_addr constant [7 x i8] c"lchk:\0A\00" -@.str2257 = private unnamed_addr constant [43 x i8] c" %p0 = getelementptr i8, ptr %s, i64 %a0\0A\00" -@.str2258 = private unnamed_addr constant [26 x i8] c" %c0 = load i8, ptr %p0\0A\00" -@.str2259 = private unnamed_addr constant [36 x i8] c" %ws0 = call i1 @lp_is_ws(i8 %c0)\0A\00" -@.str2260 = private unnamed_addr constant [41 x i8] c" br i1 %ws0, label %linc, label %rcond\0A\00" -@.str2261 = private unnamed_addr constant [7 x i8] c"linc:\0A\00" -@.str2262 = private unnamed_addr constant [24 x i8] c" %a1 = add i64 %a0, 1\0A\00" -@.str2263 = private unnamed_addr constant [26 x i8] c" store i64 %a1, ptr %sp\0A\00" -@.str2264 = private unnamed_addr constant [19 x i8] c" br label %lcond\0A\00" -@.str2265 = private unnamed_addr constant [8 x i8] c"rcond:\0A\00" -@.str2266 = private unnamed_addr constant [27 x i8] c" %a2 = load i64, ptr %sp\0A\00" -@.str2267 = private unnamed_addr constant [27 x i8] c" %e2 = load i64, ptr %ep\0A\00" -@.str2268 = private unnamed_addr constant [32 x i8] c" %lt2 = icmp ult i64 %a2, %e2\0A\00" -@.str2269 = private unnamed_addr constant [41 x i8] c" br i1 %lt2, label %rchk, label %build\0A\00" -@.str2270 = private unnamed_addr constant [7 x i8] c"rchk:\0A\00" -@.str2271 = private unnamed_addr constant [25 x i8] c" %em1 = sub i64 %e2, 1\0A\00" -@.str2272 = private unnamed_addr constant [44 x i8] c" %p1 = getelementptr i8, ptr %s, i64 %em1\0A\00" -@.str2273 = private unnamed_addr constant [26 x i8] c" %c1 = load i8, ptr %p1\0A\00" -@.str2274 = private unnamed_addr constant [36 x i8] c" %ws1 = call i1 @lp_is_ws(i8 %c1)\0A\00" -@.str2275 = private unnamed_addr constant [41 x i8] c" br i1 %ws1, label %rdec, label %build\0A\00" -@.str2276 = private unnamed_addr constant [7 x i8] c"rdec:\0A\00" -@.str2277 = private unnamed_addr constant [27 x i8] c" store i64 %em1, ptr %ep\0A\00" -@.str2278 = private unnamed_addr constant [19 x i8] c" br label %rcond\0A\00" -@.str2279 = private unnamed_addr constant [8 x i8] c"build:\0A\00" -@.str2280 = private unnamed_addr constant [27 x i8] c" %st = load i64, ptr %sp\0A\00" -@.str2281 = private unnamed_addr constant [27 x i8] c" %en = load i64, ptr %ep\0A\00" -@.str2282 = private unnamed_addr constant [27 x i8] c" %len = sub i64 %en, %st\0A\00" -@.str2283 = private unnamed_addr constant [25 x i8] c" %sz = add i64 %len, 1\0A\00" -@.str2284 = private unnamed_addr constant [36 x i8] c" %out = call ptr @malloc(i64 %sz)\0A\00" -@.str2285 = private unnamed_addr constant [44 x i8] c" %src = getelementptr i8, ptr %s, i64 %st\0A\00" -@.str2286 = private unnamed_addr constant [50 x i8] c" call ptr @memcpy(ptr %out, ptr %src, i64 %len)\0A\00" -@.str2287 = private unnamed_addr constant [46 x i8] c" %tp = getelementptr i8, ptr %out, i64 %len\0A\00" -@.str2288 = private unnamed_addr constant [23 x i8] c" store i8 0, ptr %tp\0A\00" -@.str2289 = private unnamed_addr constant [16 x i8] c" ret ptr %out\0A\00" -@.str2290 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str2291 = private unnamed_addr constant [30 x i8] c"define i1 @lp_is_ws(i8 %c) {\0A\00" -@.str2292 = private unnamed_addr constant [26 x i8] c" %a = icmp eq i8 %c, 32\0A\00" -@.str2293 = private unnamed_addr constant [25 x i8] c" %b = icmp eq i8 %c, 9\0A\00" -@.str2294 = private unnamed_addr constant [26 x i8] c" %d = icmp eq i8 %c, 10\0A\00" -@.str2295 = private unnamed_addr constant [26 x i8] c" %e = icmp eq i8 %c, 13\0A\00" -@.str2296 = private unnamed_addr constant [22 x i8] c" %ab = or i1 %a, %b\0A\00" -@.str2297 = private unnamed_addr constant [22 x i8] c" %de = or i1 %d, %e\0A\00" -@.str2298 = private unnamed_addr constant [23 x i8] c" %r = or i1 %ab, %de\0A\00" -@.str2299 = private unnamed_addr constant [13 x i8] c" ret i1 %r\0A\00" -@.str2300 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str2301 = private unnamed_addr constant [47 x i8] c"define ptr @lp_str_repeat(ptr %s, i32 %n32) {\0A\00" -@.str2302 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str2303 = private unnamed_addr constant [32 x i8] c" %nneg = icmp slt i32 %n32, 0\0A\00" -@.str2304 = private unnamed_addr constant [42 x i8] c" %nn = select i1 %nneg, i32 0, i32 %n32\0A\00" -@.str2305 = private unnamed_addr constant [28 x i8] c" %n = zext i32 %nn to i64\0A\00" -@.str2306 = private unnamed_addr constant [33 x i8] c" %L = call i64 @strlen(ptr %s)\0A\00" -@.str2307 = private unnamed_addr constant [25 x i8] c" %tot = mul i64 %L, %n\0A\00" -@.str2308 = private unnamed_addr constant [25 x i8] c" %sz = add i64 %tot, 1\0A\00" -@.str2309 = private unnamed_addr constant [36 x i8] c" %out = call ptr @malloc(i64 %sz)\0A\00" -@.str2310 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" -@.str2311 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" -@.str2312 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" -@.str2313 = private unnamed_addr constant [7 x i8] c"cond:\0A\00" -@.str2314 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" -@.str2315 = private unnamed_addr constant [28 x i8] c" %d = icmp ult i64 %i, %n\0A\00" -@.str2316 = private unnamed_addr constant [37 x i8] c" br i1 %d, label %body, label %fin\0A\00" -@.str2317 = private unnamed_addr constant [7 x i8] c"body:\0A\00" -@.str2318 = private unnamed_addr constant [25 x i8] c" %off = mul i64 %i, %L\0A\00" -@.str2319 = private unnamed_addr constant [47 x i8] c" %dst = getelementptr i8, ptr %out, i64 %off\0A\00" -@.str2320 = private unnamed_addr constant [46 x i8] c" call ptr @memcpy(ptr %dst, ptr %s, i64 %L)\0A\00" -@.str2321 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" -@.str2322 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" -@.str2323 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" -@.str2324 = private unnamed_addr constant [6 x i8] c"fin:\0A\00" -@.str2325 = private unnamed_addr constant [46 x i8] c" %tp = getelementptr i8, ptr %out, i64 %tot\0A\00" -@.str2326 = private unnamed_addr constant [23 x i8] c" store i8 0, ptr %tp\0A\00" -@.str2327 = private unnamed_addr constant [16 x i8] c" ret ptr %out\0A\00" -@.str2328 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str2329 = private unnamed_addr constant [54 x i8] c"define ptr @lp_str_pad(ptr %s, i32 %w32, i1 %left) {\0A\00" -@.str2330 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str2331 = private unnamed_addr constant [33 x i8] c" %L = call i64 @strlen(ptr %s)\0A\00" -@.str2332 = private unnamed_addr constant [30 x i8] c" %w0 = sext i32 %w32 to i64\0A\00" -@.str2333 = private unnamed_addr constant [32 x i8] c" %need = icmp ugt i64 %w0, %L\0A\00" -@.str2334 = private unnamed_addr constant [39 x i8] c" br i1 %need, label %do, label %copy\0A\00" -@.str2335 = private unnamed_addr constant [7 x i8] c"copy:\0A\00" -@.str2336 = private unnamed_addr constant [24 x i8] c" %sz0 = add i64 %L, 1\0A\00" -@.str2337 = private unnamed_addr constant [36 x i8] c" %o0 = call ptr @malloc(i64 %sz0)\0A\00" -@.str2338 = private unnamed_addr constant [23 x i8] c" %e0 = add i64 %L, 0\0A\00" -@.str2339 = private unnamed_addr constant [45 x i8] c" call ptr @memcpy(ptr %o0, ptr %s, i64 %L)\0A\00" -@.str2340 = private unnamed_addr constant [43 x i8] c" %t0 = getelementptr i8, ptr %o0, i64 %L\0A\00" -@.str2341 = private unnamed_addr constant [23 x i8] c" store i8 0, ptr %t0\0A\00" -@.str2342 = private unnamed_addr constant [15 x i8] c" ret ptr %o0\0A\00" -@.str2343 = private unnamed_addr constant [5 x i8] c"do:\0A\00" -@.str2344 = private unnamed_addr constant [26 x i8] c" %pad = sub i64 %w0, %L\0A\00" -@.str2345 = private unnamed_addr constant [24 x i8] c" %sz = add i64 %w0, 1\0A\00" -@.str2346 = private unnamed_addr constant [36 x i8] c" %out = call ptr @malloc(i64 %sz)\0A\00" -@.str2347 = private unnamed_addr constant [48 x i8] c" br i1 %left, label %padleft, label %padright\0A\00" -@.str2348 = private unnamed_addr constant [10 x i8] c"padleft:\0A\00" -@.str2349 = private unnamed_addr constant [52 x i8] c" call void @lp_fill_sp(ptr %out, i64 0, i64 %pad)\0A\00" -@.str2350 = private unnamed_addr constant [48 x i8] c" %dstL = getelementptr i8, ptr %out, i64 %pad\0A\00" -@.str2351 = private unnamed_addr constant [47 x i8] c" call ptr @memcpy(ptr %dstL, ptr %s, i64 %L)\0A\00" -@.str2352 = private unnamed_addr constant [18 x i8] c" br label %term\0A\00" -@.str2353 = private unnamed_addr constant [11 x i8] c"padright:\0A\00" -@.str2354 = private unnamed_addr constant [46 x i8] c" call ptr @memcpy(ptr %out, ptr %s, i64 %L)\0A\00" -@.str2355 = private unnamed_addr constant [53 x i8] c" call void @lp_fill_sp(ptr %out, i64 %L, i64 %pad)\0A\00" -@.str2356 = private unnamed_addr constant [18 x i8] c" br label %term\0A\00" -@.str2357 = private unnamed_addr constant [7 x i8] c"term:\0A\00" -@.str2358 = private unnamed_addr constant [45 x i8] c" %tp = getelementptr i8, ptr %out, i64 %w0\0A\00" -@.str2359 = private unnamed_addr constant [23 x i8] c" store i8 0, ptr %tp\0A\00" -@.str2360 = private unnamed_addr constant [16 x i8] c" ret ptr %out\0A\00" -@.str2361 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str2362 = private unnamed_addr constant [61 x i8] c"define void @lp_fill_sp(ptr %buf, i64 %start, i64 %count) {\0A\00" -@.str2363 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str2364 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" -@.str2365 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" -@.str2366 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" -@.str2367 = private unnamed_addr constant [7 x i8] c"cond:\0A\00" -@.str2368 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" -@.str2369 = private unnamed_addr constant [32 x i8] c" %d = icmp ult i64 %i, %count\0A\00" -@.str2370 = private unnamed_addr constant [38 x i8] c" br i1 %d, label %body, label %done\0A\00" -@.str2371 = private unnamed_addr constant [7 x i8] c"body:\0A\00" -@.str2372 = private unnamed_addr constant [29 x i8] c" %off = add i64 %start, %i\0A\00" -@.str2373 = private unnamed_addr constant [45 x i8] c" %p = getelementptr i8, ptr %buf, i64 %off\0A\00" -@.str2374 = private unnamed_addr constant [23 x i8] c" store i8 32, ptr %p\0A\00" -@.str2375 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" -@.str2376 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" -@.str2377 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" -@.str2378 = private unnamed_addr constant [7 x i8] c"done:\0A\00" -@.str2379 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" -@.str2380 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str2381 = private unnamed_addr constant [58 x i8] c"define ptr @lp_str_replace(ptr %s, ptr %from, ptr %to) {\0A\00" -@.str2382 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str2383 = private unnamed_addr constant [37 x i8] c" %lf = call i64 @strlen(ptr %from)\0A\00" -@.str2384 = private unnamed_addr constant [28 x i8] c" %lz = icmp eq i64 %lf, 0\0A\00" -@.str2385 = private unnamed_addr constant [42 x i8] c" br i1 %lz, label %copyall, label %scan\0A\00" -@.str2386 = private unnamed_addr constant [10 x i8] c"copyall:\0A\00" -@.str2387 = private unnamed_addr constant [35 x i8] c" %ls0 = call i64 @strlen(ptr %s)\0A\00" -@.str2388 = private unnamed_addr constant [26 x i8] c" %sz0 = add i64 %ls0, 1\0A\00" -@.str2389 = private unnamed_addr constant [36 x i8] c" %o0 = call ptr @malloc(i64 %sz0)\0A\00" -@.str2390 = private unnamed_addr constant [47 x i8] c" call ptr @memcpy(ptr %o0, ptr %s, i64 %sz0)\0A\00" -@.str2391 = private unnamed_addr constant [15 x i8] c" ret ptr %o0\0A\00" -@.str2392 = private unnamed_addr constant [7 x i8] c"scan:\0A\00" -@.str2393 = private unnamed_addr constant [35 x i8] c" %lt = call i64 @strlen(ptr %to)\0A\00" -@.str2394 = private unnamed_addr constant [34 x i8] c" %ls = call i64 @strlen(ptr %s)\0A\00" -@.str2395 = private unnamed_addr constant [22 x i8] c" %cntp = alloca i64\0A\00" -@.str2396 = private unnamed_addr constant [26 x i8] c" store i64 0, ptr %cntp\0A\00" -@.str2397 = private unnamed_addr constant [22 x i8] c" %curp = alloca ptr\0A\00" -@.str2398 = private unnamed_addr constant [27 x i8] c" store ptr %s, ptr %curp\0A\00" -@.str2399 = private unnamed_addr constant [19 x i8] c" br label %ccond\0A\00" -@.str2400 = private unnamed_addr constant [8 x i8] c"ccond:\0A\00" -@.str2401 = private unnamed_addr constant [30 x i8] c" %cur = load ptr, ptr %curp\0A\00" -@.str2402 = private unnamed_addr constant [48 x i8] c" %hit = call ptr @strstr(ptr %cur, ptr %from)\0A\00" -@.str2403 = private unnamed_addr constant [36 x i8] c" %isnull = icmp eq ptr %hit, null\0A\00" -@.str2404 = private unnamed_addr constant [44 x i8] c" br i1 %isnull, label %csize, label %cinc\0A\00" -@.str2405 = private unnamed_addr constant [7 x i8] c"cinc:\0A\00" -@.str2406 = private unnamed_addr constant [29 x i8] c" %c0 = load i64, ptr %cntp\0A\00" -@.str2407 = private unnamed_addr constant [24 x i8] c" %c1 = add i64 %c0, 1\0A\00" -@.str2408 = private unnamed_addr constant [28 x i8] c" store i64 %c1, ptr %cntp\0A\00" -@.str2409 = private unnamed_addr constant [46 x i8] c" %adv = getelementptr i8, ptr %hit, i64 %lf\0A\00" -@.str2410 = private unnamed_addr constant [29 x i8] c" store ptr %adv, ptr %curp\0A\00" -@.str2411 = private unnamed_addr constant [19 x i8] c" br label %ccond\0A\00" -@.str2412 = private unnamed_addr constant [8 x i8] c"csize:\0A\00" -@.str2413 = private unnamed_addr constant [30 x i8] c" %cnt = load i64, ptr %cntp\0A\00" -@.str2414 = private unnamed_addr constant [29 x i8] c" %delta = sub i64 %lt, %lf\0A\00" -@.str2415 = private unnamed_addr constant [32 x i8] c" %grow = mul i64 %cnt, %delta\0A\00" -@.str2416 = private unnamed_addr constant [32 x i8] c" %newlen = add i64 %ls, %grow\0A\00" -@.str2417 = private unnamed_addr constant [29 x i8] c" %osz = add i64 %newlen, 1\0A\00" -@.str2418 = private unnamed_addr constant [37 x i8] c" %out = call ptr @malloc(i64 %osz)\0A\00" -@.str2419 = private unnamed_addr constant [22 x i8] c" %srcp = alloca ptr\0A\00" -@.str2420 = private unnamed_addr constant [27 x i8] c" store ptr %s, ptr %srcp\0A\00" -@.str2421 = private unnamed_addr constant [22 x i8] c" %dstp = alloca ptr\0A\00" -@.str2422 = private unnamed_addr constant [29 x i8] c" store ptr %out, ptr %dstp\0A\00" -@.str2423 = private unnamed_addr constant [19 x i8] c" br label %bcond\0A\00" -@.str2424 = private unnamed_addr constant [8 x i8] c"bcond:\0A\00" -@.str2425 = private unnamed_addr constant [30 x i8] c" %src = load ptr, ptr %srcp\0A\00" -@.str2426 = private unnamed_addr constant [47 x i8] c" %h2 = call ptr @strstr(ptr %src, ptr %from)\0A\00" -@.str2427 = private unnamed_addr constant [31 x i8] c" %n2 = icmp eq ptr %h2, null\0A\00" -@.str2428 = private unnamed_addr constant [38 x i8] c" br i1 %n2, label %tail, label %seg\0A\00" -@.str2429 = private unnamed_addr constant [6 x i8] c"seg:\0A\00" -@.str2430 = private unnamed_addr constant [34 x i8] c" %si = ptrtoint ptr %src to i64\0A\00" -@.str2431 = private unnamed_addr constant [33 x i8] c" %hi = ptrtoint ptr %h2 to i64\0A\00" -@.str2432 = private unnamed_addr constant [30 x i8] c" %seglen = sub i64 %hi, %si\0A\00" -@.str2433 = private unnamed_addr constant [31 x i8] c" %dst0 = load ptr, ptr %dstp\0A\00" -@.str2434 = private unnamed_addr constant [54 x i8] c" call ptr @memcpy(ptr %dst0, ptr %src, i64 %seglen)\0A\00" -@.str2435 = private unnamed_addr constant [52 x i8] c" %dst1 = getelementptr i8, ptr %dst0, i64 %seglen\0A\00" -@.str2436 = private unnamed_addr constant [49 x i8] c" call ptr @memcpy(ptr %dst1, ptr %to, i64 %lt)\0A\00" -@.str2437 = private unnamed_addr constant [48 x i8] c" %dst2 = getelementptr i8, ptr %dst1, i64 %lt\0A\00" -@.str2438 = private unnamed_addr constant [30 x i8] c" store ptr %dst2, ptr %dstp\0A\00" -@.str2439 = private unnamed_addr constant [46 x i8] c" %src2 = getelementptr i8, ptr %h2, i64 %lf\0A\00" -@.str2440 = private unnamed_addr constant [30 x i8] c" store ptr %src2, ptr %srcp\0A\00" -@.str2441 = private unnamed_addr constant [19 x i8] c" br label %bcond\0A\00" -@.str2442 = private unnamed_addr constant [7 x i8] c"tail:\0A\00" -@.str2443 = private unnamed_addr constant [31 x i8] c" %src3 = load ptr, ptr %srcp\0A\00" -@.str2444 = private unnamed_addr constant [38 x i8] c" %rem = call i64 @strlen(ptr %src3)\0A\00" -@.str2445 = private unnamed_addr constant [31 x i8] c" %dst3 = load ptr, ptr %dstp\0A\00" -@.str2446 = private unnamed_addr constant [28 x i8] c" %remp1 = add i64 %rem, 1\0A\00" -@.str2447 = private unnamed_addr constant [54 x i8] c" call ptr @memcpy(ptr %dst3, ptr %src3, i64 %remp1)\0A\00" -@.str2448 = private unnamed_addr constant [16 x i8] c" ret ptr %out\0A\00" -@.str2449 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str2450 = private unnamed_addr constant [45 x i8] c"define ptr @lp_str_join(ptr %h, ptr %sep) {\0A\00" -@.str2451 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str2452 = private unnamed_addr constant [62 x i8] c" %lp = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 1\0A\00" -@.str2453 = private unnamed_addr constant [30 x i8] c" %len32 = load i32, ptr %lp\0A\00" -@.str2454 = private unnamed_addr constant [33 x i8] c" %len = sext i32 %len32 to i64\0A\00" -@.str2455 = private unnamed_addr constant [62 x i8] c" %dp = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 0\0A\00" -@.str2456 = private unnamed_addr constant [29 x i8] c" %data = load ptr, ptr %dp\0A\00" -@.str2457 = private unnamed_addr constant [38 x i8] c" %lsep = call i64 @strlen(ptr %sep)\0A\00" -@.str2458 = private unnamed_addr constant [22 x i8] c" %totp = alloca i64\0A\00" -@.str2459 = private unnamed_addr constant [26 x i8] c" store i64 0, ptr %totp\0A\00" -@.str2460 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" -@.str2461 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" -@.str2462 = private unnamed_addr constant [19 x i8] c" br label %scond\0A\00" -@.str2463 = private unnamed_addr constant [8 x i8] c"scond:\0A\00" -@.str2464 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" -@.str2465 = private unnamed_addr constant [30 x i8] c" %d = icmp ult i64 %i, %len\0A\00" -@.str2466 = private unnamed_addr constant [40 x i8] c" br i1 %d, label %sbody, label %alloc\0A\00" -@.str2467 = private unnamed_addr constant [8 x i8] c"sbody:\0A\00" -@.str2468 = private unnamed_addr constant [46 x i8] c" %ep = getelementptr ptr, ptr %data, i64 %i\0A\00" -@.str2469 = private unnamed_addr constant [27 x i8] c" %es = load ptr, ptr %ep\0A\00" -@.str2470 = private unnamed_addr constant [35 x i8] c" %el = call i64 @strlen(ptr %es)\0A\00" -@.str2471 = private unnamed_addr constant [29 x i8] c" %t0 = load i64, ptr %totp\0A\00" -@.str2472 = private unnamed_addr constant [26 x i8] c" %t1 = add i64 %t0, %el\0A\00" -@.str2473 = private unnamed_addr constant [28 x i8] c" store i64 %t1, ptr %totp\0A\00" -@.str2474 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" -@.str2475 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" -@.str2476 = private unnamed_addr constant [19 x i8] c" br label %scond\0A\00" -@.str2477 = private unnamed_addr constant [8 x i8] c"alloc:\0A\00" -@.str2478 = private unnamed_addr constant [30 x i8] c" %nz = icmp ugt i64 %len, 0\0A\00" -@.str2479 = private unnamed_addr constant [26 x i8] c" %lm1 = sub i64 %len, 1\0A\00" -@.str2480 = private unnamed_addr constant [31 x i8] c" %seps = mul i64 %lm1, %lsep\0A\00" -@.str2481 = private unnamed_addr constant [44 x i8] c" %sepsz = select i1 %nz, i64 %seps, i64 0\0A\00" -@.str2482 = private unnamed_addr constant [31 x i8] c" %tot0 = load i64, ptr %totp\0A\00" -@.str2483 = private unnamed_addr constant [32 x i8] c" %tot = add i64 %tot0, %sepsz\0A\00" -@.str2484 = private unnamed_addr constant [26 x i8] c" %osz = add i64 %tot, 1\0A\00" -@.str2485 = private unnamed_addr constant [37 x i8] c" %out = call ptr @malloc(i64 %osz)\0A\00" -@.str2486 = private unnamed_addr constant [22 x i8] c" %dstp = alloca ptr\0A\00" -@.str2487 = private unnamed_addr constant [29 x i8] c" store ptr %out, ptr %dstp\0A\00" -@.str2488 = private unnamed_addr constant [20 x i8] c" %jp = alloca i64\0A\00" -@.str2489 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %jp\0A\00" -@.str2490 = private unnamed_addr constant [19 x i8] c" br label %jcond\0A\00" -@.str2491 = private unnamed_addr constant [8 x i8] c"jcond:\0A\00" -@.str2492 = private unnamed_addr constant [26 x i8] c" %j = load i64, ptr %jp\0A\00" -@.str2493 = private unnamed_addr constant [31 x i8] c" %d2 = icmp ult i64 %j, %len\0A\00" -@.str2494 = private unnamed_addr constant [40 x i8] c" br i1 %d2, label %jbody, label %jfin\0A\00" -@.str2495 = private unnamed_addr constant [8 x i8] c"jbody:\0A\00" -@.str2496 = private unnamed_addr constant [29 x i8] c" %jnz = icmp ugt i64 %j, 0\0A\00" -@.str2497 = private unnamed_addr constant [43 x i8] c" br i1 %jnz, label %putsep, label %putel\0A\00" -@.str2498 = private unnamed_addr constant [9 x i8] c"putsep:\0A\00" -@.str2499 = private unnamed_addr constant [30 x i8] c" %ds0 = load ptr, ptr %dstp\0A\00" -@.str2500 = private unnamed_addr constant [51 x i8] c" call ptr @memcpy(ptr %ds0, ptr %sep, i64 %lsep)\0A\00" -@.str2501 = private unnamed_addr constant [48 x i8] c" %ds1 = getelementptr i8, ptr %ds0, i64 %lsep\0A\00" -@.str2502 = private unnamed_addr constant [29 x i8] c" store ptr %ds1, ptr %dstp\0A\00" -@.str2503 = private unnamed_addr constant [19 x i8] c" br label %putel\0A\00" -@.str2504 = private unnamed_addr constant [8 x i8] c"putel:\0A\00" -@.str2505 = private unnamed_addr constant [47 x i8] c" %ep2 = getelementptr ptr, ptr %data, i64 %j\0A\00" -@.str2506 = private unnamed_addr constant [29 x i8] c" %es2 = load ptr, ptr %ep2\0A\00" -@.str2507 = private unnamed_addr constant [37 x i8] c" %el2 = call i64 @strlen(ptr %es2)\0A\00" -@.str2508 = private unnamed_addr constant [30 x i8] c" %ds2 = load ptr, ptr %dstp\0A\00" -@.str2509 = private unnamed_addr constant [50 x i8] c" call ptr @memcpy(ptr %ds2, ptr %es2, i64 %el2)\0A\00" -@.str2510 = private unnamed_addr constant [47 x i8] c" %ds3 = getelementptr i8, ptr %ds2, i64 %el2\0A\00" -@.str2511 = private unnamed_addr constant [29 x i8] c" store ptr %ds3, ptr %dstp\0A\00" -@.str2512 = private unnamed_addr constant [23 x i8] c" %j1 = add i64 %j, 1\0A\00" -@.str2513 = private unnamed_addr constant [26 x i8] c" store i64 %j1, ptr %jp\0A\00" -@.str2514 = private unnamed_addr constant [19 x i8] c" br label %jcond\0A\00" -@.str2515 = private unnamed_addr constant [7 x i8] c"jfin:\0A\00" -@.str2516 = private unnamed_addr constant [30 x i8] c" %dsf = load ptr, ptr %dstp\0A\00" -@.str2517 = private unnamed_addr constant [24 x i8] c" store i8 0, ptr %dsf\0A\00" -@.str2518 = private unnamed_addr constant [16 x i8] c" ret ptr %out\0A\00" -@.str2519 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str2520 = private unnamed_addr constant [46 x i8] c"define ptr @lp_str_split(ptr %s, ptr %sep) {\0A\00" -@.str2521 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str2522 = private unnamed_addr constant [38 x i8] c" %lsep = call i64 @strlen(ptr %sep)\0A\00" -@.str2523 = private unnamed_addr constant [22 x i8] c" %cntp = alloca i64\0A\00" -@.str2524 = private unnamed_addr constant [26 x i8] c" store i64 1, ptr %cntp\0A\00" -@.str2525 = private unnamed_addr constant [22 x i8] c" %curp = alloca ptr\0A\00" -@.str2526 = private unnamed_addr constant [27 x i8] c" store ptr %s, ptr %curp\0A\00" -@.str2527 = private unnamed_addr constant [19 x i8] c" br label %ccond\0A\00" -@.str2528 = private unnamed_addr constant [8 x i8] c"ccond:\0A\00" -@.str2529 = private unnamed_addr constant [30 x i8] c" %cur = load ptr, ptr %curp\0A\00" -@.str2530 = private unnamed_addr constant [47 x i8] c" %hit = call ptr @strstr(ptr %cur, ptr %sep)\0A\00" -@.str2531 = private unnamed_addr constant [36 x i8] c" %isnull = icmp eq ptr %hit, null\0A\00" -@.str2532 = private unnamed_addr constant [41 x i8] c" br i1 %isnull, label %mk, label %cinc\0A\00" -@.str2533 = private unnamed_addr constant [7 x i8] c"cinc:\0A\00" -@.str2534 = private unnamed_addr constant [29 x i8] c" %c0 = load i64, ptr %cntp\0A\00" -@.str2535 = private unnamed_addr constant [24 x i8] c" %c1 = add i64 %c0, 1\0A\00" -@.str2536 = private unnamed_addr constant [28 x i8] c" store i64 %c1, ptr %cntp\0A\00" -@.str2537 = private unnamed_addr constant [48 x i8] c" %adv = getelementptr i8, ptr %hit, i64 %lsep\0A\00" -@.str2538 = private unnamed_addr constant [29 x i8] c" store ptr %adv, ptr %curp\0A\00" -@.str2539 = private unnamed_addr constant [19 x i8] c" br label %ccond\0A\00" -@.str2540 = private unnamed_addr constant [5 x i8] c"mk:\0A\00" -@.str2541 = private unnamed_addr constant [30 x i8] c" %cnt = load i64, ptr %cntp\0A\00" -@.str2542 = private unnamed_addr constant [35 x i8] c" %hdr = call ptr @malloc(i64 16)\0A\00" -@.str2543 = private unnamed_addr constant [28 x i8] c" %arrsz = mul i64 %cnt, 8\0A\00" -@.str2544 = private unnamed_addr constant [39 x i8] c" %arr = call ptr @malloc(i64 %arrsz)\0A\00" -@.str2545 = private unnamed_addr constant [64 x i8] c" %d0 = getelementptr inbounds %LSlice, ptr %hdr, i32 0, i32 0\0A\00" -@.str2546 = private unnamed_addr constant [27 x i8] c" store ptr %arr, ptr %d0\0A\00" -@.str2547 = private unnamed_addr constant [34 x i8] c" %cnt32 = trunc i64 %cnt to i32\0A\00" -@.str2548 = private unnamed_addr constant [64 x i8] c" %d1 = getelementptr inbounds %LSlice, ptr %hdr, i32 0, i32 1\0A\00" -@.str2549 = private unnamed_addr constant [29 x i8] c" store i32 %cnt32, ptr %d1\0A\00" -@.str2550 = private unnamed_addr constant [64 x i8] c" %d2 = getelementptr inbounds %LSlice, ptr %hdr, i32 0, i32 2\0A\00" -@.str2551 = private unnamed_addr constant [29 x i8] c" store i32 %cnt32, ptr %d2\0A\00" -@.str2552 = private unnamed_addr constant [22 x i8] c" %srcp = alloca ptr\0A\00" -@.str2553 = private unnamed_addr constant [27 x i8] c" store ptr %s, ptr %srcp\0A\00" -@.str2554 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" -@.str2555 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" -@.str2556 = private unnamed_addr constant [19 x i8] c" br label %fcond\0A\00" -@.str2557 = private unnamed_addr constant [8 x i8] c"fcond:\0A\00" -@.str2558 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" -@.str2559 = private unnamed_addr constant [31 x i8] c" %lt = icmp ult i64 %i, %cnt\0A\00" -@.str2560 = private unnamed_addr constant [40 x i8] c" br i1 %lt, label %fbody, label %done\0A\00" -@.str2561 = private unnamed_addr constant [8 x i8] c"fbody:\0A\00" -@.str2562 = private unnamed_addr constant [30 x i8] c" %src = load ptr, ptr %srcp\0A\00" -@.str2563 = private unnamed_addr constant [46 x i8] c" %h2 = call ptr @strstr(ptr %src, ptr %sep)\0A\00" -@.str2564 = private unnamed_addr constant [31 x i8] c" %n2 = icmp eq ptr %h2, null\0A\00" -@.str2565 = private unnamed_addr constant [38 x i8] c" br i1 %n2, label %last, label %mid\0A\00" -@.str2566 = private unnamed_addr constant [6 x i8] c"mid:\0A\00" -@.str2567 = private unnamed_addr constant [34 x i8] c" %si = ptrtoint ptr %src to i64\0A\00" -@.str2568 = private unnamed_addr constant [33 x i8] c" %hi = ptrtoint ptr %h2 to i64\0A\00" -@.str2569 = private unnamed_addr constant [30 x i8] c" %seglen = sub i64 %hi, %si\0A\00" -@.str2570 = private unnamed_addr constant [19 x i8] c" br label %store\0A\00" -@.str2571 = private unnamed_addr constant [7 x i8] c"last:\0A\00" -@.str2572 = private unnamed_addr constant [37 x i8] c" %rem = call i64 @strlen(ptr %src)\0A\00" +@.str2172 = private unnamed_addr constant [23 x i8] c"call i32 @strncmp(ptr \00" +@.str2173 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str2174 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str2175 = private unnamed_addr constant [2 x i8] c")\00" +@.str2176 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str2177 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str2178 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str2179 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str2180 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str2181 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str2182 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str2183 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str2184 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str2185 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str2186 = private unnamed_addr constant [36 x i8] c"define ptr @lp_str_upper(ptr %s) {\0A\00" +@.str2187 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str2188 = private unnamed_addr constant [33 x i8] c" %n = call i64 @strlen(ptr %s)\0A\00" +@.str2189 = private unnamed_addr constant [23 x i8] c" %sz = add i64 %n, 1\0A\00" +@.str2190 = private unnamed_addr constant [36 x i8] c" %out = call ptr @malloc(i64 %sz)\0A\00" +@.str2191 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" +@.str2192 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" +@.str2193 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" +@.str2194 = private unnamed_addr constant [7 x i8] c"cond:\0A\00" +@.str2195 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" +@.str2196 = private unnamed_addr constant [28 x i8] c" %d = icmp ult i64 %i, %n\0A\00" +@.str2197 = private unnamed_addr constant [37 x i8] c" br i1 %d, label %body, label %fin\0A\00" +@.str2198 = private unnamed_addr constant [7 x i8] c"body:\0A\00" +@.str2199 = private unnamed_addr constant [42 x i8] c" %sp = getelementptr i8, ptr %s, i64 %i\0A\00" +@.str2200 = private unnamed_addr constant [25 x i8] c" %c = load i8, ptr %sp\0A\00" +@.str2201 = private unnamed_addr constant [28 x i8] c" %ge = icmp uge i8 %c, 97\0A\00" +@.str2202 = private unnamed_addr constant [29 x i8] c" %le = icmp ule i8 %c, 122\0A\00" +@.str2203 = private unnamed_addr constant [25 x i8] c" %in = and i1 %ge, %le\0A\00" +@.str2204 = private unnamed_addr constant [24 x i8] c" %cc = add i8 %c, -32\0A\00" +@.str2205 = private unnamed_addr constant [38 x i8] c" %oc = select i1 %in, i8 %cc, i8 %c\0A\00" +@.str2206 = private unnamed_addr constant [44 x i8] c" %op = getelementptr i8, ptr %out, i64 %i\0A\00" +@.str2207 = private unnamed_addr constant [25 x i8] c" store i8 %oc, ptr %op\0A\00" +@.str2208 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" +@.str2209 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" +@.str2210 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" +@.str2211 = private unnamed_addr constant [6 x i8] c"fin:\0A\00" +@.str2212 = private unnamed_addr constant [44 x i8] c" %tp = getelementptr i8, ptr %out, i64 %n\0A\00" +@.str2213 = private unnamed_addr constant [23 x i8] c" store i8 0, ptr %tp\0A\00" +@.str2214 = private unnamed_addr constant [16 x i8] c" ret ptr %out\0A\00" +@.str2215 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str2216 = private unnamed_addr constant [36 x i8] c"define ptr @lp_str_lower(ptr %s) {\0A\00" +@.str2217 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str2218 = private unnamed_addr constant [33 x i8] c" %n = call i64 @strlen(ptr %s)\0A\00" +@.str2219 = private unnamed_addr constant [23 x i8] c" %sz = add i64 %n, 1\0A\00" +@.str2220 = private unnamed_addr constant [36 x i8] c" %out = call ptr @malloc(i64 %sz)\0A\00" +@.str2221 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" +@.str2222 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" +@.str2223 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" +@.str2224 = private unnamed_addr constant [7 x i8] c"cond:\0A\00" +@.str2225 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" +@.str2226 = private unnamed_addr constant [28 x i8] c" %d = icmp ult i64 %i, %n\0A\00" +@.str2227 = private unnamed_addr constant [37 x i8] c" br i1 %d, label %body, label %fin\0A\00" +@.str2228 = private unnamed_addr constant [7 x i8] c"body:\0A\00" +@.str2229 = private unnamed_addr constant [42 x i8] c" %sp = getelementptr i8, ptr %s, i64 %i\0A\00" +@.str2230 = private unnamed_addr constant [25 x i8] c" %c = load i8, ptr %sp\0A\00" +@.str2231 = private unnamed_addr constant [28 x i8] c" %ge = icmp uge i8 %c, 65\0A\00" +@.str2232 = private unnamed_addr constant [28 x i8] c" %le = icmp ule i8 %c, 90\0A\00" +@.str2233 = private unnamed_addr constant [25 x i8] c" %in = and i1 %ge, %le\0A\00" +@.str2234 = private unnamed_addr constant [23 x i8] c" %cc = add i8 %c, 32\0A\00" +@.str2235 = private unnamed_addr constant [38 x i8] c" %oc = select i1 %in, i8 %cc, i8 %c\0A\00" +@.str2236 = private unnamed_addr constant [44 x i8] c" %op = getelementptr i8, ptr %out, i64 %i\0A\00" +@.str2237 = private unnamed_addr constant [25 x i8] c" store i8 %oc, ptr %op\0A\00" +@.str2238 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" +@.str2239 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" +@.str2240 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" +@.str2241 = private unnamed_addr constant [6 x i8] c"fin:\0A\00" +@.str2242 = private unnamed_addr constant [44 x i8] c" %tp = getelementptr i8, ptr %out, i64 %n\0A\00" +@.str2243 = private unnamed_addr constant [23 x i8] c" store i8 0, ptr %tp\0A\00" +@.str2244 = private unnamed_addr constant [16 x i8] c" ret ptr %out\0A\00" +@.str2245 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str2246 = private unnamed_addr constant [35 x i8] c"define ptr @lp_str_trim(ptr %s) {\0A\00" +@.str2247 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str2248 = private unnamed_addr constant [33 x i8] c" %n = call i64 @strlen(ptr %s)\0A\00" +@.str2249 = private unnamed_addr constant [20 x i8] c" %sp = alloca i64\0A\00" +@.str2250 = private unnamed_addr constant [20 x i8] c" %ep = alloca i64\0A\00" +@.str2251 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %sp\0A\00" +@.str2252 = private unnamed_addr constant [25 x i8] c" store i64 %n, ptr %ep\0A\00" +@.str2253 = private unnamed_addr constant [19 x i8] c" br label %lcond\0A\00" +@.str2254 = private unnamed_addr constant [8 x i8] c"lcond:\0A\00" +@.str2255 = private unnamed_addr constant [27 x i8] c" %a0 = load i64, ptr %sp\0A\00" +@.str2256 = private unnamed_addr constant [27 x i8] c" %e0 = load i64, ptr %ep\0A\00" +@.str2257 = private unnamed_addr constant [32 x i8] c" %lt0 = icmp ult i64 %a0, %e0\0A\00" +@.str2258 = private unnamed_addr constant [41 x i8] c" br i1 %lt0, label %lchk, label %rcond\0A\00" +@.str2259 = private unnamed_addr constant [7 x i8] c"lchk:\0A\00" +@.str2260 = private unnamed_addr constant [43 x i8] c" %p0 = getelementptr i8, ptr %s, i64 %a0\0A\00" +@.str2261 = private unnamed_addr constant [26 x i8] c" %c0 = load i8, ptr %p0\0A\00" +@.str2262 = private unnamed_addr constant [36 x i8] c" %ws0 = call i1 @lp_is_ws(i8 %c0)\0A\00" +@.str2263 = private unnamed_addr constant [41 x i8] c" br i1 %ws0, label %linc, label %rcond\0A\00" +@.str2264 = private unnamed_addr constant [7 x i8] c"linc:\0A\00" +@.str2265 = private unnamed_addr constant [24 x i8] c" %a1 = add i64 %a0, 1\0A\00" +@.str2266 = private unnamed_addr constant [26 x i8] c" store i64 %a1, ptr %sp\0A\00" +@.str2267 = private unnamed_addr constant [19 x i8] c" br label %lcond\0A\00" +@.str2268 = private unnamed_addr constant [8 x i8] c"rcond:\0A\00" +@.str2269 = private unnamed_addr constant [27 x i8] c" %a2 = load i64, ptr %sp\0A\00" +@.str2270 = private unnamed_addr constant [27 x i8] c" %e2 = load i64, ptr %ep\0A\00" +@.str2271 = private unnamed_addr constant [32 x i8] c" %lt2 = icmp ult i64 %a2, %e2\0A\00" +@.str2272 = private unnamed_addr constant [41 x i8] c" br i1 %lt2, label %rchk, label %build\0A\00" +@.str2273 = private unnamed_addr constant [7 x i8] c"rchk:\0A\00" +@.str2274 = private unnamed_addr constant [25 x i8] c" %em1 = sub i64 %e2, 1\0A\00" +@.str2275 = private unnamed_addr constant [44 x i8] c" %p1 = getelementptr i8, ptr %s, i64 %em1\0A\00" +@.str2276 = private unnamed_addr constant [26 x i8] c" %c1 = load i8, ptr %p1\0A\00" +@.str2277 = private unnamed_addr constant [36 x i8] c" %ws1 = call i1 @lp_is_ws(i8 %c1)\0A\00" +@.str2278 = private unnamed_addr constant [41 x i8] c" br i1 %ws1, label %rdec, label %build\0A\00" +@.str2279 = private unnamed_addr constant [7 x i8] c"rdec:\0A\00" +@.str2280 = private unnamed_addr constant [27 x i8] c" store i64 %em1, ptr %ep\0A\00" +@.str2281 = private unnamed_addr constant [19 x i8] c" br label %rcond\0A\00" +@.str2282 = private unnamed_addr constant [8 x i8] c"build:\0A\00" +@.str2283 = private unnamed_addr constant [27 x i8] c" %st = load i64, ptr %sp\0A\00" +@.str2284 = private unnamed_addr constant [27 x i8] c" %en = load i64, ptr %ep\0A\00" +@.str2285 = private unnamed_addr constant [27 x i8] c" %len = sub i64 %en, %st\0A\00" +@.str2286 = private unnamed_addr constant [25 x i8] c" %sz = add i64 %len, 1\0A\00" +@.str2287 = private unnamed_addr constant [36 x i8] c" %out = call ptr @malloc(i64 %sz)\0A\00" +@.str2288 = private unnamed_addr constant [44 x i8] c" %src = getelementptr i8, ptr %s, i64 %st\0A\00" +@.str2289 = private unnamed_addr constant [50 x i8] c" call ptr @memcpy(ptr %out, ptr %src, i64 %len)\0A\00" +@.str2290 = private unnamed_addr constant [46 x i8] c" %tp = getelementptr i8, ptr %out, i64 %len\0A\00" +@.str2291 = private unnamed_addr constant [23 x i8] c" store i8 0, ptr %tp\0A\00" +@.str2292 = private unnamed_addr constant [16 x i8] c" ret ptr %out\0A\00" +@.str2293 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str2294 = private unnamed_addr constant [30 x i8] c"define i1 @lp_is_ws(i8 %c) {\0A\00" +@.str2295 = private unnamed_addr constant [26 x i8] c" %a = icmp eq i8 %c, 32\0A\00" +@.str2296 = private unnamed_addr constant [25 x i8] c" %b = icmp eq i8 %c, 9\0A\00" +@.str2297 = private unnamed_addr constant [26 x i8] c" %d = icmp eq i8 %c, 10\0A\00" +@.str2298 = private unnamed_addr constant [26 x i8] c" %e = icmp eq i8 %c, 13\0A\00" +@.str2299 = private unnamed_addr constant [22 x i8] c" %ab = or i1 %a, %b\0A\00" +@.str2300 = private unnamed_addr constant [22 x i8] c" %de = or i1 %d, %e\0A\00" +@.str2301 = private unnamed_addr constant [23 x i8] c" %r = or i1 %ab, %de\0A\00" +@.str2302 = private unnamed_addr constant [13 x i8] c" ret i1 %r\0A\00" +@.str2303 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str2304 = private unnamed_addr constant [47 x i8] c"define ptr @lp_str_repeat(ptr %s, i32 %n32) {\0A\00" +@.str2305 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str2306 = private unnamed_addr constant [32 x i8] c" %nneg = icmp slt i32 %n32, 0\0A\00" +@.str2307 = private unnamed_addr constant [42 x i8] c" %nn = select i1 %nneg, i32 0, i32 %n32\0A\00" +@.str2308 = private unnamed_addr constant [28 x i8] c" %n = zext i32 %nn to i64\0A\00" +@.str2309 = private unnamed_addr constant [33 x i8] c" %L = call i64 @strlen(ptr %s)\0A\00" +@.str2310 = private unnamed_addr constant [25 x i8] c" %tot = mul i64 %L, %n\0A\00" +@.str2311 = private unnamed_addr constant [25 x i8] c" %sz = add i64 %tot, 1\0A\00" +@.str2312 = private unnamed_addr constant [36 x i8] c" %out = call ptr @malloc(i64 %sz)\0A\00" +@.str2313 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" +@.str2314 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" +@.str2315 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" +@.str2316 = private unnamed_addr constant [7 x i8] c"cond:\0A\00" +@.str2317 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" +@.str2318 = private unnamed_addr constant [28 x i8] c" %d = icmp ult i64 %i, %n\0A\00" +@.str2319 = private unnamed_addr constant [37 x i8] c" br i1 %d, label %body, label %fin\0A\00" +@.str2320 = private unnamed_addr constant [7 x i8] c"body:\0A\00" +@.str2321 = private unnamed_addr constant [25 x i8] c" %off = mul i64 %i, %L\0A\00" +@.str2322 = private unnamed_addr constant [47 x i8] c" %dst = getelementptr i8, ptr %out, i64 %off\0A\00" +@.str2323 = private unnamed_addr constant [46 x i8] c" call ptr @memcpy(ptr %dst, ptr %s, i64 %L)\0A\00" +@.str2324 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" +@.str2325 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" +@.str2326 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" +@.str2327 = private unnamed_addr constant [6 x i8] c"fin:\0A\00" +@.str2328 = private unnamed_addr constant [46 x i8] c" %tp = getelementptr i8, ptr %out, i64 %tot\0A\00" +@.str2329 = private unnamed_addr constant [23 x i8] c" store i8 0, ptr %tp\0A\00" +@.str2330 = private unnamed_addr constant [16 x i8] c" ret ptr %out\0A\00" +@.str2331 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str2332 = private unnamed_addr constant [54 x i8] c"define ptr @lp_str_pad(ptr %s, i32 %w32, i1 %left) {\0A\00" +@.str2333 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str2334 = private unnamed_addr constant [33 x i8] c" %L = call i64 @strlen(ptr %s)\0A\00" +@.str2335 = private unnamed_addr constant [30 x i8] c" %w0 = sext i32 %w32 to i64\0A\00" +@.str2336 = private unnamed_addr constant [32 x i8] c" %need = icmp ugt i64 %w0, %L\0A\00" +@.str2337 = private unnamed_addr constant [39 x i8] c" br i1 %need, label %do, label %copy\0A\00" +@.str2338 = private unnamed_addr constant [7 x i8] c"copy:\0A\00" +@.str2339 = private unnamed_addr constant [24 x i8] c" %sz0 = add i64 %L, 1\0A\00" +@.str2340 = private unnamed_addr constant [36 x i8] c" %o0 = call ptr @malloc(i64 %sz0)\0A\00" +@.str2341 = private unnamed_addr constant [23 x i8] c" %e0 = add i64 %L, 0\0A\00" +@.str2342 = private unnamed_addr constant [45 x i8] c" call ptr @memcpy(ptr %o0, ptr %s, i64 %L)\0A\00" +@.str2343 = private unnamed_addr constant [43 x i8] c" %t0 = getelementptr i8, ptr %o0, i64 %L\0A\00" +@.str2344 = private unnamed_addr constant [23 x i8] c" store i8 0, ptr %t0\0A\00" +@.str2345 = private unnamed_addr constant [15 x i8] c" ret ptr %o0\0A\00" +@.str2346 = private unnamed_addr constant [5 x i8] c"do:\0A\00" +@.str2347 = private unnamed_addr constant [26 x i8] c" %pad = sub i64 %w0, %L\0A\00" +@.str2348 = private unnamed_addr constant [24 x i8] c" %sz = add i64 %w0, 1\0A\00" +@.str2349 = private unnamed_addr constant [36 x i8] c" %out = call ptr @malloc(i64 %sz)\0A\00" +@.str2350 = private unnamed_addr constant [48 x i8] c" br i1 %left, label %padleft, label %padright\0A\00" +@.str2351 = private unnamed_addr constant [10 x i8] c"padleft:\0A\00" +@.str2352 = private unnamed_addr constant [52 x i8] c" call void @lp_fill_sp(ptr %out, i64 0, i64 %pad)\0A\00" +@.str2353 = private unnamed_addr constant [48 x i8] c" %dstL = getelementptr i8, ptr %out, i64 %pad\0A\00" +@.str2354 = private unnamed_addr constant [47 x i8] c" call ptr @memcpy(ptr %dstL, ptr %s, i64 %L)\0A\00" +@.str2355 = private unnamed_addr constant [18 x i8] c" br label %term\0A\00" +@.str2356 = private unnamed_addr constant [11 x i8] c"padright:\0A\00" +@.str2357 = private unnamed_addr constant [46 x i8] c" call ptr @memcpy(ptr %out, ptr %s, i64 %L)\0A\00" +@.str2358 = private unnamed_addr constant [53 x i8] c" call void @lp_fill_sp(ptr %out, i64 %L, i64 %pad)\0A\00" +@.str2359 = private unnamed_addr constant [18 x i8] c" br label %term\0A\00" +@.str2360 = private unnamed_addr constant [7 x i8] c"term:\0A\00" +@.str2361 = private unnamed_addr constant [45 x i8] c" %tp = getelementptr i8, ptr %out, i64 %w0\0A\00" +@.str2362 = private unnamed_addr constant [23 x i8] c" store i8 0, ptr %tp\0A\00" +@.str2363 = private unnamed_addr constant [16 x i8] c" ret ptr %out\0A\00" +@.str2364 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str2365 = private unnamed_addr constant [61 x i8] c"define void @lp_fill_sp(ptr %buf, i64 %start, i64 %count) {\0A\00" +@.str2366 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str2367 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" +@.str2368 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" +@.str2369 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" +@.str2370 = private unnamed_addr constant [7 x i8] c"cond:\0A\00" +@.str2371 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" +@.str2372 = private unnamed_addr constant [32 x i8] c" %d = icmp ult i64 %i, %count\0A\00" +@.str2373 = private unnamed_addr constant [38 x i8] c" br i1 %d, label %body, label %done\0A\00" +@.str2374 = private unnamed_addr constant [7 x i8] c"body:\0A\00" +@.str2375 = private unnamed_addr constant [29 x i8] c" %off = add i64 %start, %i\0A\00" +@.str2376 = private unnamed_addr constant [45 x i8] c" %p = getelementptr i8, ptr %buf, i64 %off\0A\00" +@.str2377 = private unnamed_addr constant [23 x i8] c" store i8 32, ptr %p\0A\00" +@.str2378 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" +@.str2379 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" +@.str2380 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" +@.str2381 = private unnamed_addr constant [7 x i8] c"done:\0A\00" +@.str2382 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" +@.str2383 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str2384 = private unnamed_addr constant [58 x i8] c"define ptr @lp_str_replace(ptr %s, ptr %from, ptr %to) {\0A\00" +@.str2385 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str2386 = private unnamed_addr constant [37 x i8] c" %lf = call i64 @strlen(ptr %from)\0A\00" +@.str2387 = private unnamed_addr constant [28 x i8] c" %lz = icmp eq i64 %lf, 0\0A\00" +@.str2388 = private unnamed_addr constant [42 x i8] c" br i1 %lz, label %copyall, label %scan\0A\00" +@.str2389 = private unnamed_addr constant [10 x i8] c"copyall:\0A\00" +@.str2390 = private unnamed_addr constant [35 x i8] c" %ls0 = call i64 @strlen(ptr %s)\0A\00" +@.str2391 = private unnamed_addr constant [26 x i8] c" %sz0 = add i64 %ls0, 1\0A\00" +@.str2392 = private unnamed_addr constant [36 x i8] c" %o0 = call ptr @malloc(i64 %sz0)\0A\00" +@.str2393 = private unnamed_addr constant [47 x i8] c" call ptr @memcpy(ptr %o0, ptr %s, i64 %sz0)\0A\00" +@.str2394 = private unnamed_addr constant [15 x i8] c" ret ptr %o0\0A\00" +@.str2395 = private unnamed_addr constant [7 x i8] c"scan:\0A\00" +@.str2396 = private unnamed_addr constant [35 x i8] c" %lt = call i64 @strlen(ptr %to)\0A\00" +@.str2397 = private unnamed_addr constant [34 x i8] c" %ls = call i64 @strlen(ptr %s)\0A\00" +@.str2398 = private unnamed_addr constant [22 x i8] c" %cntp = alloca i64\0A\00" +@.str2399 = private unnamed_addr constant [26 x i8] c" store i64 0, ptr %cntp\0A\00" +@.str2400 = private unnamed_addr constant [22 x i8] c" %curp = alloca ptr\0A\00" +@.str2401 = private unnamed_addr constant [27 x i8] c" store ptr %s, ptr %curp\0A\00" +@.str2402 = private unnamed_addr constant [19 x i8] c" br label %ccond\0A\00" +@.str2403 = private unnamed_addr constant [8 x i8] c"ccond:\0A\00" +@.str2404 = private unnamed_addr constant [30 x i8] c" %cur = load ptr, ptr %curp\0A\00" +@.str2405 = private unnamed_addr constant [48 x i8] c" %hit = call ptr @strstr(ptr %cur, ptr %from)\0A\00" +@.str2406 = private unnamed_addr constant [36 x i8] c" %isnull = icmp eq ptr %hit, null\0A\00" +@.str2407 = private unnamed_addr constant [44 x i8] c" br i1 %isnull, label %csize, label %cinc\0A\00" +@.str2408 = private unnamed_addr constant [7 x i8] c"cinc:\0A\00" +@.str2409 = private unnamed_addr constant [29 x i8] c" %c0 = load i64, ptr %cntp\0A\00" +@.str2410 = private unnamed_addr constant [24 x i8] c" %c1 = add i64 %c0, 1\0A\00" +@.str2411 = private unnamed_addr constant [28 x i8] c" store i64 %c1, ptr %cntp\0A\00" +@.str2412 = private unnamed_addr constant [46 x i8] c" %adv = getelementptr i8, ptr %hit, i64 %lf\0A\00" +@.str2413 = private unnamed_addr constant [29 x i8] c" store ptr %adv, ptr %curp\0A\00" +@.str2414 = private unnamed_addr constant [19 x i8] c" br label %ccond\0A\00" +@.str2415 = private unnamed_addr constant [8 x i8] c"csize:\0A\00" +@.str2416 = private unnamed_addr constant [30 x i8] c" %cnt = load i64, ptr %cntp\0A\00" +@.str2417 = private unnamed_addr constant [29 x i8] c" %delta = sub i64 %lt, %lf\0A\00" +@.str2418 = private unnamed_addr constant [32 x i8] c" %grow = mul i64 %cnt, %delta\0A\00" +@.str2419 = private unnamed_addr constant [32 x i8] c" %newlen = add i64 %ls, %grow\0A\00" +@.str2420 = private unnamed_addr constant [29 x i8] c" %osz = add i64 %newlen, 1\0A\00" +@.str2421 = private unnamed_addr constant [37 x i8] c" %out = call ptr @malloc(i64 %osz)\0A\00" +@.str2422 = private unnamed_addr constant [22 x i8] c" %srcp = alloca ptr\0A\00" +@.str2423 = private unnamed_addr constant [27 x i8] c" store ptr %s, ptr %srcp\0A\00" +@.str2424 = private unnamed_addr constant [22 x i8] c" %dstp = alloca ptr\0A\00" +@.str2425 = private unnamed_addr constant [29 x i8] c" store ptr %out, ptr %dstp\0A\00" +@.str2426 = private unnamed_addr constant [19 x i8] c" br label %bcond\0A\00" +@.str2427 = private unnamed_addr constant [8 x i8] c"bcond:\0A\00" +@.str2428 = private unnamed_addr constant [30 x i8] c" %src = load ptr, ptr %srcp\0A\00" +@.str2429 = private unnamed_addr constant [47 x i8] c" %h2 = call ptr @strstr(ptr %src, ptr %from)\0A\00" +@.str2430 = private unnamed_addr constant [31 x i8] c" %n2 = icmp eq ptr %h2, null\0A\00" +@.str2431 = private unnamed_addr constant [38 x i8] c" br i1 %n2, label %tail, label %seg\0A\00" +@.str2432 = private unnamed_addr constant [6 x i8] c"seg:\0A\00" +@.str2433 = private unnamed_addr constant [34 x i8] c" %si = ptrtoint ptr %src to i64\0A\00" +@.str2434 = private unnamed_addr constant [33 x i8] c" %hi = ptrtoint ptr %h2 to i64\0A\00" +@.str2435 = private unnamed_addr constant [30 x i8] c" %seglen = sub i64 %hi, %si\0A\00" +@.str2436 = private unnamed_addr constant [31 x i8] c" %dst0 = load ptr, ptr %dstp\0A\00" +@.str2437 = private unnamed_addr constant [54 x i8] c" call ptr @memcpy(ptr %dst0, ptr %src, i64 %seglen)\0A\00" +@.str2438 = private unnamed_addr constant [52 x i8] c" %dst1 = getelementptr i8, ptr %dst0, i64 %seglen\0A\00" +@.str2439 = private unnamed_addr constant [49 x i8] c" call ptr @memcpy(ptr %dst1, ptr %to, i64 %lt)\0A\00" +@.str2440 = private unnamed_addr constant [48 x i8] c" %dst2 = getelementptr i8, ptr %dst1, i64 %lt\0A\00" +@.str2441 = private unnamed_addr constant [30 x i8] c" store ptr %dst2, ptr %dstp\0A\00" +@.str2442 = private unnamed_addr constant [46 x i8] c" %src2 = getelementptr i8, ptr %h2, i64 %lf\0A\00" +@.str2443 = private unnamed_addr constant [30 x i8] c" store ptr %src2, ptr %srcp\0A\00" +@.str2444 = private unnamed_addr constant [19 x i8] c" br label %bcond\0A\00" +@.str2445 = private unnamed_addr constant [7 x i8] c"tail:\0A\00" +@.str2446 = private unnamed_addr constant [31 x i8] c" %src3 = load ptr, ptr %srcp\0A\00" +@.str2447 = private unnamed_addr constant [38 x i8] c" %rem = call i64 @strlen(ptr %src3)\0A\00" +@.str2448 = private unnamed_addr constant [31 x i8] c" %dst3 = load ptr, ptr %dstp\0A\00" +@.str2449 = private unnamed_addr constant [28 x i8] c" %remp1 = add i64 %rem, 1\0A\00" +@.str2450 = private unnamed_addr constant [54 x i8] c" call ptr @memcpy(ptr %dst3, ptr %src3, i64 %remp1)\0A\00" +@.str2451 = private unnamed_addr constant [16 x i8] c" ret ptr %out\0A\00" +@.str2452 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str2453 = private unnamed_addr constant [45 x i8] c"define ptr @lp_str_join(ptr %h, ptr %sep) {\0A\00" +@.str2454 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str2455 = private unnamed_addr constant [62 x i8] c" %lp = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 1\0A\00" +@.str2456 = private unnamed_addr constant [30 x i8] c" %len32 = load i32, ptr %lp\0A\00" +@.str2457 = private unnamed_addr constant [33 x i8] c" %len = sext i32 %len32 to i64\0A\00" +@.str2458 = private unnamed_addr constant [62 x i8] c" %dp = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 0\0A\00" +@.str2459 = private unnamed_addr constant [29 x i8] c" %data = load ptr, ptr %dp\0A\00" +@.str2460 = private unnamed_addr constant [38 x i8] c" %lsep = call i64 @strlen(ptr %sep)\0A\00" +@.str2461 = private unnamed_addr constant [22 x i8] c" %totp = alloca i64\0A\00" +@.str2462 = private unnamed_addr constant [26 x i8] c" store i64 0, ptr %totp\0A\00" +@.str2463 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" +@.str2464 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" +@.str2465 = private unnamed_addr constant [19 x i8] c" br label %scond\0A\00" +@.str2466 = private unnamed_addr constant [8 x i8] c"scond:\0A\00" +@.str2467 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" +@.str2468 = private unnamed_addr constant [30 x i8] c" %d = icmp ult i64 %i, %len\0A\00" +@.str2469 = private unnamed_addr constant [40 x i8] c" br i1 %d, label %sbody, label %alloc\0A\00" +@.str2470 = private unnamed_addr constant [8 x i8] c"sbody:\0A\00" +@.str2471 = private unnamed_addr constant [46 x i8] c" %ep = getelementptr ptr, ptr %data, i64 %i\0A\00" +@.str2472 = private unnamed_addr constant [27 x i8] c" %es = load ptr, ptr %ep\0A\00" +@.str2473 = private unnamed_addr constant [35 x i8] c" %el = call i64 @strlen(ptr %es)\0A\00" +@.str2474 = private unnamed_addr constant [29 x i8] c" %t0 = load i64, ptr %totp\0A\00" +@.str2475 = private unnamed_addr constant [26 x i8] c" %t1 = add i64 %t0, %el\0A\00" +@.str2476 = private unnamed_addr constant [28 x i8] c" store i64 %t1, ptr %totp\0A\00" +@.str2477 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" +@.str2478 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" +@.str2479 = private unnamed_addr constant [19 x i8] c" br label %scond\0A\00" +@.str2480 = private unnamed_addr constant [8 x i8] c"alloc:\0A\00" +@.str2481 = private unnamed_addr constant [30 x i8] c" %nz = icmp ugt i64 %len, 0\0A\00" +@.str2482 = private unnamed_addr constant [26 x i8] c" %lm1 = sub i64 %len, 1\0A\00" +@.str2483 = private unnamed_addr constant [31 x i8] c" %seps = mul i64 %lm1, %lsep\0A\00" +@.str2484 = private unnamed_addr constant [44 x i8] c" %sepsz = select i1 %nz, i64 %seps, i64 0\0A\00" +@.str2485 = private unnamed_addr constant [31 x i8] c" %tot0 = load i64, ptr %totp\0A\00" +@.str2486 = private unnamed_addr constant [32 x i8] c" %tot = add i64 %tot0, %sepsz\0A\00" +@.str2487 = private unnamed_addr constant [26 x i8] c" %osz = add i64 %tot, 1\0A\00" +@.str2488 = private unnamed_addr constant [37 x i8] c" %out = call ptr @malloc(i64 %osz)\0A\00" +@.str2489 = private unnamed_addr constant [22 x i8] c" %dstp = alloca ptr\0A\00" +@.str2490 = private unnamed_addr constant [29 x i8] c" store ptr %out, ptr %dstp\0A\00" +@.str2491 = private unnamed_addr constant [20 x i8] c" %jp = alloca i64\0A\00" +@.str2492 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %jp\0A\00" +@.str2493 = private unnamed_addr constant [19 x i8] c" br label %jcond\0A\00" +@.str2494 = private unnamed_addr constant [8 x i8] c"jcond:\0A\00" +@.str2495 = private unnamed_addr constant [26 x i8] c" %j = load i64, ptr %jp\0A\00" +@.str2496 = private unnamed_addr constant [31 x i8] c" %d2 = icmp ult i64 %j, %len\0A\00" +@.str2497 = private unnamed_addr constant [40 x i8] c" br i1 %d2, label %jbody, label %jfin\0A\00" +@.str2498 = private unnamed_addr constant [8 x i8] c"jbody:\0A\00" +@.str2499 = private unnamed_addr constant [29 x i8] c" %jnz = icmp ugt i64 %j, 0\0A\00" +@.str2500 = private unnamed_addr constant [43 x i8] c" br i1 %jnz, label %putsep, label %putel\0A\00" +@.str2501 = private unnamed_addr constant [9 x i8] c"putsep:\0A\00" +@.str2502 = private unnamed_addr constant [30 x i8] c" %ds0 = load ptr, ptr %dstp\0A\00" +@.str2503 = private unnamed_addr constant [51 x i8] c" call ptr @memcpy(ptr %ds0, ptr %sep, i64 %lsep)\0A\00" +@.str2504 = private unnamed_addr constant [48 x i8] c" %ds1 = getelementptr i8, ptr %ds0, i64 %lsep\0A\00" +@.str2505 = private unnamed_addr constant [29 x i8] c" store ptr %ds1, ptr %dstp\0A\00" +@.str2506 = private unnamed_addr constant [19 x i8] c" br label %putel\0A\00" +@.str2507 = private unnamed_addr constant [8 x i8] c"putel:\0A\00" +@.str2508 = private unnamed_addr constant [47 x i8] c" %ep2 = getelementptr ptr, ptr %data, i64 %j\0A\00" +@.str2509 = private unnamed_addr constant [29 x i8] c" %es2 = load ptr, ptr %ep2\0A\00" +@.str2510 = private unnamed_addr constant [37 x i8] c" %el2 = call i64 @strlen(ptr %es2)\0A\00" +@.str2511 = private unnamed_addr constant [30 x i8] c" %ds2 = load ptr, ptr %dstp\0A\00" +@.str2512 = private unnamed_addr constant [50 x i8] c" call ptr @memcpy(ptr %ds2, ptr %es2, i64 %el2)\0A\00" +@.str2513 = private unnamed_addr constant [47 x i8] c" %ds3 = getelementptr i8, ptr %ds2, i64 %el2\0A\00" +@.str2514 = private unnamed_addr constant [29 x i8] c" store ptr %ds3, ptr %dstp\0A\00" +@.str2515 = private unnamed_addr constant [23 x i8] c" %j1 = add i64 %j, 1\0A\00" +@.str2516 = private unnamed_addr constant [26 x i8] c" store i64 %j1, ptr %jp\0A\00" +@.str2517 = private unnamed_addr constant [19 x i8] c" br label %jcond\0A\00" +@.str2518 = private unnamed_addr constant [7 x i8] c"jfin:\0A\00" +@.str2519 = private unnamed_addr constant [30 x i8] c" %dsf = load ptr, ptr %dstp\0A\00" +@.str2520 = private unnamed_addr constant [24 x i8] c" store i8 0, ptr %dsf\0A\00" +@.str2521 = private unnamed_addr constant [16 x i8] c" ret ptr %out\0A\00" +@.str2522 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str2523 = private unnamed_addr constant [46 x i8] c"define ptr @lp_str_split(ptr %s, ptr %sep) {\0A\00" +@.str2524 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str2525 = private unnamed_addr constant [38 x i8] c" %lsep = call i64 @strlen(ptr %sep)\0A\00" +@.str2526 = private unnamed_addr constant [22 x i8] c" %cntp = alloca i64\0A\00" +@.str2527 = private unnamed_addr constant [26 x i8] c" store i64 1, ptr %cntp\0A\00" +@.str2528 = private unnamed_addr constant [22 x i8] c" %curp = alloca ptr\0A\00" +@.str2529 = private unnamed_addr constant [27 x i8] c" store ptr %s, ptr %curp\0A\00" +@.str2530 = private unnamed_addr constant [19 x i8] c" br label %ccond\0A\00" +@.str2531 = private unnamed_addr constant [8 x i8] c"ccond:\0A\00" +@.str2532 = private unnamed_addr constant [30 x i8] c" %cur = load ptr, ptr %curp\0A\00" +@.str2533 = private unnamed_addr constant [47 x i8] c" %hit = call ptr @strstr(ptr %cur, ptr %sep)\0A\00" +@.str2534 = private unnamed_addr constant [36 x i8] c" %isnull = icmp eq ptr %hit, null\0A\00" +@.str2535 = private unnamed_addr constant [41 x i8] c" br i1 %isnull, label %mk, label %cinc\0A\00" +@.str2536 = private unnamed_addr constant [7 x i8] c"cinc:\0A\00" +@.str2537 = private unnamed_addr constant [29 x i8] c" %c0 = load i64, ptr %cntp\0A\00" +@.str2538 = private unnamed_addr constant [24 x i8] c" %c1 = add i64 %c0, 1\0A\00" +@.str2539 = private unnamed_addr constant [28 x i8] c" store i64 %c1, ptr %cntp\0A\00" +@.str2540 = private unnamed_addr constant [48 x i8] c" %adv = getelementptr i8, ptr %hit, i64 %lsep\0A\00" +@.str2541 = private unnamed_addr constant [29 x i8] c" store ptr %adv, ptr %curp\0A\00" +@.str2542 = private unnamed_addr constant [19 x i8] c" br label %ccond\0A\00" +@.str2543 = private unnamed_addr constant [5 x i8] c"mk:\0A\00" +@.str2544 = private unnamed_addr constant [30 x i8] c" %cnt = load i64, ptr %cntp\0A\00" +@.str2545 = private unnamed_addr constant [35 x i8] c" %hdr = call ptr @malloc(i64 16)\0A\00" +@.str2546 = private unnamed_addr constant [28 x i8] c" %arrsz = mul i64 %cnt, 8\0A\00" +@.str2547 = private unnamed_addr constant [39 x i8] c" %arr = call ptr @malloc(i64 %arrsz)\0A\00" +@.str2548 = private unnamed_addr constant [64 x i8] c" %d0 = getelementptr inbounds %LSlice, ptr %hdr, i32 0, i32 0\0A\00" +@.str2549 = private unnamed_addr constant [27 x i8] c" store ptr %arr, ptr %d0\0A\00" +@.str2550 = private unnamed_addr constant [34 x i8] c" %cnt32 = trunc i64 %cnt to i32\0A\00" +@.str2551 = private unnamed_addr constant [64 x i8] c" %d1 = getelementptr inbounds %LSlice, ptr %hdr, i32 0, i32 1\0A\00" +@.str2552 = private unnamed_addr constant [29 x i8] c" store i32 %cnt32, ptr %d1\0A\00" +@.str2553 = private unnamed_addr constant [64 x i8] c" %d2 = getelementptr inbounds %LSlice, ptr %hdr, i32 0, i32 2\0A\00" +@.str2554 = private unnamed_addr constant [29 x i8] c" store i32 %cnt32, ptr %d2\0A\00" +@.str2555 = private unnamed_addr constant [22 x i8] c" %srcp = alloca ptr\0A\00" +@.str2556 = private unnamed_addr constant [27 x i8] c" store ptr %s, ptr %srcp\0A\00" +@.str2557 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" +@.str2558 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" +@.str2559 = private unnamed_addr constant [19 x i8] c" br label %fcond\0A\00" +@.str2560 = private unnamed_addr constant [8 x i8] c"fcond:\0A\00" +@.str2561 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" +@.str2562 = private unnamed_addr constant [31 x i8] c" %lt = icmp ult i64 %i, %cnt\0A\00" +@.str2563 = private unnamed_addr constant [40 x i8] c" br i1 %lt, label %fbody, label %done\0A\00" +@.str2564 = private unnamed_addr constant [8 x i8] c"fbody:\0A\00" +@.str2565 = private unnamed_addr constant [30 x i8] c" %src = load ptr, ptr %srcp\0A\00" +@.str2566 = private unnamed_addr constant [46 x i8] c" %h2 = call ptr @strstr(ptr %src, ptr %sep)\0A\00" +@.str2567 = private unnamed_addr constant [31 x i8] c" %n2 = icmp eq ptr %h2, null\0A\00" +@.str2568 = private unnamed_addr constant [38 x i8] c" br i1 %n2, label %last, label %mid\0A\00" +@.str2569 = private unnamed_addr constant [6 x i8] c"mid:\0A\00" +@.str2570 = private unnamed_addr constant [34 x i8] c" %si = ptrtoint ptr %src to i64\0A\00" +@.str2571 = private unnamed_addr constant [33 x i8] c" %hi = ptrtoint ptr %h2 to i64\0A\00" +@.str2572 = private unnamed_addr constant [30 x i8] c" %seglen = sub i64 %hi, %si\0A\00" @.str2573 = private unnamed_addr constant [19 x i8] c" br label %store\0A\00" -@.str2574 = private unnamed_addr constant [8 x i8] c"store:\0A\00" -@.str2575 = private unnamed_addr constant [53 x i8] c" %seg = phi i64 [ %seglen, %mid ], [ %rem, %last ]\0A\00" -@.str2576 = private unnamed_addr constant [26 x i8] c" %ssz = add i64 %seg, 1\0A\00" -@.str2577 = private unnamed_addr constant [37 x i8] c" %sub = call ptr @malloc(i64 %ssz)\0A\00" -@.str2578 = private unnamed_addr constant [31 x i8] c" %src2 = load ptr, ptr %srcp\0A\00" -@.str2579 = private unnamed_addr constant [51 x i8] c" call ptr @memcpy(ptr %sub, ptr %src2, i64 %seg)\0A\00" -@.str2580 = private unnamed_addr constant [46 x i8] c" %tp = getelementptr i8, ptr %sub, i64 %seg\0A\00" -@.str2581 = private unnamed_addr constant [23 x i8] c" store i8 0, ptr %tp\0A\00" -@.str2582 = private unnamed_addr constant [47 x i8] c" %slot = getelementptr ptr, ptr %arr, i64 %i\0A\00" -@.str2583 = private unnamed_addr constant [29 x i8] c" store ptr %sub, ptr %slot\0A\00" -@.str2584 = private unnamed_addr constant [48 x i8] c" %adv2 = getelementptr i8, ptr %h2, i64 %lsep\0A\00" -@.str2585 = private unnamed_addr constant [30 x i8] c" store ptr %adv2, ptr %srcp\0A\00" -@.str2586 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" -@.str2587 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" -@.str2588 = private unnamed_addr constant [19 x i8] c" br label %fcond\0A\00" -@.str2589 = private unnamed_addr constant [7 x i8] c"done:\0A\00" -@.str2590 = private unnamed_addr constant [16 x i8] c" ret ptr %hdr\0A\00" -@.str2591 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str2592 = private unnamed_addr constant [3 x i8] c"of\00" -@.str2593 = private unnamed_addr constant [6 x i8] c"fnv1a\00" -@.str2594 = private unnamed_addr constant [6 x i8] c"crc32\00" -@.str2595 = private unnamed_addr constant [4 x i8] c"mix\00" -@.str2596 = private unnamed_addr constant [8 x i8] c"combine\00" -@.str2597 = private unnamed_addr constant [5 x i8] c"of64\00" -@.str2598 = private unnamed_addr constant [9 x i8] c"fnv1a_64\00" -@.str2599 = private unnamed_addr constant [6 x i8] c"mix64\00" -@.str2600 = private unnamed_addr constant [10 x i8] c"lshr i32 \00" -@.str2601 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str2602 = private unnamed_addr constant [9 x i8] c"xor i32 \00" -@.str2603 = private unnamed_addr constant [3 x i8] c", \00" -@.str2604 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str2605 = private unnamed_addr constant [14 x i8] c", -2048144789\00" -@.str2606 = private unnamed_addr constant [10 x i8] c"lshr i32 \00" -@.str2607 = private unnamed_addr constant [5 x i8] c", 13\00" -@.str2608 = private unnamed_addr constant [9 x i8] c"xor i32 \00" -@.str2609 = private unnamed_addr constant [3 x i8] c", \00" -@.str2610 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str2611 = private unnamed_addr constant [14 x i8] c", -1028477387\00" -@.str2612 = private unnamed_addr constant [10 x i8] c"lshr i32 \00" -@.str2613 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str2614 = private unnamed_addr constant [9 x i8] c"xor i32 \00" -@.str2615 = private unnamed_addr constant [3 x i8] c", \00" -@.str2616 = private unnamed_addr constant [10 x i8] c"lshr i64 \00" -@.str2617 = private unnamed_addr constant [5 x i8] c", 33\00" -@.str2618 = private unnamed_addr constant [9 x i8] c"xor i64 \00" -@.str2619 = private unnamed_addr constant [3 x i8] c", \00" -@.str2620 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str2621 = private unnamed_addr constant [21 x i8] c", -49064778989728563\00" -@.str2622 = private unnamed_addr constant [10 x i8] c"lshr i64 \00" -@.str2623 = private unnamed_addr constant [5 x i8] c", 33\00" -@.str2624 = private unnamed_addr constant [9 x i8] c"xor i64 \00" -@.str2625 = private unnamed_addr constant [3 x i8] c", \00" -@.str2626 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str2627 = private unnamed_addr constant [23 x i8] c", -4265267296055464877\00" -@.str2628 = private unnamed_addr constant [10 x i8] c"lshr i64 \00" -@.str2629 = private unnamed_addr constant [5 x i8] c", 33\00" -@.str2630 = private unnamed_addr constant [9 x i8] c"xor i64 \00" -@.str2631 = private unnamed_addr constant [3 x i8] c", \00" -@.str2632 = private unnamed_addr constant [3 x i8] c"of\00" -@.str2633 = private unnamed_addr constant [6 x i8] c"fnv1a\00" -@.str2634 = private unnamed_addr constant [29 x i8] c"call i32 @lp_hash_fnv1a(ptr \00" -@.str2635 = private unnamed_addr constant [2 x i8] c")\00" -@.str2636 = private unnamed_addr constant [4 x i8] c"int\00" -@.str2637 = private unnamed_addr constant [5 x i8] c"of64\00" -@.str2638 = private unnamed_addr constant [9 x i8] c"fnv1a_64\00" -@.str2639 = private unnamed_addr constant [32 x i8] c"call i64 @lp_hash_fnv1a_64(ptr \00" -@.str2640 = private unnamed_addr constant [2 x i8] c")\00" -@.str2641 = private unnamed_addr constant [5 x i8] c"long\00" -@.str2642 = private unnamed_addr constant [6 x i8] c"mix64\00" -@.str2643 = private unnamed_addr constant [5 x i8] c"long\00" -@.str2644 = private unnamed_addr constant [6 x i8] c"crc32\00" -@.str2645 = private unnamed_addr constant [29 x i8] c"call i32 @lp_hash_crc32(ptr \00" -@.str2646 = private unnamed_addr constant [2 x i8] c")\00" -@.str2647 = private unnamed_addr constant [4 x i8] c"int\00" -@.str2648 = private unnamed_addr constant [4 x i8] c"mix\00" -@.str2649 = private unnamed_addr constant [4 x i8] c"int\00" -@.str2650 = private unnamed_addr constant [2 x i8] c"0\00" -@.str2651 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str2652 = private unnamed_addr constant [14 x i8] c", -1640531527\00" -@.str2653 = private unnamed_addr constant [9 x i8] c"shl i32 \00" -@.str2654 = private unnamed_addr constant [4 x i8] c", 6\00" -@.str2655 = private unnamed_addr constant [10 x i8] c"lshr i32 \00" -@.str2656 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str2657 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str2658 = private unnamed_addr constant [3 x i8] c", \00" -@.str2659 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str2660 = private unnamed_addr constant [3 x i8] c", \00" -@.str2661 = private unnamed_addr constant [9 x i8] c"xor i32 \00" -@.str2662 = private unnamed_addr constant [3 x i8] c", \00" -@.str2663 = private unnamed_addr constant [4 x i8] c"int\00" -@.str2664 = private unnamed_addr constant [37 x i8] c"define i32 @lp_hash_fnv1a(ptr %s) {\0A\00" -@.str2665 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str2666 = private unnamed_addr constant [20 x i8] c" %hp = alloca i32\0A\00" -@.str2667 = private unnamed_addr constant [34 x i8] c" store i32 -2128831035, ptr %hp\0A\00" -@.str2668 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" -@.str2669 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" -@.str2670 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" -@.str2671 = private unnamed_addr constant [7 x i8] c"cond:\0A\00" -@.str2672 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" -@.str2673 = private unnamed_addr constant [41 x i8] c" %p = getelementptr i8, ptr %s, i64 %i\0A\00" -@.str2674 = private unnamed_addr constant [24 x i8] c" %c = load i8, ptr %p\0A\00" -@.str2675 = private unnamed_addr constant [25 x i8] c" %z = icmp eq i8 %c, 0\0A\00" -@.str2676 = private unnamed_addr constant [38 x i8] c" br i1 %z, label %done, label %body\0A\00" -@.str2677 = private unnamed_addr constant [7 x i8] c"body:\0A\00" -@.str2678 = private unnamed_addr constant [27 x i8] c" %ce = zext i8 %c to i32\0A\00" -@.str2679 = private unnamed_addr constant [26 x i8] c" %h = load i32, ptr %hp\0A\00" -@.str2680 = private unnamed_addr constant [24 x i8] c" %x = xor i32 %h, %ce\0A\00" -@.str2681 = private unnamed_addr constant [29 x i8] c" %m = mul i32 %x, 16777619\0A\00" -@.str2682 = private unnamed_addr constant [25 x i8] c" store i32 %m, ptr %hp\0A\00" -@.str2683 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" -@.str2684 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" -@.str2685 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" -@.str2686 = private unnamed_addr constant [7 x i8] c"done:\0A\00" -@.str2687 = private unnamed_addr constant [27 x i8] c" %hr = load i32, ptr %hp\0A\00" -@.str2688 = private unnamed_addr constant [15 x i8] c" ret i32 %hr\0A\00" -@.str2689 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str2690 = private unnamed_addr constant [40 x i8] c"define i64 @lp_hash_fnv1a_64(ptr %s) {\0A\00" -@.str2691 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str2692 = private unnamed_addr constant [20 x i8] c" %hp = alloca i64\0A\00" -@.str2693 = private unnamed_addr constant [43 x i8] c" store i64 -3750763034362895579, ptr %hp\0A\00" -@.str2694 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" -@.str2695 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" -@.str2696 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" -@.str2697 = private unnamed_addr constant [7 x i8] c"cond:\0A\00" -@.str2698 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" -@.str2699 = private unnamed_addr constant [41 x i8] c" %p = getelementptr i8, ptr %s, i64 %i\0A\00" -@.str2700 = private unnamed_addr constant [24 x i8] c" %c = load i8, ptr %p\0A\00" -@.str2701 = private unnamed_addr constant [25 x i8] c" %z = icmp eq i8 %c, 0\0A\00" -@.str2702 = private unnamed_addr constant [38 x i8] c" br i1 %z, label %done, label %body\0A\00" -@.str2703 = private unnamed_addr constant [7 x i8] c"body:\0A\00" -@.str2704 = private unnamed_addr constant [27 x i8] c" %ce = zext i8 %c to i64\0A\00" -@.str2705 = private unnamed_addr constant [26 x i8] c" %h = load i64, ptr %hp\0A\00" -@.str2706 = private unnamed_addr constant [24 x i8] c" %x = xor i64 %h, %ce\0A\00" -@.str2707 = private unnamed_addr constant [34 x i8] c" %m = mul i64 %x, 1099511628211\0A\00" -@.str2708 = private unnamed_addr constant [25 x i8] c" store i64 %m, ptr %hp\0A\00" -@.str2709 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" -@.str2710 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" -@.str2711 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" -@.str2712 = private unnamed_addr constant [7 x i8] c"done:\0A\00" -@.str2713 = private unnamed_addr constant [27 x i8] c" %hr = load i64, ptr %hp\0A\00" -@.str2714 = private unnamed_addr constant [15 x i8] c" ret i64 %hr\0A\00" -@.str2715 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str2716 = private unnamed_addr constant [37 x i8] c"define i32 @lp_hash_crc32(ptr %s) {\0A\00" -@.str2717 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str2718 = private unnamed_addr constant [20 x i8] c" %cp = alloca i32\0A\00" -@.str2719 = private unnamed_addr constant [25 x i8] c" store i32 -1, ptr %cp\0A\00" -@.str2720 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" -@.str2721 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" -@.str2722 = private unnamed_addr constant [20 x i8] c" %kp = alloca i32\0A\00" -@.str2723 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" -@.str2724 = private unnamed_addr constant [7 x i8] c"cond:\0A\00" -@.str2725 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" -@.str2726 = private unnamed_addr constant [41 x i8] c" %p = getelementptr i8, ptr %s, i64 %i\0A\00" -@.str2727 = private unnamed_addr constant [25 x i8] c" %ch = load i8, ptr %p\0A\00" -@.str2728 = private unnamed_addr constant [26 x i8] c" %z = icmp eq i8 %ch, 0\0A\00" -@.str2729 = private unnamed_addr constant [38 x i8] c" br i1 %z, label %done, label %body\0A\00" -@.str2730 = private unnamed_addr constant [7 x i8] c"body:\0A\00" -@.str2731 = private unnamed_addr constant [28 x i8] c" %ce = zext i8 %ch to i32\0A\00" -@.str2732 = private unnamed_addr constant [27 x i8] c" %c0 = load i32, ptr %cp\0A\00" -@.str2733 = private unnamed_addr constant [26 x i8] c" %cx = xor i32 %c0, %ce\0A\00" -@.str2734 = private unnamed_addr constant [26 x i8] c" store i32 %cx, ptr %cp\0A\00" -@.str2735 = private unnamed_addr constant [24 x i8] c" store i32 0, ptr %kp\0A\00" -@.str2736 = private unnamed_addr constant [17 x i8] c" br label %bit\0A\00" -@.str2737 = private unnamed_addr constant [6 x i8] c"bit:\0A\00" -@.str2738 = private unnamed_addr constant [26 x i8] c" %k = load i32, ptr %kp\0A\00" -@.str2739 = private unnamed_addr constant [28 x i8] c" %kd = icmp slt i32 %k, 8\0A\00" -@.str2740 = private unnamed_addr constant [45 x i8] c" br i1 %kd, label %bitbody, label %bitdone\0A\00" -@.str2741 = private unnamed_addr constant [10 x i8] c"bitbody:\0A\00" -@.str2742 = private unnamed_addr constant [27 x i8] c" %c1 = load i32, ptr %cp\0A\00" -@.str2743 = private unnamed_addr constant [24 x i8] c" %lb = and i32 %c1, 1\0A\00" -@.str2744 = private unnamed_addr constant [25 x i8] c" %ls = lshr i32 %c1, 1\0A\00" -@.str2745 = private unnamed_addr constant [29 x i8] c" %ism = icmp eq i32 %lb, 1\0A\00" -@.str2746 = private unnamed_addr constant [47 x i8] c" %px = select i1 %ism, i32 -306674912, i32 0\0A\00" -@.str2747 = private unnamed_addr constant [26 x i8] c" %c2 = xor i32 %ls, %px\0A\00" -@.str2748 = private unnamed_addr constant [26 x i8] c" store i32 %c2, ptr %cp\0A\00" -@.str2749 = private unnamed_addr constant [23 x i8] c" %k1 = add i32 %k, 1\0A\00" -@.str2750 = private unnamed_addr constant [26 x i8] c" store i32 %k1, ptr %kp\0A\00" -@.str2751 = private unnamed_addr constant [17 x i8] c" br label %bit\0A\00" -@.str2752 = private unnamed_addr constant [10 x i8] c"bitdone:\0A\00" -@.str2753 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" -@.str2754 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" -@.str2755 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" -@.str2756 = private unnamed_addr constant [7 x i8] c"done:\0A\00" -@.str2757 = private unnamed_addr constant [27 x i8] c" %cf = load i32, ptr %cp\0A\00" -@.str2758 = private unnamed_addr constant [24 x i8] c" %r = xor i32 %cf, -1\0A\00" -@.str2759 = private unnamed_addr constant [14 x i8] c" ret i32 %r\0A\00" -@.str2760 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str2761 = private unnamed_addr constant [7 x i8] c"sha256\00" -@.str2762 = private unnamed_addr constant [12 x i8] c"hmac_sha256\00" -@.str2763 = private unnamed_addr constant [12 x i8] c"verify_hmac\00" -@.str2764 = private unnamed_addr constant [4 x i8] c"hex\00" -@.str2765 = private unnamed_addr constant [9 x i8] c"ct_equal\00" -@.str2766 = private unnamed_addr constant [13 x i8] c"random_bytes\00" -@.str2767 = private unnamed_addr constant [11 x i8] c"random_hex\00" -@.str2768 = private unnamed_addr constant [11 x i8] c"random_u32\00" -@.str2769 = private unnamed_addr constant [7 x i8] c"base64\00" -@.str2770 = private unnamed_addr constant [7 x i8] c"sha256\00" -@.str2771 = private unnamed_addr constant [29 x i8] c"call ptr @lp_sha256_hex(ptr \00" -@.str2772 = private unnamed_addr constant [2 x i8] c")\00" -@.str2773 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2774 = private unnamed_addr constant [12 x i8] c"hmac_sha256\00" -@.str2775 = private unnamed_addr constant [34 x i8] c"call ptr @lp_hmac_sha256_hex(ptr \00" -@.str2776 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str2777 = private unnamed_addr constant [2 x i8] c")\00" -@.str2778 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2779 = private unnamed_addr constant [4 x i8] c"hex\00" -@.str2780 = private unnamed_addr constant [26 x i8] c"call ptr @lp_str_hex(ptr \00" -@.str2781 = private unnamed_addr constant [2 x i8] c")\00" -@.str2782 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2783 = private unnamed_addr constant [9 x i8] c"ct_equal\00" -@.str2784 = private unnamed_addr constant [27 x i8] c"call i32 @lp_ct_streq(ptr \00" -@.str2785 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str2786 = private unnamed_addr constant [2 x i8] c")\00" -@.str2787 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str2788 = private unnamed_addr constant [13 x i8] c"random_bytes\00" -@.str2789 = private unnamed_addr constant [11 x i8] c"random_hex\00" -@.str2790 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str2791 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str2792 = private unnamed_addr constant [29 x i8] c"call ptr @lp_random_hex(i64 \00" -@.str2793 = private unnamed_addr constant [2 x i8] c")\00" -@.str2794 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2795 = private unnamed_addr constant [11 x i8] c"random_u32\00" -@.str2796 = private unnamed_addr constant [26 x i8] c"call i32 @lp_random_u32()\00" -@.str2797 = private unnamed_addr constant [4 x i8] c"int\00" -@.str2798 = private unnamed_addr constant [7 x i8] c"base64\00" -@.str2799 = private unnamed_addr constant [25 x i8] c"call ptr @lp_base64(ptr \00" -@.str2800 = private unnamed_addr constant [2 x i8] c")\00" -@.str2801 = private unnamed_addr constant [7 x i8] c"string\00" -@.str2802 = private unnamed_addr constant [34 x i8] c"call ptr @lp_hmac_sha256_hex(ptr \00" -@.str2803 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str2804 = private unnamed_addr constant [2 x i8] c")\00" -@.str2805 = private unnamed_addr constant [27 x i8] c"call i32 @lp_ct_streq(ptr \00" +@.str2574 = private unnamed_addr constant [7 x i8] c"last:\0A\00" +@.str2575 = private unnamed_addr constant [37 x i8] c" %rem = call i64 @strlen(ptr %src)\0A\00" +@.str2576 = private unnamed_addr constant [19 x i8] c" br label %store\0A\00" +@.str2577 = private unnamed_addr constant [8 x i8] c"store:\0A\00" +@.str2578 = private unnamed_addr constant [53 x i8] c" %seg = phi i64 [ %seglen, %mid ], [ %rem, %last ]\0A\00" +@.str2579 = private unnamed_addr constant [26 x i8] c" %ssz = add i64 %seg, 1\0A\00" +@.str2580 = private unnamed_addr constant [37 x i8] c" %sub = call ptr @malloc(i64 %ssz)\0A\00" +@.str2581 = private unnamed_addr constant [31 x i8] c" %src2 = load ptr, ptr %srcp\0A\00" +@.str2582 = private unnamed_addr constant [51 x i8] c" call ptr @memcpy(ptr %sub, ptr %src2, i64 %seg)\0A\00" +@.str2583 = private unnamed_addr constant [46 x i8] c" %tp = getelementptr i8, ptr %sub, i64 %seg\0A\00" +@.str2584 = private unnamed_addr constant [23 x i8] c" store i8 0, ptr %tp\0A\00" +@.str2585 = private unnamed_addr constant [47 x i8] c" %slot = getelementptr ptr, ptr %arr, i64 %i\0A\00" +@.str2586 = private unnamed_addr constant [29 x i8] c" store ptr %sub, ptr %slot\0A\00" +@.str2587 = private unnamed_addr constant [48 x i8] c" %adv2 = getelementptr i8, ptr %h2, i64 %lsep\0A\00" +@.str2588 = private unnamed_addr constant [30 x i8] c" store ptr %adv2, ptr %srcp\0A\00" +@.str2589 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" +@.str2590 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" +@.str2591 = private unnamed_addr constant [19 x i8] c" br label %fcond\0A\00" +@.str2592 = private unnamed_addr constant [7 x i8] c"done:\0A\00" +@.str2593 = private unnamed_addr constant [16 x i8] c" ret ptr %hdr\0A\00" +@.str2594 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str2595 = private unnamed_addr constant [3 x i8] c"of\00" +@.str2596 = private unnamed_addr constant [6 x i8] c"fnv1a\00" +@.str2597 = private unnamed_addr constant [6 x i8] c"crc32\00" +@.str2598 = private unnamed_addr constant [4 x i8] c"mix\00" +@.str2599 = private unnamed_addr constant [8 x i8] c"combine\00" +@.str2600 = private unnamed_addr constant [5 x i8] c"of64\00" +@.str2601 = private unnamed_addr constant [9 x i8] c"fnv1a_64\00" +@.str2602 = private unnamed_addr constant [6 x i8] c"mix64\00" +@.str2603 = private unnamed_addr constant [10 x i8] c"lshr i32 \00" +@.str2604 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str2605 = private unnamed_addr constant [9 x i8] c"xor i32 \00" +@.str2606 = private unnamed_addr constant [3 x i8] c", \00" +@.str2607 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str2608 = private unnamed_addr constant [14 x i8] c", -2048144789\00" +@.str2609 = private unnamed_addr constant [10 x i8] c"lshr i32 \00" +@.str2610 = private unnamed_addr constant [5 x i8] c", 13\00" +@.str2611 = private unnamed_addr constant [9 x i8] c"xor i32 \00" +@.str2612 = private unnamed_addr constant [3 x i8] c", \00" +@.str2613 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str2614 = private unnamed_addr constant [14 x i8] c", -1028477387\00" +@.str2615 = private unnamed_addr constant [10 x i8] c"lshr i32 \00" +@.str2616 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str2617 = private unnamed_addr constant [9 x i8] c"xor i32 \00" +@.str2618 = private unnamed_addr constant [3 x i8] c", \00" +@.str2619 = private unnamed_addr constant [10 x i8] c"lshr i64 \00" +@.str2620 = private unnamed_addr constant [5 x i8] c", 33\00" +@.str2621 = private unnamed_addr constant [9 x i8] c"xor i64 \00" +@.str2622 = private unnamed_addr constant [3 x i8] c", \00" +@.str2623 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str2624 = private unnamed_addr constant [21 x i8] c", -49064778989728563\00" +@.str2625 = private unnamed_addr constant [10 x i8] c"lshr i64 \00" +@.str2626 = private unnamed_addr constant [5 x i8] c", 33\00" +@.str2627 = private unnamed_addr constant [9 x i8] c"xor i64 \00" +@.str2628 = private unnamed_addr constant [3 x i8] c", \00" +@.str2629 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str2630 = private unnamed_addr constant [23 x i8] c", -4265267296055464877\00" +@.str2631 = private unnamed_addr constant [10 x i8] c"lshr i64 \00" +@.str2632 = private unnamed_addr constant [5 x i8] c", 33\00" +@.str2633 = private unnamed_addr constant [9 x i8] c"xor i64 \00" +@.str2634 = private unnamed_addr constant [3 x i8] c", \00" +@.str2635 = private unnamed_addr constant [3 x i8] c"of\00" +@.str2636 = private unnamed_addr constant [6 x i8] c"fnv1a\00" +@.str2637 = private unnamed_addr constant [29 x i8] c"call i32 @lp_hash_fnv1a(ptr \00" +@.str2638 = private unnamed_addr constant [2 x i8] c")\00" +@.str2639 = private unnamed_addr constant [4 x i8] c"int\00" +@.str2640 = private unnamed_addr constant [5 x i8] c"of64\00" +@.str2641 = private unnamed_addr constant [9 x i8] c"fnv1a_64\00" +@.str2642 = private unnamed_addr constant [32 x i8] c"call i64 @lp_hash_fnv1a_64(ptr \00" +@.str2643 = private unnamed_addr constant [2 x i8] c")\00" +@.str2644 = private unnamed_addr constant [5 x i8] c"long\00" +@.str2645 = private unnamed_addr constant [6 x i8] c"mix64\00" +@.str2646 = private unnamed_addr constant [5 x i8] c"long\00" +@.str2647 = private unnamed_addr constant [6 x i8] c"crc32\00" +@.str2648 = private unnamed_addr constant [29 x i8] c"call i32 @lp_hash_crc32(ptr \00" +@.str2649 = private unnamed_addr constant [2 x i8] c")\00" +@.str2650 = private unnamed_addr constant [4 x i8] c"int\00" +@.str2651 = private unnamed_addr constant [4 x i8] c"mix\00" +@.str2652 = private unnamed_addr constant [4 x i8] c"int\00" +@.str2653 = private unnamed_addr constant [2 x i8] c"0\00" +@.str2654 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str2655 = private unnamed_addr constant [14 x i8] c", -1640531527\00" +@.str2656 = private unnamed_addr constant [9 x i8] c"shl i32 \00" +@.str2657 = private unnamed_addr constant [4 x i8] c", 6\00" +@.str2658 = private unnamed_addr constant [10 x i8] c"lshr i32 \00" +@.str2659 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str2660 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str2661 = private unnamed_addr constant [3 x i8] c", \00" +@.str2662 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str2663 = private unnamed_addr constant [3 x i8] c", \00" +@.str2664 = private unnamed_addr constant [9 x i8] c"xor i32 \00" +@.str2665 = private unnamed_addr constant [3 x i8] c", \00" +@.str2666 = private unnamed_addr constant [4 x i8] c"int\00" +@.str2667 = private unnamed_addr constant [37 x i8] c"define i32 @lp_hash_fnv1a(ptr %s) {\0A\00" +@.str2668 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str2669 = private unnamed_addr constant [20 x i8] c" %hp = alloca i32\0A\00" +@.str2670 = private unnamed_addr constant [34 x i8] c" store i32 -2128831035, ptr %hp\0A\00" +@.str2671 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" +@.str2672 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" +@.str2673 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" +@.str2674 = private unnamed_addr constant [7 x i8] c"cond:\0A\00" +@.str2675 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" +@.str2676 = private unnamed_addr constant [41 x i8] c" %p = getelementptr i8, ptr %s, i64 %i\0A\00" +@.str2677 = private unnamed_addr constant [24 x i8] c" %c = load i8, ptr %p\0A\00" +@.str2678 = private unnamed_addr constant [25 x i8] c" %z = icmp eq i8 %c, 0\0A\00" +@.str2679 = private unnamed_addr constant [38 x i8] c" br i1 %z, label %done, label %body\0A\00" +@.str2680 = private unnamed_addr constant [7 x i8] c"body:\0A\00" +@.str2681 = private unnamed_addr constant [27 x i8] c" %ce = zext i8 %c to i32\0A\00" +@.str2682 = private unnamed_addr constant [26 x i8] c" %h = load i32, ptr %hp\0A\00" +@.str2683 = private unnamed_addr constant [24 x i8] c" %x = xor i32 %h, %ce\0A\00" +@.str2684 = private unnamed_addr constant [29 x i8] c" %m = mul i32 %x, 16777619\0A\00" +@.str2685 = private unnamed_addr constant [25 x i8] c" store i32 %m, ptr %hp\0A\00" +@.str2686 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" +@.str2687 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" +@.str2688 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" +@.str2689 = private unnamed_addr constant [7 x i8] c"done:\0A\00" +@.str2690 = private unnamed_addr constant [27 x i8] c" %hr = load i32, ptr %hp\0A\00" +@.str2691 = private unnamed_addr constant [15 x i8] c" ret i32 %hr\0A\00" +@.str2692 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str2693 = private unnamed_addr constant [40 x i8] c"define i64 @lp_hash_fnv1a_64(ptr %s) {\0A\00" +@.str2694 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str2695 = private unnamed_addr constant [20 x i8] c" %hp = alloca i64\0A\00" +@.str2696 = private unnamed_addr constant [43 x i8] c" store i64 -3750763034362895579, ptr %hp\0A\00" +@.str2697 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" +@.str2698 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" +@.str2699 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" +@.str2700 = private unnamed_addr constant [7 x i8] c"cond:\0A\00" +@.str2701 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" +@.str2702 = private unnamed_addr constant [41 x i8] c" %p = getelementptr i8, ptr %s, i64 %i\0A\00" +@.str2703 = private unnamed_addr constant [24 x i8] c" %c = load i8, ptr %p\0A\00" +@.str2704 = private unnamed_addr constant [25 x i8] c" %z = icmp eq i8 %c, 0\0A\00" +@.str2705 = private unnamed_addr constant [38 x i8] c" br i1 %z, label %done, label %body\0A\00" +@.str2706 = private unnamed_addr constant [7 x i8] c"body:\0A\00" +@.str2707 = private unnamed_addr constant [27 x i8] c" %ce = zext i8 %c to i64\0A\00" +@.str2708 = private unnamed_addr constant [26 x i8] c" %h = load i64, ptr %hp\0A\00" +@.str2709 = private unnamed_addr constant [24 x i8] c" %x = xor i64 %h, %ce\0A\00" +@.str2710 = private unnamed_addr constant [34 x i8] c" %m = mul i64 %x, 1099511628211\0A\00" +@.str2711 = private unnamed_addr constant [25 x i8] c" store i64 %m, ptr %hp\0A\00" +@.str2712 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" +@.str2713 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" +@.str2714 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" +@.str2715 = private unnamed_addr constant [7 x i8] c"done:\0A\00" +@.str2716 = private unnamed_addr constant [27 x i8] c" %hr = load i64, ptr %hp\0A\00" +@.str2717 = private unnamed_addr constant [15 x i8] c" ret i64 %hr\0A\00" +@.str2718 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str2719 = private unnamed_addr constant [37 x i8] c"define i32 @lp_hash_crc32(ptr %s) {\0A\00" +@.str2720 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str2721 = private unnamed_addr constant [20 x i8] c" %cp = alloca i32\0A\00" +@.str2722 = private unnamed_addr constant [25 x i8] c" store i32 -1, ptr %cp\0A\00" +@.str2723 = private unnamed_addr constant [20 x i8] c" %ip = alloca i64\0A\00" +@.str2724 = private unnamed_addr constant [24 x i8] c" store i64 0, ptr %ip\0A\00" +@.str2725 = private unnamed_addr constant [20 x i8] c" %kp = alloca i32\0A\00" +@.str2726 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" +@.str2727 = private unnamed_addr constant [7 x i8] c"cond:\0A\00" +@.str2728 = private unnamed_addr constant [26 x i8] c" %i = load i64, ptr %ip\0A\00" +@.str2729 = private unnamed_addr constant [41 x i8] c" %p = getelementptr i8, ptr %s, i64 %i\0A\00" +@.str2730 = private unnamed_addr constant [25 x i8] c" %ch = load i8, ptr %p\0A\00" +@.str2731 = private unnamed_addr constant [26 x i8] c" %z = icmp eq i8 %ch, 0\0A\00" +@.str2732 = private unnamed_addr constant [38 x i8] c" br i1 %z, label %done, label %body\0A\00" +@.str2733 = private unnamed_addr constant [7 x i8] c"body:\0A\00" +@.str2734 = private unnamed_addr constant [28 x i8] c" %ce = zext i8 %ch to i32\0A\00" +@.str2735 = private unnamed_addr constant [27 x i8] c" %c0 = load i32, ptr %cp\0A\00" +@.str2736 = private unnamed_addr constant [26 x i8] c" %cx = xor i32 %c0, %ce\0A\00" +@.str2737 = private unnamed_addr constant [26 x i8] c" store i32 %cx, ptr %cp\0A\00" +@.str2738 = private unnamed_addr constant [24 x i8] c" store i32 0, ptr %kp\0A\00" +@.str2739 = private unnamed_addr constant [17 x i8] c" br label %bit\0A\00" +@.str2740 = private unnamed_addr constant [6 x i8] c"bit:\0A\00" +@.str2741 = private unnamed_addr constant [26 x i8] c" %k = load i32, ptr %kp\0A\00" +@.str2742 = private unnamed_addr constant [28 x i8] c" %kd = icmp slt i32 %k, 8\0A\00" +@.str2743 = private unnamed_addr constant [45 x i8] c" br i1 %kd, label %bitbody, label %bitdone\0A\00" +@.str2744 = private unnamed_addr constant [10 x i8] c"bitbody:\0A\00" +@.str2745 = private unnamed_addr constant [27 x i8] c" %c1 = load i32, ptr %cp\0A\00" +@.str2746 = private unnamed_addr constant [24 x i8] c" %lb = and i32 %c1, 1\0A\00" +@.str2747 = private unnamed_addr constant [25 x i8] c" %ls = lshr i32 %c1, 1\0A\00" +@.str2748 = private unnamed_addr constant [29 x i8] c" %ism = icmp eq i32 %lb, 1\0A\00" +@.str2749 = private unnamed_addr constant [47 x i8] c" %px = select i1 %ism, i32 -306674912, i32 0\0A\00" +@.str2750 = private unnamed_addr constant [26 x i8] c" %c2 = xor i32 %ls, %px\0A\00" +@.str2751 = private unnamed_addr constant [26 x i8] c" store i32 %c2, ptr %cp\0A\00" +@.str2752 = private unnamed_addr constant [23 x i8] c" %k1 = add i32 %k, 1\0A\00" +@.str2753 = private unnamed_addr constant [26 x i8] c" store i32 %k1, ptr %kp\0A\00" +@.str2754 = private unnamed_addr constant [17 x i8] c" br label %bit\0A\00" +@.str2755 = private unnamed_addr constant [10 x i8] c"bitdone:\0A\00" +@.str2756 = private unnamed_addr constant [23 x i8] c" %i1 = add i64 %i, 1\0A\00" +@.str2757 = private unnamed_addr constant [26 x i8] c" store i64 %i1, ptr %ip\0A\00" +@.str2758 = private unnamed_addr constant [18 x i8] c" br label %cond\0A\00" +@.str2759 = private unnamed_addr constant [7 x i8] c"done:\0A\00" +@.str2760 = private unnamed_addr constant [27 x i8] c" %cf = load i32, ptr %cp\0A\00" +@.str2761 = private unnamed_addr constant [24 x i8] c" %r = xor i32 %cf, -1\0A\00" +@.str2762 = private unnamed_addr constant [14 x i8] c" ret i32 %r\0A\00" +@.str2763 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str2764 = private unnamed_addr constant [7 x i8] c"sha256\00" +@.str2765 = private unnamed_addr constant [12 x i8] c"hmac_sha256\00" +@.str2766 = private unnamed_addr constant [12 x i8] c"verify_hmac\00" +@.str2767 = private unnamed_addr constant [4 x i8] c"hex\00" +@.str2768 = private unnamed_addr constant [9 x i8] c"ct_equal\00" +@.str2769 = private unnamed_addr constant [13 x i8] c"random_bytes\00" +@.str2770 = private unnamed_addr constant [11 x i8] c"random_hex\00" +@.str2771 = private unnamed_addr constant [11 x i8] c"random_u32\00" +@.str2772 = private unnamed_addr constant [7 x i8] c"base64\00" +@.str2773 = private unnamed_addr constant [7 x i8] c"sha256\00" +@.str2774 = private unnamed_addr constant [29 x i8] c"call ptr @lp_sha256_hex(ptr \00" +@.str2775 = private unnamed_addr constant [2 x i8] c")\00" +@.str2776 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2777 = private unnamed_addr constant [12 x i8] c"hmac_sha256\00" +@.str2778 = private unnamed_addr constant [34 x i8] c"call ptr @lp_hmac_sha256_hex(ptr \00" +@.str2779 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str2780 = private unnamed_addr constant [2 x i8] c")\00" +@.str2781 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2782 = private unnamed_addr constant [4 x i8] c"hex\00" +@.str2783 = private unnamed_addr constant [26 x i8] c"call ptr @lp_str_hex(ptr \00" +@.str2784 = private unnamed_addr constant [2 x i8] c")\00" +@.str2785 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2786 = private unnamed_addr constant [9 x i8] c"ct_equal\00" +@.str2787 = private unnamed_addr constant [27 x i8] c"call i32 @lp_ct_streq(ptr \00" +@.str2788 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str2789 = private unnamed_addr constant [2 x i8] c")\00" +@.str2790 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str2791 = private unnamed_addr constant [13 x i8] c"random_bytes\00" +@.str2792 = private unnamed_addr constant [11 x i8] c"random_hex\00" +@.str2793 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str2794 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str2795 = private unnamed_addr constant [29 x i8] c"call ptr @lp_random_hex(i64 \00" +@.str2796 = private unnamed_addr constant [2 x i8] c")\00" +@.str2797 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2798 = private unnamed_addr constant [11 x i8] c"random_u32\00" +@.str2799 = private unnamed_addr constant [26 x i8] c"call i32 @lp_random_u32()\00" +@.str2800 = private unnamed_addr constant [4 x i8] c"int\00" +@.str2801 = private unnamed_addr constant [7 x i8] c"base64\00" +@.str2802 = private unnamed_addr constant [25 x i8] c"call ptr @lp_base64(ptr \00" +@.str2803 = private unnamed_addr constant [2 x i8] c")\00" +@.str2804 = private unnamed_addr constant [7 x i8] c"string\00" +@.str2805 = private unnamed_addr constant [34 x i8] c"call ptr @lp_hmac_sha256_hex(ptr \00" @.str2806 = private unnamed_addr constant [7 x i8] c", ptr \00" @.str2807 = private unnamed_addr constant [2 x i8] c")\00" -@.str2808 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str2809 = private unnamed_addr constant [1083 x i8] c"@sha256_K = private unnamed_addr constant [64 x i32] [i32 1116352408, i32 1899447441, i32 -1245643825, i32 -373957723, i32 961987163, i32 1508970993, i32 -1841331548, i32 -1424204075, i32 -670586216, i32 310598401, i32 607225278, i32 1426881987, i32 1925078388, i32 -2132889090, i32 -1680079193, i32 -1046744716, i32 -459576895, i32 -272742522, i32 264347078, i32 604807628, i32 770255983, i32 1249150122, i32 1555081692, i32 1996064986, i32 -1740746414, i32 -1473132947, i32 -1341970488, i32 -1084653625, i32 -958395405, i32 -710438585, i32 113926993, i32 338241895, i32 666307205, i32 773529912, i32 1294757372, i32 1396182291, i32 1695183700, i32 1986661051, i32 -2117940946, i32 -1838011259, i32 -1564481375, i32 -1474664885, i32 -1035236496, i32 -949202525, i32 -778901479, i32 -694614492, i32 -200395387, i32 275423344, i32 430227734, i32 506948616, i32 659060556, i32 883997877, i32 958139571, i32 1322822218, i32 1537002063, i32 1747873779, i32 1955562222, i32 2024104815, i32 -2067236844, i32 -1933114872, i32 -1866530822, i32 -1538233109, i32 -1090935817, i32 -965641998]\0A\00" -@.str2810 = private unnamed_addr constant [41 x i8] c"define i32 @lp_rotr32(i32 %x, i32 %n) {\0A\00" -@.str2811 = private unnamed_addr constant [104 x i8] c" %r = lshr i32 %x, %n\0A %m = sub i32 32, %n\0A %l = shl i32 %x, %m\0A %o = or i32 %r, %l\0A ret i32 %o\0A}\0A\00" -@.str2812 = private unnamed_addr constant [60 x i8] c"define void @lp_sha256_buf(ptr %msg, i64 %len, ptr %out) {\0A\00" -@.str2813 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str2814 = private unnamed_addr constant [50 x i8] c" %H = alloca [8 x i32]\0A %W = alloca [64 x i32]\0A\00" -@.str2815 = private unnamed_addr constant [145 x i8] c" %a = alloca i32\0A %b = alloca i32\0A %c = alloca i32\0A %d = alloca i32\0A %e = alloca i32\0A %f = alloca i32\0A %g = alloca i32\0A %h = alloca i32\0A\00" -@.str2816 = private unnamed_addr constant [39 x i8] c" %ip = alloca i64\0A %bp = alloca i64\0A\00" -@.str2817 = private unnamed_addr constant [95 x i8] c" %e0 = add i64 %len, 8\0A %e1 = lshr i64 %e0, 6\0A %e2 = add i64 %e1, 1\0A %pl = shl i64 %e2, 6\0A\00" -@.str2818 = private unnamed_addr constant [36 x i8] c" %buf = call ptr @malloc(i64 %pl)\0A\00" -@.str2819 = private unnamed_addr constant [46 x i8] c" call ptr @memset(ptr %buf, i32 0, i64 %pl)\0A\00" -@.str2820 = private unnamed_addr constant [50 x i8] c" call ptr @memcpy(ptr %buf, ptr %msg, i64 %len)\0A\00" -@.str2821 = private unnamed_addr constant [77 x i8] c" %pmark = getelementptr i8, ptr %buf, i64 %len\0A store i8 -128, ptr %pmark\0A\00" -@.str2822 = private unnamed_addr constant [27 x i8] c" %bits = shl i64 %len, 3\0A\00" -@.str2823 = private unnamed_addr constant [41 x i8] c" store i64 0, ptr %ip\0A br label %lenc\0A\00" -@.str2824 = private unnamed_addr constant [104 x i8] c"lenc:\0A %lj = load i64, ptr %ip\0A %ljlt = icmp slt i64 %lj, 8\0A br i1 %ljlt, label %lenb, label %hinit\0A\00" -@.str2825 = private unnamed_addr constant [7 x i8] c"lenb:\0A\00" -@.str2826 = private unnamed_addr constant [113 x i8] c" %lj8 = mul i64 %lj, 8\0A %lsh = sub i64 56, %lj8\0A %lbsh = lshr i64 %bits, %lsh\0A %lbb = trunc i64 %lbsh to i8\0A\00" -@.str2827 = private unnamed_addr constant [128 x i8] c" %lpm8 = sub i64 %pl, 8\0A %lpos = add i64 %lpm8, %lj\0A %lpp = getelementptr i8, ptr %buf, i64 %lpos\0A store i8 %lbb, ptr %lpp\0A\00" -@.str2828 = private unnamed_addr constant [68 x i8] c" %lj1 = add i64 %lj, 1\0A store i64 %lj1, ptr %ip\0A br label %lenc\0A\00" -@.str2829 = private unnamed_addr constant [8 x i8] c"hinit:\0A\00" -@.str2830 = private unnamed_addr constant [87 x i8] c" %H0 = getelementptr [8 x i32], ptr %H, i64 0, i64 0\0A store i32 1779033703, ptr %H0\0A\00" -@.str2831 = private unnamed_addr constant [88 x i8] c" %H1 = getelementptr [8 x i32], ptr %H, i64 0, i64 1\0A store i32 -1150833019, ptr %H1\0A\00" -@.str2832 = private unnamed_addr constant [87 x i8] c" %H2 = getelementptr [8 x i32], ptr %H, i64 0, i64 2\0A store i32 1013904242, ptr %H2\0A\00" -@.str2833 = private unnamed_addr constant [88 x i8] c" %H3 = getelementptr [8 x i32], ptr %H, i64 0, i64 3\0A store i32 -1521486534, ptr %H3\0A\00" -@.str2834 = private unnamed_addr constant [87 x i8] c" %H4 = getelementptr [8 x i32], ptr %H, i64 0, i64 4\0A store i32 1359893119, ptr %H4\0A\00" -@.str2835 = private unnamed_addr constant [88 x i8] c" %H5 = getelementptr [8 x i32], ptr %H, i64 0, i64 5\0A store i32 -1694144372, ptr %H5\0A\00" -@.str2836 = private unnamed_addr constant [86 x i8] c" %H6 = getelementptr [8 x i32], ptr %H, i64 0, i64 6\0A store i32 528734635, ptr %H6\0A\00" -@.str2837 = private unnamed_addr constant [87 x i8] c" %H7 = getelementptr [8 x i32], ptr %H, i64 0, i64 7\0A store i32 1541459225, ptr %H7\0A\00" -@.str2838 = private unnamed_addr constant [65 x i8] c" %nb = lshr i64 %pl, 6\0A store i64 0, ptr %bp\0A br label %blkc\0A\00" -@.str2839 = private unnamed_addr constant [103 x i8] c"blkc:\0A %bi = load i64, ptr %bp\0A %blt = icmp ult i64 %bi, %nb\0A br i1 %blt, label %blkb, label %outp\0A\00" -@.str2840 = private unnamed_addr constant [80 x i8] c"blkb:\0A %bi64 = shl i64 %bi, 6\0A %base = getelementptr i8, ptr %buf, i64 %bi64\0A\00" -@.str2841 = private unnamed_addr constant [40 x i8] c" store i64 0, ptr %ip\0A br label %w1c\0A\00" -@.str2842 = private unnamed_addr constant [104 x i8] c"w1c:\0A %wi = load i64, ptr %ip\0A %wilt = icmp slt i64 %wi, 16\0A br i1 %wilt, label %w1b, label %w2init\0A\00" -@.str2843 = private unnamed_addr constant [6 x i8] c"w1b:\0A\00" -@.str2844 = private unnamed_addr constant [25 x i8] c" %wi4 = shl i64 %wi, 2\0A\00" -@.str2845 = private unnamed_addr constant [75 x i8] c" %wp0 = getelementptr i8, ptr %base, i64 %wi4\0A %wc0 = load i8, ptr %wp0\0A\00" -@.str2846 = private unnamed_addr constant [100 x i8] c" %wo1 = add i64 %wi4, 1\0A %wp1 = getelementptr i8, ptr %base, i64 %wo1\0A %wc1 = load i8, ptr %wp1\0A\00" -@.str2847 = private unnamed_addr constant [100 x i8] c" %wo2 = add i64 %wi4, 2\0A %wp2 = getelementptr i8, ptr %base, i64 %wo2\0A %wc2 = load i8, ptr %wp2\0A\00" -@.str2848 = private unnamed_addr constant [100 x i8] c" %wo3 = add i64 %wi4, 3\0A %wp3 = getelementptr i8, ptr %base, i64 %wo3\0A %wc3 = load i8, ptr %wp3\0A\00" -@.str2849 = private unnamed_addr constant [117 x i8] c" %wz0 = zext i8 %wc0 to i32\0A %wz1 = zext i8 %wc1 to i32\0A %wz2 = zext i8 %wc2 to i32\0A %wz3 = zext i8 %wc3 to i32\0A\00" -@.str2850 = private unnamed_addr constant [80 x i8] c" %ws24 = shl i32 %wz0, 24\0A %ws16 = shl i32 %wz1, 16\0A %ws8 = shl i32 %wz2, 8\0A\00" -@.str2851 = private unnamed_addr constant [89 x i8] c" %wor1 = or i32 %ws24, %ws16\0A %wor2 = or i32 %wor1, %ws8\0A %word = or i32 %wor2, %wz3\0A\00" -@.str2852 = private unnamed_addr constant [87 x i8] c" %wwp = getelementptr [64 x i32], ptr %W, i64 0, i64 %wi\0A store i32 %word, ptr %wwp\0A\00" -@.str2853 = private unnamed_addr constant [67 x i8] c" %wi1 = add i64 %wi, 1\0A store i64 %wi1, ptr %ip\0A br label %w1c\0A\00" -@.str2854 = private unnamed_addr constant [49 x i8] c"w2init:\0A store i64 16, ptr %ip\0A br label %w2c\0A\00" -@.str2855 = private unnamed_addr constant [106 x i8] c"w2c:\0A %xi = load i64, ptr %ip\0A %xilt = icmp slt i64 %xi, 64\0A br i1 %xilt, label %w2b, label %compinit\0A\00" -@.str2856 = private unnamed_addr constant [6 x i8] c"w2b:\0A\00" -@.str2857 = private unnamed_addr constant [117 x i8] c" %im15 = sub i64 %xi, 15\0A %pm15 = getelementptr [64 x i32], ptr %W, i64 0, i64 %im15\0A %w15 = load i32, ptr %pm15\0A\00" -@.str2858 = private unnamed_addr constant [119 x i8] c" %r7 = call i32 @lp_rotr32(i32 %w15, i32 7)\0A %r18 = call i32 @lp_rotr32(i32 %w15, i32 18)\0A %sh3 = lshr i32 %w15, 3\0A\00" -@.str2859 = private unnamed_addr constant [55 x i8] c" %x01 = xor i32 %r7, %r18\0A %s0 = xor i32 %x01, %sh3\0A\00" -@.str2860 = private unnamed_addr constant [112 x i8] c" %im2 = sub i64 %xi, 2\0A %pm2 = getelementptr [64 x i32], ptr %W, i64 0, i64 %im2\0A %w2v = load i32, ptr %pm2\0A\00" -@.str2861 = private unnamed_addr constant [123 x i8] c" %r17 = call i32 @lp_rotr32(i32 %w2v, i32 17)\0A %r19 = call i32 @lp_rotr32(i32 %w2v, i32 19)\0A %sh10 = lshr i32 %w2v, 10\0A\00" -@.str2862 = private unnamed_addr constant [57 x i8] c" %x02 = xor i32 %r17, %r19\0A %s1 = xor i32 %x02, %sh10\0A\00" -@.str2863 = private unnamed_addr constant [117 x i8] c" %im16 = sub i64 %xi, 16\0A %pm16 = getelementptr [64 x i32], ptr %W, i64 0, i64 %im16\0A %w16 = load i32, ptr %pm16\0A\00" -@.str2864 = private unnamed_addr constant [111 x i8] c" %im7 = sub i64 %xi, 7\0A %pm7 = getelementptr [64 x i32], ptr %W, i64 0, i64 %im7\0A %w7 = load i32, ptr %pm7\0A\00" -@.str2865 = private unnamed_addr constant [81 x i8] c" %wa1 = add i32 %w16, %s0\0A %wa2 = add i32 %wa1, %w7\0A %wv = add i32 %wa2, %s1\0A\00" -@.str2866 = private unnamed_addr constant [85 x i8] c" %wpi = getelementptr [64 x i32], ptr %W, i64 0, i64 %xi\0A store i32 %wv, ptr %wpi\0A\00" -@.str2867 = private unnamed_addr constant [67 x i8] c" %xi1 = add i64 %xi, 1\0A store i64 %xi1, ptr %ip\0A br label %w2c\0A\00" -@.str2868 = private unnamed_addr constant [11 x i8] c"compinit:\0A\00" -@.str2869 = private unnamed_addr constant [53 x i8] c" %cv0 = load i32, ptr %H0\0A store i32 %cv0, ptr %a\0A\00" -@.str2870 = private unnamed_addr constant [53 x i8] c" %cv1 = load i32, ptr %H1\0A store i32 %cv1, ptr %b\0A\00" -@.str2871 = private unnamed_addr constant [53 x i8] c" %cv2 = load i32, ptr %H2\0A store i32 %cv2, ptr %c\0A\00" -@.str2872 = private unnamed_addr constant [53 x i8] c" %cv3 = load i32, ptr %H3\0A store i32 %cv3, ptr %d\0A\00" -@.str2873 = private unnamed_addr constant [53 x i8] c" %cv4 = load i32, ptr %H4\0A store i32 %cv4, ptr %e\0A\00" -@.str2874 = private unnamed_addr constant [53 x i8] c" %cv5 = load i32, ptr %H5\0A store i32 %cv5, ptr %f\0A\00" -@.str2875 = private unnamed_addr constant [53 x i8] c" %cv6 = load i32, ptr %H6\0A store i32 %cv6, ptr %g\0A\00" -@.str2876 = private unnamed_addr constant [53 x i8] c" %cv7 = load i32, ptr %H7\0A store i32 %cv7, ptr %h\0A\00" -@.str2877 = private unnamed_addr constant [39 x i8] c" store i64 0, ptr %ip\0A br label %rc\0A\00" -@.str2878 = private unnamed_addr constant [98 x i8] c"rc:\0A %ri = load i64, ptr %ip\0A %rlt = icmp slt i64 %ri, 64\0A br i1 %rlt, label %rb, label %addH\0A\00" -@.str2879 = private unnamed_addr constant [5 x i8] c"rb:\0A\00" -@.str2880 = private unnamed_addr constant [102 x i8] c" %av = load i32, ptr %a\0A %bv = load i32, ptr %b\0A %cvv = load i32, ptr %c\0A %dv = load i32, ptr %d\0A\00" -@.str2881 = private unnamed_addr constant [101 x i8] c" %ev = load i32, ptr %e\0A %fv = load i32, ptr %f\0A %gv = load i32, ptr %g\0A %hv = load i32, ptr %h\0A\00" -@.str2882 = private unnamed_addr constant [137 x i8] c" %e6 = call i32 @lp_rotr32(i32 %ev, i32 6)\0A %e11 = call i32 @lp_rotr32(i32 %ev, i32 11)\0A %e25 = call i32 @lp_rotr32(i32 %ev, i32 25)\0A\00" -@.str2883 = private unnamed_addr constant [55 x i8] c" %S1a = xor i32 %e6, %e11\0A %S1 = xor i32 %S1a, %e25\0A\00" -@.str2884 = private unnamed_addr constant [102 x i8] c" %ef = and i32 %ev, %fv\0A %ne = xor i32 %ev, -1\0A %neg = and i32 %ne, %gv\0A %ch = xor i32 %ef, %neg\0A\00" -@.str2885 = private unnamed_addr constant [91 x i8] c" %kp = getelementptr [64 x i32], ptr @sha256_K, i64 0, i64 %ri\0A %kv = load i32, ptr %kp\0A\00" -@.str2886 = private unnamed_addr constant [87 x i8] c" %wpr = getelementptr [64 x i32], ptr %W, i64 0, i64 %ri\0A %wvr = load i32, ptr %wpr\0A\00" -@.str2887 = private unnamed_addr constant [111 x i8] c" %t1a = add i32 %hv, %S1\0A %t1b = add i32 %t1a, %ch\0A %t1c = add i32 %t1b, %kv\0A %temp1 = add i32 %t1c, %wvr\0A\00" -@.str2888 = private unnamed_addr constant [138 x i8] c" %a2r = call i32 @lp_rotr32(i32 %av, i32 2)\0A %a13 = call i32 @lp_rotr32(i32 %av, i32 13)\0A %a22 = call i32 @lp_rotr32(i32 %av, i32 22)\0A\00" -@.str2889 = private unnamed_addr constant [56 x i8] c" %S0a = xor i32 %a2r, %a13\0A %S0 = xor i32 %S0a, %a22\0A\00" -@.str2890 = private unnamed_addr constant [131 x i8] c" %ab = and i32 %av, %bv\0A %ac = and i32 %av, %cvv\0A %bc = and i32 %bv, %cvv\0A %mj1 = xor i32 %ab, %ac\0A %maj = xor i32 %mj1, %bc\0A\00" -@.str2891 = private unnamed_addr constant [30 x i8] c" %temp2 = add i32 %S0, %maj\0A\00" -@.str2892 = private unnamed_addr constant [73 x i8] c" store i32 %gv, ptr %h\0A store i32 %fv, ptr %g\0A store i32 %ev, ptr %f\0A\00" -@.str2893 = private unnamed_addr constant [57 x i8] c" %newe = add i32 %dv, %temp1\0A store i32 %newe, ptr %e\0A\00" -@.str2894 = private unnamed_addr constant [74 x i8] c" store i32 %cvv, ptr %d\0A store i32 %bv, ptr %c\0A store i32 %av, ptr %b\0A\00" -@.str2895 = private unnamed_addr constant [60 x i8] c" %newa = add i32 %temp1, %temp2\0A store i32 %newa, ptr %a\0A\00" -@.str2896 = private unnamed_addr constant [66 x i8] c" %rin = add i64 %ri, 1\0A store i64 %rin, ptr %ip\0A br label %rc\0A\00" -@.str2897 = private unnamed_addr constant [7 x i8] c"addH:\0A\00" -@.str2898 = private unnamed_addr constant [106 x i8] c" %fa = load i32, ptr %a\0A %lH0 = load i32, ptr %H0\0A %nH0 = add i32 %lH0, %fa\0A store i32 %nH0, ptr %H0\0A\00" -@.str2899 = private unnamed_addr constant [106 x i8] c" %fb = load i32, ptr %b\0A %lH1 = load i32, ptr %H1\0A %nH1 = add i32 %lH1, %fb\0A store i32 %nH1, ptr %H1\0A\00" -@.str2900 = private unnamed_addr constant [106 x i8] c" %fc = load i32, ptr %c\0A %lH2 = load i32, ptr %H2\0A %nH2 = add i32 %lH2, %fc\0A store i32 %nH2, ptr %H2\0A\00" -@.str2901 = private unnamed_addr constant [106 x i8] c" %fd = load i32, ptr %d\0A %lH3 = load i32, ptr %H3\0A %nH3 = add i32 %lH3, %fd\0A store i32 %nH3, ptr %H3\0A\00" -@.str2902 = private unnamed_addr constant [106 x i8] c" %fe = load i32, ptr %e\0A %lH4 = load i32, ptr %H4\0A %nH4 = add i32 %lH4, %fe\0A store i32 %nH4, ptr %H4\0A\00" -@.str2903 = private unnamed_addr constant [106 x i8] c" %ff = load i32, ptr %f\0A %lH5 = load i32, ptr %H5\0A %nH5 = add i32 %lH5, %ff\0A store i32 %nH5, ptr %H5\0A\00" -@.str2904 = private unnamed_addr constant [106 x i8] c" %fg = load i32, ptr %g\0A %lH6 = load i32, ptr %H6\0A %nH6 = add i32 %lH6, %fg\0A store i32 %nH6, ptr %H6\0A\00" -@.str2905 = private unnamed_addr constant [106 x i8] c" %fh = load i32, ptr %h\0A %lH7 = load i32, ptr %H7\0A %nH7 = add i32 %lH7, %fh\0A store i32 %nH7, ptr %H7\0A\00" -@.str2906 = private unnamed_addr constant [70 x i8] c" %binc = add i64 %bi, 1\0A store i64 %binc, ptr %bp\0A br label %blkc\0A\00" -@.str2907 = private unnamed_addr constant [45 x i8] c"outp:\0A store i64 0, ptr %ip\0A br label %oc\0A\00" -@.str2908 = private unnamed_addr constant [98 x i8] c"oc:\0A %oi = load i64, ptr %ip\0A %olt = icmp slt i64 %oi, 8\0A br i1 %olt, label %ob, label %freeb\0A\00" -@.str2909 = private unnamed_addr constant [5 x i8] c"ob:\0A\00" -@.str2910 = private unnamed_addr constant [111 x i8] c" %hpp = getelementptr [8 x i32], ptr %H, i64 0, i64 %oi\0A %hval = load i32, ptr %hpp\0A %oi4 = shl i64 %oi, 2\0A\00" -@.str2911 = private unnamed_addr constant [137 x i8] c" %ob24 = lshr i32 %hval, 24\0A %obb24 = trunc i32 %ob24 to i8\0A %op0 = getelementptr i8, ptr %out, i64 %oi4\0A store i8 %obb24, ptr %op0\0A\00" -@.str2912 = private unnamed_addr constant [162 x i8] c" %ob16 = lshr i32 %hval, 16\0A %obb16 = trunc i32 %ob16 to i8\0A %oo1 = add i64 %oi4, 1\0A %op1 = getelementptr i8, ptr %out, i64 %oo1\0A store i8 %obb16, ptr %op1\0A\00" -@.str2913 = private unnamed_addr constant [157 x i8] c" %ob8 = lshr i32 %hval, 8\0A %obb8 = trunc i32 %ob8 to i8\0A %oo2 = add i64 %oi4, 2\0A %op2 = getelementptr i8, ptr %out, i64 %oo2\0A store i8 %obb8, ptr %op2\0A\00" -@.str2914 = private unnamed_addr constant [131 x i8] c" %obb0 = trunc i32 %hval to i8\0A %oo3 = add i64 %oi4, 3\0A %op3 = getelementptr i8, ptr %out, i64 %oo3\0A store i8 %obb0, ptr %op3\0A\00" -@.str2915 = private unnamed_addr constant [66 x i8] c" %oin = add i64 %oi, 1\0A store i64 %oin, ptr %ip\0A br label %oc\0A\00" -@.str2916 = private unnamed_addr constant [49 x i8] c"freeb:\0A call void @free(ptr %buf)\0A ret void\0A}\0A\00" -@.str2917 = private unnamed_addr constant [35 x i8] c"define i8 @lp_hex_digit(i32 %d) {\0A\00" -@.str2918 = private unnamed_addr constant [134 x i8] c" %lt = icmp ult i32 %d, 10\0A %base = select i1 %lt, i32 48, i32 87\0A %v = add i32 %base, %d\0A %c = trunc i32 %v to i8\0A ret i8 %c\0A}\0A\00" -@.str2919 = private unnamed_addr constant [46 x i8] c"define ptr @lp_hex_encode(ptr %in, i64 %n) {\0A\00" -@.str2920 = private unnamed_addr constant [152 x i8] c"entry:\0A %ip = alloca i64\0A %olen = shl i64 %n, 1\0A %olen1 = add i64 %olen, 1\0A %s = call ptr @malloc(i64 %olen1)\0A store i64 0, ptr %ip\0A br label %c\0A\00" -@.str2921 = private unnamed_addr constant [94 x i8] c"c:\0A %i = load i64, ptr %ip\0A %lt = icmp ult i64 %i, %n\0A br i1 %lt, label %bdy, label %done\0A\00" -@.str2922 = private unnamed_addr constant [104 x i8] c"bdy:\0A %pp = getelementptr i8, ptr %in, i64 %i\0A %byte = load i8, ptr %pp\0A %bz = zext i8 %byte to i32\0A\00" -@.str2923 = private unnamed_addr constant [127 x i8] c" %hi = lshr i32 %bz, 4\0A %lo = and i32 %bz, 15\0A %hc = call i8 @lp_hex_digit(i32 %hi)\0A %lc = call i8 @lp_hex_digit(i32 %lo)\0A\00" -@.str2924 = private unnamed_addr constant [180 x i8] c" %oi = shl i64 %i, 1\0A %o0 = getelementptr i8, ptr %s, i64 %oi\0A store i8 %hc, ptr %o0\0A %oi1 = add i64 %oi, 1\0A %o1 = getelementptr i8, ptr %s, i64 %oi1\0A store i8 %lc, ptr %o1\0A\00" -@.str2925 = private unnamed_addr constant [64 x i8] c" %in1 = add i64 %i, 1\0A store i64 %in1, ptr %ip\0A br label %c\0A\00" -@.str2926 = private unnamed_addr constant [88 x i8] c"done:\0A %tp = getelementptr i8, ptr %s, i64 %olen\0A store i8 0, ptr %tp\0A ret ptr %s\0A}\0A\00" -@.str2927 = private unnamed_addr constant [37 x i8] c"define ptr @lp_sha256_hex(ptr %s) {\0A\00" -@.str2928 = private unnamed_addr constant [124 x i8] c"entry:\0A %dig = alloca [32 x i8]\0A %len = call i64 @strlen(ptr %s)\0A %dp = getelementptr [32 x i8], ptr %dig, i64 0, i64 0\0A\00" -@.str2929 = private unnamed_addr constant [122 x i8] c" call void @lp_sha256_buf(ptr %s, i64 %len, ptr %dp)\0A %hex = call ptr @lp_hex_encode(ptr %dp, i64 32)\0A ret ptr %hex\0A}\0A\00" -@.str2930 = private unnamed_addr constant [34 x i8] c"define ptr @lp_str_hex(ptr %s) {\0A\00" -@.str2931 = private unnamed_addr constant [95 x i8] c" %n = call i64 @strlen(ptr %s)\0A %h = call ptr @lp_hex_encode(ptr %s, i64 %n)\0A ret ptr %h\0A}\0A\00" -@.str2932 = private unnamed_addr constant [55 x i8] c"define void @lp_xor64(ptr %dst, ptr %src, i32 %pad) {\0A\00" -@.str2933 = private unnamed_addr constant [64 x i8] c"entry:\0A %ip = alloca i64\0A store i64 0, ptr %ip\0A br label %c\0A\00" -@.str2934 = private unnamed_addr constant [89 x i8] c"c:\0A %i = load i64, ptr %ip\0A %lt = icmp ult i64 %i, 64\0A br i1 %lt, label %b, label %d\0A\00" -@.str2935 = private unnamed_addr constant [281 x i8] c"b:\0A %sp = getelementptr i8, ptr %src, i64 %i\0A %sv = load i8, ptr %sp\0A %sz = zext i8 %sv to i32\0A %xr = xor i32 %sz, %pad\0A %xb = trunc i32 %xr to i8\0A %dp = getelementptr i8, ptr %dst, i64 %i\0A store i8 %xb, ptr %dp\0A %in = add i64 %i, 1\0A store i64 %in, ptr %ip\0A br label %c\0A\00" -@.str2936 = private unnamed_addr constant [17 x i8] c"d:\0A ret void\0A}\0A\00" -@.str2937 = private unnamed_addr constant [54 x i8] c"define ptr @lp_hmac_sha256_hex(ptr %key, ptr %msg) {\0A\00" -@.str2938 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" -@.str2939 = private unnamed_addr constant [109 x i8] c" %k0 = alloca [64 x i8]\0A %inner = alloca [32 x i8]\0A %outbuf = alloca [96 x i8]\0A %fin = alloca [32 x i8]\0A\00" -@.str2940 = private unnamed_addr constant [75 x i8] c" %klen = call i64 @strlen(ptr %key)\0A %mlen = call i64 @strlen(ptr %msg)\0A\00" -@.str2941 = private unnamed_addr constant [101 x i8] c" %k0p = getelementptr [64 x i8], ptr %k0, i64 0, i64 0\0A call ptr @memset(ptr %k0p, i32 0, i64 64)\0A\00" -@.str2942 = private unnamed_addr constant [74 x i8] c" %big = icmp ugt i64 %klen, 64\0A br i1 %big, label %hashk, label %copyk\0A\00" -@.str2943 = private unnamed_addr constant [83 x i8] c"hashk:\0A call void @lp_sha256_buf(ptr %key, i64 %klen, ptr %k0p)\0A br label %pads\0A\00" -@.str2944 = private unnamed_addr constant [75 x i8] c"copyk:\0A call ptr @memcpy(ptr %k0p, ptr %key, i64 %klen)\0A br label %pads\0A\00" -@.str2945 = private unnamed_addr constant [7 x i8] c"pads:\0A\00" -@.str2946 = private unnamed_addr constant [70 x i8] c" %inlen = add i64 64, %mlen\0A %inbuf = call ptr @malloc(i64 %inlen)\0A\00" -@.str2947 = private unnamed_addr constant [53 x i8] c" call void @lp_xor64(ptr %inbuf, ptr %k0p, i32 54)\0A\00" -@.str2948 = private unnamed_addr constant [101 x i8] c" %inmsg = getelementptr i8, ptr %inbuf, i64 64\0A call ptr @memcpy(ptr %inmsg, ptr %msg, i64 %mlen)\0A\00" -@.str2949 = private unnamed_addr constant [157 x i8] c" %innerp = getelementptr [32 x i8], ptr %inner, i64 0, i64 0\0A call void @lp_sha256_buf(ptr %inbuf, i64 %inlen, ptr %innerp)\0A call void @free(ptr %inbuf)\0A\00" -@.str2950 = private unnamed_addr constant [113 x i8] c" %outp = getelementptr [96 x i8], ptr %outbuf, i64 0, i64 0\0A call void @lp_xor64(ptr %outp, ptr %k0p, i32 92)\0A\00" -@.str2951 = private unnamed_addr constant [104 x i8] c" %outmsg = getelementptr i8, ptr %outbuf, i64 64\0A call ptr @memcpy(ptr %outmsg, ptr %innerp, i64 32)\0A\00" -@.str2952 = private unnamed_addr constant [116 x i8] c" %finp = getelementptr [32 x i8], ptr %fin, i64 0, i64 0\0A call void @lp_sha256_buf(ptr %outp, i64 96, ptr %finp)\0A\00" -@.str2953 = private unnamed_addr constant [70 x i8] c" %hex = call ptr @lp_hex_encode(ptr %finp, i64 32)\0A ret ptr %hex\0A}\0A\00" -@.str2954 = private unnamed_addr constant [43 x i8] c"define i32 @lp_ct_streq(ptr %a, ptr %b) {\0A\00" -@.str2955 = private unnamed_addr constant [183 x i8] c"entry:\0A %accp = alloca i32\0A %ip = alloca i64\0A %la = call i64 @strlen(ptr %a)\0A %lb = call i64 @strlen(ptr %b)\0A %eqlen = icmp eq i64 %la, %lb\0A br i1 %eqlen, label %go, label %ne\0A\00" -@.str2956 = private unnamed_addr constant [17 x i8] c"ne:\0A ret i32 0\0A\00" -@.str2957 = private unnamed_addr constant [67 x i8] c"go:\0A store i32 0, ptr %accp\0A store i64 0, ptr %ip\0A br label %c\0A\00" -@.str2958 = private unnamed_addr constant [92 x i8] c"c:\0A %i = load i64, ptr %ip\0A %lt = icmp ult i64 %i, %la\0A br i1 %lt, label %bdy, label %d\0A\00" -@.str2959 = private unnamed_addr constant [327 x i8] c"bdy:\0A %pa = getelementptr i8, ptr %a, i64 %i\0A %va = load i8, ptr %pa\0A %pb = getelementptr i8, ptr %b, i64 %i\0A %vb = load i8, ptr %pb\0A %x = xor i8 %va, %vb\0A %xz = zext i8 %x to i32\0A %ac = load i32, ptr %accp\0A %ao = or i32 %ac, %xz\0A store i32 %ao, ptr %accp\0A %in = add i64 %i, 1\0A store i64 %in, ptr %ip\0A br label %c\0A\00" -@.str2960 = private unnamed_addr constant [102 x i8] c"d:\0A %finv = load i32, ptr %accp\0A %z = icmp eq i32 %finv, 0\0A %r = zext i1 %z to i32\0A ret i32 %r\0A}\0A\00" -@.str2961 = private unnamed_addr constant [78 x i8] c"@.ludic_urandom = private unnamed_addr constant [13 x i8] c\22/dev/urandom\5C00\22\0A\00" -@.str2962 = private unnamed_addr constant [66 x i8] c"@.ludic_rbmode = private unnamed_addr constant [3 x i8] c\22rb\5C00\22\0A\00" -@.str2963 = private unnamed_addr constant [126 x i8] c"@.ludic_b64tab = private unnamed_addr constant [64 x i8] c\22ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\22\0A\00" -@.str2964 = private unnamed_addr constant [50 x i8] c"define void @lp_secure_bytes(ptr %out, i64 %n) {\0A\00" -@.str2965 = private unnamed_addr constant [52 x i8] c"entry:\0A call ptr @memset(ptr %out, i32 0, i64 %n)\0A\00" -@.str2966 = private unnamed_addr constant [66 x i8] c" %fp = call ptr @fopen(ptr @.ludic_urandom, ptr @.ludic_rbmode)\0A\00" -@.str2967 = private unnamed_addr constant [75 x i8] c" %isnull = icmp eq ptr %fp, null\0A br i1 %isnull, label %fail, label %ok\0A\00" -@.str2968 = private unnamed_addr constant [108 x i8] c"ok:\0A %rd = call i64 @fread(ptr %out, i64 1, i64 %n, ptr %fp)\0A %cl = call i32 @fclose(ptr %fp)\0A ret void\0A\00" -@.str2969 = private unnamed_addr constant [20 x i8] c"fail:\0A ret void\0A}\0A\00" -@.str2970 = private unnamed_addr constant [37 x i8] c"define ptr @lp_random_hex(i64 %n) {\0A\00" -@.str2971 = private unnamed_addr constant [89 x i8] c"entry:\0A %buf = call ptr @malloc(i64 %n)\0A call void @lp_secure_bytes(ptr %buf, i64 %n)\0A\00" -@.str2972 = private unnamed_addr constant [97 x i8] c" %hex = call ptr @lp_hex_encode(ptr %buf, i64 %n)\0A call void @free(ptr %buf)\0A ret ptr %hex\0A}\0A\00" -@.str2973 = private unnamed_addr constant [31 x i8] c"define i32 @lp_random_u32() {\0A\00" -@.str2974 = private unnamed_addr constant [129 x i8] c"entry:\0A %b = alloca [4 x i8]\0A %bp = getelementptr [4 x i8], ptr %b, i64 0, i64 0\0A call void @lp_secure_bytes(ptr %bp, i64 4)\0A\00" -@.str2975 = private unnamed_addr constant [94 x i8] c" %p0 = getelementptr i8, ptr %bp, i64 0\0A %c0 = load i8, ptr %p0\0A %z0 = zext i8 %c0 to i32\0A\00" -@.str2976 = private unnamed_addr constant [117 x i8] c" %p1 = getelementptr i8, ptr %bp, i64 1\0A %c1 = load i8, ptr %p1\0A %z1 = zext i8 %c1 to i32\0A %s1 = shl i32 %z1, 8\0A\00" -@.str2977 = private unnamed_addr constant [118 x i8] c" %p2 = getelementptr i8, ptr %bp, i64 2\0A %c2 = load i8, ptr %p2\0A %z2 = zext i8 %c2 to i32\0A %s2 = shl i32 %z2, 16\0A\00" -@.str2978 = private unnamed_addr constant [118 x i8] c" %p3 = getelementptr i8, ptr %bp, i64 3\0A %c3 = load i8, ptr %p3\0A %z3 = zext i8 %c3 to i32\0A %s3 = shl i32 %z3, 24\0A\00" -@.str2979 = private unnamed_addr constant [89 x i8] c" %o1 = or i32 %z0, %s1\0A %o2 = or i32 %o1, %s2\0A %o3 = or i32 %o2, %s3\0A ret i32 %o3\0A}\0A\00" -@.str2980 = private unnamed_addr constant [33 x i8] c"define ptr @lp_base64(ptr %s) {\0A\00" -@.str2981 = private unnamed_addr constant [40 x i8] c"entry:\0A %n = call i64 @strlen(ptr %s)\0A\00" -@.str2982 = private unnamed_addr constant [74 x i8] c" %n2 = add i64 %n, 2\0A %grp = udiv i64 %n2, 3\0A %bufn = mul i64 %grp, 3\0A\00" -@.str2983 = private unnamed_addr constant [93 x i8] c" %olen = mul i64 %grp, 4\0A %olen1 = add i64 %olen, 1\0A %out = call ptr @malloc(i64 %olen1)\0A\00" -@.str2984 = private unnamed_addr constant [136 x i8] c" %inbuf = call ptr @malloc(i64 %bufn)\0A call ptr @memset(ptr %inbuf, i32 0, i64 %bufn)\0A call ptr @memcpy(ptr %inbuf, ptr %s, i64 %n)\0A\00" -@.str2985 = private unnamed_addr constant [60 x i8] c" %gp = alloca i64\0A store i64 0, ptr %gp\0A br label %cond\0A\00" -@.str2986 = private unnamed_addr constant [101 x i8] c"cond:\0A %gi = load i64, ptr %gp\0A %lt = icmp ult i64 %gi, %grp\0A br i1 %lt, label %body, label %pad\0A\00" -@.str2987 = private unnamed_addr constant [30 x i8] c"body:\0A %i3 = mul i64 %gi, 3\0A\00" -@.str2988 = private unnamed_addr constant [103 x i8] c" %ip0 = getelementptr i8, ptr %inbuf, i64 %i3\0A %bv0 = load i8, ptr %ip0\0A %b0 = zext i8 %bv0 to i32\0A\00" -@.str2989 = private unnamed_addr constant [128 x i8] c" %i3a = add i64 %i3, 1\0A %ip1 = getelementptr i8, ptr %inbuf, i64 %i3a\0A %bv1 = load i8, ptr %ip1\0A %b1 = zext i8 %bv1 to i32\0A\00" -@.str2990 = private unnamed_addr constant [128 x i8] c" %i3b = add i64 %i3, 2\0A %ip2 = getelementptr i8, ptr %inbuf, i64 %i3b\0A %bv2 = load i8, ptr %ip2\0A %b2 = zext i8 %bv2 to i32\0A\00" -@.str2991 = private unnamed_addr constant [25 x i8] c" %e0 = lshr i32 %b0, 2\0A\00" -@.str2992 = private unnamed_addr constant [101 x i8] c" %b0l = and i32 %b0, 3\0A %b0s = shl i32 %b0l, 4\0A %b1h = lshr i32 %b1, 4\0A %e1 = or i32 %b0s, %b1h\0A\00" -@.str2993 = private unnamed_addr constant [102 x i8] c" %b1l = and i32 %b1, 15\0A %b1s = shl i32 %b1l, 2\0A %b2h = lshr i32 %b2, 6\0A %e2 = or i32 %b1s, %b2h\0A\00" -@.str2994 = private unnamed_addr constant [25 x i8] c" %e3 = and i32 %b2, 63\0A\00" -@.str2995 = private unnamed_addr constant [24 x i8] c" %o4 = mul i64 %gi, 4\0A\00" -@.str2996 = private unnamed_addr constant [117 x i8] c" %e0z = zext i32 %e0 to i64\0A %e1z = zext i32 %e1 to i64\0A %e2z = zext i32 %e2 to i64\0A %e3z = zext i32 %e3 to i64\0A\00" -@.str2997 = private unnamed_addr constant [167 x i8] c" %g0 = getelementptr [64 x i8], ptr @.ludic_b64tab, i64 0, i64 %e0z\0A %ch0 = load i8, ptr %g0\0A %op0 = getelementptr i8, ptr %out, i64 %o4\0A store i8 %ch0, ptr %op0\0A\00" -@.str2998 = private unnamed_addr constant [192 x i8] c" %o4a = add i64 %o4, 1\0A %g1 = getelementptr [64 x i8], ptr @.ludic_b64tab, i64 0, i64 %e1z\0A %ch1 = load i8, ptr %g1\0A %op1 = getelementptr i8, ptr %out, i64 %o4a\0A store i8 %ch1, ptr %op1\0A\00" -@.str2999 = private unnamed_addr constant [192 x i8] c" %o4b = add i64 %o4, 2\0A %g2 = getelementptr [64 x i8], ptr @.ludic_b64tab, i64 0, i64 %e2z\0A %ch2 = load i8, ptr %g2\0A %op2 = getelementptr i8, ptr %out, i64 %o4b\0A store i8 %ch2, ptr %op2\0A\00" -@.str3000 = private unnamed_addr constant [192 x i8] c" %o4c = add i64 %o4, 3\0A %g3 = getelementptr [64 x i8], ptr @.ludic_b64tab, i64 0, i64 %e3z\0A %ch3 = load i8, ptr %g3\0A %op3 = getelementptr i8, ptr %out, i64 %o4c\0A store i8 %ch3, ptr %op3\0A\00" -@.str3001 = private unnamed_addr constant [68 x i8] c" %gin = add i64 %gi, 1\0A store i64 %gin, ptr %gp\0A br label %cond\0A\00" -@.str3002 = private unnamed_addr constant [86 x i8] c"pad:\0A %rem = urem i64 %n, 3\0A %r1 = icmp eq i64 %rem, 1\0A %r2 = icmp eq i64 %rem, 2\0A\00" -@.str3003 = private unnamed_addr constant [69 x i8] c" %eq = getelementptr i8, ptr %out, i64 %olen\0A store i8 0, ptr %eq\0A\00" -@.str3004 = private unnamed_addr constant [41 x i8] c" br i1 %r1, label %pad1, label %maybe2\0A\00" -@.str3005 = private unnamed_addr constant [216 x i8] c"pad1:\0A %pm1 = sub i64 %olen, 1\0A %pp1 = getelementptr i8, ptr %out, i64 %pm1\0A store i8 61, ptr %pp1\0A %pm2 = sub i64 %olen, 2\0A %pp2 = getelementptr i8, ptr %out, i64 %pm2\0A store i8 61, ptr %pp2\0A br label %done\0A\00" -@.str3006 = private unnamed_addr constant [47 x i8] c"maybe2:\0A br i1 %r2, label %pad2, label %done\0A\00" -@.str3007 = private unnamed_addr constant [120 x i8] c"pad2:\0A %qm1 = sub i64 %olen, 1\0A %qp1 = getelementptr i8, ptr %out, i64 %qm1\0A store i8 61, ptr %qp1\0A br label %done\0A\00" -@.str3008 = private unnamed_addr constant [54 x i8] c"done:\0A call void @free(ptr %inbuf)\0A ret ptr %out\0A}\0A\00" -@.str3009 = private unnamed_addr constant [4 x i8] c"new\00" -@.str3010 = private unnamed_addr constant [3 x i8] c"v4\00" -@.str3011 = private unnamed_addr constant [7 x i8] c"new_v7\00" -@.str3012 = private unnamed_addr constant [3 x i8] c"v7\00" -@.str3013 = private unnamed_addr constant [6 x i8] c"parse\00" -@.str3014 = private unnamed_addr constant [9 x i8] c"is_valid\00" -@.str3015 = private unnamed_addr constant [8 x i8] c"to_text\00" -@.str3016 = private unnamed_addr constant [7 x i8] c"equals\00" -@.str3017 = private unnamed_addr constant [4 x i8] c"nil\00" -@.str3018 = private unnamed_addr constant [4 x i8] c"new\00" -@.str3019 = private unnamed_addr constant [3 x i8] c"v4\00" -@.str3020 = private unnamed_addr constant [23 x i8] c"call ptr @lp_uuid_v4()\00" -@.str3021 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3022 = private unnamed_addr constant [7 x i8] c"new_v7\00" -@.str3023 = private unnamed_addr constant [3 x i8] c"v7\00" -@.str3024 = private unnamed_addr constant [23 x i8] c"call ptr @lp_uuid_v7()\00" -@.str3025 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3026 = private unnamed_addr constant [4 x i8] c"nil\00" -@.str3027 = private unnamed_addr constant [24 x i8] c"call ptr @lp_uuid_nil()\00" +@.str2808 = private unnamed_addr constant [27 x i8] c"call i32 @lp_ct_streq(ptr \00" +@.str2809 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str2810 = private unnamed_addr constant [2 x i8] c")\00" +@.str2811 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str2812 = private unnamed_addr constant [1083 x i8] c"@sha256_K = private unnamed_addr constant [64 x i32] [i32 1116352408, i32 1899447441, i32 -1245643825, i32 -373957723, i32 961987163, i32 1508970993, i32 -1841331548, i32 -1424204075, i32 -670586216, i32 310598401, i32 607225278, i32 1426881987, i32 1925078388, i32 -2132889090, i32 -1680079193, i32 -1046744716, i32 -459576895, i32 -272742522, i32 264347078, i32 604807628, i32 770255983, i32 1249150122, i32 1555081692, i32 1996064986, i32 -1740746414, i32 -1473132947, i32 -1341970488, i32 -1084653625, i32 -958395405, i32 -710438585, i32 113926993, i32 338241895, i32 666307205, i32 773529912, i32 1294757372, i32 1396182291, i32 1695183700, i32 1986661051, i32 -2117940946, i32 -1838011259, i32 -1564481375, i32 -1474664885, i32 -1035236496, i32 -949202525, i32 -778901479, i32 -694614492, i32 -200395387, i32 275423344, i32 430227734, i32 506948616, i32 659060556, i32 883997877, i32 958139571, i32 1322822218, i32 1537002063, i32 1747873779, i32 1955562222, i32 2024104815, i32 -2067236844, i32 -1933114872, i32 -1866530822, i32 -1538233109, i32 -1090935817, i32 -965641998]\0A\00" +@.str2813 = private unnamed_addr constant [41 x i8] c"define i32 @lp_rotr32(i32 %x, i32 %n) {\0A\00" +@.str2814 = private unnamed_addr constant [104 x i8] c" %r = lshr i32 %x, %n\0A %m = sub i32 32, %n\0A %l = shl i32 %x, %m\0A %o = or i32 %r, %l\0A ret i32 %o\0A}\0A\00" +@.str2815 = private unnamed_addr constant [60 x i8] c"define void @lp_sha256_buf(ptr %msg, i64 %len, ptr %out) {\0A\00" +@.str2816 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str2817 = private unnamed_addr constant [50 x i8] c" %H = alloca [8 x i32]\0A %W = alloca [64 x i32]\0A\00" +@.str2818 = private unnamed_addr constant [145 x i8] c" %a = alloca i32\0A %b = alloca i32\0A %c = alloca i32\0A %d = alloca i32\0A %e = alloca i32\0A %f = alloca i32\0A %g = alloca i32\0A %h = alloca i32\0A\00" +@.str2819 = private unnamed_addr constant [39 x i8] c" %ip = alloca i64\0A %bp = alloca i64\0A\00" +@.str2820 = private unnamed_addr constant [95 x i8] c" %e0 = add i64 %len, 8\0A %e1 = lshr i64 %e0, 6\0A %e2 = add i64 %e1, 1\0A %pl = shl i64 %e2, 6\0A\00" +@.str2821 = private unnamed_addr constant [36 x i8] c" %buf = call ptr @malloc(i64 %pl)\0A\00" +@.str2822 = private unnamed_addr constant [46 x i8] c" call ptr @memset(ptr %buf, i32 0, i64 %pl)\0A\00" +@.str2823 = private unnamed_addr constant [50 x i8] c" call ptr @memcpy(ptr %buf, ptr %msg, i64 %len)\0A\00" +@.str2824 = private unnamed_addr constant [77 x i8] c" %pmark = getelementptr i8, ptr %buf, i64 %len\0A store i8 -128, ptr %pmark\0A\00" +@.str2825 = private unnamed_addr constant [27 x i8] c" %bits = shl i64 %len, 3\0A\00" +@.str2826 = private unnamed_addr constant [41 x i8] c" store i64 0, ptr %ip\0A br label %lenc\0A\00" +@.str2827 = private unnamed_addr constant [104 x i8] c"lenc:\0A %lj = load i64, ptr %ip\0A %ljlt = icmp slt i64 %lj, 8\0A br i1 %ljlt, label %lenb, label %hinit\0A\00" +@.str2828 = private unnamed_addr constant [7 x i8] c"lenb:\0A\00" +@.str2829 = private unnamed_addr constant [113 x i8] c" %lj8 = mul i64 %lj, 8\0A %lsh = sub i64 56, %lj8\0A %lbsh = lshr i64 %bits, %lsh\0A %lbb = trunc i64 %lbsh to i8\0A\00" +@.str2830 = private unnamed_addr constant [128 x i8] c" %lpm8 = sub i64 %pl, 8\0A %lpos = add i64 %lpm8, %lj\0A %lpp = getelementptr i8, ptr %buf, i64 %lpos\0A store i8 %lbb, ptr %lpp\0A\00" +@.str2831 = private unnamed_addr constant [68 x i8] c" %lj1 = add i64 %lj, 1\0A store i64 %lj1, ptr %ip\0A br label %lenc\0A\00" +@.str2832 = private unnamed_addr constant [8 x i8] c"hinit:\0A\00" +@.str2833 = private unnamed_addr constant [87 x i8] c" %H0 = getelementptr [8 x i32], ptr %H, i64 0, i64 0\0A store i32 1779033703, ptr %H0\0A\00" +@.str2834 = private unnamed_addr constant [88 x i8] c" %H1 = getelementptr [8 x i32], ptr %H, i64 0, i64 1\0A store i32 -1150833019, ptr %H1\0A\00" +@.str2835 = private unnamed_addr constant [87 x i8] c" %H2 = getelementptr [8 x i32], ptr %H, i64 0, i64 2\0A store i32 1013904242, ptr %H2\0A\00" +@.str2836 = private unnamed_addr constant [88 x i8] c" %H3 = getelementptr [8 x i32], ptr %H, i64 0, i64 3\0A store i32 -1521486534, ptr %H3\0A\00" +@.str2837 = private unnamed_addr constant [87 x i8] c" %H4 = getelementptr [8 x i32], ptr %H, i64 0, i64 4\0A store i32 1359893119, ptr %H4\0A\00" +@.str2838 = private unnamed_addr constant [88 x i8] c" %H5 = getelementptr [8 x i32], ptr %H, i64 0, i64 5\0A store i32 -1694144372, ptr %H5\0A\00" +@.str2839 = private unnamed_addr constant [86 x i8] c" %H6 = getelementptr [8 x i32], ptr %H, i64 0, i64 6\0A store i32 528734635, ptr %H6\0A\00" +@.str2840 = private unnamed_addr constant [87 x i8] c" %H7 = getelementptr [8 x i32], ptr %H, i64 0, i64 7\0A store i32 1541459225, ptr %H7\0A\00" +@.str2841 = private unnamed_addr constant [65 x i8] c" %nb = lshr i64 %pl, 6\0A store i64 0, ptr %bp\0A br label %blkc\0A\00" +@.str2842 = private unnamed_addr constant [103 x i8] c"blkc:\0A %bi = load i64, ptr %bp\0A %blt = icmp ult i64 %bi, %nb\0A br i1 %blt, label %blkb, label %outp\0A\00" +@.str2843 = private unnamed_addr constant [80 x i8] c"blkb:\0A %bi64 = shl i64 %bi, 6\0A %base = getelementptr i8, ptr %buf, i64 %bi64\0A\00" +@.str2844 = private unnamed_addr constant [40 x i8] c" store i64 0, ptr %ip\0A br label %w1c\0A\00" +@.str2845 = private unnamed_addr constant [104 x i8] c"w1c:\0A %wi = load i64, ptr %ip\0A %wilt = icmp slt i64 %wi, 16\0A br i1 %wilt, label %w1b, label %w2init\0A\00" +@.str2846 = private unnamed_addr constant [6 x i8] c"w1b:\0A\00" +@.str2847 = private unnamed_addr constant [25 x i8] c" %wi4 = shl i64 %wi, 2\0A\00" +@.str2848 = private unnamed_addr constant [75 x i8] c" %wp0 = getelementptr i8, ptr %base, i64 %wi4\0A %wc0 = load i8, ptr %wp0\0A\00" +@.str2849 = private unnamed_addr constant [100 x i8] c" %wo1 = add i64 %wi4, 1\0A %wp1 = getelementptr i8, ptr %base, i64 %wo1\0A %wc1 = load i8, ptr %wp1\0A\00" +@.str2850 = private unnamed_addr constant [100 x i8] c" %wo2 = add i64 %wi4, 2\0A %wp2 = getelementptr i8, ptr %base, i64 %wo2\0A %wc2 = load i8, ptr %wp2\0A\00" +@.str2851 = private unnamed_addr constant [100 x i8] c" %wo3 = add i64 %wi4, 3\0A %wp3 = getelementptr i8, ptr %base, i64 %wo3\0A %wc3 = load i8, ptr %wp3\0A\00" +@.str2852 = private unnamed_addr constant [117 x i8] c" %wz0 = zext i8 %wc0 to i32\0A %wz1 = zext i8 %wc1 to i32\0A %wz2 = zext i8 %wc2 to i32\0A %wz3 = zext i8 %wc3 to i32\0A\00" +@.str2853 = private unnamed_addr constant [80 x i8] c" %ws24 = shl i32 %wz0, 24\0A %ws16 = shl i32 %wz1, 16\0A %ws8 = shl i32 %wz2, 8\0A\00" +@.str2854 = private unnamed_addr constant [89 x i8] c" %wor1 = or i32 %ws24, %ws16\0A %wor2 = or i32 %wor1, %ws8\0A %word = or i32 %wor2, %wz3\0A\00" +@.str2855 = private unnamed_addr constant [87 x i8] c" %wwp = getelementptr [64 x i32], ptr %W, i64 0, i64 %wi\0A store i32 %word, ptr %wwp\0A\00" +@.str2856 = private unnamed_addr constant [67 x i8] c" %wi1 = add i64 %wi, 1\0A store i64 %wi1, ptr %ip\0A br label %w1c\0A\00" +@.str2857 = private unnamed_addr constant [49 x i8] c"w2init:\0A store i64 16, ptr %ip\0A br label %w2c\0A\00" +@.str2858 = private unnamed_addr constant [106 x i8] c"w2c:\0A %xi = load i64, ptr %ip\0A %xilt = icmp slt i64 %xi, 64\0A br i1 %xilt, label %w2b, label %compinit\0A\00" +@.str2859 = private unnamed_addr constant [6 x i8] c"w2b:\0A\00" +@.str2860 = private unnamed_addr constant [117 x i8] c" %im15 = sub i64 %xi, 15\0A %pm15 = getelementptr [64 x i32], ptr %W, i64 0, i64 %im15\0A %w15 = load i32, ptr %pm15\0A\00" +@.str2861 = private unnamed_addr constant [119 x i8] c" %r7 = call i32 @lp_rotr32(i32 %w15, i32 7)\0A %r18 = call i32 @lp_rotr32(i32 %w15, i32 18)\0A %sh3 = lshr i32 %w15, 3\0A\00" +@.str2862 = private unnamed_addr constant [55 x i8] c" %x01 = xor i32 %r7, %r18\0A %s0 = xor i32 %x01, %sh3\0A\00" +@.str2863 = private unnamed_addr constant [112 x i8] c" %im2 = sub i64 %xi, 2\0A %pm2 = getelementptr [64 x i32], ptr %W, i64 0, i64 %im2\0A %w2v = load i32, ptr %pm2\0A\00" +@.str2864 = private unnamed_addr constant [123 x i8] c" %r17 = call i32 @lp_rotr32(i32 %w2v, i32 17)\0A %r19 = call i32 @lp_rotr32(i32 %w2v, i32 19)\0A %sh10 = lshr i32 %w2v, 10\0A\00" +@.str2865 = private unnamed_addr constant [57 x i8] c" %x02 = xor i32 %r17, %r19\0A %s1 = xor i32 %x02, %sh10\0A\00" +@.str2866 = private unnamed_addr constant [117 x i8] c" %im16 = sub i64 %xi, 16\0A %pm16 = getelementptr [64 x i32], ptr %W, i64 0, i64 %im16\0A %w16 = load i32, ptr %pm16\0A\00" +@.str2867 = private unnamed_addr constant [111 x i8] c" %im7 = sub i64 %xi, 7\0A %pm7 = getelementptr [64 x i32], ptr %W, i64 0, i64 %im7\0A %w7 = load i32, ptr %pm7\0A\00" +@.str2868 = private unnamed_addr constant [81 x i8] c" %wa1 = add i32 %w16, %s0\0A %wa2 = add i32 %wa1, %w7\0A %wv = add i32 %wa2, %s1\0A\00" +@.str2869 = private unnamed_addr constant [85 x i8] c" %wpi = getelementptr [64 x i32], ptr %W, i64 0, i64 %xi\0A store i32 %wv, ptr %wpi\0A\00" +@.str2870 = private unnamed_addr constant [67 x i8] c" %xi1 = add i64 %xi, 1\0A store i64 %xi1, ptr %ip\0A br label %w2c\0A\00" +@.str2871 = private unnamed_addr constant [11 x i8] c"compinit:\0A\00" +@.str2872 = private unnamed_addr constant [53 x i8] c" %cv0 = load i32, ptr %H0\0A store i32 %cv0, ptr %a\0A\00" +@.str2873 = private unnamed_addr constant [53 x i8] c" %cv1 = load i32, ptr %H1\0A store i32 %cv1, ptr %b\0A\00" +@.str2874 = private unnamed_addr constant [53 x i8] c" %cv2 = load i32, ptr %H2\0A store i32 %cv2, ptr %c\0A\00" +@.str2875 = private unnamed_addr constant [53 x i8] c" %cv3 = load i32, ptr %H3\0A store i32 %cv3, ptr %d\0A\00" +@.str2876 = private unnamed_addr constant [53 x i8] c" %cv4 = load i32, ptr %H4\0A store i32 %cv4, ptr %e\0A\00" +@.str2877 = private unnamed_addr constant [53 x i8] c" %cv5 = load i32, ptr %H5\0A store i32 %cv5, ptr %f\0A\00" +@.str2878 = private unnamed_addr constant [53 x i8] c" %cv6 = load i32, ptr %H6\0A store i32 %cv6, ptr %g\0A\00" +@.str2879 = private unnamed_addr constant [53 x i8] c" %cv7 = load i32, ptr %H7\0A store i32 %cv7, ptr %h\0A\00" +@.str2880 = private unnamed_addr constant [39 x i8] c" store i64 0, ptr %ip\0A br label %rc\0A\00" +@.str2881 = private unnamed_addr constant [98 x i8] c"rc:\0A %ri = load i64, ptr %ip\0A %rlt = icmp slt i64 %ri, 64\0A br i1 %rlt, label %rb, label %addH\0A\00" +@.str2882 = private unnamed_addr constant [5 x i8] c"rb:\0A\00" +@.str2883 = private unnamed_addr constant [102 x i8] c" %av = load i32, ptr %a\0A %bv = load i32, ptr %b\0A %cvv = load i32, ptr %c\0A %dv = load i32, ptr %d\0A\00" +@.str2884 = private unnamed_addr constant [101 x i8] c" %ev = load i32, ptr %e\0A %fv = load i32, ptr %f\0A %gv = load i32, ptr %g\0A %hv = load i32, ptr %h\0A\00" +@.str2885 = private unnamed_addr constant [137 x i8] c" %e6 = call i32 @lp_rotr32(i32 %ev, i32 6)\0A %e11 = call i32 @lp_rotr32(i32 %ev, i32 11)\0A %e25 = call i32 @lp_rotr32(i32 %ev, i32 25)\0A\00" +@.str2886 = private unnamed_addr constant [55 x i8] c" %S1a = xor i32 %e6, %e11\0A %S1 = xor i32 %S1a, %e25\0A\00" +@.str2887 = private unnamed_addr constant [102 x i8] c" %ef = and i32 %ev, %fv\0A %ne = xor i32 %ev, -1\0A %neg = and i32 %ne, %gv\0A %ch = xor i32 %ef, %neg\0A\00" +@.str2888 = private unnamed_addr constant [91 x i8] c" %kp = getelementptr [64 x i32], ptr @sha256_K, i64 0, i64 %ri\0A %kv = load i32, ptr %kp\0A\00" +@.str2889 = private unnamed_addr constant [87 x i8] c" %wpr = getelementptr [64 x i32], ptr %W, i64 0, i64 %ri\0A %wvr = load i32, ptr %wpr\0A\00" +@.str2890 = private unnamed_addr constant [111 x i8] c" %t1a = add i32 %hv, %S1\0A %t1b = add i32 %t1a, %ch\0A %t1c = add i32 %t1b, %kv\0A %temp1 = add i32 %t1c, %wvr\0A\00" +@.str2891 = private unnamed_addr constant [138 x i8] c" %a2r = call i32 @lp_rotr32(i32 %av, i32 2)\0A %a13 = call i32 @lp_rotr32(i32 %av, i32 13)\0A %a22 = call i32 @lp_rotr32(i32 %av, i32 22)\0A\00" +@.str2892 = private unnamed_addr constant [56 x i8] c" %S0a = xor i32 %a2r, %a13\0A %S0 = xor i32 %S0a, %a22\0A\00" +@.str2893 = private unnamed_addr constant [131 x i8] c" %ab = and i32 %av, %bv\0A %ac = and i32 %av, %cvv\0A %bc = and i32 %bv, %cvv\0A %mj1 = xor i32 %ab, %ac\0A %maj = xor i32 %mj1, %bc\0A\00" +@.str2894 = private unnamed_addr constant [30 x i8] c" %temp2 = add i32 %S0, %maj\0A\00" +@.str2895 = private unnamed_addr constant [73 x i8] c" store i32 %gv, ptr %h\0A store i32 %fv, ptr %g\0A store i32 %ev, ptr %f\0A\00" +@.str2896 = private unnamed_addr constant [57 x i8] c" %newe = add i32 %dv, %temp1\0A store i32 %newe, ptr %e\0A\00" +@.str2897 = private unnamed_addr constant [74 x i8] c" store i32 %cvv, ptr %d\0A store i32 %bv, ptr %c\0A store i32 %av, ptr %b\0A\00" +@.str2898 = private unnamed_addr constant [60 x i8] c" %newa = add i32 %temp1, %temp2\0A store i32 %newa, ptr %a\0A\00" +@.str2899 = private unnamed_addr constant [66 x i8] c" %rin = add i64 %ri, 1\0A store i64 %rin, ptr %ip\0A br label %rc\0A\00" +@.str2900 = private unnamed_addr constant [7 x i8] c"addH:\0A\00" +@.str2901 = private unnamed_addr constant [106 x i8] c" %fa = load i32, ptr %a\0A %lH0 = load i32, ptr %H0\0A %nH0 = add i32 %lH0, %fa\0A store i32 %nH0, ptr %H0\0A\00" +@.str2902 = private unnamed_addr constant [106 x i8] c" %fb = load i32, ptr %b\0A %lH1 = load i32, ptr %H1\0A %nH1 = add i32 %lH1, %fb\0A store i32 %nH1, ptr %H1\0A\00" +@.str2903 = private unnamed_addr constant [106 x i8] c" %fc = load i32, ptr %c\0A %lH2 = load i32, ptr %H2\0A %nH2 = add i32 %lH2, %fc\0A store i32 %nH2, ptr %H2\0A\00" +@.str2904 = private unnamed_addr constant [106 x i8] c" %fd = load i32, ptr %d\0A %lH3 = load i32, ptr %H3\0A %nH3 = add i32 %lH3, %fd\0A store i32 %nH3, ptr %H3\0A\00" +@.str2905 = private unnamed_addr constant [106 x i8] c" %fe = load i32, ptr %e\0A %lH4 = load i32, ptr %H4\0A %nH4 = add i32 %lH4, %fe\0A store i32 %nH4, ptr %H4\0A\00" +@.str2906 = private unnamed_addr constant [106 x i8] c" %ff = load i32, ptr %f\0A %lH5 = load i32, ptr %H5\0A %nH5 = add i32 %lH5, %ff\0A store i32 %nH5, ptr %H5\0A\00" +@.str2907 = private unnamed_addr constant [106 x i8] c" %fg = load i32, ptr %g\0A %lH6 = load i32, ptr %H6\0A %nH6 = add i32 %lH6, %fg\0A store i32 %nH6, ptr %H6\0A\00" +@.str2908 = private unnamed_addr constant [106 x i8] c" %fh = load i32, ptr %h\0A %lH7 = load i32, ptr %H7\0A %nH7 = add i32 %lH7, %fh\0A store i32 %nH7, ptr %H7\0A\00" +@.str2909 = private unnamed_addr constant [70 x i8] c" %binc = add i64 %bi, 1\0A store i64 %binc, ptr %bp\0A br label %blkc\0A\00" +@.str2910 = private unnamed_addr constant [45 x i8] c"outp:\0A store i64 0, ptr %ip\0A br label %oc\0A\00" +@.str2911 = private unnamed_addr constant [98 x i8] c"oc:\0A %oi = load i64, ptr %ip\0A %olt = icmp slt i64 %oi, 8\0A br i1 %olt, label %ob, label %freeb\0A\00" +@.str2912 = private unnamed_addr constant [5 x i8] c"ob:\0A\00" +@.str2913 = private unnamed_addr constant [111 x i8] c" %hpp = getelementptr [8 x i32], ptr %H, i64 0, i64 %oi\0A %hval = load i32, ptr %hpp\0A %oi4 = shl i64 %oi, 2\0A\00" +@.str2914 = private unnamed_addr constant [137 x i8] c" %ob24 = lshr i32 %hval, 24\0A %obb24 = trunc i32 %ob24 to i8\0A %op0 = getelementptr i8, ptr %out, i64 %oi4\0A store i8 %obb24, ptr %op0\0A\00" +@.str2915 = private unnamed_addr constant [162 x i8] c" %ob16 = lshr i32 %hval, 16\0A %obb16 = trunc i32 %ob16 to i8\0A %oo1 = add i64 %oi4, 1\0A %op1 = getelementptr i8, ptr %out, i64 %oo1\0A store i8 %obb16, ptr %op1\0A\00" +@.str2916 = private unnamed_addr constant [157 x i8] c" %ob8 = lshr i32 %hval, 8\0A %obb8 = trunc i32 %ob8 to i8\0A %oo2 = add i64 %oi4, 2\0A %op2 = getelementptr i8, ptr %out, i64 %oo2\0A store i8 %obb8, ptr %op2\0A\00" +@.str2917 = private unnamed_addr constant [131 x i8] c" %obb0 = trunc i32 %hval to i8\0A %oo3 = add i64 %oi4, 3\0A %op3 = getelementptr i8, ptr %out, i64 %oo3\0A store i8 %obb0, ptr %op3\0A\00" +@.str2918 = private unnamed_addr constant [66 x i8] c" %oin = add i64 %oi, 1\0A store i64 %oin, ptr %ip\0A br label %oc\0A\00" +@.str2919 = private unnamed_addr constant [49 x i8] c"freeb:\0A call void @free(ptr %buf)\0A ret void\0A}\0A\00" +@.str2920 = private unnamed_addr constant [35 x i8] c"define i8 @lp_hex_digit(i32 %d) {\0A\00" +@.str2921 = private unnamed_addr constant [134 x i8] c" %lt = icmp ult i32 %d, 10\0A %base = select i1 %lt, i32 48, i32 87\0A %v = add i32 %base, %d\0A %c = trunc i32 %v to i8\0A ret i8 %c\0A}\0A\00" +@.str2922 = private unnamed_addr constant [46 x i8] c"define ptr @lp_hex_encode(ptr %in, i64 %n) {\0A\00" +@.str2923 = private unnamed_addr constant [152 x i8] c"entry:\0A %ip = alloca i64\0A %olen = shl i64 %n, 1\0A %olen1 = add i64 %olen, 1\0A %s = call ptr @malloc(i64 %olen1)\0A store i64 0, ptr %ip\0A br label %c\0A\00" +@.str2924 = private unnamed_addr constant [94 x i8] c"c:\0A %i = load i64, ptr %ip\0A %lt = icmp ult i64 %i, %n\0A br i1 %lt, label %bdy, label %done\0A\00" +@.str2925 = private unnamed_addr constant [104 x i8] c"bdy:\0A %pp = getelementptr i8, ptr %in, i64 %i\0A %byte = load i8, ptr %pp\0A %bz = zext i8 %byte to i32\0A\00" +@.str2926 = private unnamed_addr constant [127 x i8] c" %hi = lshr i32 %bz, 4\0A %lo = and i32 %bz, 15\0A %hc = call i8 @lp_hex_digit(i32 %hi)\0A %lc = call i8 @lp_hex_digit(i32 %lo)\0A\00" +@.str2927 = private unnamed_addr constant [180 x i8] c" %oi = shl i64 %i, 1\0A %o0 = getelementptr i8, ptr %s, i64 %oi\0A store i8 %hc, ptr %o0\0A %oi1 = add i64 %oi, 1\0A %o1 = getelementptr i8, ptr %s, i64 %oi1\0A store i8 %lc, ptr %o1\0A\00" +@.str2928 = private unnamed_addr constant [64 x i8] c" %in1 = add i64 %i, 1\0A store i64 %in1, ptr %ip\0A br label %c\0A\00" +@.str2929 = private unnamed_addr constant [88 x i8] c"done:\0A %tp = getelementptr i8, ptr %s, i64 %olen\0A store i8 0, ptr %tp\0A ret ptr %s\0A}\0A\00" +@.str2930 = private unnamed_addr constant [37 x i8] c"define ptr @lp_sha256_hex(ptr %s) {\0A\00" +@.str2931 = private unnamed_addr constant [124 x i8] c"entry:\0A %dig = alloca [32 x i8]\0A %len = call i64 @strlen(ptr %s)\0A %dp = getelementptr [32 x i8], ptr %dig, i64 0, i64 0\0A\00" +@.str2932 = private unnamed_addr constant [122 x i8] c" call void @lp_sha256_buf(ptr %s, i64 %len, ptr %dp)\0A %hex = call ptr @lp_hex_encode(ptr %dp, i64 32)\0A ret ptr %hex\0A}\0A\00" +@.str2933 = private unnamed_addr constant [34 x i8] c"define ptr @lp_str_hex(ptr %s) {\0A\00" +@.str2934 = private unnamed_addr constant [95 x i8] c" %n = call i64 @strlen(ptr %s)\0A %h = call ptr @lp_hex_encode(ptr %s, i64 %n)\0A ret ptr %h\0A}\0A\00" +@.str2935 = private unnamed_addr constant [55 x i8] c"define void @lp_xor64(ptr %dst, ptr %src, i32 %pad) {\0A\00" +@.str2936 = private unnamed_addr constant [64 x i8] c"entry:\0A %ip = alloca i64\0A store i64 0, ptr %ip\0A br label %c\0A\00" +@.str2937 = private unnamed_addr constant [89 x i8] c"c:\0A %i = load i64, ptr %ip\0A %lt = icmp ult i64 %i, 64\0A br i1 %lt, label %b, label %d\0A\00" +@.str2938 = private unnamed_addr constant [281 x i8] c"b:\0A %sp = getelementptr i8, ptr %src, i64 %i\0A %sv = load i8, ptr %sp\0A %sz = zext i8 %sv to i32\0A %xr = xor i32 %sz, %pad\0A %xb = trunc i32 %xr to i8\0A %dp = getelementptr i8, ptr %dst, i64 %i\0A store i8 %xb, ptr %dp\0A %in = add i64 %i, 1\0A store i64 %in, ptr %ip\0A br label %c\0A\00" +@.str2939 = private unnamed_addr constant [17 x i8] c"d:\0A ret void\0A}\0A\00" +@.str2940 = private unnamed_addr constant [54 x i8] c"define ptr @lp_hmac_sha256_hex(ptr %key, ptr %msg) {\0A\00" +@.str2941 = private unnamed_addr constant [8 x i8] c"entry:\0A\00" +@.str2942 = private unnamed_addr constant [109 x i8] c" %k0 = alloca [64 x i8]\0A %inner = alloca [32 x i8]\0A %outbuf = alloca [96 x i8]\0A %fin = alloca [32 x i8]\0A\00" +@.str2943 = private unnamed_addr constant [75 x i8] c" %klen = call i64 @strlen(ptr %key)\0A %mlen = call i64 @strlen(ptr %msg)\0A\00" +@.str2944 = private unnamed_addr constant [101 x i8] c" %k0p = getelementptr [64 x i8], ptr %k0, i64 0, i64 0\0A call ptr @memset(ptr %k0p, i32 0, i64 64)\0A\00" +@.str2945 = private unnamed_addr constant [74 x i8] c" %big = icmp ugt i64 %klen, 64\0A br i1 %big, label %hashk, label %copyk\0A\00" +@.str2946 = private unnamed_addr constant [83 x i8] c"hashk:\0A call void @lp_sha256_buf(ptr %key, i64 %klen, ptr %k0p)\0A br label %pads\0A\00" +@.str2947 = private unnamed_addr constant [75 x i8] c"copyk:\0A call ptr @memcpy(ptr %k0p, ptr %key, i64 %klen)\0A br label %pads\0A\00" +@.str2948 = private unnamed_addr constant [7 x i8] c"pads:\0A\00" +@.str2949 = private unnamed_addr constant [70 x i8] c" %inlen = add i64 64, %mlen\0A %inbuf = call ptr @malloc(i64 %inlen)\0A\00" +@.str2950 = private unnamed_addr constant [53 x i8] c" call void @lp_xor64(ptr %inbuf, ptr %k0p, i32 54)\0A\00" +@.str2951 = private unnamed_addr constant [101 x i8] c" %inmsg = getelementptr i8, ptr %inbuf, i64 64\0A call ptr @memcpy(ptr %inmsg, ptr %msg, i64 %mlen)\0A\00" +@.str2952 = private unnamed_addr constant [157 x i8] c" %innerp = getelementptr [32 x i8], ptr %inner, i64 0, i64 0\0A call void @lp_sha256_buf(ptr %inbuf, i64 %inlen, ptr %innerp)\0A call void @free(ptr %inbuf)\0A\00" +@.str2953 = private unnamed_addr constant [113 x i8] c" %outp = getelementptr [96 x i8], ptr %outbuf, i64 0, i64 0\0A call void @lp_xor64(ptr %outp, ptr %k0p, i32 92)\0A\00" +@.str2954 = private unnamed_addr constant [104 x i8] c" %outmsg = getelementptr i8, ptr %outbuf, i64 64\0A call ptr @memcpy(ptr %outmsg, ptr %innerp, i64 32)\0A\00" +@.str2955 = private unnamed_addr constant [116 x i8] c" %finp = getelementptr [32 x i8], ptr %fin, i64 0, i64 0\0A call void @lp_sha256_buf(ptr %outp, i64 96, ptr %finp)\0A\00" +@.str2956 = private unnamed_addr constant [70 x i8] c" %hex = call ptr @lp_hex_encode(ptr %finp, i64 32)\0A ret ptr %hex\0A}\0A\00" +@.str2957 = private unnamed_addr constant [43 x i8] c"define i32 @lp_ct_streq(ptr %a, ptr %b) {\0A\00" +@.str2958 = private unnamed_addr constant [183 x i8] c"entry:\0A %accp = alloca i32\0A %ip = alloca i64\0A %la = call i64 @strlen(ptr %a)\0A %lb = call i64 @strlen(ptr %b)\0A %eqlen = icmp eq i64 %la, %lb\0A br i1 %eqlen, label %go, label %ne\0A\00" +@.str2959 = private unnamed_addr constant [17 x i8] c"ne:\0A ret i32 0\0A\00" +@.str2960 = private unnamed_addr constant [67 x i8] c"go:\0A store i32 0, ptr %accp\0A store i64 0, ptr %ip\0A br label %c\0A\00" +@.str2961 = private unnamed_addr constant [92 x i8] c"c:\0A %i = load i64, ptr %ip\0A %lt = icmp ult i64 %i, %la\0A br i1 %lt, label %bdy, label %d\0A\00" +@.str2962 = private unnamed_addr constant [327 x i8] c"bdy:\0A %pa = getelementptr i8, ptr %a, i64 %i\0A %va = load i8, ptr %pa\0A %pb = getelementptr i8, ptr %b, i64 %i\0A %vb = load i8, ptr %pb\0A %x = xor i8 %va, %vb\0A %xz = zext i8 %x to i32\0A %ac = load i32, ptr %accp\0A %ao = or i32 %ac, %xz\0A store i32 %ao, ptr %accp\0A %in = add i64 %i, 1\0A store i64 %in, ptr %ip\0A br label %c\0A\00" +@.str2963 = private unnamed_addr constant [102 x i8] c"d:\0A %finv = load i32, ptr %accp\0A %z = icmp eq i32 %finv, 0\0A %r = zext i1 %z to i32\0A ret i32 %r\0A}\0A\00" +@.str2964 = private unnamed_addr constant [78 x i8] c"@.ludic_urandom = private unnamed_addr constant [13 x i8] c\22/dev/urandom\5C00\22\0A\00" +@.str2965 = private unnamed_addr constant [66 x i8] c"@.ludic_rbmode = private unnamed_addr constant [3 x i8] c\22rb\5C00\22\0A\00" +@.str2966 = private unnamed_addr constant [126 x i8] c"@.ludic_b64tab = private unnamed_addr constant [64 x i8] c\22ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\22\0A\00" +@.str2967 = private unnamed_addr constant [50 x i8] c"define void @lp_secure_bytes(ptr %out, i64 %n) {\0A\00" +@.str2968 = private unnamed_addr constant [52 x i8] c"entry:\0A call ptr @memset(ptr %out, i32 0, i64 %n)\0A\00" +@.str2969 = private unnamed_addr constant [66 x i8] c" %fp = call ptr @fopen(ptr @.ludic_urandom, ptr @.ludic_rbmode)\0A\00" +@.str2970 = private unnamed_addr constant [75 x i8] c" %isnull = icmp eq ptr %fp, null\0A br i1 %isnull, label %fail, label %ok\0A\00" +@.str2971 = private unnamed_addr constant [108 x i8] c"ok:\0A %rd = call i64 @fread(ptr %out, i64 1, i64 %n, ptr %fp)\0A %cl = call i32 @fclose(ptr %fp)\0A ret void\0A\00" +@.str2972 = private unnamed_addr constant [20 x i8] c"fail:\0A ret void\0A}\0A\00" +@.str2973 = private unnamed_addr constant [37 x i8] c"define ptr @lp_random_hex(i64 %n) {\0A\00" +@.str2974 = private unnamed_addr constant [89 x i8] c"entry:\0A %buf = call ptr @malloc(i64 %n)\0A call void @lp_secure_bytes(ptr %buf, i64 %n)\0A\00" +@.str2975 = private unnamed_addr constant [97 x i8] c" %hex = call ptr @lp_hex_encode(ptr %buf, i64 %n)\0A call void @free(ptr %buf)\0A ret ptr %hex\0A}\0A\00" +@.str2976 = private unnamed_addr constant [31 x i8] c"define i32 @lp_random_u32() {\0A\00" +@.str2977 = private unnamed_addr constant [129 x i8] c"entry:\0A %b = alloca [4 x i8]\0A %bp = getelementptr [4 x i8], ptr %b, i64 0, i64 0\0A call void @lp_secure_bytes(ptr %bp, i64 4)\0A\00" +@.str2978 = private unnamed_addr constant [94 x i8] c" %p0 = getelementptr i8, ptr %bp, i64 0\0A %c0 = load i8, ptr %p0\0A %z0 = zext i8 %c0 to i32\0A\00" +@.str2979 = private unnamed_addr constant [117 x i8] c" %p1 = getelementptr i8, ptr %bp, i64 1\0A %c1 = load i8, ptr %p1\0A %z1 = zext i8 %c1 to i32\0A %s1 = shl i32 %z1, 8\0A\00" +@.str2980 = private unnamed_addr constant [118 x i8] c" %p2 = getelementptr i8, ptr %bp, i64 2\0A %c2 = load i8, ptr %p2\0A %z2 = zext i8 %c2 to i32\0A %s2 = shl i32 %z2, 16\0A\00" +@.str2981 = private unnamed_addr constant [118 x i8] c" %p3 = getelementptr i8, ptr %bp, i64 3\0A %c3 = load i8, ptr %p3\0A %z3 = zext i8 %c3 to i32\0A %s3 = shl i32 %z3, 24\0A\00" +@.str2982 = private unnamed_addr constant [89 x i8] c" %o1 = or i32 %z0, %s1\0A %o2 = or i32 %o1, %s2\0A %o3 = or i32 %o2, %s3\0A ret i32 %o3\0A}\0A\00" +@.str2983 = private unnamed_addr constant [33 x i8] c"define ptr @lp_base64(ptr %s) {\0A\00" +@.str2984 = private unnamed_addr constant [40 x i8] c"entry:\0A %n = call i64 @strlen(ptr %s)\0A\00" +@.str2985 = private unnamed_addr constant [74 x i8] c" %n2 = add i64 %n, 2\0A %grp = udiv i64 %n2, 3\0A %bufn = mul i64 %grp, 3\0A\00" +@.str2986 = private unnamed_addr constant [93 x i8] c" %olen = mul i64 %grp, 4\0A %olen1 = add i64 %olen, 1\0A %out = call ptr @malloc(i64 %olen1)\0A\00" +@.str2987 = private unnamed_addr constant [136 x i8] c" %inbuf = call ptr @malloc(i64 %bufn)\0A call ptr @memset(ptr %inbuf, i32 0, i64 %bufn)\0A call ptr @memcpy(ptr %inbuf, ptr %s, i64 %n)\0A\00" +@.str2988 = private unnamed_addr constant [60 x i8] c" %gp = alloca i64\0A store i64 0, ptr %gp\0A br label %cond\0A\00" +@.str2989 = private unnamed_addr constant [101 x i8] c"cond:\0A %gi = load i64, ptr %gp\0A %lt = icmp ult i64 %gi, %grp\0A br i1 %lt, label %body, label %pad\0A\00" +@.str2990 = private unnamed_addr constant [30 x i8] c"body:\0A %i3 = mul i64 %gi, 3\0A\00" +@.str2991 = private unnamed_addr constant [103 x i8] c" %ip0 = getelementptr i8, ptr %inbuf, i64 %i3\0A %bv0 = load i8, ptr %ip0\0A %b0 = zext i8 %bv0 to i32\0A\00" +@.str2992 = private unnamed_addr constant [128 x i8] c" %i3a = add i64 %i3, 1\0A %ip1 = getelementptr i8, ptr %inbuf, i64 %i3a\0A %bv1 = load i8, ptr %ip1\0A %b1 = zext i8 %bv1 to i32\0A\00" +@.str2993 = private unnamed_addr constant [128 x i8] c" %i3b = add i64 %i3, 2\0A %ip2 = getelementptr i8, ptr %inbuf, i64 %i3b\0A %bv2 = load i8, ptr %ip2\0A %b2 = zext i8 %bv2 to i32\0A\00" +@.str2994 = private unnamed_addr constant [25 x i8] c" %e0 = lshr i32 %b0, 2\0A\00" +@.str2995 = private unnamed_addr constant [101 x i8] c" %b0l = and i32 %b0, 3\0A %b0s = shl i32 %b0l, 4\0A %b1h = lshr i32 %b1, 4\0A %e1 = or i32 %b0s, %b1h\0A\00" +@.str2996 = private unnamed_addr constant [102 x i8] c" %b1l = and i32 %b1, 15\0A %b1s = shl i32 %b1l, 2\0A %b2h = lshr i32 %b2, 6\0A %e2 = or i32 %b1s, %b2h\0A\00" +@.str2997 = private unnamed_addr constant [25 x i8] c" %e3 = and i32 %b2, 63\0A\00" +@.str2998 = private unnamed_addr constant [24 x i8] c" %o4 = mul i64 %gi, 4\0A\00" +@.str2999 = private unnamed_addr constant [117 x i8] c" %e0z = zext i32 %e0 to i64\0A %e1z = zext i32 %e1 to i64\0A %e2z = zext i32 %e2 to i64\0A %e3z = zext i32 %e3 to i64\0A\00" +@.str3000 = private unnamed_addr constant [167 x i8] c" %g0 = getelementptr [64 x i8], ptr @.ludic_b64tab, i64 0, i64 %e0z\0A %ch0 = load i8, ptr %g0\0A %op0 = getelementptr i8, ptr %out, i64 %o4\0A store i8 %ch0, ptr %op0\0A\00" +@.str3001 = private unnamed_addr constant [192 x i8] c" %o4a = add i64 %o4, 1\0A %g1 = getelementptr [64 x i8], ptr @.ludic_b64tab, i64 0, i64 %e1z\0A %ch1 = load i8, ptr %g1\0A %op1 = getelementptr i8, ptr %out, i64 %o4a\0A store i8 %ch1, ptr %op1\0A\00" +@.str3002 = private unnamed_addr constant [192 x i8] c" %o4b = add i64 %o4, 2\0A %g2 = getelementptr [64 x i8], ptr @.ludic_b64tab, i64 0, i64 %e2z\0A %ch2 = load i8, ptr %g2\0A %op2 = getelementptr i8, ptr %out, i64 %o4b\0A store i8 %ch2, ptr %op2\0A\00" +@.str3003 = private unnamed_addr constant [192 x i8] c" %o4c = add i64 %o4, 3\0A %g3 = getelementptr [64 x i8], ptr @.ludic_b64tab, i64 0, i64 %e3z\0A %ch3 = load i8, ptr %g3\0A %op3 = getelementptr i8, ptr %out, i64 %o4c\0A store i8 %ch3, ptr %op3\0A\00" +@.str3004 = private unnamed_addr constant [68 x i8] c" %gin = add i64 %gi, 1\0A store i64 %gin, ptr %gp\0A br label %cond\0A\00" +@.str3005 = private unnamed_addr constant [86 x i8] c"pad:\0A %rem = urem i64 %n, 3\0A %r1 = icmp eq i64 %rem, 1\0A %r2 = icmp eq i64 %rem, 2\0A\00" +@.str3006 = private unnamed_addr constant [69 x i8] c" %eq = getelementptr i8, ptr %out, i64 %olen\0A store i8 0, ptr %eq\0A\00" +@.str3007 = private unnamed_addr constant [41 x i8] c" br i1 %r1, label %pad1, label %maybe2\0A\00" +@.str3008 = private unnamed_addr constant [216 x i8] c"pad1:\0A %pm1 = sub i64 %olen, 1\0A %pp1 = getelementptr i8, ptr %out, i64 %pm1\0A store i8 61, ptr %pp1\0A %pm2 = sub i64 %olen, 2\0A %pp2 = getelementptr i8, ptr %out, i64 %pm2\0A store i8 61, ptr %pp2\0A br label %done\0A\00" +@.str3009 = private unnamed_addr constant [47 x i8] c"maybe2:\0A br i1 %r2, label %pad2, label %done\0A\00" +@.str3010 = private unnamed_addr constant [120 x i8] c"pad2:\0A %qm1 = sub i64 %olen, 1\0A %qp1 = getelementptr i8, ptr %out, i64 %qm1\0A store i8 61, ptr %qp1\0A br label %done\0A\00" +@.str3011 = private unnamed_addr constant [54 x i8] c"done:\0A call void @free(ptr %inbuf)\0A ret ptr %out\0A}\0A\00" +@.str3012 = private unnamed_addr constant [4 x i8] c"new\00" +@.str3013 = private unnamed_addr constant [3 x i8] c"v4\00" +@.str3014 = private unnamed_addr constant [7 x i8] c"new_v7\00" +@.str3015 = private unnamed_addr constant [3 x i8] c"v7\00" +@.str3016 = private unnamed_addr constant [6 x i8] c"parse\00" +@.str3017 = private unnamed_addr constant [9 x i8] c"is_valid\00" +@.str3018 = private unnamed_addr constant [8 x i8] c"to_text\00" +@.str3019 = private unnamed_addr constant [7 x i8] c"equals\00" +@.str3020 = private unnamed_addr constant [4 x i8] c"nil\00" +@.str3021 = private unnamed_addr constant [4 x i8] c"new\00" +@.str3022 = private unnamed_addr constant [3 x i8] c"v4\00" +@.str3023 = private unnamed_addr constant [23 x i8] c"call ptr @lp_uuid_v4()\00" +@.str3024 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3025 = private unnamed_addr constant [7 x i8] c"new_v7\00" +@.str3026 = private unnamed_addr constant [3 x i8] c"v7\00" +@.str3027 = private unnamed_addr constant [23 x i8] c"call ptr @lp_uuid_v7()\00" @.str3028 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3029 = private unnamed_addr constant [9 x i8] c"is_valid\00" -@.str3030 = private unnamed_addr constant [29 x i8] c"call i32 @lp_uuid_valid(ptr \00" -@.str3031 = private unnamed_addr constant [2 x i8] c")\00" -@.str3032 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str3033 = private unnamed_addr constant [8 x i8] c"to_text\00" -@.str3034 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3035 = private unnamed_addr constant [7 x i8] c"equals\00" -@.str3036 = private unnamed_addr constant [26 x i8] c"call i32 @lp_uuid_eq(ptr \00" -@.str3037 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str3038 = private unnamed_addr constant [2 x i8] c")\00" -@.str3039 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str3040 = private unnamed_addr constant [29 x i8] c"call ptr @lp_uuid_parse(ptr \00" +@.str3029 = private unnamed_addr constant [4 x i8] c"nil\00" +@.str3030 = private unnamed_addr constant [24 x i8] c"call ptr @lp_uuid_nil()\00" +@.str3031 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3032 = private unnamed_addr constant [9 x i8] c"is_valid\00" +@.str3033 = private unnamed_addr constant [29 x i8] c"call i32 @lp_uuid_valid(ptr \00" +@.str3034 = private unnamed_addr constant [2 x i8] c")\00" +@.str3035 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str3036 = private unnamed_addr constant [8 x i8] c"to_text\00" +@.str3037 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3038 = private unnamed_addr constant [7 x i8] c"equals\00" +@.str3039 = private unnamed_addr constant [26 x i8] c"call i32 @lp_uuid_eq(ptr \00" +@.str3040 = private unnamed_addr constant [7 x i8] c", ptr \00" @.str3041 = private unnamed_addr constant [2 x i8] c")\00" -@.str3042 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3043 = private unnamed_addr constant [40 x i8] c"define ptr @lp_uuid_format(ptr %b16) {\0A\00" -@.str3044 = private unnamed_addr constant [93 x i8] c"entry:\0A %hex = call ptr @lp_hex_encode(ptr %b16, i64 16)\0A %out = call ptr @malloc(i64 37)\0A\00" -@.str3045 = private unnamed_addr constant [47 x i8] c" call ptr @memcpy(ptr %out, ptr %hex, i64 8)\0A\00" -@.str3046 = private unnamed_addr constant [66 x i8] c" %o8 = getelementptr i8, ptr %out, i64 8\0A store i8 45, ptr %o8\0A\00" -@.str3047 = private unnamed_addr constant [129 x i8] c" %h8 = getelementptr i8, ptr %hex, i64 8\0A %o9 = getelementptr i8, ptr %out, i64 9\0A call ptr @memcpy(ptr %o9, ptr %h8, i64 4)\0A\00" -@.str3048 = private unnamed_addr constant [69 x i8] c" %o13 = getelementptr i8, ptr %out, i64 13\0A store i8 45, ptr %o13\0A\00" -@.str3049 = private unnamed_addr constant [135 x i8] c" %h12 = getelementptr i8, ptr %hex, i64 12\0A %o14 = getelementptr i8, ptr %out, i64 14\0A call ptr @memcpy(ptr %o14, ptr %h12, i64 4)\0A\00" -@.str3050 = private unnamed_addr constant [69 x i8] c" %o18 = getelementptr i8, ptr %out, i64 18\0A store i8 45, ptr %o18\0A\00" -@.str3051 = private unnamed_addr constant [135 x i8] c" %h16 = getelementptr i8, ptr %hex, i64 16\0A %o19 = getelementptr i8, ptr %out, i64 19\0A call ptr @memcpy(ptr %o19, ptr %h16, i64 4)\0A\00" -@.str3052 = private unnamed_addr constant [69 x i8] c" %o23 = getelementptr i8, ptr %out, i64 23\0A store i8 45, ptr %o23\0A\00" -@.str3053 = private unnamed_addr constant [136 x i8] c" %h20 = getelementptr i8, ptr %hex, i64 20\0A %o24 = getelementptr i8, ptr %out, i64 24\0A call ptr @memcpy(ptr %o24, ptr %h20, i64 12)\0A\00" -@.str3054 = private unnamed_addr constant [68 x i8] c" %o36 = getelementptr i8, ptr %out, i64 36\0A store i8 0, ptr %o36\0A\00" -@.str3055 = private unnamed_addr constant [46 x i8] c" call void @free(ptr %hex)\0A ret ptr %out\0A}\0A\00" -@.str3056 = private unnamed_addr constant [28 x i8] c"define ptr @lp_uuid_v4() {\0A\00" -@.str3057 = private unnamed_addr constant [132 x i8] c"entry:\0A %b = alloca [16 x i8]\0A %bp = getelementptr [16 x i8], ptr %b, i64 0, i64 0\0A call void @lp_secure_bytes(ptr %bp, i64 16)\0A\00" -@.str3058 = private unnamed_addr constant [140 x i8] c" %p6 = getelementptr i8, ptr %bp, i64 6\0A %v6 = load i8, ptr %p6\0A %v6a = and i8 %v6, 15\0A %v6b = or i8 %v6a, 64\0A store i8 %v6b, ptr %p6\0A\00" -@.str3059 = private unnamed_addr constant [142 x i8] c" %p8 = getelementptr i8, ptr %bp, i64 8\0A %v8 = load i8, ptr %p8\0A %v8a = and i8 %v8, 63\0A %v8b = or i8 %v8a, -128\0A store i8 %v8b, ptr %p8\0A\00" -@.str3060 = private unnamed_addr constant [57 x i8] c" %s = call ptr @lp_uuid_format(ptr %bp)\0A ret ptr %s\0A}\0A\00" -@.str3061 = private unnamed_addr constant [28 x i8] c"define ptr @lp_uuid_v7() {\0A\00" -@.str3062 = private unnamed_addr constant [132 x i8] c"entry:\0A %b = alloca [16 x i8]\0A %bp = getelementptr [16 x i8], ptr %b, i64 0, i64 0\0A call void @lp_secure_bytes(ptr %bp, i64 16)\0A\00" -@.str3063 = private unnamed_addr constant [58 x i8] c" %t = call i64 @time(ptr null)\0A %ms = mul i64 %t, 1000\0A\00" -@.str3064 = private unnamed_addr constant [121 x i8] c" %s40 = lshr i64 %ms, 40\0A %t0 = trunc i64 %s40 to i8\0A %q0 = getelementptr i8, ptr %bp, i64 0\0A store i8 %t0, ptr %q0\0A\00" -@.str3065 = private unnamed_addr constant [121 x i8] c" %s32 = lshr i64 %ms, 32\0A %t1 = trunc i64 %s32 to i8\0A %q1 = getelementptr i8, ptr %bp, i64 1\0A store i8 %t1, ptr %q1\0A\00" -@.str3066 = private unnamed_addr constant [121 x i8] c" %s24 = lshr i64 %ms, 24\0A %t2 = trunc i64 %s24 to i8\0A %q2 = getelementptr i8, ptr %bp, i64 2\0A store i8 %t2, ptr %q2\0A\00" -@.str3067 = private unnamed_addr constant [121 x i8] c" %s16 = lshr i64 %ms, 16\0A %t3 = trunc i64 %s16 to i8\0A %q3 = getelementptr i8, ptr %bp, i64 3\0A store i8 %t3, ptr %q3\0A\00" -@.str3068 = private unnamed_addr constant [118 x i8] c" %s8 = lshr i64 %ms, 8\0A %t4 = trunc i64 %s8 to i8\0A %q4 = getelementptr i8, ptr %bp, i64 4\0A store i8 %t4, ptr %q4\0A\00" -@.str3069 = private unnamed_addr constant [94 x i8] c" %t5 = trunc i64 %ms to i8\0A %q5 = getelementptr i8, ptr %bp, i64 5\0A store i8 %t5, ptr %q5\0A\00" -@.str3070 = private unnamed_addr constant [141 x i8] c" %p6 = getelementptr i8, ptr %bp, i64 6\0A %v6 = load i8, ptr %p6\0A %v6a = and i8 %v6, 15\0A %v6b = or i8 %v6a, 112\0A store i8 %v6b, ptr %p6\0A\00" -@.str3071 = private unnamed_addr constant [142 x i8] c" %p8 = getelementptr i8, ptr %bp, i64 8\0A %v8 = load i8, ptr %p8\0A %v8a = and i8 %v8, 63\0A %v8b = or i8 %v8a, -128\0A store i8 %v8b, ptr %p8\0A\00" -@.str3072 = private unnamed_addr constant [57 x i8] c" %s = call ptr @lp_uuid_format(ptr %bp)\0A ret ptr %s\0A}\0A\00" -@.str3073 = private unnamed_addr constant [29 x i8] c"define ptr @lp_uuid_nil() {\0A\00" -@.str3074 = private unnamed_addr constant [87 x i8] c"entry:\0A %out = call ptr @malloc(i64 37)\0A call ptr @memset(ptr %out, i32 48, i64 36)\0A\00" -@.str3075 = private unnamed_addr constant [66 x i8] c" %o8 = getelementptr i8, ptr %out, i64 8\0A store i8 45, ptr %o8\0A\00" -@.str3076 = private unnamed_addr constant [69 x i8] c" %o13 = getelementptr i8, ptr %out, i64 13\0A store i8 45, ptr %o13\0A\00" -@.str3077 = private unnamed_addr constant [69 x i8] c" %o18 = getelementptr i8, ptr %out, i64 18\0A store i8 45, ptr %o18\0A\00" -@.str3078 = private unnamed_addr constant [69 x i8] c" %o23 = getelementptr i8, ptr %out, i64 23\0A store i8 45, ptr %o23\0A\00" -@.str3079 = private unnamed_addr constant [85 x i8] c" %o36 = getelementptr i8, ptr %out, i64 36\0A store i8 0, ptr %o36\0A ret ptr %out\0A}\0A\00" -@.str3080 = private unnamed_addr constant [37 x i8] c"define i32 @lp_uuid_valid(ptr %s) {\0A\00" -@.str3081 = private unnamed_addr constant [102 x i8] c"entry:\0A %n = call i64 @strlen(ptr %s)\0A %ne = icmp eq i64 %n, 36\0A br i1 %ne, label %go, label %bad\0A\00" -@.str3082 = private unnamed_addr constant [64 x i8] c"go:\0A %ip = alloca i64\0A store i64 0, ptr %ip\0A br label %cond\0A\00" -@.str3083 = private unnamed_addr constant [98 x i8] c"cond:\0A %i = load i64, ptr %ip\0A %lt = icmp ult i64 %i, 36\0A br i1 %lt, label %body, label %good\0A\00" -@.str3084 = private unnamed_addr constant [70 x i8] c"body:\0A %p = getelementptr i8, ptr %s, i64 %i\0A %c = load i8, ptr %p\0A\00" -@.str3085 = private unnamed_addr constant [111 x i8] c" %h8 = icmp eq i64 %i, 8\0A %h13 = icmp eq i64 %i, 13\0A %h18 = icmp eq i64 %i, 18\0A %h23 = icmp eq i64 %i, 23\0A\00" -@.str3086 = private unnamed_addr constant [118 x i8] c" %hx = or i1 %h8, %h13\0A %hy = or i1 %hx, %h18\0A %hyph = or i1 %hy, %h23\0A br i1 %hyph, label %ckhyph, label %ckhex\0A\00" -@.str3087 = private unnamed_addr constant [74 x i8] c"ckhyph:\0A %ish = icmp eq i8 %c, 45\0A br i1 %ish, label %next, label %bad\0A\00" -@.str3088 = private unnamed_addr constant [8 x i8] c"ckhex:\0A\00" -@.str3089 = private unnamed_addr constant [86 x i8] c" %ge0 = icmp uge i8 %c, 48\0A %le9 = icmp ule i8 %c, 57\0A %isdig = and i1 %ge0, %le9\0A\00" -@.str3090 = private unnamed_addr constant [86 x i8] c" %gea = icmp uge i8 %c, 97\0A %lef = icmp ule i8 %c, 102\0A %islo = and i1 %gea, %lef\0A\00" -@.str3091 = private unnamed_addr constant [85 x i8] c" %geA = icmp uge i8 %c, 65\0A %leF = icmp ule i8 %c, 70\0A %ishi = and i1 %geA, %leF\0A\00" -@.str3092 = private unnamed_addr constant [99 x i8] c" %hx1 = or i1 %isdig, %islo\0A %ishex = or i1 %hx1, %ishi\0A br i1 %ishex, label %next, label %bad\0A\00" -@.str3093 = private unnamed_addr constant [71 x i8] c"next:\0A %i1 = add i64 %i, 1\0A store i64 %i1, ptr %ip\0A br label %cond\0A\00" -@.str3094 = private unnamed_addr constant [19 x i8] c"good:\0A ret i32 1\0A\00" -@.str3095 = private unnamed_addr constant [20 x i8] c"bad:\0A ret i32 0\0A}\0A\00" -@.str3096 = private unnamed_addr constant [42 x i8] c"define i32 @lp_uuid_eq(ptr %a, ptr %b) {\0A\00" -@.str3097 = private unnamed_addr constant [137 x i8] c"entry:\0A %la = call i64 @strlen(ptr %a)\0A %lb = call i64 @strlen(ptr %b)\0A %eq = icmp eq i64 %la, %lb\0A br i1 %eq, label %go, label %ne\0A\00" -@.str3098 = private unnamed_addr constant [64 x i8] c"go:\0A %ip = alloca i64\0A store i64 0, ptr %ip\0A br label %cond\0A\00" -@.str3099 = private unnamed_addr constant [100 x i8] c"cond:\0A %i = load i64, ptr %ip\0A %lt = icmp ult i64 %i, %la\0A br i1 %lt, label %body, label %eqret\0A\00" -@.str3100 = private unnamed_addr constant [139 x i8] c"body:\0A %pa = getelementptr i8, ptr %a, i64 %i\0A %ca = load i8, ptr %pa\0A %pb = getelementptr i8, ptr %b, i64 %i\0A %cb = load i8, ptr %pb\0A\00" -@.str3101 = private unnamed_addr constant [155 x i8] c" %caA = icmp uge i8 %ca, 65\0A %caZ = icmp ule i8 %ca, 90\0A %caup = and i1 %caA, %caZ\0A %ca32 = add i8 %ca, 32\0A %cal = select i1 %caup, i8 %ca32, i8 %ca\0A\00" -@.str3102 = private unnamed_addr constant [155 x i8] c" %cbA = icmp uge i8 %cb, 65\0A %cbZ = icmp ule i8 %cb, 90\0A %cbup = and i1 %cbA, %cbZ\0A %cb32 = add i8 %cb, 32\0A %cbl = select i1 %cbup, i8 %cb32, i8 %cb\0A\00" -@.str3103 = private unnamed_addr constant [71 x i8] c" %same = icmp eq i8 %cal, %cbl\0A br i1 %same, label %next, label %ne\0A\00" -@.str3104 = private unnamed_addr constant [71 x i8] c"next:\0A %i1 = add i64 %i, 1\0A store i64 %i1, ptr %ip\0A br label %cond\0A\00" -@.str3105 = private unnamed_addr constant [20 x i8] c"eqret:\0A ret i32 1\0A\00" -@.str3106 = private unnamed_addr constant [19 x i8] c"ne:\0A ret i32 0\0A}\0A\00" -@.str3107 = private unnamed_addr constant [37 x i8] c"define ptr @lp_uuid_parse(ptr %s) {\0A\00" -@.str3108 = private unnamed_addr constant [116 x i8] c"entry:\0A %ok = call i32 @lp_uuid_valid(ptr %s)\0A %isok = icmp ne i32 %ok, 0\0A br i1 %isok, label %dup, label %nilb\0A\00" -@.str3109 = private unnamed_addr constant [99 x i8] c"dup:\0A %out = call ptr @malloc(i64 37)\0A %ip = alloca i64\0A store i64 0, ptr %ip\0A br label %cond\0A\00" -@.str3110 = private unnamed_addr constant [97 x i8] c"cond:\0A %i = load i64, ptr %ip\0A %lt = icmp ult i64 %i, 36\0A br i1 %lt, label %body, label %fin\0A\00" -@.str3111 = private unnamed_addr constant [70 x i8] c"body:\0A %p = getelementptr i8, ptr %s, i64 %i\0A %c = load i8, ptr %p\0A\00" -@.str3112 = private unnamed_addr constant [142 x i8] c" %cA = icmp uge i8 %c, 65\0A %cZ = icmp ule i8 %c, 90\0A %cup = and i1 %cA, %cZ\0A %c32 = add i8 %c, 32\0A %cl = select i1 %cup, i8 %c32, i8 %c\0A\00" -@.str3113 = private unnamed_addr constant [68 x i8] c" %op = getelementptr i8, ptr %out, i64 %i\0A store i8 %cl, ptr %op\0A\00" -@.str3114 = private unnamed_addr constant [65 x i8] c" %i1 = add i64 %i, 1\0A store i64 %i1, ptr %ip\0A br label %cond\0A\00" -@.str3115 = private unnamed_addr constant [88 x i8] c"fin:\0A %o36 = getelementptr i8, ptr %out, i64 36\0A store i8 0, ptr %o36\0A ret ptr %out\0A\00" -@.str3116 = private unnamed_addr constant [55 x i8] c"nilb:\0A %nn = call ptr @lp_uuid_nil()\0A ret ptr %nn\0A}\0A\00" -@.str3117 = private unnamed_addr constant [7 x i8] c"value2\00" -@.str3118 = private unnamed_addr constant [8 x i8] c"perlin2\00" -@.str3119 = private unnamed_addr constant [9 x i8] c"simplex2\00" -@.str3120 = private unnamed_addr constant [5 x i8] c"fbm2\00" -@.str3121 = private unnamed_addr constant [10 x i8] c"cellular2\00" -@.str3122 = private unnamed_addr constant [13 x i8] c"cellular2_id\00" -@.str3123 = private unnamed_addr constant [5 x i8] c"unit\00" -@.str3124 = private unnamed_addr constant [5 x i8] c"unit\00" -@.str3125 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str3126 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str3127 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str3128 = private unnamed_addr constant [8 x i8] c", 32768\00" -@.str3129 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str3130 = private unnamed_addr constant [7 x i8] c"value2\00" -@.str3131 = private unnamed_addr constant [31 x i8] c"call i32 @lp_noise_value2(i32 \00" -@.str3132 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3133 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3134 = private unnamed_addr constant [2 x i8] c")\00" -@.str3135 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str3136 = private unnamed_addr constant [8 x i8] c"perlin2\00" -@.str3137 = private unnamed_addr constant [32 x i8] c"call i32 @lp_noise_perlin2(i32 \00" -@.str3138 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3139 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3140 = private unnamed_addr constant [2 x i8] c")\00" -@.str3141 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str3142 = private unnamed_addr constant [9 x i8] c"simplex2\00" -@.str3143 = private unnamed_addr constant [33 x i8] c"call i32 @lp_noise_simplex2(i32 \00" -@.str3144 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3145 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3146 = private unnamed_addr constant [2 x i8] c")\00" -@.str3147 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str3148 = private unnamed_addr constant [5 x i8] c"fbm2\00" -@.str3149 = private unnamed_addr constant [29 x i8] c"call i32 @lp_noise_fbm2(i32 \00" -@.str3150 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3151 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3152 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3153 = private unnamed_addr constant [2 x i8] c")\00" -@.str3154 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str3155 = private unnamed_addr constant [10 x i8] c"cellular2\00" -@.str3156 = private unnamed_addr constant [34 x i8] c"call i32 @lp_noise_cellular2(i32 \00" -@.str3157 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3158 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3159 = private unnamed_addr constant [2 x i8] c")\00" -@.str3160 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str3161 = private unnamed_addr constant [37 x i8] c"call i32 @lp_noise_cellular2_id(i32 \00" -@.str3162 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3163 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3164 = private unnamed_addr constant [2 x i8] c")\00" -@.str3165 = private unnamed_addr constant [4 x i8] c"int\00" -@.str3166 = private unnamed_addr constant [42 x i8] c"define i32 @lp_nfx_mul(i32 %a, i32 %b) {\0A\00" -@.str3167 = private unnamed_addr constant [148 x i8] c" %a64 = sext i32 %a to i64\0A %b64 = sext i32 %b to i64\0A %m = mul i64 %a64, %b64\0A %s = ashr i64 %m, 16\0A %r = trunc i64 %s to i32\0A ret i32 %r\0A}\0A\00" -@.str3168 = private unnamed_addr constant [42 x i8] c"define i32 @lp_nfx_div(i32 %a, i32 %b) {\0A\00" -@.str3169 = private unnamed_addr constant [61 x i8] c" %z = icmp eq i32 %b, 0\0A br i1 %z, label %zero, label %go\0A\00" -@.str3170 = private unnamed_addr constant [19 x i8] c"zero:\0A ret i32 0\0A\00" -@.str3171 = private unnamed_addr constant [156 x i8] c"go:\0A %a64 = sext i32 %a to i64\0A %ash = shl i64 %a64, 16\0A %b64 = sext i32 %b to i64\0A %d = sdiv i64 %ash, %b64\0A %r = trunc i64 %d to i32\0A ret i32 %r\0A}\0A\00" -@.str3172 = private unnamed_addr constant [51 x i8] c"define i32 @lp_nfx_lerp(i32 %a, i32 %b, i32 %t) {\0A\00" -@.str3173 = private unnamed_addr constant [106 x i8] c" %d = sub i32 %b, %a\0A %dt = call i32 @lp_nfx_mul(i32 %d, i32 %t)\0A %r = add i32 %a, %dt\0A ret i32 %r\0A}\0A\00" -@.str3174 = private unnamed_addr constant [38 x i8] c"define i32 @lp_noise_clamp(i32 %v) {\0A\00" -@.str3175 = private unnamed_addr constant [163 x i8] c" %hi = icmp sgt i32 %v, 65536\0A %v1 = select i1 %hi, i32 65536, i32 %v\0A %lo = icmp slt i32 %v1, -65536\0A %r = select i1 %lo, i32 -65536, i32 %v1\0A ret i32 %r\0A}\0A\00" -@.str3176 = private unnamed_addr constant [58 x i8] c"define i32 @lp_noise_hash(i32 %seed, i32 %xi, i32 %yi) {\0A\00" -@.str3177 = private unnamed_addr constant [111 x i8] c" %a = mul i32 %xi, 374761393\0A %b = mul i32 %yi, -1028477387\0A %c = add i32 %seed, %a\0A %d0 = add i32 %c, %b\0A\00" -@.str3178 = private unnamed_addr constant [79 x i8] c" %e = lshr i32 %d0, 16\0A %f = xor i32 %d0, %e\0A %g = mul i32 %f, -2048144789\0A\00" -@.str3179 = private unnamed_addr constant [77 x i8] c" %h = lshr i32 %g, 13\0A %i = xor i32 %g, %h\0A %j = mul i32 %i, -1028477387\0A\00" -@.str3180 = private unnamed_addr constant [61 x i8] c" %k = lshr i32 %j, 16\0A %l = xor i32 %j, %k\0A ret i32 %l\0A}\0A\00" -@.str3181 = private unnamed_addr constant [37 x i8] c"define i32 @lp_noise_fade(i32 %t) {\0A\00" -@.str3182 = private unnamed_addr constant [92 x i8] c" %t2 = call i32 @lp_nfx_mul(i32 %t, i32 %t)\0A %t3 = call i32 @lp_nfx_mul(i32 %t2, i32 %t)\0A\00" -@.str3183 = private unnamed_addr constant [93 x i8] c" %t4 = call i32 @lp_nfx_mul(i32 %t3, i32 %t)\0A %t5 = call i32 @lp_nfx_mul(i32 %t4, i32 %t)\0A\00" -@.str3184 = private unnamed_addr constant [74 x i8] c" %c6 = mul i32 %t5, 6\0A %c15 = mul i32 %t4, 15\0A %c10 = mul i32 %t3, 10\0A\00" -@.str3185 = private unnamed_addr constant [67 x i8] c" %s1 = sub i32 %c6, %c15\0A %r = add i32 %s1, %c10\0A ret i32 %r\0A}\0A\00" -@.str3186 = private unnamed_addr constant [58 x i8] c"define i32 @lp_noise_value2(i32 %x, i32 %y, i32 %seed) {\0A\00" -@.str3187 = private unnamed_addr constant [101 x i8] c" %xi = ashr i32 %x, 16\0A %yi = ashr i32 %y, 16\0A %xf = and i32 %x, 65535\0A %yf = and i32 %y, 65535\0A\00" -@.str3188 = private unnamed_addr constant [81 x i8] c" %u = call i32 @lp_noise_fade(i32 %xf)\0A %v = call i32 @lp_noise_fade(i32 %yf)\0A\00" -@.str3189 = private unnamed_addr constant [49 x i8] c" %xi1 = add i32 %xi, 1\0A %yi1 = add i32 %yi, 1\0A\00" -@.str3190 = private unnamed_addr constant [122 x i8] c" %h00 = call i32 @lp_noise_hash(i32 %seed, i32 %xi, i32 %yi)\0A %m00 = and i32 %h00, 131071\0A %n00 = sub i32 %m00, 65536\0A\00" -@.str3191 = private unnamed_addr constant [123 x i8] c" %h10 = call i32 @lp_noise_hash(i32 %seed, i32 %xi1, i32 %yi)\0A %m10 = and i32 %h10, 131071\0A %n10 = sub i32 %m10, 65536\0A\00" -@.str3192 = private unnamed_addr constant [123 x i8] c" %h01 = call i32 @lp_noise_hash(i32 %seed, i32 %xi, i32 %yi1)\0A %m01 = and i32 %h01, 131071\0A %n01 = sub i32 %m01, 65536\0A\00" -@.str3193 = private unnamed_addr constant [124 x i8] c" %h11 = call i32 @lp_noise_hash(i32 %seed, i32 %xi1, i32 %yi1)\0A %m11 = and i32 %h11, 131071\0A %n11 = sub i32 %m11, 65536\0A\00" -@.str3194 = private unnamed_addr constant [115 x i8] c" %a = call i32 @lp_nfx_lerp(i32 %n00, i32 %n10, i32 %u)\0A %b = call i32 @lp_nfx_lerp(i32 %n01, i32 %n11, i32 %u)\0A\00" -@.str3195 = private unnamed_addr constant [109 x i8] c" %n = call i32 @lp_nfx_lerp(i32 %a, i32 %b, i32 %v)\0A %r = call i32 @lp_noise_clamp(i32 %n)\0A ret i32 %r\0A}\0A\00" -@.str3196 = private unnamed_addr constant [224 x i8] c"@noise_grad2 = private unnamed_addr constant [16 x i32] [i32 65536, i32 0, i32 -65536, i32 0, i32 0, i32 65536, i32 0, i32 -65536, i32 46341, i32 46341, i32 -46341, i32 46341, i32 46341, i32 -46341, i32 -46341, i32 -46341]\0A\00" -@.str3197 = private unnamed_addr constant [59 x i8] c"define i32 @lp_noise_grad2(i32 %hash, i32 %dx, i32 %dy) {\0A\00" -@.str3198 = private unnamed_addr constant [80 x i8] c" %h = and i32 %hash, 7\0A %idx = shl i32 %h, 1\0A %idx64 = sext i32 %idx to i64\0A\00" -@.str3199 = private unnamed_addr constant [99 x i8] c" %gxp = getelementptr [16 x i32], ptr @noise_grad2, i64 0, i64 %idx64\0A %gx = load i32, ptr %gxp\0A\00" -@.str3200 = private unnamed_addr constant [156 x i8] c" %idy = add i32 %idx, 1\0A %idy64 = sext i32 %idy to i64\0A %gyp = getelementptr [16 x i32], ptr @noise_grad2, i64 0, i64 %idy64\0A %gy = load i32, ptr %gyp\0A\00" -@.str3201 = private unnamed_addr constant [134 x i8] c" %px = call i32 @lp_nfx_mul(i32 %gx, i32 %dx)\0A %py = call i32 @lp_nfx_mul(i32 %gy, i32 %dy)\0A %r = add i32 %px, %py\0A ret i32 %r\0A}\0A\00" -@.str3202 = private unnamed_addr constant [59 x i8] c"define i32 @lp_noise_perlin2(i32 %x, i32 %y, i32 %seed) {\0A\00" -@.str3203 = private unnamed_addr constant [101 x i8] c" %xi = ashr i32 %x, 16\0A %yi = ashr i32 %y, 16\0A %xf = and i32 %x, 65535\0A %yf = and i32 %y, 65535\0A\00" -@.str3204 = private unnamed_addr constant [57 x i8] c" %xf1 = sub i32 %xf, 65536\0A %yf1 = sub i32 %yf, 65536\0A\00" -@.str3205 = private unnamed_addr constant [81 x i8] c" %u = call i32 @lp_noise_fade(i32 %xf)\0A %v = call i32 @lp_noise_fade(i32 %yf)\0A\00" -@.str3206 = private unnamed_addr constant [49 x i8] c" %xi1 = add i32 %xi, 1\0A %yi1 = add i32 %yi, 1\0A\00" -@.str3207 = private unnamed_addr constant [126 x i8] c" %h00 = call i32 @lp_noise_hash(i32 %seed, i32 %xi, i32 %yi)\0A %h10 = call i32 @lp_noise_hash(i32 %seed, i32 %xi1, i32 %yi)\0A\00" -@.str3208 = private unnamed_addr constant [128 x i8] c" %h01 = call i32 @lp_noise_hash(i32 %seed, i32 %xi, i32 %yi1)\0A %h11 = call i32 @lp_noise_hash(i32 %seed, i32 %xi1, i32 %yi1)\0A\00" -@.str3209 = private unnamed_addr constant [126 x i8] c" %g00 = call i32 @lp_noise_grad2(i32 %h00, i32 %xf, i32 %yf)\0A %g10 = call i32 @lp_noise_grad2(i32 %h10, i32 %xf1, i32 %yf)\0A\00" -@.str3210 = private unnamed_addr constant [128 x i8] c" %g01 = call i32 @lp_noise_grad2(i32 %h01, i32 %xf, i32 %yf1)\0A %g11 = call i32 @lp_noise_grad2(i32 %h11, i32 %xf1, i32 %yf1)\0A\00" -@.str3211 = private unnamed_addr constant [115 x i8] c" %a = call i32 @lp_nfx_lerp(i32 %g00, i32 %g10, i32 %u)\0A %b = call i32 @lp_nfx_lerp(i32 %g01, i32 %g11, i32 %u)\0A\00" -@.str3212 = private unnamed_addr constant [158 x i8] c" %n = call i32 @lp_nfx_lerp(i32 %a, i32 %b, i32 %v)\0A %sc = call i32 @lp_nfx_mul(i32 %n, i32 92682)\0A %r = call i32 @lp_noise_clamp(i32 %sc)\0A ret i32 %r\0A}\0A\00" -@.str3213 = private unnamed_addr constant [61 x i8] c"define i32 @lp_noise_scorner(i32 %hash, i32 %dx, i32 %dy) {\0A\00" -@.str3214 = private unnamed_addr constant [95 x i8] c" %xx = call i32 @lp_nfx_mul(i32 %dx, i32 %dx)\0A %yy = call i32 @lp_nfx_mul(i32 %dy, i32 %dy)\0A\00" -@.str3215 = private unnamed_addr constant [117 x i8] c" %s0 = sub i32 32768, %xx\0A %t = sub i32 %s0, %yy\0A %neg = icmp sle i32 %t, 0\0A br i1 %neg, label %zero, label %go\0A\00" -@.str3216 = private unnamed_addr constant [19 x i8] c"zero:\0A ret i32 0\0A\00" -@.str3217 = private unnamed_addr constant [97 x i8] c"go:\0A %t2 = call i32 @lp_nfx_mul(i32 %t, i32 %t)\0A %t4 = call i32 @lp_nfx_mul(i32 %t2, i32 %t2)\0A\00" -@.str3218 = private unnamed_addr constant [122 x i8] c" %g = call i32 @lp_noise_grad2(i32 %hash, i32 %dx, i32 %dy)\0A %r = call i32 @lp_nfx_mul(i32 %t4, i32 %g)\0A ret i32 %r\0A}\0A\00" -@.str3219 = private unnamed_addr constant [60 x i8] c"define i32 @lp_noise_simplex2(i32 %x, i32 %y, i32 %seed) {\0A\00" -@.str3220 = private unnamed_addr constant [79 x i8] c" %sum0 = add i32 %x, %y\0A %skew = call i32 @lp_nfx_mul(i32 %sum0, i32 23994)\0A\00" -@.str3221 = private unnamed_addr constant [101 x i8] c" %xs = add i32 %x, %skew\0A %ys = add i32 %y, %skew\0A %i = ashr i32 %xs, 16\0A %j = ashr i32 %ys, 16\0A\00" -@.str3222 = private unnamed_addr constant [51 x i8] c" %ij = add i32 %i, %j\0A %tt = mul i32 %ij, 13849\0A\00" -@.str3223 = private unnamed_addr constant [49 x i8] c" %if0 = shl i32 %i, 16\0A %jf0 = shl i32 %j, 16\0A\00" -@.str3224 = private unnamed_addr constant [101 x i8] c" %X0 = sub i32 %if0, %tt\0A %Y0 = sub i32 %jf0, %tt\0A %x0 = sub i32 %x, %X0\0A %y0 = sub i32 %y, %Y0\0A\00" -@.str3225 = private unnamed_addr constant [103 x i8] c" %gt = icmp sgt i32 %x0, %y0\0A %i1 = select i1 %gt, i32 1, i32 0\0A %j1 = select i1 %gt, i32 0, i32 1\0A\00" -@.str3226 = private unnamed_addr constant [51 x i8] c" %i1f = shl i32 %i1, 16\0A %j1f = shl i32 %j1, 16\0A\00" -@.str3227 = private unnamed_addr constant [111 x i8] c" %x1a = sub i32 %x0, %i1f\0A %x1 = add i32 %x1a, 13849\0A %y1a = sub i32 %y0, %j1f\0A %y1 = add i32 %y1a, 13849\0A\00" -@.str3228 = private unnamed_addr constant [113 x i8] c" %x2a = sub i32 %x0, 65536\0A %x2 = add i32 %x2a, 27698\0A %y2a = sub i32 %y0, 65536\0A %y2 = add i32 %y2a, 27698\0A\00" -@.str3229 = private unnamed_addr constant [95 x i8] c" %i1p = add i32 %i, %i1\0A %j1p = add i32 %j, %j1\0A %i2 = add i32 %i, 1\0A %j2 = add i32 %j, 1\0A\00" -@.str3230 = private unnamed_addr constant [187 x i8] c" %gi0 = call i32 @lp_noise_hash(i32 %seed, i32 %i, i32 %j)\0A %gi1 = call i32 @lp_noise_hash(i32 %seed, i32 %i1p, i32 %j1p)\0A %gi2 = call i32 @lp_noise_hash(i32 %seed, i32 %i2, i32 %j2)\0A\00" -@.str3231 = private unnamed_addr constant [190 x i8] c" %n0 = call i32 @lp_noise_scorner(i32 %gi0, i32 %x0, i32 %y0)\0A %n1 = call i32 @lp_noise_scorner(i32 %gi1, i32 %x1, i32 %y1)\0A %n2 = call i32 @lp_noise_scorner(i32 %gi2, i32 %x2, i32 %y2)\0A\00" -@.str3232 = private unnamed_addr constant [51 x i8] c" %sa = add i32 %n0, %n1\0A %sb = add i32 %sa, %n2\0A\00" -@.str3233 = private unnamed_addr constant [81 x i8] c" %sc = mul i32 %sb, 45\0A %r = call i32 @lp_noise_clamp(i32 %sc)\0A ret i32 %r\0A}\0A\00" -@.str3234 = private unnamed_addr constant [66 x i8] c"define i32 @lp_noise_fbm2(i32 %x, i32 %y, i32 %seed, i32 %oct) {\0A\00" -@.str3235 = private unnamed_addr constant [113 x i8] c"entry:\0A %sump = alloca i32\0A %normp = alloca i32\0A %ampp = alloca i32\0A %freqp = alloca i32\0A %op = alloca i32\0A\00" -@.str3236 = private unnamed_addr constant [151 x i8] c" store i32 0, ptr %sump\0A store i32 0, ptr %normp\0A store i32 65536, ptr %ampp\0A store i32 65536, ptr %freqp\0A store i32 0, ptr %op\0A br label %cond\0A\00" -@.str3237 = private unnamed_addr constant [100 x i8] c"cond:\0A %o = load i32, ptr %op\0A %lt = icmp slt i32 %o, %oct\0A br i1 %lt, label %body, label %done\0A\00" -@.str3238 = private unnamed_addr constant [67 x i8] c"body:\0A %freq = load i32, ptr %freqp\0A %amp = load i32, ptr %ampp\0A\00" -@.str3239 = private unnamed_addr constant [97 x i8] c" %fx = call i32 @lp_nfx_mul(i32 %x, i32 %freq)\0A %fy = call i32 @lp_nfx_mul(i32 %y, i32 %freq)\0A\00" -@.str3240 = private unnamed_addr constant [89 x i8] c" %so = add i32 %seed, %o\0A %n = call i32 @lp_noise_simplex2(i32 %fx, i32 %fy, i32 %so)\0A\00" -@.str3241 = private unnamed_addr constant [134 x i8] c" %na = call i32 @lp_nfx_mul(i32 %n, i32 %amp)\0A %sum = load i32, ptr %sump\0A %sum2 = add i32 %sum, %na\0A store i32 %sum2, ptr %sump\0A\00" -@.str3242 = private unnamed_addr constant [94 x i8] c" %norm = load i32, ptr %normp\0A %norm2 = add i32 %norm, %amp\0A store i32 %norm2, ptr %normp\0A\00" -@.str3243 = private unnamed_addr constant [82 x i8] c" %amp2 = call i32 @lp_nfx_mul(i32 %amp, i32 32768)\0A store i32 %amp2, ptr %ampp\0A\00" -@.str3244 = private unnamed_addr constant [87 x i8] c" %freq2 = call i32 @lp_nfx_mul(i32 %freq, i32 131072)\0A store i32 %freq2, ptr %freqp\0A\00" -@.str3245 = private unnamed_addr constant [65 x i8] c" %o1 = add i32 %o, 1\0A store i32 %o1, ptr %op\0A br label %cond\0A\00" -@.str3246 = private unnamed_addr constant [69 x i8] c"done:\0A %fsum = load i32, ptr %sump\0A %fnorm = load i32, ptr %normp\0A\00" -@.str3247 = private unnamed_addr constant [65 x i8] c" %nz = icmp eq i32 %fnorm, 0\0A br i1 %nz, label %z, label %div\0A\00" -@.str3248 = private unnamed_addr constant [16 x i8] c"z:\0A ret i32 0\0A\00" -@.str3249 = private unnamed_addr constant [112 x i8] c"div:\0A %d = call i32 @lp_nfx_div(i32 %fsum, i32 %fnorm)\0A %r = call i32 @lp_noise_clamp(i32 %d)\0A ret i32 %r\0A}\0A\00" -@.str3250 = private unnamed_addr constant [86 x i8] c"define void @lp_noise_cell_scan(i32 %x, i32 %y, i32 %seed, ptr %d2out, ptr %idout) {\0A\00" -@.str3251 = private unnamed_addr constant [56 x i8] c"entry:\0A %xi = ashr i32 %x, 16\0A %yi = ashr i32 %y, 16\0A\00" -@.str3252 = private unnamed_addr constant [83 x i8] c" %bestp = alloca i32\0A %idp = alloca i32\0A %dyp = alloca i32\0A %dxp = alloca i32\0A\00" -@.str3253 = private unnamed_addr constant [100 x i8] c" store i32 2147483647, ptr %bestp\0A store i32 0, ptr %idp\0A store i32 -1, ptr %dyp\0A br label %yc\0A\00" -@.str3254 = private unnamed_addr constant [99 x i8] c"yc:\0A %oy = load i32, ptr %dyp\0A %yok = icmp sle i32 %oy, 1\0A br i1 %yok, label %yb, label %ydone\0A\00" -@.str3255 = private unnamed_addr constant [45 x i8] c"yb:\0A store i32 -1, ptr %dxp\0A br label %xc\0A\00" -@.str3256 = private unnamed_addr constant [99 x i8] c"xc:\0A %ox = load i32, ptr %dxp\0A %xok = icmp sle i32 %ox, 1\0A br i1 %xok, label %xb, label %xdone\0A\00" -@.str3257 = private unnamed_addr constant [55 x i8] c"xb:\0A %cx = add i32 %xi, %ox\0A %cy = add i32 %yi, %oy\0A\00" -@.str3258 = private unnamed_addr constant [61 x i8] c" %h = call i32 @lp_noise_hash(i32 %seed, i32 %cx, i32 %cy)\0A\00" -@.str3259 = private unnamed_addr constant [80 x i8] c" %fxr = and i32 %h, 65535\0A %hs = lshr i32 %h, 16\0A %fyr = and i32 %hs, 65535\0A\00" -@.str3260 = private unnamed_addr constant [107 x i8] c" %cxf = shl i32 %cx, 16\0A %cyf = shl i32 %cy, 16\0A %pxr = add i32 %cxf, %fxr\0A %pyr = add i32 %cyf, %fyr\0A\00" -@.str3261 = private unnamed_addr constant [53 x i8] c" %ddx = sub i32 %pxr, %x\0A %ddy = sub i32 %pyr, %y\0A\00" -@.str3262 = private unnamed_addr constant [128 x i8] c" %dxx = call i32 @lp_nfx_mul(i32 %ddx, i32 %ddx)\0A %dyy = call i32 @lp_nfx_mul(i32 %ddy, i32 %ddy)\0A %d2 = add i32 %dxx, %dyy\0A\00" -@.str3263 = private unnamed_addr constant [105 x i8] c" %best = load i32, ptr %bestp\0A %less = icmp slt i32 %d2, %best\0A br i1 %less, label %upd, label %skip\0A\00" -@.str3264 = private unnamed_addr constant [76 x i8] c"upd:\0A store i32 %d2, ptr %bestp\0A store i32 %h, ptr %idp\0A br label %skip\0A\00" -@.str3265 = private unnamed_addr constant [73 x i8] c"skip:\0A %ox1 = add i32 %ox, 1\0A store i32 %ox1, ptr %dxp\0A br label %xc\0A\00" -@.str3266 = private unnamed_addr constant [74 x i8] c"xdone:\0A %oy1 = add i32 %oy, 1\0A store i32 %oy1, ptr %dyp\0A br label %yc\0A\00" -@.str3267 = private unnamed_addr constant [133 x i8] c"ydone:\0A %fb = load i32, ptr %bestp\0A store i32 %fb, ptr %d2out\0A %fi = load i32, ptr %idp\0A store i32 %fi, ptr %idout\0A ret void\0A}\0A\00" -@.str3268 = private unnamed_addr constant [61 x i8] c"define i32 @lp_noise_cellular2(i32 %x, i32 %y, i32 %seed) {\0A\00" -@.str3269 = private unnamed_addr constant [116 x i8] c" %d2 = alloca i32\0A %id = alloca i32\0A call void @lp_noise_cell_scan(i32 %x, i32 %y, i32 %seed, ptr %d2, ptr %id)\0A\00" -@.str3270 = private unnamed_addr constant [77 x i8] c" %v = load i32, ptr %d2\0A %r = call i32 @lp_fx_sqrt(i32 %v)\0A ret i32 %r\0A}\0A\00" -@.str3271 = private unnamed_addr constant [64 x i8] c"define i32 @lp_noise_cellular2_id(i32 %x, i32 %y, i32 %seed) {\0A\00" +@.str3042 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str3043 = private unnamed_addr constant [29 x i8] c"call ptr @lp_uuid_parse(ptr \00" +@.str3044 = private unnamed_addr constant [2 x i8] c")\00" +@.str3045 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3046 = private unnamed_addr constant [40 x i8] c"define ptr @lp_uuid_format(ptr %b16) {\0A\00" +@.str3047 = private unnamed_addr constant [93 x i8] c"entry:\0A %hex = call ptr @lp_hex_encode(ptr %b16, i64 16)\0A %out = call ptr @malloc(i64 37)\0A\00" +@.str3048 = private unnamed_addr constant [47 x i8] c" call ptr @memcpy(ptr %out, ptr %hex, i64 8)\0A\00" +@.str3049 = private unnamed_addr constant [66 x i8] c" %o8 = getelementptr i8, ptr %out, i64 8\0A store i8 45, ptr %o8\0A\00" +@.str3050 = private unnamed_addr constant [129 x i8] c" %h8 = getelementptr i8, ptr %hex, i64 8\0A %o9 = getelementptr i8, ptr %out, i64 9\0A call ptr @memcpy(ptr %o9, ptr %h8, i64 4)\0A\00" +@.str3051 = private unnamed_addr constant [69 x i8] c" %o13 = getelementptr i8, ptr %out, i64 13\0A store i8 45, ptr %o13\0A\00" +@.str3052 = private unnamed_addr constant [135 x i8] c" %h12 = getelementptr i8, ptr %hex, i64 12\0A %o14 = getelementptr i8, ptr %out, i64 14\0A call ptr @memcpy(ptr %o14, ptr %h12, i64 4)\0A\00" +@.str3053 = private unnamed_addr constant [69 x i8] c" %o18 = getelementptr i8, ptr %out, i64 18\0A store i8 45, ptr %o18\0A\00" +@.str3054 = private unnamed_addr constant [135 x i8] c" %h16 = getelementptr i8, ptr %hex, i64 16\0A %o19 = getelementptr i8, ptr %out, i64 19\0A call ptr @memcpy(ptr %o19, ptr %h16, i64 4)\0A\00" +@.str3055 = private unnamed_addr constant [69 x i8] c" %o23 = getelementptr i8, ptr %out, i64 23\0A store i8 45, ptr %o23\0A\00" +@.str3056 = private unnamed_addr constant [136 x i8] c" %h20 = getelementptr i8, ptr %hex, i64 20\0A %o24 = getelementptr i8, ptr %out, i64 24\0A call ptr @memcpy(ptr %o24, ptr %h20, i64 12)\0A\00" +@.str3057 = private unnamed_addr constant [68 x i8] c" %o36 = getelementptr i8, ptr %out, i64 36\0A store i8 0, ptr %o36\0A\00" +@.str3058 = private unnamed_addr constant [46 x i8] c" call void @free(ptr %hex)\0A ret ptr %out\0A}\0A\00" +@.str3059 = private unnamed_addr constant [28 x i8] c"define ptr @lp_uuid_v4() {\0A\00" +@.str3060 = private unnamed_addr constant [132 x i8] c"entry:\0A %b = alloca [16 x i8]\0A %bp = getelementptr [16 x i8], ptr %b, i64 0, i64 0\0A call void @lp_secure_bytes(ptr %bp, i64 16)\0A\00" +@.str3061 = private unnamed_addr constant [140 x i8] c" %p6 = getelementptr i8, ptr %bp, i64 6\0A %v6 = load i8, ptr %p6\0A %v6a = and i8 %v6, 15\0A %v6b = or i8 %v6a, 64\0A store i8 %v6b, ptr %p6\0A\00" +@.str3062 = private unnamed_addr constant [142 x i8] c" %p8 = getelementptr i8, ptr %bp, i64 8\0A %v8 = load i8, ptr %p8\0A %v8a = and i8 %v8, 63\0A %v8b = or i8 %v8a, -128\0A store i8 %v8b, ptr %p8\0A\00" +@.str3063 = private unnamed_addr constant [57 x i8] c" %s = call ptr @lp_uuid_format(ptr %bp)\0A ret ptr %s\0A}\0A\00" +@.str3064 = private unnamed_addr constant [28 x i8] c"define ptr @lp_uuid_v7() {\0A\00" +@.str3065 = private unnamed_addr constant [132 x i8] c"entry:\0A %b = alloca [16 x i8]\0A %bp = getelementptr [16 x i8], ptr %b, i64 0, i64 0\0A call void @lp_secure_bytes(ptr %bp, i64 16)\0A\00" +@.str3066 = private unnamed_addr constant [58 x i8] c" %t = call i64 @time(ptr null)\0A %ms = mul i64 %t, 1000\0A\00" +@.str3067 = private unnamed_addr constant [121 x i8] c" %s40 = lshr i64 %ms, 40\0A %t0 = trunc i64 %s40 to i8\0A %q0 = getelementptr i8, ptr %bp, i64 0\0A store i8 %t0, ptr %q0\0A\00" +@.str3068 = private unnamed_addr constant [121 x i8] c" %s32 = lshr i64 %ms, 32\0A %t1 = trunc i64 %s32 to i8\0A %q1 = getelementptr i8, ptr %bp, i64 1\0A store i8 %t1, ptr %q1\0A\00" +@.str3069 = private unnamed_addr constant [121 x i8] c" %s24 = lshr i64 %ms, 24\0A %t2 = trunc i64 %s24 to i8\0A %q2 = getelementptr i8, ptr %bp, i64 2\0A store i8 %t2, ptr %q2\0A\00" +@.str3070 = private unnamed_addr constant [121 x i8] c" %s16 = lshr i64 %ms, 16\0A %t3 = trunc i64 %s16 to i8\0A %q3 = getelementptr i8, ptr %bp, i64 3\0A store i8 %t3, ptr %q3\0A\00" +@.str3071 = private unnamed_addr constant [118 x i8] c" %s8 = lshr i64 %ms, 8\0A %t4 = trunc i64 %s8 to i8\0A %q4 = getelementptr i8, ptr %bp, i64 4\0A store i8 %t4, ptr %q4\0A\00" +@.str3072 = private unnamed_addr constant [94 x i8] c" %t5 = trunc i64 %ms to i8\0A %q5 = getelementptr i8, ptr %bp, i64 5\0A store i8 %t5, ptr %q5\0A\00" +@.str3073 = private unnamed_addr constant [141 x i8] c" %p6 = getelementptr i8, ptr %bp, i64 6\0A %v6 = load i8, ptr %p6\0A %v6a = and i8 %v6, 15\0A %v6b = or i8 %v6a, 112\0A store i8 %v6b, ptr %p6\0A\00" +@.str3074 = private unnamed_addr constant [142 x i8] c" %p8 = getelementptr i8, ptr %bp, i64 8\0A %v8 = load i8, ptr %p8\0A %v8a = and i8 %v8, 63\0A %v8b = or i8 %v8a, -128\0A store i8 %v8b, ptr %p8\0A\00" +@.str3075 = private unnamed_addr constant [57 x i8] c" %s = call ptr @lp_uuid_format(ptr %bp)\0A ret ptr %s\0A}\0A\00" +@.str3076 = private unnamed_addr constant [29 x i8] c"define ptr @lp_uuid_nil() {\0A\00" +@.str3077 = private unnamed_addr constant [87 x i8] c"entry:\0A %out = call ptr @malloc(i64 37)\0A call ptr @memset(ptr %out, i32 48, i64 36)\0A\00" +@.str3078 = private unnamed_addr constant [66 x i8] c" %o8 = getelementptr i8, ptr %out, i64 8\0A store i8 45, ptr %o8\0A\00" +@.str3079 = private unnamed_addr constant [69 x i8] c" %o13 = getelementptr i8, ptr %out, i64 13\0A store i8 45, ptr %o13\0A\00" +@.str3080 = private unnamed_addr constant [69 x i8] c" %o18 = getelementptr i8, ptr %out, i64 18\0A store i8 45, ptr %o18\0A\00" +@.str3081 = private unnamed_addr constant [69 x i8] c" %o23 = getelementptr i8, ptr %out, i64 23\0A store i8 45, ptr %o23\0A\00" +@.str3082 = private unnamed_addr constant [85 x i8] c" %o36 = getelementptr i8, ptr %out, i64 36\0A store i8 0, ptr %o36\0A ret ptr %out\0A}\0A\00" +@.str3083 = private unnamed_addr constant [37 x i8] c"define i32 @lp_uuid_valid(ptr %s) {\0A\00" +@.str3084 = private unnamed_addr constant [102 x i8] c"entry:\0A %n = call i64 @strlen(ptr %s)\0A %ne = icmp eq i64 %n, 36\0A br i1 %ne, label %go, label %bad\0A\00" +@.str3085 = private unnamed_addr constant [64 x i8] c"go:\0A %ip = alloca i64\0A store i64 0, ptr %ip\0A br label %cond\0A\00" +@.str3086 = private unnamed_addr constant [98 x i8] c"cond:\0A %i = load i64, ptr %ip\0A %lt = icmp ult i64 %i, 36\0A br i1 %lt, label %body, label %good\0A\00" +@.str3087 = private unnamed_addr constant [70 x i8] c"body:\0A %p = getelementptr i8, ptr %s, i64 %i\0A %c = load i8, ptr %p\0A\00" +@.str3088 = private unnamed_addr constant [111 x i8] c" %h8 = icmp eq i64 %i, 8\0A %h13 = icmp eq i64 %i, 13\0A %h18 = icmp eq i64 %i, 18\0A %h23 = icmp eq i64 %i, 23\0A\00" +@.str3089 = private unnamed_addr constant [118 x i8] c" %hx = or i1 %h8, %h13\0A %hy = or i1 %hx, %h18\0A %hyph = or i1 %hy, %h23\0A br i1 %hyph, label %ckhyph, label %ckhex\0A\00" +@.str3090 = private unnamed_addr constant [74 x i8] c"ckhyph:\0A %ish = icmp eq i8 %c, 45\0A br i1 %ish, label %next, label %bad\0A\00" +@.str3091 = private unnamed_addr constant [8 x i8] c"ckhex:\0A\00" +@.str3092 = private unnamed_addr constant [86 x i8] c" %ge0 = icmp uge i8 %c, 48\0A %le9 = icmp ule i8 %c, 57\0A %isdig = and i1 %ge0, %le9\0A\00" +@.str3093 = private unnamed_addr constant [86 x i8] c" %gea = icmp uge i8 %c, 97\0A %lef = icmp ule i8 %c, 102\0A %islo = and i1 %gea, %lef\0A\00" +@.str3094 = private unnamed_addr constant [85 x i8] c" %geA = icmp uge i8 %c, 65\0A %leF = icmp ule i8 %c, 70\0A %ishi = and i1 %geA, %leF\0A\00" +@.str3095 = private unnamed_addr constant [99 x i8] c" %hx1 = or i1 %isdig, %islo\0A %ishex = or i1 %hx1, %ishi\0A br i1 %ishex, label %next, label %bad\0A\00" +@.str3096 = private unnamed_addr constant [71 x i8] c"next:\0A %i1 = add i64 %i, 1\0A store i64 %i1, ptr %ip\0A br label %cond\0A\00" +@.str3097 = private unnamed_addr constant [19 x i8] c"good:\0A ret i32 1\0A\00" +@.str3098 = private unnamed_addr constant [20 x i8] c"bad:\0A ret i32 0\0A}\0A\00" +@.str3099 = private unnamed_addr constant [42 x i8] c"define i32 @lp_uuid_eq(ptr %a, ptr %b) {\0A\00" +@.str3100 = private unnamed_addr constant [137 x i8] c"entry:\0A %la = call i64 @strlen(ptr %a)\0A %lb = call i64 @strlen(ptr %b)\0A %eq = icmp eq i64 %la, %lb\0A br i1 %eq, label %go, label %ne\0A\00" +@.str3101 = private unnamed_addr constant [64 x i8] c"go:\0A %ip = alloca i64\0A store i64 0, ptr %ip\0A br label %cond\0A\00" +@.str3102 = private unnamed_addr constant [100 x i8] c"cond:\0A %i = load i64, ptr %ip\0A %lt = icmp ult i64 %i, %la\0A br i1 %lt, label %body, label %eqret\0A\00" +@.str3103 = private unnamed_addr constant [139 x i8] c"body:\0A %pa = getelementptr i8, ptr %a, i64 %i\0A %ca = load i8, ptr %pa\0A %pb = getelementptr i8, ptr %b, i64 %i\0A %cb = load i8, ptr %pb\0A\00" +@.str3104 = private unnamed_addr constant [155 x i8] c" %caA = icmp uge i8 %ca, 65\0A %caZ = icmp ule i8 %ca, 90\0A %caup = and i1 %caA, %caZ\0A %ca32 = add i8 %ca, 32\0A %cal = select i1 %caup, i8 %ca32, i8 %ca\0A\00" +@.str3105 = private unnamed_addr constant [155 x i8] c" %cbA = icmp uge i8 %cb, 65\0A %cbZ = icmp ule i8 %cb, 90\0A %cbup = and i1 %cbA, %cbZ\0A %cb32 = add i8 %cb, 32\0A %cbl = select i1 %cbup, i8 %cb32, i8 %cb\0A\00" +@.str3106 = private unnamed_addr constant [71 x i8] c" %same = icmp eq i8 %cal, %cbl\0A br i1 %same, label %next, label %ne\0A\00" +@.str3107 = private unnamed_addr constant [71 x i8] c"next:\0A %i1 = add i64 %i, 1\0A store i64 %i1, ptr %ip\0A br label %cond\0A\00" +@.str3108 = private unnamed_addr constant [20 x i8] c"eqret:\0A ret i32 1\0A\00" +@.str3109 = private unnamed_addr constant [19 x i8] c"ne:\0A ret i32 0\0A}\0A\00" +@.str3110 = private unnamed_addr constant [37 x i8] c"define ptr @lp_uuid_parse(ptr %s) {\0A\00" +@.str3111 = private unnamed_addr constant [116 x i8] c"entry:\0A %ok = call i32 @lp_uuid_valid(ptr %s)\0A %isok = icmp ne i32 %ok, 0\0A br i1 %isok, label %dup, label %nilb\0A\00" +@.str3112 = private unnamed_addr constant [99 x i8] c"dup:\0A %out = call ptr @malloc(i64 37)\0A %ip = alloca i64\0A store i64 0, ptr %ip\0A br label %cond\0A\00" +@.str3113 = private unnamed_addr constant [97 x i8] c"cond:\0A %i = load i64, ptr %ip\0A %lt = icmp ult i64 %i, 36\0A br i1 %lt, label %body, label %fin\0A\00" +@.str3114 = private unnamed_addr constant [70 x i8] c"body:\0A %p = getelementptr i8, ptr %s, i64 %i\0A %c = load i8, ptr %p\0A\00" +@.str3115 = private unnamed_addr constant [142 x i8] c" %cA = icmp uge i8 %c, 65\0A %cZ = icmp ule i8 %c, 90\0A %cup = and i1 %cA, %cZ\0A %c32 = add i8 %c, 32\0A %cl = select i1 %cup, i8 %c32, i8 %c\0A\00" +@.str3116 = private unnamed_addr constant [68 x i8] c" %op = getelementptr i8, ptr %out, i64 %i\0A store i8 %cl, ptr %op\0A\00" +@.str3117 = private unnamed_addr constant [65 x i8] c" %i1 = add i64 %i, 1\0A store i64 %i1, ptr %ip\0A br label %cond\0A\00" +@.str3118 = private unnamed_addr constant [88 x i8] c"fin:\0A %o36 = getelementptr i8, ptr %out, i64 36\0A store i8 0, ptr %o36\0A ret ptr %out\0A\00" +@.str3119 = private unnamed_addr constant [55 x i8] c"nilb:\0A %nn = call ptr @lp_uuid_nil()\0A ret ptr %nn\0A}\0A\00" +@.str3120 = private unnamed_addr constant [7 x i8] c"value2\00" +@.str3121 = private unnamed_addr constant [8 x i8] c"perlin2\00" +@.str3122 = private unnamed_addr constant [9 x i8] c"simplex2\00" +@.str3123 = private unnamed_addr constant [5 x i8] c"fbm2\00" +@.str3124 = private unnamed_addr constant [10 x i8] c"cellular2\00" +@.str3125 = private unnamed_addr constant [13 x i8] c"cellular2_id\00" +@.str3126 = private unnamed_addr constant [5 x i8] c"unit\00" +@.str3127 = private unnamed_addr constant [5 x i8] c"unit\00" +@.str3128 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str3129 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str3130 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str3131 = private unnamed_addr constant [8 x i8] c", 32768\00" +@.str3132 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str3133 = private unnamed_addr constant [7 x i8] c"value2\00" +@.str3134 = private unnamed_addr constant [31 x i8] c"call i32 @lp_noise_value2(i32 \00" +@.str3135 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3136 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3137 = private unnamed_addr constant [2 x i8] c")\00" +@.str3138 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str3139 = private unnamed_addr constant [8 x i8] c"perlin2\00" +@.str3140 = private unnamed_addr constant [32 x i8] c"call i32 @lp_noise_perlin2(i32 \00" +@.str3141 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3142 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3143 = private unnamed_addr constant [2 x i8] c")\00" +@.str3144 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str3145 = private unnamed_addr constant [9 x i8] c"simplex2\00" +@.str3146 = private unnamed_addr constant [33 x i8] c"call i32 @lp_noise_simplex2(i32 \00" +@.str3147 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3148 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3149 = private unnamed_addr constant [2 x i8] c")\00" +@.str3150 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str3151 = private unnamed_addr constant [5 x i8] c"fbm2\00" +@.str3152 = private unnamed_addr constant [29 x i8] c"call i32 @lp_noise_fbm2(i32 \00" +@.str3153 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3154 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3155 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3156 = private unnamed_addr constant [2 x i8] c")\00" +@.str3157 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str3158 = private unnamed_addr constant [10 x i8] c"cellular2\00" +@.str3159 = private unnamed_addr constant [34 x i8] c"call i32 @lp_noise_cellular2(i32 \00" +@.str3160 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3161 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3162 = private unnamed_addr constant [2 x i8] c")\00" +@.str3163 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str3164 = private unnamed_addr constant [37 x i8] c"call i32 @lp_noise_cellular2_id(i32 \00" +@.str3165 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3166 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3167 = private unnamed_addr constant [2 x i8] c")\00" +@.str3168 = private unnamed_addr constant [4 x i8] c"int\00" +@.str3169 = private unnamed_addr constant [42 x i8] c"define i32 @lp_nfx_mul(i32 %a, i32 %b) {\0A\00" +@.str3170 = private unnamed_addr constant [148 x i8] c" %a64 = sext i32 %a to i64\0A %b64 = sext i32 %b to i64\0A %m = mul i64 %a64, %b64\0A %s = ashr i64 %m, 16\0A %r = trunc i64 %s to i32\0A ret i32 %r\0A}\0A\00" +@.str3171 = private unnamed_addr constant [42 x i8] c"define i32 @lp_nfx_div(i32 %a, i32 %b) {\0A\00" +@.str3172 = private unnamed_addr constant [61 x i8] c" %z = icmp eq i32 %b, 0\0A br i1 %z, label %zero, label %go\0A\00" +@.str3173 = private unnamed_addr constant [19 x i8] c"zero:\0A ret i32 0\0A\00" +@.str3174 = private unnamed_addr constant [156 x i8] c"go:\0A %a64 = sext i32 %a to i64\0A %ash = shl i64 %a64, 16\0A %b64 = sext i32 %b to i64\0A %d = sdiv i64 %ash, %b64\0A %r = trunc i64 %d to i32\0A ret i32 %r\0A}\0A\00" +@.str3175 = private unnamed_addr constant [51 x i8] c"define i32 @lp_nfx_lerp(i32 %a, i32 %b, i32 %t) {\0A\00" +@.str3176 = private unnamed_addr constant [106 x i8] c" %d = sub i32 %b, %a\0A %dt = call i32 @lp_nfx_mul(i32 %d, i32 %t)\0A %r = add i32 %a, %dt\0A ret i32 %r\0A}\0A\00" +@.str3177 = private unnamed_addr constant [38 x i8] c"define i32 @lp_noise_clamp(i32 %v) {\0A\00" +@.str3178 = private unnamed_addr constant [163 x i8] c" %hi = icmp sgt i32 %v, 65536\0A %v1 = select i1 %hi, i32 65536, i32 %v\0A %lo = icmp slt i32 %v1, -65536\0A %r = select i1 %lo, i32 -65536, i32 %v1\0A ret i32 %r\0A}\0A\00" +@.str3179 = private unnamed_addr constant [58 x i8] c"define i32 @lp_noise_hash(i32 %seed, i32 %xi, i32 %yi) {\0A\00" +@.str3180 = private unnamed_addr constant [111 x i8] c" %a = mul i32 %xi, 374761393\0A %b = mul i32 %yi, -1028477387\0A %c = add i32 %seed, %a\0A %d0 = add i32 %c, %b\0A\00" +@.str3181 = private unnamed_addr constant [79 x i8] c" %e = lshr i32 %d0, 16\0A %f = xor i32 %d0, %e\0A %g = mul i32 %f, -2048144789\0A\00" +@.str3182 = private unnamed_addr constant [77 x i8] c" %h = lshr i32 %g, 13\0A %i = xor i32 %g, %h\0A %j = mul i32 %i, -1028477387\0A\00" +@.str3183 = private unnamed_addr constant [61 x i8] c" %k = lshr i32 %j, 16\0A %l = xor i32 %j, %k\0A ret i32 %l\0A}\0A\00" +@.str3184 = private unnamed_addr constant [37 x i8] c"define i32 @lp_noise_fade(i32 %t) {\0A\00" +@.str3185 = private unnamed_addr constant [92 x i8] c" %t2 = call i32 @lp_nfx_mul(i32 %t, i32 %t)\0A %t3 = call i32 @lp_nfx_mul(i32 %t2, i32 %t)\0A\00" +@.str3186 = private unnamed_addr constant [93 x i8] c" %t4 = call i32 @lp_nfx_mul(i32 %t3, i32 %t)\0A %t5 = call i32 @lp_nfx_mul(i32 %t4, i32 %t)\0A\00" +@.str3187 = private unnamed_addr constant [74 x i8] c" %c6 = mul i32 %t5, 6\0A %c15 = mul i32 %t4, 15\0A %c10 = mul i32 %t3, 10\0A\00" +@.str3188 = private unnamed_addr constant [67 x i8] c" %s1 = sub i32 %c6, %c15\0A %r = add i32 %s1, %c10\0A ret i32 %r\0A}\0A\00" +@.str3189 = private unnamed_addr constant [58 x i8] c"define i32 @lp_noise_value2(i32 %x, i32 %y, i32 %seed) {\0A\00" +@.str3190 = private unnamed_addr constant [101 x i8] c" %xi = ashr i32 %x, 16\0A %yi = ashr i32 %y, 16\0A %xf = and i32 %x, 65535\0A %yf = and i32 %y, 65535\0A\00" +@.str3191 = private unnamed_addr constant [81 x i8] c" %u = call i32 @lp_noise_fade(i32 %xf)\0A %v = call i32 @lp_noise_fade(i32 %yf)\0A\00" +@.str3192 = private unnamed_addr constant [49 x i8] c" %xi1 = add i32 %xi, 1\0A %yi1 = add i32 %yi, 1\0A\00" +@.str3193 = private unnamed_addr constant [122 x i8] c" %h00 = call i32 @lp_noise_hash(i32 %seed, i32 %xi, i32 %yi)\0A %m00 = and i32 %h00, 131071\0A %n00 = sub i32 %m00, 65536\0A\00" +@.str3194 = private unnamed_addr constant [123 x i8] c" %h10 = call i32 @lp_noise_hash(i32 %seed, i32 %xi1, i32 %yi)\0A %m10 = and i32 %h10, 131071\0A %n10 = sub i32 %m10, 65536\0A\00" +@.str3195 = private unnamed_addr constant [123 x i8] c" %h01 = call i32 @lp_noise_hash(i32 %seed, i32 %xi, i32 %yi1)\0A %m01 = and i32 %h01, 131071\0A %n01 = sub i32 %m01, 65536\0A\00" +@.str3196 = private unnamed_addr constant [124 x i8] c" %h11 = call i32 @lp_noise_hash(i32 %seed, i32 %xi1, i32 %yi1)\0A %m11 = and i32 %h11, 131071\0A %n11 = sub i32 %m11, 65536\0A\00" +@.str3197 = private unnamed_addr constant [115 x i8] c" %a = call i32 @lp_nfx_lerp(i32 %n00, i32 %n10, i32 %u)\0A %b = call i32 @lp_nfx_lerp(i32 %n01, i32 %n11, i32 %u)\0A\00" +@.str3198 = private unnamed_addr constant [109 x i8] c" %n = call i32 @lp_nfx_lerp(i32 %a, i32 %b, i32 %v)\0A %r = call i32 @lp_noise_clamp(i32 %n)\0A ret i32 %r\0A}\0A\00" +@.str3199 = private unnamed_addr constant [224 x i8] c"@noise_grad2 = private unnamed_addr constant [16 x i32] [i32 65536, i32 0, i32 -65536, i32 0, i32 0, i32 65536, i32 0, i32 -65536, i32 46341, i32 46341, i32 -46341, i32 46341, i32 46341, i32 -46341, i32 -46341, i32 -46341]\0A\00" +@.str3200 = private unnamed_addr constant [59 x i8] c"define i32 @lp_noise_grad2(i32 %hash, i32 %dx, i32 %dy) {\0A\00" +@.str3201 = private unnamed_addr constant [80 x i8] c" %h = and i32 %hash, 7\0A %idx = shl i32 %h, 1\0A %idx64 = sext i32 %idx to i64\0A\00" +@.str3202 = private unnamed_addr constant [99 x i8] c" %gxp = getelementptr [16 x i32], ptr @noise_grad2, i64 0, i64 %idx64\0A %gx = load i32, ptr %gxp\0A\00" +@.str3203 = private unnamed_addr constant [156 x i8] c" %idy = add i32 %idx, 1\0A %idy64 = sext i32 %idy to i64\0A %gyp = getelementptr [16 x i32], ptr @noise_grad2, i64 0, i64 %idy64\0A %gy = load i32, ptr %gyp\0A\00" +@.str3204 = private unnamed_addr constant [134 x i8] c" %px = call i32 @lp_nfx_mul(i32 %gx, i32 %dx)\0A %py = call i32 @lp_nfx_mul(i32 %gy, i32 %dy)\0A %r = add i32 %px, %py\0A ret i32 %r\0A}\0A\00" +@.str3205 = private unnamed_addr constant [59 x i8] c"define i32 @lp_noise_perlin2(i32 %x, i32 %y, i32 %seed) {\0A\00" +@.str3206 = private unnamed_addr constant [101 x i8] c" %xi = ashr i32 %x, 16\0A %yi = ashr i32 %y, 16\0A %xf = and i32 %x, 65535\0A %yf = and i32 %y, 65535\0A\00" +@.str3207 = private unnamed_addr constant [57 x i8] c" %xf1 = sub i32 %xf, 65536\0A %yf1 = sub i32 %yf, 65536\0A\00" +@.str3208 = private unnamed_addr constant [81 x i8] c" %u = call i32 @lp_noise_fade(i32 %xf)\0A %v = call i32 @lp_noise_fade(i32 %yf)\0A\00" +@.str3209 = private unnamed_addr constant [49 x i8] c" %xi1 = add i32 %xi, 1\0A %yi1 = add i32 %yi, 1\0A\00" +@.str3210 = private unnamed_addr constant [126 x i8] c" %h00 = call i32 @lp_noise_hash(i32 %seed, i32 %xi, i32 %yi)\0A %h10 = call i32 @lp_noise_hash(i32 %seed, i32 %xi1, i32 %yi)\0A\00" +@.str3211 = private unnamed_addr constant [128 x i8] c" %h01 = call i32 @lp_noise_hash(i32 %seed, i32 %xi, i32 %yi1)\0A %h11 = call i32 @lp_noise_hash(i32 %seed, i32 %xi1, i32 %yi1)\0A\00" +@.str3212 = private unnamed_addr constant [126 x i8] c" %g00 = call i32 @lp_noise_grad2(i32 %h00, i32 %xf, i32 %yf)\0A %g10 = call i32 @lp_noise_grad2(i32 %h10, i32 %xf1, i32 %yf)\0A\00" +@.str3213 = private unnamed_addr constant [128 x i8] c" %g01 = call i32 @lp_noise_grad2(i32 %h01, i32 %xf, i32 %yf1)\0A %g11 = call i32 @lp_noise_grad2(i32 %h11, i32 %xf1, i32 %yf1)\0A\00" +@.str3214 = private unnamed_addr constant [115 x i8] c" %a = call i32 @lp_nfx_lerp(i32 %g00, i32 %g10, i32 %u)\0A %b = call i32 @lp_nfx_lerp(i32 %g01, i32 %g11, i32 %u)\0A\00" +@.str3215 = private unnamed_addr constant [158 x i8] c" %n = call i32 @lp_nfx_lerp(i32 %a, i32 %b, i32 %v)\0A %sc = call i32 @lp_nfx_mul(i32 %n, i32 92682)\0A %r = call i32 @lp_noise_clamp(i32 %sc)\0A ret i32 %r\0A}\0A\00" +@.str3216 = private unnamed_addr constant [61 x i8] c"define i32 @lp_noise_scorner(i32 %hash, i32 %dx, i32 %dy) {\0A\00" +@.str3217 = private unnamed_addr constant [95 x i8] c" %xx = call i32 @lp_nfx_mul(i32 %dx, i32 %dx)\0A %yy = call i32 @lp_nfx_mul(i32 %dy, i32 %dy)\0A\00" +@.str3218 = private unnamed_addr constant [117 x i8] c" %s0 = sub i32 32768, %xx\0A %t = sub i32 %s0, %yy\0A %neg = icmp sle i32 %t, 0\0A br i1 %neg, label %zero, label %go\0A\00" +@.str3219 = private unnamed_addr constant [19 x i8] c"zero:\0A ret i32 0\0A\00" +@.str3220 = private unnamed_addr constant [97 x i8] c"go:\0A %t2 = call i32 @lp_nfx_mul(i32 %t, i32 %t)\0A %t4 = call i32 @lp_nfx_mul(i32 %t2, i32 %t2)\0A\00" +@.str3221 = private unnamed_addr constant [122 x i8] c" %g = call i32 @lp_noise_grad2(i32 %hash, i32 %dx, i32 %dy)\0A %r = call i32 @lp_nfx_mul(i32 %t4, i32 %g)\0A ret i32 %r\0A}\0A\00" +@.str3222 = private unnamed_addr constant [60 x i8] c"define i32 @lp_noise_simplex2(i32 %x, i32 %y, i32 %seed) {\0A\00" +@.str3223 = private unnamed_addr constant [79 x i8] c" %sum0 = add i32 %x, %y\0A %skew = call i32 @lp_nfx_mul(i32 %sum0, i32 23994)\0A\00" +@.str3224 = private unnamed_addr constant [101 x i8] c" %xs = add i32 %x, %skew\0A %ys = add i32 %y, %skew\0A %i = ashr i32 %xs, 16\0A %j = ashr i32 %ys, 16\0A\00" +@.str3225 = private unnamed_addr constant [51 x i8] c" %ij = add i32 %i, %j\0A %tt = mul i32 %ij, 13849\0A\00" +@.str3226 = private unnamed_addr constant [49 x i8] c" %if0 = shl i32 %i, 16\0A %jf0 = shl i32 %j, 16\0A\00" +@.str3227 = private unnamed_addr constant [101 x i8] c" %X0 = sub i32 %if0, %tt\0A %Y0 = sub i32 %jf0, %tt\0A %x0 = sub i32 %x, %X0\0A %y0 = sub i32 %y, %Y0\0A\00" +@.str3228 = private unnamed_addr constant [103 x i8] c" %gt = icmp sgt i32 %x0, %y0\0A %i1 = select i1 %gt, i32 1, i32 0\0A %j1 = select i1 %gt, i32 0, i32 1\0A\00" +@.str3229 = private unnamed_addr constant [51 x i8] c" %i1f = shl i32 %i1, 16\0A %j1f = shl i32 %j1, 16\0A\00" +@.str3230 = private unnamed_addr constant [111 x i8] c" %x1a = sub i32 %x0, %i1f\0A %x1 = add i32 %x1a, 13849\0A %y1a = sub i32 %y0, %j1f\0A %y1 = add i32 %y1a, 13849\0A\00" +@.str3231 = private unnamed_addr constant [113 x i8] c" %x2a = sub i32 %x0, 65536\0A %x2 = add i32 %x2a, 27698\0A %y2a = sub i32 %y0, 65536\0A %y2 = add i32 %y2a, 27698\0A\00" +@.str3232 = private unnamed_addr constant [95 x i8] c" %i1p = add i32 %i, %i1\0A %j1p = add i32 %j, %j1\0A %i2 = add i32 %i, 1\0A %j2 = add i32 %j, 1\0A\00" +@.str3233 = private unnamed_addr constant [187 x i8] c" %gi0 = call i32 @lp_noise_hash(i32 %seed, i32 %i, i32 %j)\0A %gi1 = call i32 @lp_noise_hash(i32 %seed, i32 %i1p, i32 %j1p)\0A %gi2 = call i32 @lp_noise_hash(i32 %seed, i32 %i2, i32 %j2)\0A\00" +@.str3234 = private unnamed_addr constant [190 x i8] c" %n0 = call i32 @lp_noise_scorner(i32 %gi0, i32 %x0, i32 %y0)\0A %n1 = call i32 @lp_noise_scorner(i32 %gi1, i32 %x1, i32 %y1)\0A %n2 = call i32 @lp_noise_scorner(i32 %gi2, i32 %x2, i32 %y2)\0A\00" +@.str3235 = private unnamed_addr constant [51 x i8] c" %sa = add i32 %n0, %n1\0A %sb = add i32 %sa, %n2\0A\00" +@.str3236 = private unnamed_addr constant [81 x i8] c" %sc = mul i32 %sb, 45\0A %r = call i32 @lp_noise_clamp(i32 %sc)\0A ret i32 %r\0A}\0A\00" +@.str3237 = private unnamed_addr constant [66 x i8] c"define i32 @lp_noise_fbm2(i32 %x, i32 %y, i32 %seed, i32 %oct) {\0A\00" +@.str3238 = private unnamed_addr constant [113 x i8] c"entry:\0A %sump = alloca i32\0A %normp = alloca i32\0A %ampp = alloca i32\0A %freqp = alloca i32\0A %op = alloca i32\0A\00" +@.str3239 = private unnamed_addr constant [151 x i8] c" store i32 0, ptr %sump\0A store i32 0, ptr %normp\0A store i32 65536, ptr %ampp\0A store i32 65536, ptr %freqp\0A store i32 0, ptr %op\0A br label %cond\0A\00" +@.str3240 = private unnamed_addr constant [100 x i8] c"cond:\0A %o = load i32, ptr %op\0A %lt = icmp slt i32 %o, %oct\0A br i1 %lt, label %body, label %done\0A\00" +@.str3241 = private unnamed_addr constant [67 x i8] c"body:\0A %freq = load i32, ptr %freqp\0A %amp = load i32, ptr %ampp\0A\00" +@.str3242 = private unnamed_addr constant [97 x i8] c" %fx = call i32 @lp_nfx_mul(i32 %x, i32 %freq)\0A %fy = call i32 @lp_nfx_mul(i32 %y, i32 %freq)\0A\00" +@.str3243 = private unnamed_addr constant [89 x i8] c" %so = add i32 %seed, %o\0A %n = call i32 @lp_noise_simplex2(i32 %fx, i32 %fy, i32 %so)\0A\00" +@.str3244 = private unnamed_addr constant [134 x i8] c" %na = call i32 @lp_nfx_mul(i32 %n, i32 %amp)\0A %sum = load i32, ptr %sump\0A %sum2 = add i32 %sum, %na\0A store i32 %sum2, ptr %sump\0A\00" +@.str3245 = private unnamed_addr constant [94 x i8] c" %norm = load i32, ptr %normp\0A %norm2 = add i32 %norm, %amp\0A store i32 %norm2, ptr %normp\0A\00" +@.str3246 = private unnamed_addr constant [82 x i8] c" %amp2 = call i32 @lp_nfx_mul(i32 %amp, i32 32768)\0A store i32 %amp2, ptr %ampp\0A\00" +@.str3247 = private unnamed_addr constant [87 x i8] c" %freq2 = call i32 @lp_nfx_mul(i32 %freq, i32 131072)\0A store i32 %freq2, ptr %freqp\0A\00" +@.str3248 = private unnamed_addr constant [65 x i8] c" %o1 = add i32 %o, 1\0A store i32 %o1, ptr %op\0A br label %cond\0A\00" +@.str3249 = private unnamed_addr constant [69 x i8] c"done:\0A %fsum = load i32, ptr %sump\0A %fnorm = load i32, ptr %normp\0A\00" +@.str3250 = private unnamed_addr constant [65 x i8] c" %nz = icmp eq i32 %fnorm, 0\0A br i1 %nz, label %z, label %div\0A\00" +@.str3251 = private unnamed_addr constant [16 x i8] c"z:\0A ret i32 0\0A\00" +@.str3252 = private unnamed_addr constant [112 x i8] c"div:\0A %d = call i32 @lp_nfx_div(i32 %fsum, i32 %fnorm)\0A %r = call i32 @lp_noise_clamp(i32 %d)\0A ret i32 %r\0A}\0A\00" +@.str3253 = private unnamed_addr constant [86 x i8] c"define void @lp_noise_cell_scan(i32 %x, i32 %y, i32 %seed, ptr %d2out, ptr %idout) {\0A\00" +@.str3254 = private unnamed_addr constant [56 x i8] c"entry:\0A %xi = ashr i32 %x, 16\0A %yi = ashr i32 %y, 16\0A\00" +@.str3255 = private unnamed_addr constant [83 x i8] c" %bestp = alloca i32\0A %idp = alloca i32\0A %dyp = alloca i32\0A %dxp = alloca i32\0A\00" +@.str3256 = private unnamed_addr constant [100 x i8] c" store i32 2147483647, ptr %bestp\0A store i32 0, ptr %idp\0A store i32 -1, ptr %dyp\0A br label %yc\0A\00" +@.str3257 = private unnamed_addr constant [99 x i8] c"yc:\0A %oy = load i32, ptr %dyp\0A %yok = icmp sle i32 %oy, 1\0A br i1 %yok, label %yb, label %ydone\0A\00" +@.str3258 = private unnamed_addr constant [45 x i8] c"yb:\0A store i32 -1, ptr %dxp\0A br label %xc\0A\00" +@.str3259 = private unnamed_addr constant [99 x i8] c"xc:\0A %ox = load i32, ptr %dxp\0A %xok = icmp sle i32 %ox, 1\0A br i1 %xok, label %xb, label %xdone\0A\00" +@.str3260 = private unnamed_addr constant [55 x i8] c"xb:\0A %cx = add i32 %xi, %ox\0A %cy = add i32 %yi, %oy\0A\00" +@.str3261 = private unnamed_addr constant [61 x i8] c" %h = call i32 @lp_noise_hash(i32 %seed, i32 %cx, i32 %cy)\0A\00" +@.str3262 = private unnamed_addr constant [80 x i8] c" %fxr = and i32 %h, 65535\0A %hs = lshr i32 %h, 16\0A %fyr = and i32 %hs, 65535\0A\00" +@.str3263 = private unnamed_addr constant [107 x i8] c" %cxf = shl i32 %cx, 16\0A %cyf = shl i32 %cy, 16\0A %pxr = add i32 %cxf, %fxr\0A %pyr = add i32 %cyf, %fyr\0A\00" +@.str3264 = private unnamed_addr constant [53 x i8] c" %ddx = sub i32 %pxr, %x\0A %ddy = sub i32 %pyr, %y\0A\00" +@.str3265 = private unnamed_addr constant [128 x i8] c" %dxx = call i32 @lp_nfx_mul(i32 %ddx, i32 %ddx)\0A %dyy = call i32 @lp_nfx_mul(i32 %ddy, i32 %ddy)\0A %d2 = add i32 %dxx, %dyy\0A\00" +@.str3266 = private unnamed_addr constant [105 x i8] c" %best = load i32, ptr %bestp\0A %less = icmp slt i32 %d2, %best\0A br i1 %less, label %upd, label %skip\0A\00" +@.str3267 = private unnamed_addr constant [76 x i8] c"upd:\0A store i32 %d2, ptr %bestp\0A store i32 %h, ptr %idp\0A br label %skip\0A\00" +@.str3268 = private unnamed_addr constant [73 x i8] c"skip:\0A %ox1 = add i32 %ox, 1\0A store i32 %ox1, ptr %dxp\0A br label %xc\0A\00" +@.str3269 = private unnamed_addr constant [74 x i8] c"xdone:\0A %oy1 = add i32 %oy, 1\0A store i32 %oy1, ptr %dyp\0A br label %yc\0A\00" +@.str3270 = private unnamed_addr constant [133 x i8] c"ydone:\0A %fb = load i32, ptr %bestp\0A store i32 %fb, ptr %d2out\0A %fi = load i32, ptr %idp\0A store i32 %fi, ptr %idout\0A ret void\0A}\0A\00" +@.str3271 = private unnamed_addr constant [61 x i8] c"define i32 @lp_noise_cellular2(i32 %x, i32 %y, i32 %seed) {\0A\00" @.str3272 = private unnamed_addr constant [116 x i8] c" %d2 = alloca i32\0A %id = alloca i32\0A call void @lp_noise_cell_scan(i32 %x, i32 %y, i32 %seed, ptr %d2, ptr %id)\0A\00" -@.str3273 = private unnamed_addr constant [41 x i8] c" %r = load i32, ptr %id\0A ret i32 %r\0A}\0A\00" -@.str3274 = private unnamed_addr constant [6 x i8] c"trace\00" -@.str3275 = private unnamed_addr constant [6 x i8] c"debug\00" -@.str3276 = private unnamed_addr constant [5 x i8] c"info\00" -@.str3277 = private unnamed_addr constant [5 x i8] c"warn\00" -@.str3278 = private unnamed_addr constant [6 x i8] c"error\00" -@.str3279 = private unnamed_addr constant [10 x i8] c"set_level\00" -@.str3280 = private unnamed_addr constant [6 x i8] c"level\00" -@.str3281 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str3282 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str3283 = private unnamed_addr constant [27 x i8] c"call ptr @lp_long_str(i64 \00" -@.str3284 = private unnamed_addr constant [2 x i8] c")\00" -@.str3285 = private unnamed_addr constant [26 x i8] c"call ptr @lp_int_str(i32 \00" -@.str3286 = private unnamed_addr constant [2 x i8] c")\00" -@.str3287 = private unnamed_addr constant [10 x i8] c"set_level\00" -@.str3288 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str3289 = private unnamed_addr constant [20 x i8] c", ptr @L_log_level\0A\00" -@.str3290 = private unnamed_addr constant [2 x i8] c"0\00" -@.str3291 = private unnamed_addr constant [5 x i8] c"void\00" -@.str3292 = private unnamed_addr constant [6 x i8] c"level\00" -@.str3293 = private unnamed_addr constant [27 x i8] c"load i32, ptr @L_log_level\00" -@.str3294 = private unnamed_addr constant [4 x i8] c"int\00" -@.str3295 = private unnamed_addr constant [2 x i8] c"2\00" -@.str3296 = private unnamed_addr constant [8 x i8] c"[INFO] \00" -@.str3297 = private unnamed_addr constant [6 x i8] c"trace\00" -@.str3298 = private unnamed_addr constant [2 x i8] c"0\00" -@.str3299 = private unnamed_addr constant [9 x i8] c"[TRACE] \00" -@.str3300 = private unnamed_addr constant [6 x i8] c"debug\00" -@.str3301 = private unnamed_addr constant [2 x i8] c"1\00" -@.str3302 = private unnamed_addr constant [9 x i8] c"[DEBUG] \00" -@.str3303 = private unnamed_addr constant [5 x i8] c"warn\00" -@.str3304 = private unnamed_addr constant [2 x i8] c"3\00" -@.str3305 = private unnamed_addr constant [8 x i8] c"[WARN] \00" -@.str3306 = private unnamed_addr constant [6 x i8] c"error\00" -@.str3307 = private unnamed_addr constant [2 x i8] c"4\00" -@.str3308 = private unnamed_addr constant [9 x i8] c"[ERROR] \00" -@.str3309 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3310 = private unnamed_addr constant [2 x i8] c"+\00" -@.str3311 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3312 = private unnamed_addr constant [2 x i8] c"+\00" -@.str3313 = private unnamed_addr constant [2 x i8] c" \00" +@.str3273 = private unnamed_addr constant [77 x i8] c" %v = load i32, ptr %d2\0A %r = call i32 @lp_fx_sqrt(i32 %v)\0A ret i32 %r\0A}\0A\00" +@.str3274 = private unnamed_addr constant [64 x i8] c"define i32 @lp_noise_cellular2_id(i32 %x, i32 %y, i32 %seed) {\0A\00" +@.str3275 = private unnamed_addr constant [116 x i8] c" %d2 = alloca i32\0A %id = alloca i32\0A call void @lp_noise_cell_scan(i32 %x, i32 %y, i32 %seed, ptr %d2, ptr %id)\0A\00" +@.str3276 = private unnamed_addr constant [41 x i8] c" %r = load i32, ptr %id\0A ret i32 %r\0A}\0A\00" +@.str3277 = private unnamed_addr constant [6 x i8] c"trace\00" +@.str3278 = private unnamed_addr constant [6 x i8] c"debug\00" +@.str3279 = private unnamed_addr constant [5 x i8] c"info\00" +@.str3280 = private unnamed_addr constant [5 x i8] c"warn\00" +@.str3281 = private unnamed_addr constant [6 x i8] c"error\00" +@.str3282 = private unnamed_addr constant [10 x i8] c"set_level\00" +@.str3283 = private unnamed_addr constant [6 x i8] c"level\00" +@.str3284 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str3285 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str3286 = private unnamed_addr constant [27 x i8] c"call ptr @lp_long_str(i64 \00" +@.str3287 = private unnamed_addr constant [2 x i8] c")\00" +@.str3288 = private unnamed_addr constant [26 x i8] c"call ptr @lp_int_str(i32 \00" +@.str3289 = private unnamed_addr constant [2 x i8] c")\00" +@.str3290 = private unnamed_addr constant [10 x i8] c"set_level\00" +@.str3291 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str3292 = private unnamed_addr constant [20 x i8] c", ptr @L_log_level\0A\00" +@.str3293 = private unnamed_addr constant [2 x i8] c"0\00" +@.str3294 = private unnamed_addr constant [5 x i8] c"void\00" +@.str3295 = private unnamed_addr constant [6 x i8] c"level\00" +@.str3296 = private unnamed_addr constant [27 x i8] c"load i32, ptr @L_log_level\00" +@.str3297 = private unnamed_addr constant [4 x i8] c"int\00" +@.str3298 = private unnamed_addr constant [2 x i8] c"2\00" +@.str3299 = private unnamed_addr constant [8 x i8] c"[INFO] \00" +@.str3300 = private unnamed_addr constant [6 x i8] c"trace\00" +@.str3301 = private unnamed_addr constant [2 x i8] c"0\00" +@.str3302 = private unnamed_addr constant [9 x i8] c"[TRACE] \00" +@.str3303 = private unnamed_addr constant [6 x i8] c"debug\00" +@.str3304 = private unnamed_addr constant [2 x i8] c"1\00" +@.str3305 = private unnamed_addr constant [9 x i8] c"[DEBUG] \00" +@.str3306 = private unnamed_addr constant [5 x i8] c"warn\00" +@.str3307 = private unnamed_addr constant [2 x i8] c"3\00" +@.str3308 = private unnamed_addr constant [8 x i8] c"[WARN] \00" +@.str3309 = private unnamed_addr constant [6 x i8] c"error\00" +@.str3310 = private unnamed_addr constant [2 x i8] c"4\00" +@.str3311 = private unnamed_addr constant [9 x i8] c"[ERROR] \00" +@.str3312 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3313 = private unnamed_addr constant [2 x i8] c"+\00" @.str3314 = private unnamed_addr constant [7 x i8] c"string\00" @.str3315 = private unnamed_addr constant [2 x i8] c"+\00" -@.str3316 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3317 = private unnamed_addr constant [2 x i8] c"+\00" -@.str3318 = private unnamed_addr constant [2 x i8] c"=\00" +@.str3316 = private unnamed_addr constant [2 x i8] c" \00" +@.str3317 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3318 = private unnamed_addr constant [2 x i8] c"+\00" @.str3319 = private unnamed_addr constant [7 x i8] c"string\00" @.str3320 = private unnamed_addr constant [2 x i8] c"+\00" -@.str3321 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3322 = private unnamed_addr constant [30 x i8] c" call void @lp_log_emit(i32 \00" -@.str3323 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str3324 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str3325 = private unnamed_addr constant [2 x i8] c"0\00" -@.str3326 = private unnamed_addr constant [5 x i8] c"void\00" -@.str3327 = private unnamed_addr constant [29 x i8] c"@L_log_level = global i32 0\0A\00" -@.str3328 = private unnamed_addr constant [61 x i8] c"@.log_nl = private unnamed_addr constant [2 x i8] c\22\5C0A\5C00\22\0A\00" -@.str3329 = private unnamed_addr constant [46 x i8] c"define void @lp_log_emit(i32 %lvl, ptr %s) {\0A\00" -@.str3330 = private unnamed_addr constant [114 x i8] c"entry:\0A %th = load i32, ptr @L_log_level\0A %skip = icmp slt i32 %lvl, %th\0A br i1 %skip, label %done, label %go\0A\00" -@.str3331 = private unnamed_addr constant [69 x i8] c"go:\0A %e = load ptr, ptr @__stderrp\0A %n = call i64 @strlen(ptr %s)\0A\00" -@.str3332 = private unnamed_addr constant [134 x i8] c" %w = call i64 @fwrite(ptr %s, i64 1, i64 %n, ptr %e)\0A %w2 = call i64 @fwrite(ptr @.log_nl, i64 1, i64 1, ptr %e)\0A br label %done\0A\00" -@.str3333 = private unnamed_addr constant [20 x i8] c"done:\0A ret void\0A}\0A\00" -@.str3334 = private unnamed_addr constant [5 x i8] c"args\00" -@.str3335 = private unnamed_addr constant [10 x i8] c"arg_count\00" -@.str3336 = private unnamed_addr constant [4 x i8] c"arg\00" -@.str3337 = private unnamed_addr constant [4 x i8] c"env\00" -@.str3338 = private unnamed_addr constant [7 x i8] c"env_or\00" -@.str3339 = private unnamed_addr constant [8 x i8] c"has_env\00" -@.str3340 = private unnamed_addr constant [8 x i8] c"set_env\00" -@.str3341 = private unnamed_addr constant [10 x i8] c"unset_env\00" -@.str3342 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str3343 = private unnamed_addr constant [4 x i8] c"pid\00" -@.str3344 = private unnamed_addr constant [9 x i8] c"platform\00" -@.str3345 = private unnamed_addr constant [5 x i8] c"arch\00" -@.str3346 = private unnamed_addr constant [13 x i8] c"stdout_write\00" -@.str3347 = private unnamed_addr constant [13 x i8] c"stderr_write\00" -@.str3348 = private unnamed_addr constant [9 x i8] c"save_dir\00" -@.str3349 = private unnamed_addr constant [11 x i8] c"config_dir\00" -@.str3350 = private unnamed_addr constant [10 x i8] c"cache_dir\00" -@.str3351 = private unnamed_addr constant [9 x i8] c"temp_dir\00" -@.str3352 = private unnamed_addr constant [10 x i8] c"arg_count\00" -@.str3353 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_argc\00" -@.str3354 = private unnamed_addr constant [4 x i8] c"int\00" -@.str3355 = private unnamed_addr constant [4 x i8] c"arg\00" -@.str3356 = private unnamed_addr constant [22 x i8] c"load ptr, ptr @L_argv\00" -@.str3357 = private unnamed_addr constant [24 x i8] c"getelementptr ptr, ptr \00" -@.str3358 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3359 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" -@.str3360 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3361 = private unnamed_addr constant [4 x i8] c"pid\00" -@.str3362 = private unnamed_addr constant [19 x i8] c"call i32 @getpid()\00" -@.str3363 = private unnamed_addr constant [4 x i8] c"int\00" -@.str3364 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str3365 = private unnamed_addr constant [23 x i8] c" call void @exit(i32 \00" -@.str3366 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str3367 = private unnamed_addr constant [15 x i8] c" unreachable\0A\00" -@.str3368 = private unnamed_addr constant [2 x i8] c"0\00" -@.str3369 = private unnamed_addr constant [5 x i8] c"void\00" -@.str3370 = private unnamed_addr constant [4 x i8] c"env\00" -@.str3371 = private unnamed_addr constant [22 x i8] c"call ptr @getenv(ptr \00" -@.str3372 = private unnamed_addr constant [2 x i8] c")\00" -@.str3373 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3374 = private unnamed_addr constant [8 x i8] c"has_env\00" -@.str3375 = private unnamed_addr constant [22 x i8] c"call ptr @getenv(ptr \00" -@.str3376 = private unnamed_addr constant [2 x i8] c")\00" -@.str3377 = private unnamed_addr constant [13 x i8] c"icmp ne ptr \00" -@.str3378 = private unnamed_addr constant [7 x i8] c", null\00" -@.str3379 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str3380 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str3381 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str3382 = private unnamed_addr constant [13 x i8] c"stdout_write\00" -@.str3383 = private unnamed_addr constant [13 x i8] c"stderr_write\00" -@.str3384 = private unnamed_addr constant [11 x i8] c"@__stdoutp\00" -@.str3385 = private unnamed_addr constant [13 x i8] c"stderr_write\00" -@.str3386 = private unnamed_addr constant [11 x i8] c"@__stderrp\00" -@.str3387 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" -@.str3388 = private unnamed_addr constant [22 x i8] c"call i64 @strlen(ptr \00" -@.str3389 = private unnamed_addr constant [2 x i8] c")\00" -@.str3390 = private unnamed_addr constant [24 x i8] c" call i64 @fwrite(ptr \00" -@.str3391 = private unnamed_addr constant [14 x i8] c", i64 1, i64 \00" -@.str3392 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str3393 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str3394 = private unnamed_addr constant [2 x i8] c"0\00" -@.str3395 = private unnamed_addr constant [5 x i8] c"void\00" -@.str3396 = private unnamed_addr constant [5 x i8] c"args\00" -@.str3397 = private unnamed_addr constant [23 x i8] c"call ptr @lp_os_args()\00" -@.str3398 = private unnamed_addr constant [9 x i8] c"[]string\00" -@.str3399 = private unnamed_addr constant [7 x i8] c"env_or\00" -@.str3400 = private unnamed_addr constant [31 x i8] c"call ptr @lp_os_getenv_or(ptr \00" -@.str3401 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str3402 = private unnamed_addr constant [2 x i8] c")\00" -@.str3403 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3404 = private unnamed_addr constant [8 x i8] c"set_env\00" -@.str3405 = private unnamed_addr constant [22 x i8] c"call i32 @setenv(ptr \00" -@.str3406 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str3407 = private unnamed_addr constant [9 x i8] c", i32 1)\00" -@.str3408 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str3409 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str3410 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str3411 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str3412 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str3413 = private unnamed_addr constant [10 x i8] c"unset_env\00" -@.str3414 = private unnamed_addr constant [24 x i8] c"call i32 @unsetenv(ptr \00" -@.str3415 = private unnamed_addr constant [2 x i8] c")\00" -@.str3416 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str3417 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str3418 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str3419 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str3420 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str3421 = private unnamed_addr constant [9 x i8] c"platform\00" -@.str3422 = private unnamed_addr constant [27 x i8] c"call ptr @lp_os_platform()\00" -@.str3423 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3424 = private unnamed_addr constant [5 x i8] c"arch\00" -@.str3425 = private unnamed_addr constant [23 x i8] c"call ptr @lp_os_arch()\00" +@.str3321 = private unnamed_addr constant [2 x i8] c"=\00" +@.str3322 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3323 = private unnamed_addr constant [2 x i8] c"+\00" +@.str3324 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3325 = private unnamed_addr constant [30 x i8] c" call void @lp_log_emit(i32 \00" +@.str3326 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str3327 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str3328 = private unnamed_addr constant [2 x i8] c"0\00" +@.str3329 = private unnamed_addr constant [5 x i8] c"void\00" +@.str3330 = private unnamed_addr constant [29 x i8] c"@L_log_level = global i32 0\0A\00" +@.str3331 = private unnamed_addr constant [61 x i8] c"@.log_nl = private unnamed_addr constant [2 x i8] c\22\5C0A\5C00\22\0A\00" +@.str3332 = private unnamed_addr constant [46 x i8] c"define void @lp_log_emit(i32 %lvl, ptr %s) {\0A\00" +@.str3333 = private unnamed_addr constant [114 x i8] c"entry:\0A %th = load i32, ptr @L_log_level\0A %skip = icmp slt i32 %lvl, %th\0A br i1 %skip, label %done, label %go\0A\00" +@.str3334 = private unnamed_addr constant [69 x i8] c"go:\0A %e = load ptr, ptr @__stderrp\0A %n = call i64 @strlen(ptr %s)\0A\00" +@.str3335 = private unnamed_addr constant [134 x i8] c" %w = call i64 @fwrite(ptr %s, i64 1, i64 %n, ptr %e)\0A %w2 = call i64 @fwrite(ptr @.log_nl, i64 1, i64 1, ptr %e)\0A br label %done\0A\00" +@.str3336 = private unnamed_addr constant [20 x i8] c"done:\0A ret void\0A}\0A\00" +@.str3337 = private unnamed_addr constant [5 x i8] c"args\00" +@.str3338 = private unnamed_addr constant [10 x i8] c"arg_count\00" +@.str3339 = private unnamed_addr constant [4 x i8] c"arg\00" +@.str3340 = private unnamed_addr constant [4 x i8] c"env\00" +@.str3341 = private unnamed_addr constant [7 x i8] c"env_or\00" +@.str3342 = private unnamed_addr constant [8 x i8] c"has_env\00" +@.str3343 = private unnamed_addr constant [8 x i8] c"set_env\00" +@.str3344 = private unnamed_addr constant [10 x i8] c"unset_env\00" +@.str3345 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str3346 = private unnamed_addr constant [4 x i8] c"pid\00" +@.str3347 = private unnamed_addr constant [9 x i8] c"platform\00" +@.str3348 = private unnamed_addr constant [5 x i8] c"arch\00" +@.str3349 = private unnamed_addr constant [13 x i8] c"stdout_write\00" +@.str3350 = private unnamed_addr constant [13 x i8] c"stderr_write\00" +@.str3351 = private unnamed_addr constant [9 x i8] c"save_dir\00" +@.str3352 = private unnamed_addr constant [11 x i8] c"config_dir\00" +@.str3353 = private unnamed_addr constant [10 x i8] c"cache_dir\00" +@.str3354 = private unnamed_addr constant [9 x i8] c"temp_dir\00" +@.str3355 = private unnamed_addr constant [10 x i8] c"arg_count\00" +@.str3356 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_argc\00" +@.str3357 = private unnamed_addr constant [4 x i8] c"int\00" +@.str3358 = private unnamed_addr constant [4 x i8] c"arg\00" +@.str3359 = private unnamed_addr constant [22 x i8] c"load ptr, ptr @L_argv\00" +@.str3360 = private unnamed_addr constant [24 x i8] c"getelementptr ptr, ptr \00" +@.str3361 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3362 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" +@.str3363 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3364 = private unnamed_addr constant [4 x i8] c"pid\00" +@.str3365 = private unnamed_addr constant [19 x i8] c"call i32 @getpid()\00" +@.str3366 = private unnamed_addr constant [4 x i8] c"int\00" +@.str3367 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str3368 = private unnamed_addr constant [23 x i8] c" call void @exit(i32 \00" +@.str3369 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str3370 = private unnamed_addr constant [15 x i8] c" unreachable\0A\00" +@.str3371 = private unnamed_addr constant [2 x i8] c"0\00" +@.str3372 = private unnamed_addr constant [5 x i8] c"void\00" +@.str3373 = private unnamed_addr constant [4 x i8] c"env\00" +@.str3374 = private unnamed_addr constant [22 x i8] c"call ptr @getenv(ptr \00" +@.str3375 = private unnamed_addr constant [2 x i8] c")\00" +@.str3376 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3377 = private unnamed_addr constant [8 x i8] c"has_env\00" +@.str3378 = private unnamed_addr constant [22 x i8] c"call ptr @getenv(ptr \00" +@.str3379 = private unnamed_addr constant [2 x i8] c")\00" +@.str3380 = private unnamed_addr constant [13 x i8] c"icmp ne ptr \00" +@.str3381 = private unnamed_addr constant [7 x i8] c", null\00" +@.str3382 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str3383 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str3384 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str3385 = private unnamed_addr constant [13 x i8] c"stdout_write\00" +@.str3386 = private unnamed_addr constant [13 x i8] c"stderr_write\00" +@.str3387 = private unnamed_addr constant [11 x i8] c"@__stdoutp\00" +@.str3388 = private unnamed_addr constant [13 x i8] c"stderr_write\00" +@.str3389 = private unnamed_addr constant [11 x i8] c"@__stderrp\00" +@.str3390 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" +@.str3391 = private unnamed_addr constant [22 x i8] c"call i64 @strlen(ptr \00" +@.str3392 = private unnamed_addr constant [2 x i8] c")\00" +@.str3393 = private unnamed_addr constant [24 x i8] c" call i64 @fwrite(ptr \00" +@.str3394 = private unnamed_addr constant [14 x i8] c", i64 1, i64 \00" +@.str3395 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str3396 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str3397 = private unnamed_addr constant [2 x i8] c"0\00" +@.str3398 = private unnamed_addr constant [5 x i8] c"void\00" +@.str3399 = private unnamed_addr constant [5 x i8] c"args\00" +@.str3400 = private unnamed_addr constant [23 x i8] c"call ptr @lp_os_args()\00" +@.str3401 = private unnamed_addr constant [9 x i8] c"[]string\00" +@.str3402 = private unnamed_addr constant [7 x i8] c"env_or\00" +@.str3403 = private unnamed_addr constant [31 x i8] c"call ptr @lp_os_getenv_or(ptr \00" +@.str3404 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str3405 = private unnamed_addr constant [2 x i8] c")\00" +@.str3406 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3407 = private unnamed_addr constant [8 x i8] c"set_env\00" +@.str3408 = private unnamed_addr constant [22 x i8] c"call i32 @setenv(ptr \00" +@.str3409 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str3410 = private unnamed_addr constant [9 x i8] c", i32 1)\00" +@.str3411 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str3412 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str3413 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str3414 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str3415 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str3416 = private unnamed_addr constant [10 x i8] c"unset_env\00" +@.str3417 = private unnamed_addr constant [24 x i8] c"call i32 @unsetenv(ptr \00" +@.str3418 = private unnamed_addr constant [2 x i8] c")\00" +@.str3419 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str3420 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str3421 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str3422 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str3423 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str3424 = private unnamed_addr constant [9 x i8] c"platform\00" +@.str3425 = private unnamed_addr constant [27 x i8] c"call ptr @lp_os_platform()\00" @.str3426 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3427 = private unnamed_addr constant [9 x i8] c"save_dir\00" -@.str3428 = private unnamed_addr constant [30 x i8] c"call ptr @lp_os_save_dir(ptr \00" -@.str3429 = private unnamed_addr constant [2 x i8] c")\00" -@.str3430 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3431 = private unnamed_addr constant [11 x i8] c"config_dir\00" -@.str3432 = private unnamed_addr constant [32 x i8] c"call ptr @lp_os_config_dir(ptr \00" -@.str3433 = private unnamed_addr constant [2 x i8] c")\00" -@.str3434 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3435 = private unnamed_addr constant [10 x i8] c"cache_dir\00" -@.str3436 = private unnamed_addr constant [31 x i8] c"call ptr @lp_os_cache_dir(ptr \00" -@.str3437 = private unnamed_addr constant [2 x i8] c")\00" -@.str3438 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3439 = private unnamed_addr constant [27 x i8] c"call ptr @lp_os_temp_dir()\00" -@.str3440 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3441 = private unnamed_addr constant [36 x i8] c"declare i32 @setenv(ptr, ptr, i32)\0A\00" -@.str3442 = private unnamed_addr constant [28 x i8] c"declare i32 @unsetenv(ptr)\0A\00" -@.str3443 = private unnamed_addr constant [25 x i8] c"declare i32 @uname(ptr)\0A\00" -@.str3444 = private unnamed_addr constant [5 x i8] c"HOME\00" -@.str3445 = private unnamed_addr constant [2 x i8] c".\00" -@.str3446 = private unnamed_addr constant [30 x i8] c"/Library/Application Support/\00" -@.str3447 = private unnamed_addr constant [17 x i8] c"/Library/Caches/\00" -@.str3448 = private unnamed_addr constant [7 x i8] c"TMPDIR\00" -@.str3449 = private unnamed_addr constant [5 x i8] c"/tmp\00" -@.str3450 = private unnamed_addr constant [7 x i8] c"Darwin\00" -@.str3451 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str3452 = private unnamed_addr constant [6 x i8] c"Linux\00" -@.str3453 = private unnamed_addr constant [6 x i8] c"linux\00" -@.str3454 = private unnamed_addr constant [51 x i8] c"define ptr @lp_os_getenv_or(ptr %name, ptr %fb) {\0A\00" -@.str3455 = private unnamed_addr constant [106 x i8] c"entry:\0A %r = call ptr @getenv(ptr %name)\0A %z = icmp eq ptr %r, null\0A br i1 %z, label %use, label %got\0A\00" -@.str3456 = private unnamed_addr constant [20 x i8] c"use:\0A ret ptr %fb\0A\00" -@.str3457 = private unnamed_addr constant [21 x i8] c"got:\0A ret ptr %r\0A}\0A\00" -@.str3458 = private unnamed_addr constant [43 x i8] c"define ptr @lp_os_join2(ptr %a, ptr %b) {\0A\00" -@.str3459 = private unnamed_addr constant [74 x i8] c"entry:\0A %la = call i64 @strlen(ptr %a)\0A %lb = call i64 @strlen(ptr %b)\0A\00" -@.str3460 = private unnamed_addr constant [86 x i8] c" %sum = add i64 %la, %lb\0A %tot = add i64 %sum, 1\0A %m = call ptr @malloc(i64 %tot)\0A\00" -@.str3461 = private unnamed_addr constant [45 x i8] c" call ptr @memcpy(ptr %m, ptr %a, i64 %la)\0A\00" -@.str3462 = private unnamed_addr constant [88 x i8] c" %m2 = getelementptr i8, ptr %m, i64 %la\0A call ptr @memcpy(ptr %m2, ptr %b, i64 %lb)\0A\00" -@.str3463 = private unnamed_addr constant [83 x i8] c" %end = getelementptr i8, ptr %m, i64 %sum\0A store i8 0, ptr %end\0A ret ptr %m\0A}\0A\00" -@.str3464 = private unnamed_addr constant [51 x i8] c"define ptr @lp_os_join3(ptr %a, ptr %b, ptr %c) {\0A\00" -@.str3465 = private unnamed_addr constant [115 x i8] c"entry:\0A %ab = call ptr @lp_os_join2(ptr %a, ptr %b)\0A %r = call ptr @lp_os_join2(ptr %ab, ptr %c)\0A ret ptr %r\0A}\0A\00" -@.str3466 = private unnamed_addr constant [65 x i8] c"define ptr @lp_os_home() {\0A %r = call ptr @lp_os_getenv_or(ptr \00" -@.str3467 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str3468 = private unnamed_addr constant [18 x i8] c")\0A ret ptr %r\0A}\0A\00" -@.str3469 = private unnamed_addr constant [111 x i8] c"define ptr @lp_os_save_dir(ptr %app) {\0A %h = call ptr @lp_os_home()\0A %r = call ptr @lp_os_join3(ptr %h, ptr \00" -@.str3470 = private unnamed_addr constant [28 x i8] c", ptr %app)\0A ret ptr %r\0A}\0A\00" -@.str3471 = private unnamed_addr constant [113 x i8] c"define ptr @lp_os_config_dir(ptr %app) {\0A %h = call ptr @lp_os_home()\0A %r = call ptr @lp_os_join3(ptr %h, ptr \00" -@.str3472 = private unnamed_addr constant [28 x i8] c", ptr %app)\0A ret ptr %r\0A}\0A\00" -@.str3473 = private unnamed_addr constant [112 x i8] c"define ptr @lp_os_cache_dir(ptr %app) {\0A %h = call ptr @lp_os_home()\0A %r = call ptr @lp_os_join3(ptr %h, ptr \00" -@.str3474 = private unnamed_addr constant [28 x i8] c", ptr %app)\0A ret ptr %r\0A}\0A\00" -@.str3475 = private unnamed_addr constant [69 x i8] c"define ptr @lp_os_temp_dir() {\0A %r = call ptr @lp_os_getenv_or(ptr \00" -@.str3476 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str3477 = private unnamed_addr constant [18 x i8] c")\0A ret ptr %r\0A}\0A\00" -@.str3478 = private unnamed_addr constant [28 x i8] c"define ptr @lp_os_args() {\0A\00" -@.str3479 = private unnamed_addr constant [66 x i8] c"entry:\0A %c = load i32, ptr @L_argc\0A %v = load ptr, ptr @L_argv\0A\00" -@.str3480 = private unnamed_addr constant [33 x i8] c" %h = call ptr @malloc(i64 16)\0A\00" -@.str3481 = private unnamed_addr constant [86 x i8] c" %d0 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 0\0A store ptr %v, ptr %d0\0A\00" -@.str3482 = private unnamed_addr constant [86 x i8] c" %d1 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 1\0A store i32 %c, ptr %d1\0A\00" -@.str3483 = private unnamed_addr constant [86 x i8] c" %d2 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 2\0A store i32 %c, ptr %d2\0A\00" -@.str3484 = private unnamed_addr constant [16 x i8] c" ret ptr %h\0A}\0A\00" -@.str3485 = private unnamed_addr constant [32 x i8] c"define ptr @lp_os_platform() {\0A\00" -@.str3486 = private unnamed_addr constant [72 x i8] c"entry:\0A %buf = call ptr @malloc(i64 8192)\0A call i32 @uname(ptr %buf)\0A\00" -@.str3487 = private unnamed_addr constant [41 x i8] c" %cd = call i32 @strncmp(ptr %buf, ptr \00" -@.str3488 = private unnamed_addr constant [76 x i8] c", i64 6)\0A %isd = icmp eq i32 %cd, 0\0A br i1 %isd, label %mac, label %chkl\0A\00" -@.str3489 = private unnamed_addr constant [16 x i8] c"mac:\0A ret ptr \00" -@.str3490 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str3491 = private unnamed_addr constant [47 x i8] c"chkl:\0A %cl = call i32 @strncmp(ptr %buf, ptr \00" -@.str3492 = private unnamed_addr constant [77 x i8] c", i64 5)\0A %isl = icmp eq i32 %cl, 0\0A br i1 %isl, label %lin, label %other\0A\00" -@.str3493 = private unnamed_addr constant [16 x i8] c"lin:\0A ret ptr \00" -@.str3494 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str3495 = private unnamed_addr constant [25 x i8] c"other:\0A ret ptr %buf\0A}\0A\00" -@.str3496 = private unnamed_addr constant [28 x i8] c"define ptr @lp_os_arch() {\0A\00" -@.str3497 = private unnamed_addr constant [72 x i8] c"entry:\0A %buf = call ptr @malloc(i64 8192)\0A call i32 @uname(ptr %buf)\0A\00" -@.str3498 = private unnamed_addr constant [60 x i8] c" %m = getelementptr i8, ptr %buf, i64 1024\0A ret ptr %m\0A}\0A\00" -@.str3499 = private unnamed_addr constant [4 x i8] c"len\00" -@.str3500 = private unnamed_addr constant [9 x i8] c"byte_len\00" -@.str3501 = private unnamed_addr constant [14 x i8] c"is_valid_utf8\00" -@.str3502 = private unnamed_addr constant [8 x i8] c"char_at\00" -@.str3503 = private unnamed_addr constant [6 x i8] c"chars\00" -@.str3504 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str3505 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str3506 = private unnamed_addr constant [9 x i8] c"truncate\00" -@.str3507 = private unnamed_addr constant [13 x i8] c"grapheme_len\00" -@.str3508 = private unnamed_addr constant [9 x i8] c"byte_len\00" -@.str3509 = private unnamed_addr constant [22 x i8] c"call i64 @strlen(ptr \00" -@.str3510 = private unnamed_addr constant [2 x i8] c")\00" -@.str3511 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str3512 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str3513 = private unnamed_addr constant [4 x i8] c"int\00" -@.str3514 = private unnamed_addr constant [4 x i8] c"len\00" -@.str3515 = private unnamed_addr constant [26 x i8] c"call i32 @lp_uni_len(ptr \00" -@.str3516 = private unnamed_addr constant [2 x i8] c")\00" -@.str3517 = private unnamed_addr constant [4 x i8] c"int\00" -@.str3518 = private unnamed_addr constant [14 x i8] c"is_valid_utf8\00" -@.str3519 = private unnamed_addr constant [28 x i8] c"call i32 @lp_uni_valid(ptr \00" -@.str3520 = private unnamed_addr constant [2 x i8] c")\00" -@.str3521 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str3522 = private unnamed_addr constant [8 x i8] c"char_at\00" -@.str3523 = private unnamed_addr constant [30 x i8] c"call i32 @lp_uni_char_at(ptr \00" -@.str3524 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3525 = private unnamed_addr constant [2 x i8] c")\00" -@.str3526 = private unnamed_addr constant [4 x i8] c"int\00" -@.str3527 = private unnamed_addr constant [6 x i8] c"chars\00" -@.str3528 = private unnamed_addr constant [28 x i8] c"call ptr @lp_uni_chars(ptr \00" -@.str3529 = private unnamed_addr constant [2 x i8] c")\00" -@.str3530 = private unnamed_addr constant [6 x i8] c"[]int\00" -@.str3531 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str3532 = private unnamed_addr constant [27 x i8] c"call ptr @lp_uni_case(ptr \00" -@.str3533 = private unnamed_addr constant [9 x i8] c", i32 1)\00" -@.str3534 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3535 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str3536 = private unnamed_addr constant [27 x i8] c"call ptr @lp_uni_case(ptr \00" -@.str3537 = private unnamed_addr constant [9 x i8] c", i32 0)\00" -@.str3538 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3539 = private unnamed_addr constant [9 x i8] c"truncate\00" -@.str3540 = private unnamed_addr constant [31 x i8] c"call ptr @lp_uni_truncate(ptr \00" -@.str3541 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str3542 = private unnamed_addr constant [2 x i8] c")\00" -@.str3543 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3544 = private unnamed_addr constant [35 x i8] c"call i32 @lp_uni_grapheme_len(ptr \00" +@.str3427 = private unnamed_addr constant [5 x i8] c"arch\00" +@.str3428 = private unnamed_addr constant [23 x i8] c"call ptr @lp_os_arch()\00" +@.str3429 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3430 = private unnamed_addr constant [9 x i8] c"save_dir\00" +@.str3431 = private unnamed_addr constant [30 x i8] c"call ptr @lp_os_save_dir(ptr \00" +@.str3432 = private unnamed_addr constant [2 x i8] c")\00" +@.str3433 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3434 = private unnamed_addr constant [11 x i8] c"config_dir\00" +@.str3435 = private unnamed_addr constant [32 x i8] c"call ptr @lp_os_config_dir(ptr \00" +@.str3436 = private unnamed_addr constant [2 x i8] c")\00" +@.str3437 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3438 = private unnamed_addr constant [10 x i8] c"cache_dir\00" +@.str3439 = private unnamed_addr constant [31 x i8] c"call ptr @lp_os_cache_dir(ptr \00" +@.str3440 = private unnamed_addr constant [2 x i8] c")\00" +@.str3441 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3442 = private unnamed_addr constant [27 x i8] c"call ptr @lp_os_temp_dir()\00" +@.str3443 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3444 = private unnamed_addr constant [36 x i8] c"declare i32 @setenv(ptr, ptr, i32)\0A\00" +@.str3445 = private unnamed_addr constant [28 x i8] c"declare i32 @unsetenv(ptr)\0A\00" +@.str3446 = private unnamed_addr constant [25 x i8] c"declare i32 @uname(ptr)\0A\00" +@.str3447 = private unnamed_addr constant [5 x i8] c"HOME\00" +@.str3448 = private unnamed_addr constant [2 x i8] c".\00" +@.str3449 = private unnamed_addr constant [30 x i8] c"/Library/Application Support/\00" +@.str3450 = private unnamed_addr constant [17 x i8] c"/Library/Caches/\00" +@.str3451 = private unnamed_addr constant [7 x i8] c"TMPDIR\00" +@.str3452 = private unnamed_addr constant [5 x i8] c"/tmp\00" +@.str3453 = private unnamed_addr constant [7 x i8] c"Darwin\00" +@.str3454 = private unnamed_addr constant [6 x i8] c"macos\00" +@.str3455 = private unnamed_addr constant [6 x i8] c"Linux\00" +@.str3456 = private unnamed_addr constant [6 x i8] c"linux\00" +@.str3457 = private unnamed_addr constant [51 x i8] c"define ptr @lp_os_getenv_or(ptr %name, ptr %fb) {\0A\00" +@.str3458 = private unnamed_addr constant [106 x i8] c"entry:\0A %r = call ptr @getenv(ptr %name)\0A %z = icmp eq ptr %r, null\0A br i1 %z, label %use, label %got\0A\00" +@.str3459 = private unnamed_addr constant [20 x i8] c"use:\0A ret ptr %fb\0A\00" +@.str3460 = private unnamed_addr constant [21 x i8] c"got:\0A ret ptr %r\0A}\0A\00" +@.str3461 = private unnamed_addr constant [43 x i8] c"define ptr @lp_os_join2(ptr %a, ptr %b) {\0A\00" +@.str3462 = private unnamed_addr constant [74 x i8] c"entry:\0A %la = call i64 @strlen(ptr %a)\0A %lb = call i64 @strlen(ptr %b)\0A\00" +@.str3463 = private unnamed_addr constant [86 x i8] c" %sum = add i64 %la, %lb\0A %tot = add i64 %sum, 1\0A %m = call ptr @malloc(i64 %tot)\0A\00" +@.str3464 = private unnamed_addr constant [45 x i8] c" call ptr @memcpy(ptr %m, ptr %a, i64 %la)\0A\00" +@.str3465 = private unnamed_addr constant [88 x i8] c" %m2 = getelementptr i8, ptr %m, i64 %la\0A call ptr @memcpy(ptr %m2, ptr %b, i64 %lb)\0A\00" +@.str3466 = private unnamed_addr constant [83 x i8] c" %end = getelementptr i8, ptr %m, i64 %sum\0A store i8 0, ptr %end\0A ret ptr %m\0A}\0A\00" +@.str3467 = private unnamed_addr constant [51 x i8] c"define ptr @lp_os_join3(ptr %a, ptr %b, ptr %c) {\0A\00" +@.str3468 = private unnamed_addr constant [115 x i8] c"entry:\0A %ab = call ptr @lp_os_join2(ptr %a, ptr %b)\0A %r = call ptr @lp_os_join2(ptr %ab, ptr %c)\0A ret ptr %r\0A}\0A\00" +@.str3469 = private unnamed_addr constant [65 x i8] c"define ptr @lp_os_home() {\0A %r = call ptr @lp_os_getenv_or(ptr \00" +@.str3470 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str3471 = private unnamed_addr constant [18 x i8] c")\0A ret ptr %r\0A}\0A\00" +@.str3472 = private unnamed_addr constant [111 x i8] c"define ptr @lp_os_save_dir(ptr %app) {\0A %h = call ptr @lp_os_home()\0A %r = call ptr @lp_os_join3(ptr %h, ptr \00" +@.str3473 = private unnamed_addr constant [28 x i8] c", ptr %app)\0A ret ptr %r\0A}\0A\00" +@.str3474 = private unnamed_addr constant [113 x i8] c"define ptr @lp_os_config_dir(ptr %app) {\0A %h = call ptr @lp_os_home()\0A %r = call ptr @lp_os_join3(ptr %h, ptr \00" +@.str3475 = private unnamed_addr constant [28 x i8] c", ptr %app)\0A ret ptr %r\0A}\0A\00" +@.str3476 = private unnamed_addr constant [112 x i8] c"define ptr @lp_os_cache_dir(ptr %app) {\0A %h = call ptr @lp_os_home()\0A %r = call ptr @lp_os_join3(ptr %h, ptr \00" +@.str3477 = private unnamed_addr constant [28 x i8] c", ptr %app)\0A ret ptr %r\0A}\0A\00" +@.str3478 = private unnamed_addr constant [69 x i8] c"define ptr @lp_os_temp_dir() {\0A %r = call ptr @lp_os_getenv_or(ptr \00" +@.str3479 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str3480 = private unnamed_addr constant [18 x i8] c")\0A ret ptr %r\0A}\0A\00" +@.str3481 = private unnamed_addr constant [28 x i8] c"define ptr @lp_os_args() {\0A\00" +@.str3482 = private unnamed_addr constant [66 x i8] c"entry:\0A %c = load i32, ptr @L_argc\0A %v = load ptr, ptr @L_argv\0A\00" +@.str3483 = private unnamed_addr constant [33 x i8] c" %h = call ptr @malloc(i64 16)\0A\00" +@.str3484 = private unnamed_addr constant [86 x i8] c" %d0 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 0\0A store ptr %v, ptr %d0\0A\00" +@.str3485 = private unnamed_addr constant [86 x i8] c" %d1 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 1\0A store i32 %c, ptr %d1\0A\00" +@.str3486 = private unnamed_addr constant [86 x i8] c" %d2 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 2\0A store i32 %c, ptr %d2\0A\00" +@.str3487 = private unnamed_addr constant [16 x i8] c" ret ptr %h\0A}\0A\00" +@.str3488 = private unnamed_addr constant [32 x i8] c"define ptr @lp_os_platform() {\0A\00" +@.str3489 = private unnamed_addr constant [72 x i8] c"entry:\0A %buf = call ptr @malloc(i64 8192)\0A call i32 @uname(ptr %buf)\0A\00" +@.str3490 = private unnamed_addr constant [41 x i8] c" %cd = call i32 @strncmp(ptr %buf, ptr \00" +@.str3491 = private unnamed_addr constant [76 x i8] c", i64 6)\0A %isd = icmp eq i32 %cd, 0\0A br i1 %isd, label %mac, label %chkl\0A\00" +@.str3492 = private unnamed_addr constant [16 x i8] c"mac:\0A ret ptr \00" +@.str3493 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str3494 = private unnamed_addr constant [47 x i8] c"chkl:\0A %cl = call i32 @strncmp(ptr %buf, ptr \00" +@.str3495 = private unnamed_addr constant [77 x i8] c", i64 5)\0A %isl = icmp eq i32 %cl, 0\0A br i1 %isl, label %lin, label %other\0A\00" +@.str3496 = private unnamed_addr constant [16 x i8] c"lin:\0A ret ptr \00" +@.str3497 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str3498 = private unnamed_addr constant [25 x i8] c"other:\0A ret ptr %buf\0A}\0A\00" +@.str3499 = private unnamed_addr constant [28 x i8] c"define ptr @lp_os_arch() {\0A\00" +@.str3500 = private unnamed_addr constant [72 x i8] c"entry:\0A %buf = call ptr @malloc(i64 8192)\0A call i32 @uname(ptr %buf)\0A\00" +@.str3501 = private unnamed_addr constant [60 x i8] c" %m = getelementptr i8, ptr %buf, i64 1024\0A ret ptr %m\0A}\0A\00" +@.str3502 = private unnamed_addr constant [4 x i8] c"len\00" +@.str3503 = private unnamed_addr constant [9 x i8] c"byte_len\00" +@.str3504 = private unnamed_addr constant [14 x i8] c"is_valid_utf8\00" +@.str3505 = private unnamed_addr constant [8 x i8] c"char_at\00" +@.str3506 = private unnamed_addr constant [6 x i8] c"chars\00" +@.str3507 = private unnamed_addr constant [6 x i8] c"upper\00" +@.str3508 = private unnamed_addr constant [6 x i8] c"lower\00" +@.str3509 = private unnamed_addr constant [9 x i8] c"truncate\00" +@.str3510 = private unnamed_addr constant [13 x i8] c"grapheme_len\00" +@.str3511 = private unnamed_addr constant [9 x i8] c"byte_len\00" +@.str3512 = private unnamed_addr constant [22 x i8] c"call i64 @strlen(ptr \00" +@.str3513 = private unnamed_addr constant [2 x i8] c")\00" +@.str3514 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str3515 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str3516 = private unnamed_addr constant [4 x i8] c"int\00" +@.str3517 = private unnamed_addr constant [4 x i8] c"len\00" +@.str3518 = private unnamed_addr constant [26 x i8] c"call i32 @lp_uni_len(ptr \00" +@.str3519 = private unnamed_addr constant [2 x i8] c")\00" +@.str3520 = private unnamed_addr constant [4 x i8] c"int\00" +@.str3521 = private unnamed_addr constant [14 x i8] c"is_valid_utf8\00" +@.str3522 = private unnamed_addr constant [28 x i8] c"call i32 @lp_uni_valid(ptr \00" +@.str3523 = private unnamed_addr constant [2 x i8] c")\00" +@.str3524 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str3525 = private unnamed_addr constant [8 x i8] c"char_at\00" +@.str3526 = private unnamed_addr constant [30 x i8] c"call i32 @lp_uni_char_at(ptr \00" +@.str3527 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str3528 = private unnamed_addr constant [2 x i8] c")\00" +@.str3529 = private unnamed_addr constant [4 x i8] c"int\00" +@.str3530 = private unnamed_addr constant [6 x i8] c"chars\00" +@.str3531 = private unnamed_addr constant [28 x i8] c"call ptr @lp_uni_chars(ptr \00" +@.str3532 = private unnamed_addr constant [2 x i8] c")\00" +@.str3533 = private unnamed_addr constant [6 x i8] c"[]int\00" +@.str3534 = private unnamed_addr constant [6 x i8] c"upper\00" +@.str3535 = private unnamed_addr constant [27 x i8] c"call ptr @lp_uni_case(ptr \00" +@.str3536 = private unnamed_addr constant [9 x i8] c", i32 1)\00" +@.str3537 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3538 = private unnamed_addr constant [6 x i8] c"lower\00" +@.str3539 = private unnamed_addr constant [27 x i8] c"call ptr @lp_uni_case(ptr \00" +@.str3540 = private unnamed_addr constant [9 x i8] c", i32 0)\00" +@.str3541 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3542 = private unnamed_addr constant [9 x i8] c"truncate\00" +@.str3543 = private unnamed_addr constant [31 x i8] c"call ptr @lp_uni_truncate(ptr \00" +@.str3544 = private unnamed_addr constant [7 x i8] c", i32 \00" @.str3545 = private unnamed_addr constant [2 x i8] c")\00" -@.str3546 = private unnamed_addr constant [4 x i8] c"int\00" -@.str3547 = private unnamed_addr constant [34 x i8] c"define i32 @lp_uni_len(ptr %s) {\0A\00" -@.str3548 = private unnamed_addr constant [107 x i8] c"entry:\0A %ip = alloca i32\0A %np = alloca i32\0A store i32 0, ptr %ip\0A store i32 0, ptr %np\0A br label %lp\0A\00" -@.str3549 = private unnamed_addr constant [118 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" -@.str3550 = private unnamed_addr constant [61 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %done, label %go\0A\00" -@.str3551 = private unnamed_addr constant [99 x i8] c"go:\0A %m = and i32 %c, 192\0A %cont = icmp eq i32 %m, 128\0A br i1 %cont, label %skip, label %count\0A\00" -@.str3552 = private unnamed_addr constant [97 x i8] c"count:\0A %n = load i32, ptr %np\0A %n1 = add i32 %n, 1\0A store i32 %n1, ptr %np\0A br label %skip\0A\00" -@.str3553 = private unnamed_addr constant [69 x i8] c"skip:\0A %i1 = add i32 %i, 1\0A store i32 %i1, ptr %ip\0A br label %lp\0A\00" -@.str3554 = private unnamed_addr constant [47 x i8] c"done:\0A %r = load i32, ptr %np\0A ret i32 %r\0A}\0A\00" -@.str3555 = private unnamed_addr constant [57 x i8] c"define i32 @lp_uni_decode(ptr %s, i32 %i, ptr %cpout) {\0A\00" -@.str3556 = private unnamed_addr constant [101 x i8] c"entry:\0A %p0 = getelementptr i8, ptr %s, i32 %i\0A %b0 = load i8, ptr %p0\0A %c0 = zext i8 %b0 to i32\0A\00" -@.str3557 = private unnamed_addr constant [69 x i8] c" %a1 = icmp ult i32 %c0, 128\0A br i1 %a1, label %one, label %multi\0A\00" -@.str3558 = private unnamed_addr constant [70 x i8] c"one:\0A store i32 %c0, ptr %cpout\0A %oi = add i32 %i, 1\0A ret i32 %oi\0A\00" -@.str3559 = private unnamed_addr constant [99 x i8] c"multi:\0A %h2 = and i32 %c0, 224\0A %is2 = icmp eq i32 %h2, 192\0A br i1 %is2, label %two, label %c3\0A\00" -@.str3560 = private unnamed_addr constant [98 x i8] c"c3:\0A %h3 = and i32 %c0, 240\0A %is3 = icmp eq i32 %h3, 224\0A br i1 %is3, label %three, label %c4\0A\00" -@.str3561 = private unnamed_addr constant [98 x i8] c"c4:\0A %h4 = and i32 %c0, 248\0A %is4 = icmp eq i32 %h4, 240\0A br i1 %is4, label %four, label %bad\0A\00" -@.str3562 = private unnamed_addr constant [70 x i8] c"bad:\0A store i32 %c0, ptr %cpout\0A %bi = add i32 %i, 1\0A ret i32 %bi\0A\00" -@.str3563 = private unnamed_addr constant [128 x i8] c"two:\0A %t1i = add i32 %i, 1\0A %t1p = getelementptr i8, ptr %s, i32 %t1i\0A %t1b = load i8, ptr %t1p\0A %t1 = zext i8 %t1b to i32\0A\00" -@.str3564 = private unnamed_addr constant [67 x i8] c" %t1z = icmp eq i32 %t1, 0\0A br i1 %t1z, label %tbad, label %tok\0A\00" -@.str3565 = private unnamed_addr constant [73 x i8] c"tbad:\0A store i32 %c0, ptr %cpout\0A %tbi = add i32 %i, 1\0A ret i32 %tbi\0A\00" -@.str3566 = private unnamed_addr constant [169 x i8] c"tok:\0A %tm = and i32 %c0, 31\0A %tsh = shl i32 %tm, 6\0A %tl = and i32 %t1, 63\0A %tcp = or i32 %tsh, %tl\0A store i32 %tcp, ptr %cpout\0A %ti = add i32 %i, 2\0A ret i32 %ti\0A\00" -@.str3567 = private unnamed_addr constant [130 x i8] c"three:\0A %r1i = add i32 %i, 1\0A %r1p = getelementptr i8, ptr %s, i32 %r1i\0A %r1b = load i8, ptr %r1p\0A %r1 = zext i8 %r1b to i32\0A\00" -@.str3568 = private unnamed_addr constant [67 x i8] c" %r1z = icmp eq i32 %r1, 0\0A br i1 %r1z, label %rbad, label %rc2\0A\00" -@.str3569 = private unnamed_addr constant [73 x i8] c"rbad:\0A store i32 %c0, ptr %cpout\0A %rbi = add i32 %i, 1\0A ret i32 %rbi\0A\00" -@.str3570 = private unnamed_addr constant [128 x i8] c"rc2:\0A %r2i = add i32 %i, 2\0A %r2p = getelementptr i8, ptr %s, i32 %r2i\0A %r2b = load i8, ptr %r2p\0A %r2 = zext i8 %r2b to i32\0A\00" -@.str3571 = private unnamed_addr constant [67 x i8] c" %r2z = icmp eq i32 %r2, 0\0A br i1 %r2z, label %rbad, label %rok\0A\00" -@.str3572 = private unnamed_addr constant [131 x i8] c"rok:\0A %rm = and i32 %c0, 15\0A %rsh = shl i32 %rm, 12\0A %ram = and i32 %r1, 63\0A %rash = shl i32 %ram, 6\0A %rbm = and i32 %r2, 63\0A\00" -@.str3573 = private unnamed_addr constant [121 x i8] c" %rp1 = or i32 %rsh, %rash\0A %rcp = or i32 %rp1, %rbm\0A store i32 %rcp, ptr %cpout\0A %ri = add i32 %i, 3\0A ret i32 %ri\0A\00" -@.str3574 = private unnamed_addr constant [129 x i8] c"four:\0A %f1i = add i32 %i, 1\0A %f1p = getelementptr i8, ptr %s, i32 %f1i\0A %f1b = load i8, ptr %f1p\0A %f1 = zext i8 %f1b to i32\0A\00" -@.str3575 = private unnamed_addr constant [67 x i8] c" %f1z = icmp eq i32 %f1, 0\0A br i1 %f1z, label %fbad, label %fc2\0A\00" -@.str3576 = private unnamed_addr constant [73 x i8] c"fbad:\0A store i32 %c0, ptr %cpout\0A %fbi = add i32 %i, 1\0A ret i32 %fbi\0A\00" -@.str3577 = private unnamed_addr constant [128 x i8] c"fc2:\0A %f2i = add i32 %i, 2\0A %f2p = getelementptr i8, ptr %s, i32 %f2i\0A %f2b = load i8, ptr %f2p\0A %f2 = zext i8 %f2b to i32\0A\00" -@.str3578 = private unnamed_addr constant [67 x i8] c" %f2z = icmp eq i32 %f2, 0\0A br i1 %f2z, label %fbad, label %fc3\0A\00" -@.str3579 = private unnamed_addr constant [128 x i8] c"fc3:\0A %f3i = add i32 %i, 3\0A %f3p = getelementptr i8, ptr %s, i32 %f3i\0A %f3b = load i8, ptr %f3p\0A %f3 = zext i8 %f3b to i32\0A\00" -@.str3580 = private unnamed_addr constant [67 x i8] c" %f3z = icmp eq i32 %f3, 0\0A br i1 %f3z, label %fbad, label %fok\0A\00" -@.str3581 = private unnamed_addr constant [106 x i8] c"fok:\0A %fm = and i32 %c0, 7\0A %fsh = shl i32 %fm, 18\0A %fam = and i32 %f1, 63\0A %fash = shl i32 %fam, 12\0A\00" -@.str3582 = private unnamed_addr constant [77 x i8] c" %fbm = and i32 %f2, 63\0A %fbsh = shl i32 %fbm, 6\0A %fcm = and i32 %f3, 63\0A\00" -@.str3583 = private unnamed_addr constant [151 x i8] c" %fp1 = or i32 %fsh, %fash\0A %fp2 = or i32 %fp1, %fbsh\0A %fcp = or i32 %fp2, %fcm\0A store i32 %fcp, ptr %cpout\0A %fi = add i32 %i, 4\0A ret i32 %fi\0A}\0A\00" -@.str3584 = private unnamed_addr constant [36 x i8] c"define i32 @lp_uni_valid(ptr %s) {\0A\00" -@.str3585 = private unnamed_addr constant [65 x i8] c"entry:\0A %ip = alloca i32\0A store i32 0, ptr %ip\0A br label %lp\0A\00" -@.str3586 = private unnamed_addr constant [118 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" -@.str3587 = private unnamed_addr constant [60 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %good, label %g\0A\00" -@.str3588 = private unnamed_addr constant [69 x i8] c"g:\0A %a1 = icmp ult i32 %c, 128\0A br i1 %a1, label %adv1, label %m2\0A\00" -@.str3589 = private unnamed_addr constant [69 x i8] c"adv1:\0A %n1 = add i32 %i, 1\0A store i32 %n1, ptr %ip\0A br label %lp\0A\00" -@.str3590 = private unnamed_addr constant [95 x i8] c"m2:\0A %h2 = and i32 %c, 224\0A %is2 = icmp eq i32 %h2, 192\0A br i1 %is2, label %do2, label %m3\0A\00" -@.str3591 = private unnamed_addr constant [95 x i8] c"m3:\0A %h3 = and i32 %c, 240\0A %is3 = icmp eq i32 %h3, 224\0A br i1 %is3, label %do3, label %m4\0A\00" -@.str3592 = private unnamed_addr constant [96 x i8] c"m4:\0A %h4 = and i32 %c, 248\0A %is4 = icmp eq i32 %h4, 240\0A br i1 %is4, label %do4, label %bad\0A\00" -@.str3593 = private unnamed_addr constant [18 x i8] c"bad:\0A ret i32 0\0A\00" -@.str3594 = private unnamed_addr constant [128 x i8] c"do2:\0A %v1i = add i32 %i, 1\0A %v1p = getelementptr i8, ptr %s, i32 %v1i\0A %v1b = load i8, ptr %v1p\0A %v1 = zext i8 %v1b to i32\0A\00" -@.str3595 = private unnamed_addr constant [98 x i8] c" %v1m = and i32 %v1, 192\0A %v1ok = icmp eq i32 %v1m, 128\0A br i1 %v1ok, label %do2b, label %bad\0A\00" -@.str3596 = private unnamed_addr constant [108 x i8] c"do2b:\0A %q2m = and i32 %c, 31\0A %q2s = shl i32 %q2m, 6\0A %q2l = and i32 %v1, 63\0A %cp2 = or i32 %q2s, %q2l\0A\00" -@.str3597 = private unnamed_addr constant [71 x i8] c" %ov2 = icmp ult i32 %cp2, 128\0A br i1 %ov2, label %bad, label %adv2\0A\00" -@.str3598 = private unnamed_addr constant [69 x i8] c"adv2:\0A %n2 = add i32 %i, 2\0A store i32 %n2, ptr %ip\0A br label %lp\0A\00" -@.str3599 = private unnamed_addr constant [128 x i8] c"do3:\0A %w1i = add i32 %i, 1\0A %w1p = getelementptr i8, ptr %s, i32 %w1i\0A %w1b = load i8, ptr %w1p\0A %w1 = zext i8 %w1b to i32\0A\00" -@.str3600 = private unnamed_addr constant [98 x i8] c" %w1m = and i32 %w1, 192\0A %w1ok = icmp eq i32 %w1m, 128\0A br i1 %w1ok, label %do3b, label %bad\0A\00" -@.str3601 = private unnamed_addr constant [129 x i8] c"do3b:\0A %w2i = add i32 %i, 2\0A %w2p = getelementptr i8, ptr %s, i32 %w2i\0A %w2b = load i8, ptr %w2p\0A %w2 = zext i8 %w2b to i32\0A\00" -@.str3602 = private unnamed_addr constant [98 x i8] c" %w2m = and i32 %w2, 192\0A %w2ok = icmp eq i32 %w2m, 128\0A br i1 %w2ok, label %do3c, label %bad\0A\00" -@.str3603 = private unnamed_addr constant [136 x i8] c"do3c:\0A %e3m = and i32 %c, 15\0A %e3s = shl i32 %e3m, 12\0A %e3am = and i32 %w1, 63\0A %e3as = shl i32 %e3am, 6\0A %e3bm = and i32 %w2, 63\0A\00" -@.str3604 = private unnamed_addr constant [59 x i8] c" %cp3p = or i32 %e3s, %e3as\0A %cp3 = or i32 %cp3p, %e3bm\0A\00" -@.str3605 = private unnamed_addr constant [72 x i8] c" %ov3 = icmp ult i32 %cp3, 2048\0A br i1 %ov3, label %bad, label %do3d\0A\00" -@.str3606 = private unnamed_addr constant [138 x i8] c"do3d:\0A %sg1 = icmp uge i32 %cp3, 55296\0A %sg2 = icmp ule i32 %cp3, 57343\0A %sg = and i1 %sg1, %sg2\0A br i1 %sg, label %bad, label %adv3\0A\00" -@.str3607 = private unnamed_addr constant [69 x i8] c"adv3:\0A %n3 = add i32 %i, 3\0A store i32 %n3, ptr %ip\0A br label %lp\0A\00" -@.str3608 = private unnamed_addr constant [128 x i8] c"do4:\0A %x1i = add i32 %i, 1\0A %x1p = getelementptr i8, ptr %s, i32 %x1i\0A %x1b = load i8, ptr %x1p\0A %x1 = zext i8 %x1b to i32\0A\00" -@.str3609 = private unnamed_addr constant [98 x i8] c" %x1m = and i32 %x1, 192\0A %x1ok = icmp eq i32 %x1m, 128\0A br i1 %x1ok, label %do4b, label %bad\0A\00" -@.str3610 = private unnamed_addr constant [129 x i8] c"do4b:\0A %x2i = add i32 %i, 2\0A %x2p = getelementptr i8, ptr %s, i32 %x2i\0A %x2b = load i8, ptr %x2p\0A %x2 = zext i8 %x2b to i32\0A\00" -@.str3611 = private unnamed_addr constant [98 x i8] c" %x2m = and i32 %x2, 192\0A %x2ok = icmp eq i32 %x2m, 128\0A br i1 %x2ok, label %do4c, label %bad\0A\00" -@.str3612 = private unnamed_addr constant [129 x i8] c"do4c:\0A %x3i = add i32 %i, 3\0A %x3p = getelementptr i8, ptr %s, i32 %x3i\0A %x3b = load i8, ptr %x3p\0A %x3 = zext i8 %x3b to i32\0A\00" -@.str3613 = private unnamed_addr constant [98 x i8] c" %x3m = and i32 %x3, 192\0A %x3ok = icmp eq i32 %x3m, 128\0A br i1 %x3ok, label %do4d, label %bad\0A\00" -@.str3614 = private unnamed_addr constant [180 x i8] c"do4d:\0A %y0 = and i32 %c, 7\0A %y0s = shl i32 %y0, 18\0A %y1m = and i32 %x1, 63\0A %y1s = shl i32 %y1m, 12\0A %y2m = and i32 %x2, 63\0A %y2s = shl i32 %y2m, 6\0A %y3m = and i32 %x3, 63\0A\00" -@.str3615 = private unnamed_addr constant [86 x i8] c" %cp4p = or i32 %y0s, %y1s\0A %cp4q = or i32 %cp4p, %y2s\0A %cp4 = or i32 %cp4q, %y3m\0A\00" -@.str3616 = private unnamed_addr constant [73 x i8] c" %ov4 = icmp ult i32 %cp4, 65536\0A br i1 %ov4, label %bad, label %do4e\0A\00" -@.str3617 = private unnamed_addr constant [81 x i8] c"do4e:\0A %hi4 = icmp ugt i32 %cp4, 1114111\0A br i1 %hi4, label %bad, label %adv4\0A\00" -@.str3618 = private unnamed_addr constant [69 x i8] c"adv4:\0A %n4 = add i32 %i, 4\0A store i32 %n4, ptr %ip\0A br label %lp\0A\00" -@.str3619 = private unnamed_addr constant [21 x i8] c"good:\0A ret i32 1\0A}\0A\00" -@.str3620 = private unnamed_addr constant [35 x i8] c"define i32 @lp_uni_upcp(i32 %c) {\0A\00" -@.str3621 = private unnamed_addr constant [83 x i8] c" %la = icmp uge i32 %c, 97\0A %lb = icmp ule i32 %c, 122\0A %asc = and i1 %la, %lb\0A\00" -@.str3622 = private unnamed_addr constant [135 x i8] c" %da = icmp uge i32 %c, 224\0A %db = icmp ule i32 %c, 254\0A %dd = icmp ne i32 %c, 247\0A %d1 = and i1 %da, %db\0A %d2 = and i1 %d1, %dd\0A\00" -@.str3623 = private unnamed_addr constant [103 x i8] c" %map = or i1 %asc, %d2\0A %up = sub i32 %c, 32\0A %r = select i1 %map, i32 %up, i32 %c\0A ret i32 %r\0A}\0A\00" -@.str3624 = private unnamed_addr constant [35 x i8] c"define i32 @lp_uni_locp(i32 %c) {\0A\00" -@.str3625 = private unnamed_addr constant [82 x i8] c" %ua = icmp uge i32 %c, 65\0A %ub = icmp ule i32 %c, 90\0A %asc = and i1 %ua, %ub\0A\00" -@.str3626 = private unnamed_addr constant [135 x i8] c" %da = icmp uge i32 %c, 192\0A %db = icmp ule i32 %c, 222\0A %dd = icmp ne i32 %c, 215\0A %d1 = and i1 %da, %db\0A %d2 = and i1 %d1, %dd\0A\00" -@.str3627 = private unnamed_addr constant [103 x i8] c" %map = or i1 %asc, %d2\0A %lo = add i32 %c, 32\0A %r = select i1 %map, i32 %lo, i32 %c\0A ret i32 %r\0A}\0A\00" -@.str3628 = private unnamed_addr constant [39 x i8] c"define i32 @lp_uni_cpwidth(i32 %cp) {\0A\00" -@.str3629 = private unnamed_addr constant [91 x i8] c" %a = icmp ult i32 %cp, 128\0A %b = icmp ult i32 %cp, 2048\0A %c = icmp ult i32 %cp, 65536\0A\00" -@.str3630 = private unnamed_addr constant [130 x i8] c" %w34 = select i1 %c, i32 3, i32 4\0A %w234 = select i1 %b, i32 2, i32 %w34\0A %w = select i1 %a, i32 1, i32 %w234\0A ret i32 %w\0A}\0A\00" -@.str3631 = private unnamed_addr constant [58 x i8] c"define i32 @lp_uni_encode(ptr %dst, i32 %off, i32 %cp) {\0A\00" -@.str3632 = private unnamed_addr constant [111 x i8] c"entry:\0A %w = call i32 @lp_uni_cpwidth(i32 %cp)\0A %is1 = icmp eq i32 %w, 1\0A br i1 %is1, label %e1, label %k2\0A\00" -@.str3633 = private unnamed_addr constant [140 x i8] c"e1:\0A %d0 = getelementptr i8, ptr %dst, i32 %off\0A %b0 = trunc i32 %cp to i8\0A store i8 %b0, ptr %d0\0A %o1 = add i32 %off, 1\0A ret i32 %o1\0A\00" -@.str3634 = private unnamed_addr constant [67 x i8] c"k2:\0A %is2 = icmp eq i32 %w, 2\0A br i1 %is2, label %e2, label %k3\0A\00" -@.str3635 = private unnamed_addr constant [107 x i8] c"e2:\0A %hi2 = lshr i32 %cp, 6\0A %by0 = or i32 %hi2, 192\0A %lo2 = and i32 %cp, 63\0A %by1 = or i32 %lo2, 128\0A\00" -@.str3636 = private unnamed_addr constant [103 x i8] c" %p20 = getelementptr i8, ptr %dst, i32 %off\0A %t20 = trunc i32 %by0 to i8\0A store i8 %t20, ptr %p20\0A\00" -@.str3637 = private unnamed_addr constant [166 x i8] c" %o21 = add i32 %off, 1\0A %p21 = getelementptr i8, ptr %dst, i32 %o21\0A %t21 = trunc i32 %by1 to i8\0A store i8 %t21, ptr %p21\0A %o2 = add i32 %off, 2\0A ret i32 %o2\0A\00" -@.str3638 = private unnamed_addr constant [67 x i8] c"k3:\0A %is3 = icmp eq i32 %w, 3\0A br i1 %is3, label %e3, label %e4\0A\00" -@.str3639 = private unnamed_addr constant [190 x i8] c"e3:\0A %hi3 = lshr i32 %cp, 12\0A %by30 = or i32 %hi3, 224\0A %m31 = lshr i32 %cp, 6\0A %m31b = and i32 %m31, 63\0A %by31 = or i32 %m31b, 128\0A %m32 = and i32 %cp, 63\0A %by32 = or i32 %m32, 128\0A\00" -@.str3640 = private unnamed_addr constant [104 x i8] c" %p30 = getelementptr i8, ptr %dst, i32 %off\0A %t30 = trunc i32 %by30 to i8\0A store i8 %t30, ptr %p30\0A\00" -@.str3641 = private unnamed_addr constant [129 x i8] c" %o31 = add i32 %off, 1\0A %p31 = getelementptr i8, ptr %dst, i32 %o31\0A %t31 = trunc i32 %by31 to i8\0A store i8 %t31, ptr %p31\0A\00" -@.str3642 = private unnamed_addr constant [167 x i8] c" %o32 = add i32 %off, 2\0A %p32 = getelementptr i8, ptr %dst, i32 %o32\0A %t32 = trunc i32 %by32 to i8\0A store i8 %t32, ptr %p32\0A %o3 = add i32 %off, 3\0A ret i32 %o3\0A\00" -@.str3643 = private unnamed_addr constant [139 x i8] c"e4:\0A %hi4 = lshr i32 %cp, 18\0A %by40 = or i32 %hi4, 240\0A %m41 = lshr i32 %cp, 12\0A %m41b = and i32 %m41, 63\0A %by41 = or i32 %m41b, 128\0A\00" -@.str3644 = private unnamed_addr constant [133 x i8] c" %m42 = lshr i32 %cp, 6\0A %m42b = and i32 %m42, 63\0A %by42 = or i32 %m42b, 128\0A %m43 = and i32 %cp, 63\0A %by43 = or i32 %m43, 128\0A\00" -@.str3645 = private unnamed_addr constant [104 x i8] c" %p40 = getelementptr i8, ptr %dst, i32 %off\0A %t40 = trunc i32 %by40 to i8\0A store i8 %t40, ptr %p40\0A\00" -@.str3646 = private unnamed_addr constant [129 x i8] c" %o41 = add i32 %off, 1\0A %p41 = getelementptr i8, ptr %dst, i32 %o41\0A %t41 = trunc i32 %by41 to i8\0A store i8 %t41, ptr %p41\0A\00" -@.str3647 = private unnamed_addr constant [129 x i8] c" %o42 = add i32 %off, 2\0A %p42 = getelementptr i8, ptr %dst, i32 %o42\0A %t42 = trunc i32 %by42 to i8\0A store i8 %t42, ptr %p42\0A\00" -@.str3648 = private unnamed_addr constant [169 x i8] c" %o43 = add i32 %off, 3\0A %p43 = getelementptr i8, ptr %dst, i32 %o43\0A %t43 = trunc i32 %by43 to i8\0A store i8 %t43, ptr %p43\0A %o4 = add i32 %off, 4\0A ret i32 %o4\0A}\0A\00" -@.str3649 = private unnamed_addr constant [40 x i8] c"define i32 @lp_uni_is_extend(i32 %c) {\0A\00" -@.str3650 = private unnamed_addr constant [60 x i8] c" %r1 = call i32 @lp_uni_inrange(i32 %c, i32 768, i32 879)\0A\00" -@.str3651 = private unnamed_addr constant [62 x i8] c" %r2 = call i32 @lp_uni_inrange(i32 %c, i32 6832, i32 6911)\0A\00" -@.str3652 = private unnamed_addr constant [62 x i8] c" %r3 = call i32 @lp_uni_inrange(i32 %c, i32 7616, i32 7679)\0A\00" -@.str3653 = private unnamed_addr constant [62 x i8] c" %r4 = call i32 @lp_uni_inrange(i32 %c, i32 8400, i32 8447)\0A\00" -@.str3654 = private unnamed_addr constant [64 x i8] c" %r5 = call i32 @lp_uni_inrange(i32 %c, i32 65056, i32 65071)\0A\00" -@.str3655 = private unnamed_addr constant [64 x i8] c" %r6 = call i32 @lp_uni_inrange(i32 %c, i32 65024, i32 65039)\0A\00" -@.str3656 = private unnamed_addr constant [66 x i8] c" %r7 = call i32 @lp_uni_inrange(i32 %c, i32 917760, i32 917999)\0A\00" -@.str3657 = private unnamed_addr constant [161 x i8] c" %o1 = or i32 %r1, %r2\0A %o2 = or i32 %o1, %r3\0A %o3 = or i32 %o2, %r4\0A %o4 = or i32 %o3, %r5\0A %o5 = or i32 %o4, %r6\0A %o6 = or i32 %o5, %r7\0A ret i32 %o6\0A}\0A\00" -@.str3658 = private unnamed_addr constant [56 x i8] c"define i32 @lp_uni_inrange(i32 %c, i32 %lo, i32 %hi) {\0A\00" -@.str3659 = private unnamed_addr constant [118 x i8] c" %a = icmp uge i32 %c, %lo\0A %b = icmp ule i32 %c, %hi\0A %x = and i1 %a, %b\0A %r = zext i1 %x to i32\0A ret i32 %r\0A}\0A\00" -@.str3660 = private unnamed_addr constant [48 x i8] c"define i32 @lp_uni_char_at(ptr %s, i32 %idx) {\0A\00" -@.str3661 = private unnamed_addr constant [126 x i8] c"entry:\0A %ip = alloca i32\0A %kp = alloca i32\0A %cp = alloca i32\0A store i32 0, ptr %ip\0A store i32 0, ptr %kp\0A br label %lp\0A\00" -@.str3662 = private unnamed_addr constant [118 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" -@.str3663 = private unnamed_addr constant [61 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %none, label %go\0A\00" -@.str3664 = private unnamed_addr constant [157 x i8] c"go:\0A %ni = call i32 @lp_uni_decode(ptr %s, i32 %i, ptr %cp)\0A %k = load i32, ptr %kp\0A %hit = icmp eq i32 %k, %idx\0A br i1 %hit, label %found, label %next\0A\00" -@.str3665 = private unnamed_addr constant [46 x i8] c"found:\0A %v = load i32, ptr %cp\0A ret i32 %v\0A\00" -@.str3666 = private unnamed_addr constant [94 x i8] c"next:\0A %k1 = add i32 %k, 1\0A store i32 %k1, ptr %kp\0A store i32 %ni, ptr %ip\0A br label %lp\0A\00" -@.str3667 = private unnamed_addr constant [22 x i8] c"none:\0A ret i32 -1\0A}\0A\00" -@.str3668 = private unnamed_addr constant [36 x i8] c"define ptr @lp_uni_chars(ptr %s) {\0A\00" -@.str3669 = private unnamed_addr constant [76 x i8] c"entry:\0A %n = call i32 @lp_uni_len(ptr %s)\0A %h = call ptr @malloc(i64 16)\0A\00" -@.str3670 = private unnamed_addr constant [93 x i8] c" %nz = zext i32 %n to i64\0A %bytes = mul i64 %nz, 4\0A %data = call ptr @malloc(i64 %bytes)\0A\00" -@.str3671 = private unnamed_addr constant [89 x i8] c" %d0 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 0\0A store ptr %data, ptr %d0\0A\00" -@.str3672 = private unnamed_addr constant [86 x i8] c" %d1 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 1\0A store i32 %n, ptr %d1\0A\00" -@.str3673 = private unnamed_addr constant [86 x i8] c" %d2 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 2\0A store i32 %n, ptr %d2\0A\00" -@.str3674 = private unnamed_addr constant [119 x i8] c" %ip = alloca i32\0A %kp = alloca i32\0A %cp = alloca i32\0A store i32 0, ptr %ip\0A store i32 0, ptr %kp\0A br label %lp\0A\00" -@.str3675 = private unnamed_addr constant [118 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" -@.str3676 = private unnamed_addr constant [61 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %done, label %go\0A\00" -@.str3677 = private unnamed_addr constant [112 x i8] c"go:\0A %ni = call i32 @lp_uni_decode(ptr %s, i32 %i, ptr %cp)\0A %v = load i32, ptr %cp\0A %k = load i32, ptr %kp\0A\00" -@.str3678 = private unnamed_addr constant [161 x i8] c" %slot = getelementptr i32, ptr %data, i32 %k\0A store i32 %v, ptr %slot\0A %k1 = add i32 %k, 1\0A store i32 %k1, ptr %kp\0A store i32 %ni, ptr %ip\0A br label %lp\0A\00" -@.str3679 = private unnamed_addr constant [22 x i8] c"done:\0A ret ptr %h\0A}\0A\00" -@.str3680 = private unnamed_addr constant [44 x i8] c"define ptr @lp_uni_case(ptr %s, i32 %up) {\0A\00" -@.str3681 = private unnamed_addr constant [128 x i8] c"entry:\0A %bl = call i64 @strlen(ptr %s)\0A %cap0 = mul i64 %bl, 4\0A %cap = add i64 %cap0, 4\0A %out = call ptr @malloc(i64 %cap)\0A\00" -@.str3682 = private unnamed_addr constant [119 x i8] c" %ip = alloca i32\0A %op = alloca i32\0A %cp = alloca i32\0A store i32 0, ptr %ip\0A store i32 0, ptr %op\0A br label %lp\0A\00" -@.str3683 = private unnamed_addr constant [118 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" -@.str3684 = private unnamed_addr constant [61 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %done, label %go\0A\00" -@.str3685 = private unnamed_addr constant [87 x i8] c"go:\0A %ni = call i32 @lp_uni_decode(ptr %s, i32 %i, ptr %cp)\0A %v = load i32, ptr %cp\0A\00" -@.str3686 = private unnamed_addr constant [147 x i8] c" %mu = call i32 @lp_uni_upcp(i32 %v)\0A %ml = call i32 @lp_uni_locp(i32 %v)\0A %isup = icmp ne i32 %up, 0\0A %m = select i1 %isup, i32 %mu, i32 %ml\0A\00" -@.str3687 = private unnamed_addr constant [149 x i8] c" %o = load i32, ptr %op\0A %no = call i32 @lp_uni_encode(ptr %out, i32 %o, i32 %m)\0A store i32 %no, ptr %op\0A store i32 %ni, ptr %ip\0A br label %lp\0A\00" -@.str3688 = private unnamed_addr constant [120 x i8] c"done:\0A %fo = load i32, ptr %op\0A %endp = getelementptr i8, ptr %out, i32 %fo\0A store i8 0, ptr %endp\0A ret ptr %out\0A}\0A\00" -@.str3689 = private unnamed_addr constant [47 x i8] c"define ptr @lp_uni_truncate(ptr %s, i32 %n) {\0A\00" -@.str3690 = private unnamed_addr constant [126 x i8] c"entry:\0A %ip = alloca i32\0A %kp = alloca i32\0A %cp = alloca i32\0A store i32 0, ptr %ip\0A store i32 0, ptr %kp\0A br label %lp\0A\00" -@.str3691 = private unnamed_addr constant [102 x i8] c"lp:\0A %k = load i32, ptr %kp\0A %enough = icmp sge i32 %k, %n\0A br i1 %enough, label %cut, label %chk\0A\00" -@.str3692 = private unnamed_addr constant [119 x i8] c"chk:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" -@.str3693 = private unnamed_addr constant [60 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %cut, label %go\0A\00" -@.str3694 = private unnamed_addr constant [149 x i8] c"go:\0A %ni = call i32 @lp_uni_decode(ptr %s, i32 %i, ptr %cp)\0A %k1 = add i32 %k, 1\0A store i32 %k1, ptr %kp\0A store i32 %ni, ptr %ip\0A br label %lp\0A\00" -@.str3695 = private unnamed_addr constant [199 x i8] c"cut:\0A %len = load i32, ptr %ip\0A %lz = zext i32 %len to i64\0A %cap = add i64 %lz, 1\0A %out = call ptr @malloc(i64 %cap)\0A %lz2 = zext i32 %len to i64\0A call ptr @memcpy(ptr %out, ptr %s, i64 %lz2)\0A\00" -@.str3696 = private unnamed_addr constant [89 x i8] c" %endp = getelementptr i8, ptr %out, i32 %len\0A store i8 0, ptr %endp\0A ret ptr %out\0A}\0A\00" -@.str3697 = private unnamed_addr constant [43 x i8] c"define i32 @lp_uni_grapheme_len(ptr %s) {\0A\00" -@.str3698 = private unnamed_addr constant [103 x i8] c"entry:\0A %ip = alloca i32\0A %np = alloca i32\0A %zp = alloca i32\0A %rp = alloca i32\0A %cp = alloca i32\0A\00" -@.str3699 = private unnamed_addr constant [108 x i8] c" store i32 0, ptr %ip\0A store i32 0, ptr %np\0A store i32 0, ptr %zp\0A store i32 0, ptr %rp\0A br label %lp\0A\00" -@.str3700 = private unnamed_addr constant [118 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" -@.str3701 = private unnamed_addr constant [61 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %done, label %go\0A\00" -@.str3702 = private unnamed_addr constant [112 x i8] c"go:\0A %ni = call i32 @lp_uni_decode(ptr %s, i32 %i, ptr %cp)\0A %v = load i32, ptr %cp\0A store i32 %ni, ptr %ip\0A\00" -@.str3703 = private unnamed_addr constant [75 x i8] c" %iszwj = icmp eq i32 %v, 8205\0A br i1 %iszwj, label %zwj, label %notzwj\0A\00" -@.str3704 = private unnamed_addr constant [142 x i8] c"zwj:\0A %n0 = load i32, ptr %np\0A %n0z = icmp eq i32 %n0, 0\0A %n0b = zext i1 %n0z to i32\0A %n0n = add i32 %n0, %n0b\0A store i32 %n0n, ptr %np\0A\00" -@.str3705 = private unnamed_addr constant [62 x i8] c" store i32 1, ptr %zp\0A store i32 0, ptr %rp\0A br label %lp\0A\00" -@.str3706 = private unnamed_addr constant [104 x i8] c"notzwj:\0A %n = load i32, ptr %np\0A %first = icmp eq i32 %n, 0\0A br i1 %first, label %open, label %cont\0A\00" -@.str3707 = private unnamed_addr constant [160 x i8] c"open:\0A store i32 1, ptr %np\0A store i32 0, ptr %zp\0A %ri0 = call i32 @lp_uni_inrange(i32 %v, i32 127462, i32 127487)\0A store i32 %ri0, ptr %rp\0A br label %lp\0A\00" -@.str3708 = private unnamed_addr constant [109 x i8] c"cont:\0A %zj = load i32, ptr %zp\0A %afterz = icmp ne i32 %zj, 0\0A br i1 %afterz, label %joinz, label %chkext\0A\00" -@.str3709 = private unnamed_addr constant [69 x i8] c"joinz:\0A store i32 0, ptr %zp\0A store i32 0, ptr %rp\0A br label %lp\0A\00" -@.str3710 = private unnamed_addr constant [129 x i8] c"chkext:\0A %ext = call i32 @lp_uni_is_extend(i32 %v)\0A %isext = icmp ne i32 %ext, 0\0A br i1 %isext, label %joinext, label %chkri\0A\00" -@.str3711 = private unnamed_addr constant [48 x i8] c"joinext:\0A store i32 0, ptr %rp\0A br label %lp\0A\00" -@.str3712 = private unnamed_addr constant [240 x i8] c"chkri:\0A %ri = call i32 @lp_uni_inrange(i32 %v, i32 127462, i32 127487)\0A %isri = icmp ne i32 %ri, 0\0A %ropen = load i32, ptr %rp\0A %ropenb = icmp ne i32 %ropen, 0\0A %pair = and i1 %isri, %ropenb\0A br i1 %pair, label %joinri, label %newcl\0A\00" -@.str3713 = private unnamed_addr constant [47 x i8] c"joinri:\0A store i32 0, ptr %rp\0A br label %lp\0A\00" -@.str3714 = private unnamed_addr constant [191 x i8] c"newcl:\0A %nn = load i32, ptr %np\0A %nn1 = add i32 %nn, 1\0A store i32 %nn1, ptr %np\0A store i32 0, ptr %zp\0A %riset = select i1 %isri, i32 1, i32 0\0A store i32 %riset, ptr %rp\0A br label %lp\0A\00" -@.str3715 = private unnamed_addr constant [47 x i8] c"done:\0A %r = load i32, ptr %np\0A ret i32 %r\0A}\0A\00" -@.str3716 = private unnamed_addr constant [7 x i8] c"exists\00" -@.str3717 = private unnamed_addr constant [7 x i8] c"is_dir\00" -@.str3718 = private unnamed_addr constant [10 x i8] c"read_text\00" -@.str3719 = private unnamed_addr constant [11 x i8] c"write_text\00" -@.str3720 = private unnamed_addr constant [12 x i8] c"append_text\00" -@.str3721 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str3722 = private unnamed_addr constant [5 x i8] c"size\00" -@.str3723 = private unnamed_addr constant [6 x i8] c"mkdir\00" -@.str3724 = private unnamed_addr constant [5 x i8] c"copy\00" -@.str3725 = private unnamed_addr constant [5 x i8] c"list\00" -@.str3726 = private unnamed_addr constant [5 x i8] c"join\00" -@.str3727 = private unnamed_addr constant [4 x i8] c"dir\00" -@.str3728 = private unnamed_addr constant [5 x i8] c"base\00" -@.str3729 = private unnamed_addr constant [4 x i8] c"ext\00" -@.str3730 = private unnamed_addr constant [5 x i8] c"stem\00" -@.str3731 = private unnamed_addr constant [10 x i8] c"normalize\00" -@.str3732 = private unnamed_addr constant [3 x i8] c"of\00" -@.str3733 = private unnamed_addr constant [6 x i8] c"sniff\00" -@.str3734 = private unnamed_addr constant [7 x i8] c"exists\00" -@.str3735 = private unnamed_addr constant [28 x i8] c"call i32 @lp_fs_exists(ptr \00" -@.str3736 = private unnamed_addr constant [2 x i8] c")\00" -@.str3737 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str3738 = private unnamed_addr constant [7 x i8] c"is_dir\00" -@.str3739 = private unnamed_addr constant [28 x i8] c"call i32 @lp_fs_is_dir(ptr \00" -@.str3740 = private unnamed_addr constant [2 x i8] c")\00" -@.str3741 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str3742 = private unnamed_addr constant [10 x i8] c"read_text\00" -@.str3743 = private unnamed_addr constant [31 x i8] c"call ptr @lp_fs_read_text(ptr \00" -@.str3744 = private unnamed_addr constant [2 x i8] c")\00" -@.str3745 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3746 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str3747 = private unnamed_addr constant [28 x i8] c"call i32 @lp_fs_remove(ptr \00" -@.str3748 = private unnamed_addr constant [2 x i8] c")\00" -@.str3749 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str3750 = private unnamed_addr constant [5 x i8] c"size\00" -@.str3751 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fs_size(ptr \00" -@.str3752 = private unnamed_addr constant [2 x i8] c")\00" -@.str3753 = private unnamed_addr constant [4 x i8] c"int\00" -@.str3754 = private unnamed_addr constant [6 x i8] c"mkdir\00" -@.str3755 = private unnamed_addr constant [27 x i8] c"call i32 @lp_fs_mkdir(ptr \00" -@.str3756 = private unnamed_addr constant [2 x i8] c")\00" -@.str3757 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str3758 = private unnamed_addr constant [5 x i8] c"list\00" -@.str3759 = private unnamed_addr constant [26 x i8] c"call ptr @lp_fs_list(ptr \00" -@.str3760 = private unnamed_addr constant [2 x i8] c")\00" -@.str3761 = private unnamed_addr constant [9 x i8] c"[]string\00" -@.str3762 = private unnamed_addr constant [11 x i8] c"write_text\00" -@.str3763 = private unnamed_addr constant [32 x i8] c"call i32 @lp_fs_write_text(ptr \00" -@.str3764 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str3765 = private unnamed_addr constant [2 x i8] c")\00" -@.str3766 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str3767 = private unnamed_addr constant [12 x i8] c"append_text\00" -@.str3768 = private unnamed_addr constant [33 x i8] c"call i32 @lp_fs_append_text(ptr \00" -@.str3769 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str3770 = private unnamed_addr constant [2 x i8] c")\00" -@.str3771 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str3772 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fs_copy(ptr \00" -@.str3773 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str3774 = private unnamed_addr constant [2 x i8] c")\00" -@.str3775 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str3776 = private unnamed_addr constant [4 x i8] c"dir\00" -@.str3777 = private unnamed_addr constant [27 x i8] c"call ptr @lp_path_dir(ptr \00" -@.str3778 = private unnamed_addr constant [2 x i8] c")\00" -@.str3779 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3780 = private unnamed_addr constant [5 x i8] c"base\00" -@.str3781 = private unnamed_addr constant [28 x i8] c"call ptr @lp_path_base(ptr \00" -@.str3782 = private unnamed_addr constant [2 x i8] c")\00" -@.str3783 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3784 = private unnamed_addr constant [4 x i8] c"ext\00" -@.str3785 = private unnamed_addr constant [27 x i8] c"call ptr @lp_path_ext(ptr \00" -@.str3786 = private unnamed_addr constant [2 x i8] c")\00" -@.str3787 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3788 = private unnamed_addr constant [5 x i8] c"stem\00" -@.str3789 = private unnamed_addr constant [28 x i8] c"call ptr @lp_path_stem(ptr \00" -@.str3790 = private unnamed_addr constant [2 x i8] c")\00" -@.str3791 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3792 = private unnamed_addr constant [10 x i8] c"normalize\00" -@.str3793 = private unnamed_addr constant [28 x i8] c"call ptr @lp_path_norm(ptr \00" -@.str3794 = private unnamed_addr constant [2 x i8] c")\00" -@.str3795 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3796 = private unnamed_addr constant [28 x i8] c"call ptr @lp_path_join(ptr \00" -@.str3797 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str3798 = private unnamed_addr constant [2 x i8] c")\00" -@.str3799 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3800 = private unnamed_addr constant [6 x i8] c"sniff\00" -@.str3801 = private unnamed_addr constant [29 x i8] c"call ptr @lp_mime_sniff(ptr \00" -@.str3802 = private unnamed_addr constant [2 x i8] c")\00" -@.str3803 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3804 = private unnamed_addr constant [26 x i8] c"call ptr @lp_mime_of(ptr \00" +@.str3546 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3547 = private unnamed_addr constant [35 x i8] c"call i32 @lp_uni_grapheme_len(ptr \00" +@.str3548 = private unnamed_addr constant [2 x i8] c")\00" +@.str3549 = private unnamed_addr constant [4 x i8] c"int\00" +@.str3550 = private unnamed_addr constant [34 x i8] c"define i32 @lp_uni_len(ptr %s) {\0A\00" +@.str3551 = private unnamed_addr constant [107 x i8] c"entry:\0A %ip = alloca i32\0A %np = alloca i32\0A store i32 0, ptr %ip\0A store i32 0, ptr %np\0A br label %lp\0A\00" +@.str3552 = private unnamed_addr constant [118 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" +@.str3553 = private unnamed_addr constant [61 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %done, label %go\0A\00" +@.str3554 = private unnamed_addr constant [99 x i8] c"go:\0A %m = and i32 %c, 192\0A %cont = icmp eq i32 %m, 128\0A br i1 %cont, label %skip, label %count\0A\00" +@.str3555 = private unnamed_addr constant [97 x i8] c"count:\0A %n = load i32, ptr %np\0A %n1 = add i32 %n, 1\0A store i32 %n1, ptr %np\0A br label %skip\0A\00" +@.str3556 = private unnamed_addr constant [69 x i8] c"skip:\0A %i1 = add i32 %i, 1\0A store i32 %i1, ptr %ip\0A br label %lp\0A\00" +@.str3557 = private unnamed_addr constant [47 x i8] c"done:\0A %r = load i32, ptr %np\0A ret i32 %r\0A}\0A\00" +@.str3558 = private unnamed_addr constant [57 x i8] c"define i32 @lp_uni_decode(ptr %s, i32 %i, ptr %cpout) {\0A\00" +@.str3559 = private unnamed_addr constant [101 x i8] c"entry:\0A %p0 = getelementptr i8, ptr %s, i32 %i\0A %b0 = load i8, ptr %p0\0A %c0 = zext i8 %b0 to i32\0A\00" +@.str3560 = private unnamed_addr constant [69 x i8] c" %a1 = icmp ult i32 %c0, 128\0A br i1 %a1, label %one, label %multi\0A\00" +@.str3561 = private unnamed_addr constant [70 x i8] c"one:\0A store i32 %c0, ptr %cpout\0A %oi = add i32 %i, 1\0A ret i32 %oi\0A\00" +@.str3562 = private unnamed_addr constant [99 x i8] c"multi:\0A %h2 = and i32 %c0, 224\0A %is2 = icmp eq i32 %h2, 192\0A br i1 %is2, label %two, label %c3\0A\00" +@.str3563 = private unnamed_addr constant [98 x i8] c"c3:\0A %h3 = and i32 %c0, 240\0A %is3 = icmp eq i32 %h3, 224\0A br i1 %is3, label %three, label %c4\0A\00" +@.str3564 = private unnamed_addr constant [98 x i8] c"c4:\0A %h4 = and i32 %c0, 248\0A %is4 = icmp eq i32 %h4, 240\0A br i1 %is4, label %four, label %bad\0A\00" +@.str3565 = private unnamed_addr constant [70 x i8] c"bad:\0A store i32 %c0, ptr %cpout\0A %bi = add i32 %i, 1\0A ret i32 %bi\0A\00" +@.str3566 = private unnamed_addr constant [128 x i8] c"two:\0A %t1i = add i32 %i, 1\0A %t1p = getelementptr i8, ptr %s, i32 %t1i\0A %t1b = load i8, ptr %t1p\0A %t1 = zext i8 %t1b to i32\0A\00" +@.str3567 = private unnamed_addr constant [67 x i8] c" %t1z = icmp eq i32 %t1, 0\0A br i1 %t1z, label %tbad, label %tok\0A\00" +@.str3568 = private unnamed_addr constant [73 x i8] c"tbad:\0A store i32 %c0, ptr %cpout\0A %tbi = add i32 %i, 1\0A ret i32 %tbi\0A\00" +@.str3569 = private unnamed_addr constant [169 x i8] c"tok:\0A %tm = and i32 %c0, 31\0A %tsh = shl i32 %tm, 6\0A %tl = and i32 %t1, 63\0A %tcp = or i32 %tsh, %tl\0A store i32 %tcp, ptr %cpout\0A %ti = add i32 %i, 2\0A ret i32 %ti\0A\00" +@.str3570 = private unnamed_addr constant [130 x i8] c"three:\0A %r1i = add i32 %i, 1\0A %r1p = getelementptr i8, ptr %s, i32 %r1i\0A %r1b = load i8, ptr %r1p\0A %r1 = zext i8 %r1b to i32\0A\00" +@.str3571 = private unnamed_addr constant [67 x i8] c" %r1z = icmp eq i32 %r1, 0\0A br i1 %r1z, label %rbad, label %rc2\0A\00" +@.str3572 = private unnamed_addr constant [73 x i8] c"rbad:\0A store i32 %c0, ptr %cpout\0A %rbi = add i32 %i, 1\0A ret i32 %rbi\0A\00" +@.str3573 = private unnamed_addr constant [128 x i8] c"rc2:\0A %r2i = add i32 %i, 2\0A %r2p = getelementptr i8, ptr %s, i32 %r2i\0A %r2b = load i8, ptr %r2p\0A %r2 = zext i8 %r2b to i32\0A\00" +@.str3574 = private unnamed_addr constant [67 x i8] c" %r2z = icmp eq i32 %r2, 0\0A br i1 %r2z, label %rbad, label %rok\0A\00" +@.str3575 = private unnamed_addr constant [131 x i8] c"rok:\0A %rm = and i32 %c0, 15\0A %rsh = shl i32 %rm, 12\0A %ram = and i32 %r1, 63\0A %rash = shl i32 %ram, 6\0A %rbm = and i32 %r2, 63\0A\00" +@.str3576 = private unnamed_addr constant [121 x i8] c" %rp1 = or i32 %rsh, %rash\0A %rcp = or i32 %rp1, %rbm\0A store i32 %rcp, ptr %cpout\0A %ri = add i32 %i, 3\0A ret i32 %ri\0A\00" +@.str3577 = private unnamed_addr constant [129 x i8] c"four:\0A %f1i = add i32 %i, 1\0A %f1p = getelementptr i8, ptr %s, i32 %f1i\0A %f1b = load i8, ptr %f1p\0A %f1 = zext i8 %f1b to i32\0A\00" +@.str3578 = private unnamed_addr constant [67 x i8] c" %f1z = icmp eq i32 %f1, 0\0A br i1 %f1z, label %fbad, label %fc2\0A\00" +@.str3579 = private unnamed_addr constant [73 x i8] c"fbad:\0A store i32 %c0, ptr %cpout\0A %fbi = add i32 %i, 1\0A ret i32 %fbi\0A\00" +@.str3580 = private unnamed_addr constant [128 x i8] c"fc2:\0A %f2i = add i32 %i, 2\0A %f2p = getelementptr i8, ptr %s, i32 %f2i\0A %f2b = load i8, ptr %f2p\0A %f2 = zext i8 %f2b to i32\0A\00" +@.str3581 = private unnamed_addr constant [67 x i8] c" %f2z = icmp eq i32 %f2, 0\0A br i1 %f2z, label %fbad, label %fc3\0A\00" +@.str3582 = private unnamed_addr constant [128 x i8] c"fc3:\0A %f3i = add i32 %i, 3\0A %f3p = getelementptr i8, ptr %s, i32 %f3i\0A %f3b = load i8, ptr %f3p\0A %f3 = zext i8 %f3b to i32\0A\00" +@.str3583 = private unnamed_addr constant [67 x i8] c" %f3z = icmp eq i32 %f3, 0\0A br i1 %f3z, label %fbad, label %fok\0A\00" +@.str3584 = private unnamed_addr constant [106 x i8] c"fok:\0A %fm = and i32 %c0, 7\0A %fsh = shl i32 %fm, 18\0A %fam = and i32 %f1, 63\0A %fash = shl i32 %fam, 12\0A\00" +@.str3585 = private unnamed_addr constant [77 x i8] c" %fbm = and i32 %f2, 63\0A %fbsh = shl i32 %fbm, 6\0A %fcm = and i32 %f3, 63\0A\00" +@.str3586 = private unnamed_addr constant [151 x i8] c" %fp1 = or i32 %fsh, %fash\0A %fp2 = or i32 %fp1, %fbsh\0A %fcp = or i32 %fp2, %fcm\0A store i32 %fcp, ptr %cpout\0A %fi = add i32 %i, 4\0A ret i32 %fi\0A}\0A\00" +@.str3587 = private unnamed_addr constant [36 x i8] c"define i32 @lp_uni_valid(ptr %s) {\0A\00" +@.str3588 = private unnamed_addr constant [65 x i8] c"entry:\0A %ip = alloca i32\0A store i32 0, ptr %ip\0A br label %lp\0A\00" +@.str3589 = private unnamed_addr constant [118 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" +@.str3590 = private unnamed_addr constant [60 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %good, label %g\0A\00" +@.str3591 = private unnamed_addr constant [69 x i8] c"g:\0A %a1 = icmp ult i32 %c, 128\0A br i1 %a1, label %adv1, label %m2\0A\00" +@.str3592 = private unnamed_addr constant [69 x i8] c"adv1:\0A %n1 = add i32 %i, 1\0A store i32 %n1, ptr %ip\0A br label %lp\0A\00" +@.str3593 = private unnamed_addr constant [95 x i8] c"m2:\0A %h2 = and i32 %c, 224\0A %is2 = icmp eq i32 %h2, 192\0A br i1 %is2, label %do2, label %m3\0A\00" +@.str3594 = private unnamed_addr constant [95 x i8] c"m3:\0A %h3 = and i32 %c, 240\0A %is3 = icmp eq i32 %h3, 224\0A br i1 %is3, label %do3, label %m4\0A\00" +@.str3595 = private unnamed_addr constant [96 x i8] c"m4:\0A %h4 = and i32 %c, 248\0A %is4 = icmp eq i32 %h4, 240\0A br i1 %is4, label %do4, label %bad\0A\00" +@.str3596 = private unnamed_addr constant [18 x i8] c"bad:\0A ret i32 0\0A\00" +@.str3597 = private unnamed_addr constant [128 x i8] c"do2:\0A %v1i = add i32 %i, 1\0A %v1p = getelementptr i8, ptr %s, i32 %v1i\0A %v1b = load i8, ptr %v1p\0A %v1 = zext i8 %v1b to i32\0A\00" +@.str3598 = private unnamed_addr constant [98 x i8] c" %v1m = and i32 %v1, 192\0A %v1ok = icmp eq i32 %v1m, 128\0A br i1 %v1ok, label %do2b, label %bad\0A\00" +@.str3599 = private unnamed_addr constant [108 x i8] c"do2b:\0A %q2m = and i32 %c, 31\0A %q2s = shl i32 %q2m, 6\0A %q2l = and i32 %v1, 63\0A %cp2 = or i32 %q2s, %q2l\0A\00" +@.str3600 = private unnamed_addr constant [71 x i8] c" %ov2 = icmp ult i32 %cp2, 128\0A br i1 %ov2, label %bad, label %adv2\0A\00" +@.str3601 = private unnamed_addr constant [69 x i8] c"adv2:\0A %n2 = add i32 %i, 2\0A store i32 %n2, ptr %ip\0A br label %lp\0A\00" +@.str3602 = private unnamed_addr constant [128 x i8] c"do3:\0A %w1i = add i32 %i, 1\0A %w1p = getelementptr i8, ptr %s, i32 %w1i\0A %w1b = load i8, ptr %w1p\0A %w1 = zext i8 %w1b to i32\0A\00" +@.str3603 = private unnamed_addr constant [98 x i8] c" %w1m = and i32 %w1, 192\0A %w1ok = icmp eq i32 %w1m, 128\0A br i1 %w1ok, label %do3b, label %bad\0A\00" +@.str3604 = private unnamed_addr constant [129 x i8] c"do3b:\0A %w2i = add i32 %i, 2\0A %w2p = getelementptr i8, ptr %s, i32 %w2i\0A %w2b = load i8, ptr %w2p\0A %w2 = zext i8 %w2b to i32\0A\00" +@.str3605 = private unnamed_addr constant [98 x i8] c" %w2m = and i32 %w2, 192\0A %w2ok = icmp eq i32 %w2m, 128\0A br i1 %w2ok, label %do3c, label %bad\0A\00" +@.str3606 = private unnamed_addr constant [136 x i8] c"do3c:\0A %e3m = and i32 %c, 15\0A %e3s = shl i32 %e3m, 12\0A %e3am = and i32 %w1, 63\0A %e3as = shl i32 %e3am, 6\0A %e3bm = and i32 %w2, 63\0A\00" +@.str3607 = private unnamed_addr constant [59 x i8] c" %cp3p = or i32 %e3s, %e3as\0A %cp3 = or i32 %cp3p, %e3bm\0A\00" +@.str3608 = private unnamed_addr constant [72 x i8] c" %ov3 = icmp ult i32 %cp3, 2048\0A br i1 %ov3, label %bad, label %do3d\0A\00" +@.str3609 = private unnamed_addr constant [138 x i8] c"do3d:\0A %sg1 = icmp uge i32 %cp3, 55296\0A %sg2 = icmp ule i32 %cp3, 57343\0A %sg = and i1 %sg1, %sg2\0A br i1 %sg, label %bad, label %adv3\0A\00" +@.str3610 = private unnamed_addr constant [69 x i8] c"adv3:\0A %n3 = add i32 %i, 3\0A store i32 %n3, ptr %ip\0A br label %lp\0A\00" +@.str3611 = private unnamed_addr constant [128 x i8] c"do4:\0A %x1i = add i32 %i, 1\0A %x1p = getelementptr i8, ptr %s, i32 %x1i\0A %x1b = load i8, ptr %x1p\0A %x1 = zext i8 %x1b to i32\0A\00" +@.str3612 = private unnamed_addr constant [98 x i8] c" %x1m = and i32 %x1, 192\0A %x1ok = icmp eq i32 %x1m, 128\0A br i1 %x1ok, label %do4b, label %bad\0A\00" +@.str3613 = private unnamed_addr constant [129 x i8] c"do4b:\0A %x2i = add i32 %i, 2\0A %x2p = getelementptr i8, ptr %s, i32 %x2i\0A %x2b = load i8, ptr %x2p\0A %x2 = zext i8 %x2b to i32\0A\00" +@.str3614 = private unnamed_addr constant [98 x i8] c" %x2m = and i32 %x2, 192\0A %x2ok = icmp eq i32 %x2m, 128\0A br i1 %x2ok, label %do4c, label %bad\0A\00" +@.str3615 = private unnamed_addr constant [129 x i8] c"do4c:\0A %x3i = add i32 %i, 3\0A %x3p = getelementptr i8, ptr %s, i32 %x3i\0A %x3b = load i8, ptr %x3p\0A %x3 = zext i8 %x3b to i32\0A\00" +@.str3616 = private unnamed_addr constant [98 x i8] c" %x3m = and i32 %x3, 192\0A %x3ok = icmp eq i32 %x3m, 128\0A br i1 %x3ok, label %do4d, label %bad\0A\00" +@.str3617 = private unnamed_addr constant [180 x i8] c"do4d:\0A %y0 = and i32 %c, 7\0A %y0s = shl i32 %y0, 18\0A %y1m = and i32 %x1, 63\0A %y1s = shl i32 %y1m, 12\0A %y2m = and i32 %x2, 63\0A %y2s = shl i32 %y2m, 6\0A %y3m = and i32 %x3, 63\0A\00" +@.str3618 = private unnamed_addr constant [86 x i8] c" %cp4p = or i32 %y0s, %y1s\0A %cp4q = or i32 %cp4p, %y2s\0A %cp4 = or i32 %cp4q, %y3m\0A\00" +@.str3619 = private unnamed_addr constant [73 x i8] c" %ov4 = icmp ult i32 %cp4, 65536\0A br i1 %ov4, label %bad, label %do4e\0A\00" +@.str3620 = private unnamed_addr constant [81 x i8] c"do4e:\0A %hi4 = icmp ugt i32 %cp4, 1114111\0A br i1 %hi4, label %bad, label %adv4\0A\00" +@.str3621 = private unnamed_addr constant [69 x i8] c"adv4:\0A %n4 = add i32 %i, 4\0A store i32 %n4, ptr %ip\0A br label %lp\0A\00" +@.str3622 = private unnamed_addr constant [21 x i8] c"good:\0A ret i32 1\0A}\0A\00" +@.str3623 = private unnamed_addr constant [35 x i8] c"define i32 @lp_uni_upcp(i32 %c) {\0A\00" +@.str3624 = private unnamed_addr constant [83 x i8] c" %la = icmp uge i32 %c, 97\0A %lb = icmp ule i32 %c, 122\0A %asc = and i1 %la, %lb\0A\00" +@.str3625 = private unnamed_addr constant [135 x i8] c" %da = icmp uge i32 %c, 224\0A %db = icmp ule i32 %c, 254\0A %dd = icmp ne i32 %c, 247\0A %d1 = and i1 %da, %db\0A %d2 = and i1 %d1, %dd\0A\00" +@.str3626 = private unnamed_addr constant [103 x i8] c" %map = or i1 %asc, %d2\0A %up = sub i32 %c, 32\0A %r = select i1 %map, i32 %up, i32 %c\0A ret i32 %r\0A}\0A\00" +@.str3627 = private unnamed_addr constant [35 x i8] c"define i32 @lp_uni_locp(i32 %c) {\0A\00" +@.str3628 = private unnamed_addr constant [82 x i8] c" %ua = icmp uge i32 %c, 65\0A %ub = icmp ule i32 %c, 90\0A %asc = and i1 %ua, %ub\0A\00" +@.str3629 = private unnamed_addr constant [135 x i8] c" %da = icmp uge i32 %c, 192\0A %db = icmp ule i32 %c, 222\0A %dd = icmp ne i32 %c, 215\0A %d1 = and i1 %da, %db\0A %d2 = and i1 %d1, %dd\0A\00" +@.str3630 = private unnamed_addr constant [103 x i8] c" %map = or i1 %asc, %d2\0A %lo = add i32 %c, 32\0A %r = select i1 %map, i32 %lo, i32 %c\0A ret i32 %r\0A}\0A\00" +@.str3631 = private unnamed_addr constant [39 x i8] c"define i32 @lp_uni_cpwidth(i32 %cp) {\0A\00" +@.str3632 = private unnamed_addr constant [91 x i8] c" %a = icmp ult i32 %cp, 128\0A %b = icmp ult i32 %cp, 2048\0A %c = icmp ult i32 %cp, 65536\0A\00" +@.str3633 = private unnamed_addr constant [130 x i8] c" %w34 = select i1 %c, i32 3, i32 4\0A %w234 = select i1 %b, i32 2, i32 %w34\0A %w = select i1 %a, i32 1, i32 %w234\0A ret i32 %w\0A}\0A\00" +@.str3634 = private unnamed_addr constant [58 x i8] c"define i32 @lp_uni_encode(ptr %dst, i32 %off, i32 %cp) {\0A\00" +@.str3635 = private unnamed_addr constant [111 x i8] c"entry:\0A %w = call i32 @lp_uni_cpwidth(i32 %cp)\0A %is1 = icmp eq i32 %w, 1\0A br i1 %is1, label %e1, label %k2\0A\00" +@.str3636 = private unnamed_addr constant [140 x i8] c"e1:\0A %d0 = getelementptr i8, ptr %dst, i32 %off\0A %b0 = trunc i32 %cp to i8\0A store i8 %b0, ptr %d0\0A %o1 = add i32 %off, 1\0A ret i32 %o1\0A\00" +@.str3637 = private unnamed_addr constant [67 x i8] c"k2:\0A %is2 = icmp eq i32 %w, 2\0A br i1 %is2, label %e2, label %k3\0A\00" +@.str3638 = private unnamed_addr constant [107 x i8] c"e2:\0A %hi2 = lshr i32 %cp, 6\0A %by0 = or i32 %hi2, 192\0A %lo2 = and i32 %cp, 63\0A %by1 = or i32 %lo2, 128\0A\00" +@.str3639 = private unnamed_addr constant [103 x i8] c" %p20 = getelementptr i8, ptr %dst, i32 %off\0A %t20 = trunc i32 %by0 to i8\0A store i8 %t20, ptr %p20\0A\00" +@.str3640 = private unnamed_addr constant [166 x i8] c" %o21 = add i32 %off, 1\0A %p21 = getelementptr i8, ptr %dst, i32 %o21\0A %t21 = trunc i32 %by1 to i8\0A store i8 %t21, ptr %p21\0A %o2 = add i32 %off, 2\0A ret i32 %o2\0A\00" +@.str3641 = private unnamed_addr constant [67 x i8] c"k3:\0A %is3 = icmp eq i32 %w, 3\0A br i1 %is3, label %e3, label %e4\0A\00" +@.str3642 = private unnamed_addr constant [190 x i8] c"e3:\0A %hi3 = lshr i32 %cp, 12\0A %by30 = or i32 %hi3, 224\0A %m31 = lshr i32 %cp, 6\0A %m31b = and i32 %m31, 63\0A %by31 = or i32 %m31b, 128\0A %m32 = and i32 %cp, 63\0A %by32 = or i32 %m32, 128\0A\00" +@.str3643 = private unnamed_addr constant [104 x i8] c" %p30 = getelementptr i8, ptr %dst, i32 %off\0A %t30 = trunc i32 %by30 to i8\0A store i8 %t30, ptr %p30\0A\00" +@.str3644 = private unnamed_addr constant [129 x i8] c" %o31 = add i32 %off, 1\0A %p31 = getelementptr i8, ptr %dst, i32 %o31\0A %t31 = trunc i32 %by31 to i8\0A store i8 %t31, ptr %p31\0A\00" +@.str3645 = private unnamed_addr constant [167 x i8] c" %o32 = add i32 %off, 2\0A %p32 = getelementptr i8, ptr %dst, i32 %o32\0A %t32 = trunc i32 %by32 to i8\0A store i8 %t32, ptr %p32\0A %o3 = add i32 %off, 3\0A ret i32 %o3\0A\00" +@.str3646 = private unnamed_addr constant [139 x i8] c"e4:\0A %hi4 = lshr i32 %cp, 18\0A %by40 = or i32 %hi4, 240\0A %m41 = lshr i32 %cp, 12\0A %m41b = and i32 %m41, 63\0A %by41 = or i32 %m41b, 128\0A\00" +@.str3647 = private unnamed_addr constant [133 x i8] c" %m42 = lshr i32 %cp, 6\0A %m42b = and i32 %m42, 63\0A %by42 = or i32 %m42b, 128\0A %m43 = and i32 %cp, 63\0A %by43 = or i32 %m43, 128\0A\00" +@.str3648 = private unnamed_addr constant [104 x i8] c" %p40 = getelementptr i8, ptr %dst, i32 %off\0A %t40 = trunc i32 %by40 to i8\0A store i8 %t40, ptr %p40\0A\00" +@.str3649 = private unnamed_addr constant [129 x i8] c" %o41 = add i32 %off, 1\0A %p41 = getelementptr i8, ptr %dst, i32 %o41\0A %t41 = trunc i32 %by41 to i8\0A store i8 %t41, ptr %p41\0A\00" +@.str3650 = private unnamed_addr constant [129 x i8] c" %o42 = add i32 %off, 2\0A %p42 = getelementptr i8, ptr %dst, i32 %o42\0A %t42 = trunc i32 %by42 to i8\0A store i8 %t42, ptr %p42\0A\00" +@.str3651 = private unnamed_addr constant [169 x i8] c" %o43 = add i32 %off, 3\0A %p43 = getelementptr i8, ptr %dst, i32 %o43\0A %t43 = trunc i32 %by43 to i8\0A store i8 %t43, ptr %p43\0A %o4 = add i32 %off, 4\0A ret i32 %o4\0A}\0A\00" +@.str3652 = private unnamed_addr constant [40 x i8] c"define i32 @lp_uni_is_extend(i32 %c) {\0A\00" +@.str3653 = private unnamed_addr constant [60 x i8] c" %r1 = call i32 @lp_uni_inrange(i32 %c, i32 768, i32 879)\0A\00" +@.str3654 = private unnamed_addr constant [62 x i8] c" %r2 = call i32 @lp_uni_inrange(i32 %c, i32 6832, i32 6911)\0A\00" +@.str3655 = private unnamed_addr constant [62 x i8] c" %r3 = call i32 @lp_uni_inrange(i32 %c, i32 7616, i32 7679)\0A\00" +@.str3656 = private unnamed_addr constant [62 x i8] c" %r4 = call i32 @lp_uni_inrange(i32 %c, i32 8400, i32 8447)\0A\00" +@.str3657 = private unnamed_addr constant [64 x i8] c" %r5 = call i32 @lp_uni_inrange(i32 %c, i32 65056, i32 65071)\0A\00" +@.str3658 = private unnamed_addr constant [64 x i8] c" %r6 = call i32 @lp_uni_inrange(i32 %c, i32 65024, i32 65039)\0A\00" +@.str3659 = private unnamed_addr constant [66 x i8] c" %r7 = call i32 @lp_uni_inrange(i32 %c, i32 917760, i32 917999)\0A\00" +@.str3660 = private unnamed_addr constant [161 x i8] c" %o1 = or i32 %r1, %r2\0A %o2 = or i32 %o1, %r3\0A %o3 = or i32 %o2, %r4\0A %o4 = or i32 %o3, %r5\0A %o5 = or i32 %o4, %r6\0A %o6 = or i32 %o5, %r7\0A ret i32 %o6\0A}\0A\00" +@.str3661 = private unnamed_addr constant [56 x i8] c"define i32 @lp_uni_inrange(i32 %c, i32 %lo, i32 %hi) {\0A\00" +@.str3662 = private unnamed_addr constant [118 x i8] c" %a = icmp uge i32 %c, %lo\0A %b = icmp ule i32 %c, %hi\0A %x = and i1 %a, %b\0A %r = zext i1 %x to i32\0A ret i32 %r\0A}\0A\00" +@.str3663 = private unnamed_addr constant [48 x i8] c"define i32 @lp_uni_char_at(ptr %s, i32 %idx) {\0A\00" +@.str3664 = private unnamed_addr constant [126 x i8] c"entry:\0A %ip = alloca i32\0A %kp = alloca i32\0A %cp = alloca i32\0A store i32 0, ptr %ip\0A store i32 0, ptr %kp\0A br label %lp\0A\00" +@.str3665 = private unnamed_addr constant [118 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" +@.str3666 = private unnamed_addr constant [61 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %none, label %go\0A\00" +@.str3667 = private unnamed_addr constant [157 x i8] c"go:\0A %ni = call i32 @lp_uni_decode(ptr %s, i32 %i, ptr %cp)\0A %k = load i32, ptr %kp\0A %hit = icmp eq i32 %k, %idx\0A br i1 %hit, label %found, label %next\0A\00" +@.str3668 = private unnamed_addr constant [46 x i8] c"found:\0A %v = load i32, ptr %cp\0A ret i32 %v\0A\00" +@.str3669 = private unnamed_addr constant [94 x i8] c"next:\0A %k1 = add i32 %k, 1\0A store i32 %k1, ptr %kp\0A store i32 %ni, ptr %ip\0A br label %lp\0A\00" +@.str3670 = private unnamed_addr constant [22 x i8] c"none:\0A ret i32 -1\0A}\0A\00" +@.str3671 = private unnamed_addr constant [36 x i8] c"define ptr @lp_uni_chars(ptr %s) {\0A\00" +@.str3672 = private unnamed_addr constant [76 x i8] c"entry:\0A %n = call i32 @lp_uni_len(ptr %s)\0A %h = call ptr @malloc(i64 16)\0A\00" +@.str3673 = private unnamed_addr constant [93 x i8] c" %nz = zext i32 %n to i64\0A %bytes = mul i64 %nz, 4\0A %data = call ptr @malloc(i64 %bytes)\0A\00" +@.str3674 = private unnamed_addr constant [89 x i8] c" %d0 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 0\0A store ptr %data, ptr %d0\0A\00" +@.str3675 = private unnamed_addr constant [86 x i8] c" %d1 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 1\0A store i32 %n, ptr %d1\0A\00" +@.str3676 = private unnamed_addr constant [86 x i8] c" %d2 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 2\0A store i32 %n, ptr %d2\0A\00" +@.str3677 = private unnamed_addr constant [119 x i8] c" %ip = alloca i32\0A %kp = alloca i32\0A %cp = alloca i32\0A store i32 0, ptr %ip\0A store i32 0, ptr %kp\0A br label %lp\0A\00" +@.str3678 = private unnamed_addr constant [118 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" +@.str3679 = private unnamed_addr constant [61 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %done, label %go\0A\00" +@.str3680 = private unnamed_addr constant [112 x i8] c"go:\0A %ni = call i32 @lp_uni_decode(ptr %s, i32 %i, ptr %cp)\0A %v = load i32, ptr %cp\0A %k = load i32, ptr %kp\0A\00" +@.str3681 = private unnamed_addr constant [161 x i8] c" %slot = getelementptr i32, ptr %data, i32 %k\0A store i32 %v, ptr %slot\0A %k1 = add i32 %k, 1\0A store i32 %k1, ptr %kp\0A store i32 %ni, ptr %ip\0A br label %lp\0A\00" +@.str3682 = private unnamed_addr constant [22 x i8] c"done:\0A ret ptr %h\0A}\0A\00" +@.str3683 = private unnamed_addr constant [44 x i8] c"define ptr @lp_uni_case(ptr %s, i32 %up) {\0A\00" +@.str3684 = private unnamed_addr constant [128 x i8] c"entry:\0A %bl = call i64 @strlen(ptr %s)\0A %cap0 = mul i64 %bl, 4\0A %cap = add i64 %cap0, 4\0A %out = call ptr @malloc(i64 %cap)\0A\00" +@.str3685 = private unnamed_addr constant [119 x i8] c" %ip = alloca i32\0A %op = alloca i32\0A %cp = alloca i32\0A store i32 0, ptr %ip\0A store i32 0, ptr %op\0A br label %lp\0A\00" +@.str3686 = private unnamed_addr constant [118 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" +@.str3687 = private unnamed_addr constant [61 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %done, label %go\0A\00" +@.str3688 = private unnamed_addr constant [87 x i8] c"go:\0A %ni = call i32 @lp_uni_decode(ptr %s, i32 %i, ptr %cp)\0A %v = load i32, ptr %cp\0A\00" +@.str3689 = private unnamed_addr constant [147 x i8] c" %mu = call i32 @lp_uni_upcp(i32 %v)\0A %ml = call i32 @lp_uni_locp(i32 %v)\0A %isup = icmp ne i32 %up, 0\0A %m = select i1 %isup, i32 %mu, i32 %ml\0A\00" +@.str3690 = private unnamed_addr constant [149 x i8] c" %o = load i32, ptr %op\0A %no = call i32 @lp_uni_encode(ptr %out, i32 %o, i32 %m)\0A store i32 %no, ptr %op\0A store i32 %ni, ptr %ip\0A br label %lp\0A\00" +@.str3691 = private unnamed_addr constant [120 x i8] c"done:\0A %fo = load i32, ptr %op\0A %endp = getelementptr i8, ptr %out, i32 %fo\0A store i8 0, ptr %endp\0A ret ptr %out\0A}\0A\00" +@.str3692 = private unnamed_addr constant [47 x i8] c"define ptr @lp_uni_truncate(ptr %s, i32 %n) {\0A\00" +@.str3693 = private unnamed_addr constant [126 x i8] c"entry:\0A %ip = alloca i32\0A %kp = alloca i32\0A %cp = alloca i32\0A store i32 0, ptr %ip\0A store i32 0, ptr %kp\0A br label %lp\0A\00" +@.str3694 = private unnamed_addr constant [102 x i8] c"lp:\0A %k = load i32, ptr %kp\0A %enough = icmp sge i32 %k, %n\0A br i1 %enough, label %cut, label %chk\0A\00" +@.str3695 = private unnamed_addr constant [119 x i8] c"chk:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" +@.str3696 = private unnamed_addr constant [60 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %cut, label %go\0A\00" +@.str3697 = private unnamed_addr constant [149 x i8] c"go:\0A %ni = call i32 @lp_uni_decode(ptr %s, i32 %i, ptr %cp)\0A %k1 = add i32 %k, 1\0A store i32 %k1, ptr %kp\0A store i32 %ni, ptr %ip\0A br label %lp\0A\00" +@.str3698 = private unnamed_addr constant [199 x i8] c"cut:\0A %len = load i32, ptr %ip\0A %lz = zext i32 %len to i64\0A %cap = add i64 %lz, 1\0A %out = call ptr @malloc(i64 %cap)\0A %lz2 = zext i32 %len to i64\0A call ptr @memcpy(ptr %out, ptr %s, i64 %lz2)\0A\00" +@.str3699 = private unnamed_addr constant [89 x i8] c" %endp = getelementptr i8, ptr %out, i32 %len\0A store i8 0, ptr %endp\0A ret ptr %out\0A}\0A\00" +@.str3700 = private unnamed_addr constant [43 x i8] c"define i32 @lp_uni_grapheme_len(ptr %s) {\0A\00" +@.str3701 = private unnamed_addr constant [103 x i8] c"entry:\0A %ip = alloca i32\0A %np = alloca i32\0A %zp = alloca i32\0A %rp = alloca i32\0A %cp = alloca i32\0A\00" +@.str3702 = private unnamed_addr constant [108 x i8] c" store i32 0, ptr %ip\0A store i32 0, ptr %np\0A store i32 0, ptr %zp\0A store i32 0, ptr %rp\0A br label %lp\0A\00" +@.str3703 = private unnamed_addr constant [118 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" +@.str3704 = private unnamed_addr constant [61 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %done, label %go\0A\00" +@.str3705 = private unnamed_addr constant [112 x i8] c"go:\0A %ni = call i32 @lp_uni_decode(ptr %s, i32 %i, ptr %cp)\0A %v = load i32, ptr %cp\0A store i32 %ni, ptr %ip\0A\00" +@.str3706 = private unnamed_addr constant [75 x i8] c" %iszwj = icmp eq i32 %v, 8205\0A br i1 %iszwj, label %zwj, label %notzwj\0A\00" +@.str3707 = private unnamed_addr constant [142 x i8] c"zwj:\0A %n0 = load i32, ptr %np\0A %n0z = icmp eq i32 %n0, 0\0A %n0b = zext i1 %n0z to i32\0A %n0n = add i32 %n0, %n0b\0A store i32 %n0n, ptr %np\0A\00" +@.str3708 = private unnamed_addr constant [62 x i8] c" store i32 1, ptr %zp\0A store i32 0, ptr %rp\0A br label %lp\0A\00" +@.str3709 = private unnamed_addr constant [104 x i8] c"notzwj:\0A %n = load i32, ptr %np\0A %first = icmp eq i32 %n, 0\0A br i1 %first, label %open, label %cont\0A\00" +@.str3710 = private unnamed_addr constant [160 x i8] c"open:\0A store i32 1, ptr %np\0A store i32 0, ptr %zp\0A %ri0 = call i32 @lp_uni_inrange(i32 %v, i32 127462, i32 127487)\0A store i32 %ri0, ptr %rp\0A br label %lp\0A\00" +@.str3711 = private unnamed_addr constant [109 x i8] c"cont:\0A %zj = load i32, ptr %zp\0A %afterz = icmp ne i32 %zj, 0\0A br i1 %afterz, label %joinz, label %chkext\0A\00" +@.str3712 = private unnamed_addr constant [69 x i8] c"joinz:\0A store i32 0, ptr %zp\0A store i32 0, ptr %rp\0A br label %lp\0A\00" +@.str3713 = private unnamed_addr constant [129 x i8] c"chkext:\0A %ext = call i32 @lp_uni_is_extend(i32 %v)\0A %isext = icmp ne i32 %ext, 0\0A br i1 %isext, label %joinext, label %chkri\0A\00" +@.str3714 = private unnamed_addr constant [48 x i8] c"joinext:\0A store i32 0, ptr %rp\0A br label %lp\0A\00" +@.str3715 = private unnamed_addr constant [240 x i8] c"chkri:\0A %ri = call i32 @lp_uni_inrange(i32 %v, i32 127462, i32 127487)\0A %isri = icmp ne i32 %ri, 0\0A %ropen = load i32, ptr %rp\0A %ropenb = icmp ne i32 %ropen, 0\0A %pair = and i1 %isri, %ropenb\0A br i1 %pair, label %joinri, label %newcl\0A\00" +@.str3716 = private unnamed_addr constant [47 x i8] c"joinri:\0A store i32 0, ptr %rp\0A br label %lp\0A\00" +@.str3717 = private unnamed_addr constant [191 x i8] c"newcl:\0A %nn = load i32, ptr %np\0A %nn1 = add i32 %nn, 1\0A store i32 %nn1, ptr %np\0A store i32 0, ptr %zp\0A %riset = select i1 %isri, i32 1, i32 0\0A store i32 %riset, ptr %rp\0A br label %lp\0A\00" +@.str3718 = private unnamed_addr constant [47 x i8] c"done:\0A %r = load i32, ptr %np\0A ret i32 %r\0A}\0A\00" +@.str3719 = private unnamed_addr constant [7 x i8] c"exists\00" +@.str3720 = private unnamed_addr constant [7 x i8] c"is_dir\00" +@.str3721 = private unnamed_addr constant [10 x i8] c"read_text\00" +@.str3722 = private unnamed_addr constant [11 x i8] c"write_text\00" +@.str3723 = private unnamed_addr constant [12 x i8] c"append_text\00" +@.str3724 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str3725 = private unnamed_addr constant [5 x i8] c"size\00" +@.str3726 = private unnamed_addr constant [6 x i8] c"mkdir\00" +@.str3727 = private unnamed_addr constant [5 x i8] c"copy\00" +@.str3728 = private unnamed_addr constant [5 x i8] c"list\00" +@.str3729 = private unnamed_addr constant [5 x i8] c"join\00" +@.str3730 = private unnamed_addr constant [4 x i8] c"dir\00" +@.str3731 = private unnamed_addr constant [5 x i8] c"base\00" +@.str3732 = private unnamed_addr constant [4 x i8] c"ext\00" +@.str3733 = private unnamed_addr constant [5 x i8] c"stem\00" +@.str3734 = private unnamed_addr constant [10 x i8] c"normalize\00" +@.str3735 = private unnamed_addr constant [3 x i8] c"of\00" +@.str3736 = private unnamed_addr constant [6 x i8] c"sniff\00" +@.str3737 = private unnamed_addr constant [7 x i8] c"exists\00" +@.str3738 = private unnamed_addr constant [28 x i8] c"call i32 @lp_fs_exists(ptr \00" +@.str3739 = private unnamed_addr constant [2 x i8] c")\00" +@.str3740 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str3741 = private unnamed_addr constant [7 x i8] c"is_dir\00" +@.str3742 = private unnamed_addr constant [28 x i8] c"call i32 @lp_fs_is_dir(ptr \00" +@.str3743 = private unnamed_addr constant [2 x i8] c")\00" +@.str3744 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str3745 = private unnamed_addr constant [10 x i8] c"read_text\00" +@.str3746 = private unnamed_addr constant [31 x i8] c"call ptr @lp_fs_read_text(ptr \00" +@.str3747 = private unnamed_addr constant [2 x i8] c")\00" +@.str3748 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3749 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str3750 = private unnamed_addr constant [28 x i8] c"call i32 @lp_fs_remove(ptr \00" +@.str3751 = private unnamed_addr constant [2 x i8] c")\00" +@.str3752 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str3753 = private unnamed_addr constant [5 x i8] c"size\00" +@.str3754 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fs_size(ptr \00" +@.str3755 = private unnamed_addr constant [2 x i8] c")\00" +@.str3756 = private unnamed_addr constant [4 x i8] c"int\00" +@.str3757 = private unnamed_addr constant [6 x i8] c"mkdir\00" +@.str3758 = private unnamed_addr constant [27 x i8] c"call i32 @lp_fs_mkdir(ptr \00" +@.str3759 = private unnamed_addr constant [2 x i8] c")\00" +@.str3760 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str3761 = private unnamed_addr constant [5 x i8] c"list\00" +@.str3762 = private unnamed_addr constant [26 x i8] c"call ptr @lp_fs_list(ptr \00" +@.str3763 = private unnamed_addr constant [2 x i8] c")\00" +@.str3764 = private unnamed_addr constant [9 x i8] c"[]string\00" +@.str3765 = private unnamed_addr constant [11 x i8] c"write_text\00" +@.str3766 = private unnamed_addr constant [32 x i8] c"call i32 @lp_fs_write_text(ptr \00" +@.str3767 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str3768 = private unnamed_addr constant [2 x i8] c")\00" +@.str3769 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str3770 = private unnamed_addr constant [12 x i8] c"append_text\00" +@.str3771 = private unnamed_addr constant [33 x i8] c"call i32 @lp_fs_append_text(ptr \00" +@.str3772 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str3773 = private unnamed_addr constant [2 x i8] c")\00" +@.str3774 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str3775 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fs_copy(ptr \00" +@.str3776 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str3777 = private unnamed_addr constant [2 x i8] c")\00" +@.str3778 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str3779 = private unnamed_addr constant [4 x i8] c"dir\00" +@.str3780 = private unnamed_addr constant [27 x i8] c"call ptr @lp_path_dir(ptr \00" +@.str3781 = private unnamed_addr constant [2 x i8] c")\00" +@.str3782 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3783 = private unnamed_addr constant [5 x i8] c"base\00" +@.str3784 = private unnamed_addr constant [28 x i8] c"call ptr @lp_path_base(ptr \00" +@.str3785 = private unnamed_addr constant [2 x i8] c")\00" +@.str3786 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3787 = private unnamed_addr constant [4 x i8] c"ext\00" +@.str3788 = private unnamed_addr constant [27 x i8] c"call ptr @lp_path_ext(ptr \00" +@.str3789 = private unnamed_addr constant [2 x i8] c")\00" +@.str3790 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3791 = private unnamed_addr constant [5 x i8] c"stem\00" +@.str3792 = private unnamed_addr constant [28 x i8] c"call ptr @lp_path_stem(ptr \00" +@.str3793 = private unnamed_addr constant [2 x i8] c")\00" +@.str3794 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3795 = private unnamed_addr constant [10 x i8] c"normalize\00" +@.str3796 = private unnamed_addr constant [28 x i8] c"call ptr @lp_path_norm(ptr \00" +@.str3797 = private unnamed_addr constant [2 x i8] c")\00" +@.str3798 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3799 = private unnamed_addr constant [28 x i8] c"call ptr @lp_path_join(ptr \00" +@.str3800 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str3801 = private unnamed_addr constant [2 x i8] c")\00" +@.str3802 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3803 = private unnamed_addr constant [6 x i8] c"sniff\00" +@.str3804 = private unnamed_addr constant [29 x i8] c"call ptr @lp_mime_sniff(ptr \00" @.str3805 = private unnamed_addr constant [2 x i8] c")\00" @.str3806 = private unnamed_addr constant [7 x i8] c"string\00" -@.str3807 = private unnamed_addr constant [31 x i8] c"declare i32 @access(ptr, i32)\0A\00" -@.str3808 = private unnamed_addr constant [30 x i8] c"declare i32 @mkdir(ptr, i32)\0A\00" -@.str3809 = private unnamed_addr constant [26 x i8] c"declare i32 @remove(ptr)\0A\00" -@.str3810 = private unnamed_addr constant [31 x i8] c"declare i32 @rename(ptr, ptr)\0A\00" -@.str3811 = private unnamed_addr constant [27 x i8] c"declare ptr @opendir(ptr)\0A\00" -@.str3812 = private unnamed_addr constant [27 x i8] c"declare ptr @readdir(ptr)\0A\00" -@.str3813 = private unnamed_addr constant [28 x i8] c"declare i32 @closedir(ptr)\0A\00" -@.str3814 = private unnamed_addr constant [41 x i8] c"define ptr @lp_fs_dup(ptr %s, i32 %n) {\0A\00" -@.str3815 = private unnamed_addr constant [133 x i8] c"entry:\0A %nz = zext i32 %n to i64\0A %t = add i64 %nz, 1\0A %m = call ptr @malloc(i64 %t)\0A call ptr @memcpy(ptr %m, ptr %s, i64 %nz)\0A\00" -@.str3816 = private unnamed_addr constant [81 x i8] c" %end = getelementptr i8, ptr %m, i32 %n\0A store i8 0, ptr %end\0A ret ptr %m\0A}\0A\00" -@.str3817 = private unnamed_addr constant [36 x i8] c"define ptr @lp_fs_strdup(ptr %s) {\0A\00" -@.str3818 = private unnamed_addr constant [127 x i8] c"entry:\0A %l = call i64 @strlen(ptr %s)\0A %li = trunc i64 %l to i32\0A %r = call ptr @lp_fs_dup(ptr %s, i32 %li)\0A ret ptr %r\0A}\0A\00" -@.str3819 = private unnamed_addr constant [39 x i8] c"define i32 @lp_fs_lastslash(ptr %s) {\0A\00" -@.str3820 = private unnamed_addr constant [108 x i8] c"entry:\0A %ip = alloca i32\0A %rp = alloca i32\0A store i32 0, ptr %ip\0A store i32 -1, ptr %rp\0A br label %lp\0A\00" -@.str3821 = private unnamed_addr constant [118 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" -@.str3822 = private unnamed_addr constant [61 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %done, label %go\0A\00" -@.str3823 = private unnamed_addr constant [67 x i8] c"go:\0A %sl = icmp eq i32 %c, 47\0A br i1 %sl, label %set, label %nx\0A\00" -@.str3824 = private unnamed_addr constant [45 x i8] c"set:\0A store i32 %i, ptr %rp\0A br label %nx\0A\00" -@.str3825 = private unnamed_addr constant [67 x i8] c"nx:\0A %i1 = add i32 %i, 1\0A store i32 %i1, ptr %ip\0A br label %lp\0A\00" -@.str3826 = private unnamed_addr constant [47 x i8] c"done:\0A %r = load i32, ptr %rp\0A ret i32 %r\0A}\0A\00" -@.str3827 = private unnamed_addr constant [44 x i8] c"define ptr @lp_path_join(ptr %a, ptr %b) {\0A\00" -@.str3828 = private unnamed_addr constant [140 x i8] c"entry:\0A %la64 = call i64 @strlen(ptr %a)\0A %la = trunc i64 %la64 to i32\0A %lb64 = call i64 @strlen(ptr %b)\0A %lb = trunc i64 %lb64 to i32\0A\00" -@.str3829 = private unnamed_addr constant [122 x i8] c" %b0 = load i8, ptr %b\0A %b0i = zext i8 %b0 to i32\0A %babs = icmp eq i32 %b0i, 47\0A br i1 %babs, label %retb, label %ka\0A\00" -@.str3830 = private unnamed_addr constant [60 x i8] c"retb:\0A %rb = call ptr @lp_fs_strdup(ptr %b)\0A ret ptr %rb\0A\00" -@.str3831 = private unnamed_addr constant [73 x i8] c"ka:\0A %aemp = icmp eq i32 %la, 0\0A br i1 %aemp, label %retb2, label %kb\0A\00" -@.str3832 = private unnamed_addr constant [63 x i8] c"retb2:\0A %rb2 = call ptr @lp_fs_strdup(ptr %b)\0A ret ptr %rb2\0A\00" -@.str3833 = private unnamed_addr constant [73 x i8] c"kb:\0A %bemp = icmp eq i32 %lb, 0\0A br i1 %bemp, label %reta, label %chk\0A\00" -@.str3834 = private unnamed_addr constant [60 x i8] c"reta:\0A %ra = call ptr @lp_fs_strdup(ptr %a)\0A ret ptr %ra\0A\00" -@.str3835 = private unnamed_addr constant [159 x i8] c"chk:\0A %lam1 = sub i32 %la, 1\0A %pe = getelementptr i8, ptr %a, i32 %lam1\0A %ae = load i8, ptr %pe\0A %aei = zext i8 %ae to i32\0A %ends = icmp eq i32 %aei, 47\0A\00" -@.str3836 = private unnamed_addr constant [189 x i8] c" %sep = select i1 %ends, i32 0, i32 1\0A %tot = add i32 %la, %lb\0A %tot2 = add i32 %tot, %sep\0A %tot3 = add i32 %tot2, 1\0A %totz = zext i32 %tot3 to i64\0A %m = call ptr @malloc(i64 %totz)\0A\00" -@.str3837 = private unnamed_addr constant [75 x i8] c" %laz = zext i32 %la to i64\0A call ptr @memcpy(ptr %m, ptr %a, i64 %laz)\0A\00" -@.str3838 = private unnamed_addr constant [42 x i8] c" br i1 %ends, label %nosep, label %wsep\0A\00" -@.str3839 = private unnamed_addr constant [90 x i8] c"wsep:\0A %sp = getelementptr i8, ptr %m, i32 %la\0A store i8 47, ptr %sp\0A br label %after\0A\00" -@.str3840 = private unnamed_addr constant [26 x i8] c"nosep:\0A br label %after\0A\00" -@.str3841 = private unnamed_addr constant [155 x i8] c"after:\0A %boff = add i32 %la, %sep\0A %dp = getelementptr i8, ptr %m, i32 %boff\0A %lbz = zext i32 %lb to i64\0A call ptr @memcpy(ptr %dp, ptr %b, i64 %lbz)\0A\00" -@.str3842 = private unnamed_addr constant [115 x i8] c" %endoff = add i32 %boff, %lb\0A %ep = getelementptr i8, ptr %m, i32 %endoff\0A store i8 0, ptr %ep\0A ret ptr %m\0A}\0A\00" -@.str3843 = private unnamed_addr constant [36 x i8] c"define ptr @lp_path_base(ptr %s) {\0A\00" -@.str3844 = private unnamed_addr constant [121 x i8] c"entry:\0A %ls = call i32 @lp_fs_lastslash(ptr %s)\0A %none = icmp eq i32 %ls, -1\0A br i1 %none, label %whole, label %tail\0A\00" -@.str3845 = private unnamed_addr constant [59 x i8] c"whole:\0A %r = call ptr @lp_fs_strdup(ptr %s)\0A ret ptr %r\0A\00" -@.str3846 = private unnamed_addr constant [126 x i8] c"tail:\0A %st = add i32 %ls, 1\0A %p = getelementptr i8, ptr %s, i32 %st\0A %r2 = call ptr @lp_fs_strdup(ptr %p)\0A ret ptr %r2\0A}\0A\00" -@.str3847 = private unnamed_addr constant [35 x i8] c"define ptr @lp_path_dir(ptr %s) {\0A\00" -@.str3848 = private unnamed_addr constant [119 x i8] c"entry:\0A %ls = call i32 @lp_fs_lastslash(ptr %s)\0A %none = icmp eq i32 %ls, -1\0A br i1 %none, label %dot, label %chk0\0A\00" -@.str3849 = private unnamed_addr constant [66 x i8] c"dot:\0A %d = call ptr @lp_fs_strdup(ptr @fn_str_dot)\0A ret ptr %d\0A\00" -@.str3850 = private unnamed_addr constant [79 x i8] c"chk0:\0A %isroot = icmp eq i32 %ls, 0\0A br i1 %isroot, label %root, label %cut\0A\00" -@.str3851 = private unnamed_addr constant [69 x i8] c"root:\0A %r = call ptr @lp_fs_strdup(ptr @fn_str_slash)\0A ret ptr %r\0A\00" -@.str3852 = private unnamed_addr constant [67 x i8] c"cut:\0A %r2 = call ptr @lp_fs_dup(ptr %s, i32 %ls)\0A ret ptr %r2\0A}\0A\00" -@.str3853 = private unnamed_addr constant [35 x i8] c"define ptr @lp_path_ext(ptr %s) {\0A\00" -@.str3854 = private unnamed_addr constant [77 x i8] c"entry:\0A %ls = call i32 @lp_fs_lastslash(ptr %s)\0A %bstart = add i32 %ls, 1\0A\00" -@.str3855 = private unnamed_addr constant [107 x i8] c" %dp = alloca i32\0A %ip = alloca i32\0A store i32 -1, ptr %dp\0A store i32 %bstart, ptr %ip\0A br label %lp\0A\00" -@.str3856 = private unnamed_addr constant [178 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A %z = icmp eq i32 %c, 0\0A br i1 %z, label %done, label %go\0A\00" -@.str3857 = private unnamed_addr constant [68 x i8] c"go:\0A %dot = icmp eq i32 %c, 46\0A br i1 %dot, label %sd, label %nx\0A\00" -@.str3858 = private unnamed_addr constant [44 x i8] c"sd:\0A store i32 %i, ptr %dp\0A br label %nx\0A\00" -@.str3859 = private unnamed_addr constant [67 x i8] c"nx:\0A %i1 = add i32 %i, 1\0A store i32 %i1, ptr %ip\0A br label %lp\0A\00" -@.str3860 = private unnamed_addr constant [102 x i8] c"done:\0A %d = load i32, ptr %dp\0A %nod = icmp eq i32 %d, -1\0A br i1 %nod, label %empty, label %chkpos\0A\00" -@.str3861 = private unnamed_addr constant [70 x i8] c"empty:\0A %e = call ptr @lp_fs_strdup(ptr @fn_str_empty)\0A ret ptr %e\0A\00" -@.str3862 = private unnamed_addr constant [91 x i8] c"chkpos:\0A %atstart = icmp eq i32 %d, %bstart\0A br i1 %atstart, label %empty2, label %take\0A\00" -@.str3863 = private unnamed_addr constant [73 x i8] c"empty2:\0A %e2 = call ptr @lp_fs_strdup(ptr @fn_str_empty)\0A ret ptr %e2\0A\00" -@.str3864 = private unnamed_addr constant [102 x i8] c"take:\0A %pp = getelementptr i8, ptr %s, i32 %d\0A %r = call ptr @lp_fs_strdup(ptr %pp)\0A ret ptr %r\0A}\0A\00" -@.str3865 = private unnamed_addr constant [36 x i8] c"define ptr @lp_path_stem(ptr %s) {\0A\00" -@.str3866 = private unnamed_addr constant [88 x i8] c"entry:\0A %base = call ptr @lp_path_base(ptr %s)\0A %ext = call ptr @lp_path_ext(ptr %s)\0A\00" -@.str3867 = private unnamed_addr constant [138 x i8] c" %bl64 = call i64 @strlen(ptr %base)\0A %bl = trunc i64 %bl64 to i32\0A %el64 = call i64 @strlen(ptr %ext)\0A %el = trunc i64 %el64 to i32\0A\00" -@.str3868 = private unnamed_addr constant [92 x i8] c" %keep = sub i32 %bl, %el\0A %r = call ptr @lp_fs_dup(ptr %base, i32 %keep)\0A ret ptr %r\0A}\0A\00" -@.str3869 = private unnamed_addr constant [36 x i8] c"define ptr @lp_path_norm(ptr %s) {\0A\00" -@.str3870 = private unnamed_addr constant [133 x i8] c"entry:\0A %len64 = call i64 @strlen(ptr %s)\0A %len = trunc i64 %len64 to i32\0A %cap = add i32 %len, 2\0A %capz = zext i32 %cap to i64\0A\00" -@.str3871 = private unnamed_addr constant [38 x i8] c" %out = call ptr @malloc(i64 %capz)\0A\00" -@.str3872 = private unnamed_addr constant [96 x i8] c" %stz = mul i32 %cap, 4\0A %stzz = zext i32 %stz to i64\0A %segst = call ptr @malloc(i64 %stzz)\0A\00" -@.str3873 = private unnamed_addr constant [83 x i8] c" %b0 = load i8, ptr %s\0A %b0i = zext i8 %b0 to i32\0A %abs = icmp eq i32 %b0i, 47\0A\00" -@.str3874 = private unnamed_addr constant [106 x i8] c" %ip = alloca i32\0A %op = alloca i32\0A %scp = alloca i32\0A store i32 0, ptr %ip\0A store i32 0, ptr %scp\0A\00" -@.str3875 = private unnamed_addr constant [40 x i8] c" br i1 %abs, label %ldr, label %noldr\0A\00" -@.str3876 = private unnamed_addr constant [69 x i8] c"ldr:\0A store i8 47, ptr %out\0A store i32 1, ptr %op\0A br label %seg\0A\00" -@.str3877 = private unnamed_addr constant [47 x i8] c"noldr:\0A store i32 0, ptr %op\0A br label %seg\0A\00" -@.str3878 = private unnamed_addr constant [23 x i8] c"seg:\0A br label %sksl\0A\00" -@.str3879 = private unnamed_addr constant [200 x i8] c"sksl:\0A %i = load i32, ptr %ip\0A %pp = getelementptr i8, ptr %s, i32 %i\0A %cc = load i8, ptr %pp\0A %cci = zext i8 %cc to i32\0A %issl = icmp eq i32 %cci, 47\0A br i1 %issl, label %adv, label %segstart\0A\00" -@.str3880 = private unnamed_addr constant [70 x i8] c"adv:\0A %i2 = add i32 %i, 1\0A store i32 %i2, ptr %ip\0A br label %sksl\0A\00" -@.str3881 = private unnamed_addr constant [54 x i8] c"segstart:\0A %ss = load i32, ptr %ip\0A br label %scan\0A\00" -@.str3882 = private unnamed_addr constant [260 x i8] c"scan:\0A %j = load i32, ptr %ip\0A %pj = getelementptr i8, ptr %s, i32 %j\0A %cj = load i8, ptr %pj\0A %cji = zext i8 %cj to i32\0A %endc = icmp eq i32 %cji, 0\0A %slc = icmp eq i32 %cji, 47\0A %stop = or i1 %endc, %slc\0A br i1 %stop, label %seghave, label %scanadv\0A\00" -@.str3883 = private unnamed_addr constant [74 x i8] c"scanadv:\0A %j1 = add i32 %j, 1\0A store i32 %j1, ptr %ip\0A br label %scan\0A\00" -@.str3884 = private unnamed_addr constant [147 x i8] c"seghave:\0A %se = load i32, ptr %ip\0A %slen = sub i32 %se, %ss\0A %emptyseg = icmp eq i32 %slen, 0\0A br i1 %emptyseg, label %atend, label %classify\0A\00" -@.str3885 = private unnamed_addr constant [11 x i8] c"classify:\0A\00" -@.str3886 = private unnamed_addr constant [244 x i8] c" %is1 = icmp eq i32 %slen, 1\0A %c0p = getelementptr i8, ptr %s, i32 %ss\0A %c0 = load i8, ptr %c0p\0A %c0i = zext i8 %c0 to i32\0A %isdotchar = icmp eq i32 %c0i, 46\0A %isdot = and i1 %is1, %isdotchar\0A br i1 %isdot, label %contseg, label %chkdd\0A\00" -@.str3887 = private unnamed_addr constant [257 x i8] c"chkdd:\0A %is2 = icmp eq i32 %slen, 2\0A %d0p = getelementptr i8, ptr %s, i32 %ss\0A %d0 = load i8, ptr %d0p\0A %d0i = zext i8 %d0 to i32\0A %d1o = add i32 %ss, 1\0A %d1p = getelementptr i8, ptr %s, i32 %d1o\0A %d1 = load i8, ptr %d1p\0A %d1i = zext i8 %d1 to i32\0A\00" -@.str3888 = private unnamed_addr constant [161 x i8] c" %dd0 = icmp eq i32 %d0i, 46\0A %dd1 = icmp eq i32 %d1i, 46\0A %ddx = and i1 %dd0, %dd1\0A %isdd = and i1 %is2, %ddx\0A br i1 %isdd, label %dotdot, label %keepseg\0A\00" -@.str3889 = private unnamed_addr constant [105 x i8] c"dotdot:\0A %sc = load i32, ptr %scp\0A %has = icmp sgt i32 %sc, 0\0A br i1 %has, label %pop, label %chkrel\0A\00" -@.str3890 = private unnamed_addr constant [184 x i8] c"pop:\0A %sc1 = sub i32 %sc, 1\0A %stp = getelementptr i32, ptr %segst, i32 %sc1\0A %newop = load i32, ptr %stp\0A store i32 %newop, ptr %op\0A store i32 %sc1, ptr %scp\0A br label %contseg\0A\00" -@.str3891 = private unnamed_addr constant [54 x i8] c"chkrel:\0A br i1 %abs, label %contseg, label %keepseg\0A\00" -@.str3892 = private unnamed_addr constant [195 x i8] c"keepseg:\0A %sc2 = load i32, ptr %scp\0A %o0 = load i32, ptr %op\0A %stp2 = getelementptr i32, ptr %segst, i32 %sc2\0A store i32 %o0, ptr %stp2\0A %sc2n = add i32 %sc2, 1\0A store i32 %sc2n, ptr %scp\0A\00" -@.str3893 = private unnamed_addr constant [63 x i8] c" %cpp = alloca i32\0A store i32 %ss, ptr %cpp\0A br label %cpy\0A\00" -@.str3894 = private unnamed_addr constant [102 x i8] c"cpy:\0A %k = load i32, ptr %cpp\0A %klt = icmp slt i32 %k, %se\0A br i1 %klt, label %cpyb, label %cpysl\0A\00" -@.str3895 = private unnamed_addr constant [285 x i8] c"cpyb:\0A %skp = getelementptr i8, ptr %s, i32 %k\0A %sk = load i8, ptr %skp\0A %oo = load i32, ptr %op\0A %dkp = getelementptr i8, ptr %out, i32 %oo\0A store i8 %sk, ptr %dkp\0A %oo1 = add i32 %oo, 1\0A store i32 %oo1, ptr %op\0A %k1 = add i32 %k, 1\0A store i32 %k1, ptr %cpp\0A br label %cpy\0A\00" -@.str3896 = private unnamed_addr constant [175 x i8] c"cpysl:\0A %oc = load i32, ptr %op\0A %scp3 = getelementptr i8, ptr %out, i32 %oc\0A store i8 47, ptr %scp3\0A %oc1 = add i32 %oc, 1\0A store i32 %oc1, ptr %op\0A br label %contseg\0A\00" -@.str3897 = private unnamed_addr constant [206 x i8] c"contseg:\0A %ci = load i32, ptr %ip\0A %cip = getelementptr i8, ptr %s, i32 %ci\0A %cic = load i8, ptr %cip\0A %cici = zext i8 %cic to i32\0A %atz = icmp eq i32 %cici, 0\0A br i1 %atz, label %finish, label %seg\0A\00" -@.str3898 = private unnamed_addr constant [27 x i8] c"atend:\0A br label %finish\0A\00" -@.str3899 = private unnamed_addr constant [110 x i8] c"finish:\0A %fo = load i32, ptr %op\0A %gt1 = icmp sgt i32 %fo, 1\0A br i1 %gt1, label %trimchk, label %fdefault\0A\00" -@.str3900 = private unnamed_addr constant [211 x i8] c"trimchk:\0A %lasto = sub i32 %fo, 1\0A %lop = getelementptr i8, ptr %out, i32 %lasto\0A %lc = load i8, ptr %lop\0A %lci = zext i8 %lc to i32\0A %istsl = icmp eq i32 %lci, 47\0A br i1 %istsl, label %trim, label %term\0A\00" -@.str3901 = private unnamed_addr constant [52 x i8] c"trim:\0A store i32 %lasto, ptr %op\0A br label %term\0A\00" -@.str3902 = private unnamed_addr constant [28 x i8] c"fdefault:\0A br label %term\0A\00" -@.str3903 = private unnamed_addr constant [104 x i8] c"term:\0A %eo = load i32, ptr %op\0A %ez = icmp eq i32 %eo, 0\0A br i1 %ez, label %emptyout, label %putnul\0A\00" -@.str3904 = private unnamed_addr constant [114 x i8] c"emptyout:\0A store i8 46, ptr %out\0A %e1 = getelementptr i8, ptr %out, i32 1\0A store i8 0, ptr %e1\0A ret ptr %out\0A\00" -@.str3905 = private unnamed_addr constant [92 x i8] c"putnul:\0A %ep = getelementptr i8, ptr %out, i32 %eo\0A store i8 0, ptr %ep\0A ret ptr %out\0A}\0A\00" -@.str3906 = private unnamed_addr constant [36 x i8] c"define i32 @lp_fs_exists(ptr %p) {\0A\00" -@.str3907 = private unnamed_addr constant [114 x i8] c"entry:\0A %r = call i32 @access(ptr %p, i32 0)\0A %ok = icmp eq i32 %r, 0\0A %z = zext i1 %ok to i32\0A ret i32 %z\0A}\0A\00" -@.str3908 = private unnamed_addr constant [36 x i8] c"define i32 @lp_fs_is_dir(ptr %p) {\0A\00" -@.str3909 = private unnamed_addr constant [105 x i8] c"entry:\0A %d = call ptr @opendir(ptr %p)\0A %nz = icmp ne ptr %d, null\0A br i1 %nz, label %yes, label %no\0A\00" -@.str3910 = private unnamed_addr constant [47 x i8] c"yes:\0A call i32 @closedir(ptr %d)\0A ret i32 1\0A\00" -@.str3911 = private unnamed_addr constant [19 x i8] c"no:\0A ret i32 0\0A}\0A\00" -@.str3912 = private unnamed_addr constant [34 x i8] c"define i32 @lp_fs_size(ptr %p) {\0A\00" -@.str3913 = private unnamed_addr constant [119 x i8] c"entry:\0A %f = call ptr @fopen(ptr %p, ptr @fn_str_rb)\0A %nz = icmp ne ptr %f, null\0A br i1 %nz, label %ok, label %bad\0A\00" -@.str3914 = private unnamed_addr constant [19 x i8] c"bad:\0A ret i32 -1\0A\00" -@.str3915 = private unnamed_addr constant [147 x i8] c"ok:\0A call i32 @fseek(ptr %f, i64 0, i32 2)\0A %n = call i64 @ftell(ptr %f)\0A call i32 @fclose(ptr %f)\0A %ni = trunc i64 %n to i32\0A ret i32 %ni\0A}\0A\00" -@.str3916 = private unnamed_addr constant [50 x i8] c"define ptr @lp_fs_readall(ptr %p, ptr %lenout) {\0A\00" -@.str3917 = private unnamed_addr constant [146 x i8] c"entry:\0A store i32 0, ptr %lenout\0A %f = call ptr @fopen(ptr %p, ptr @fn_str_rb)\0A %nz = icmp ne ptr %f, null\0A br i1 %nz, label %ok, label %bad\0A\00" -@.str3918 = private unnamed_addr constant [21 x i8] c"bad:\0A ret ptr null\0A\00" -@.str3919 = private unnamed_addr constant [147 x i8] c"ok:\0A call i32 @fseek(ptr %f, i64 0, i32 2)\0A %n64 = call i64 @ftell(ptr %f)\0A call i32 @fseek(ptr %f, i64 0, i32 0)\0A %n = trunc i64 %n64 to i32\0A\00" -@.str3920 = private unnamed_addr constant [144 x i8] c" %cap = add i64 %n64, 1\0A %m = call ptr @malloc(i64 %cap)\0A %rd = call i64 @fread(ptr %m, i64 1, i64 %n64, ptr %f)\0A call i32 @fclose(ptr %f)\0A\00" -@.str3921 = private unnamed_addr constant [145 x i8] c" %rdi = trunc i64 %rd to i32\0A %endp = getelementptr i8, ptr %m, i32 %rdi\0A store i8 0, ptr %endp\0A store i32 %rdi, ptr %lenout\0A ret ptr %m\0A}\0A\00" -@.str3922 = private unnamed_addr constant [39 x i8] c"define ptr @lp_fs_read_text(ptr %p) {\0A\00" -@.str3923 = private unnamed_addr constant [90 x i8] c"entry:\0A %lp = alloca i32\0A %r = call ptr @lp_fs_readall(ptr %p, ptr %lp)\0A ret ptr %r\0A}\0A\00" -@.str3924 = private unnamed_addr constant [48 x i8] c"define i32 @lp_fs_write_text(ptr %p, ptr %s) {\0A\00" -@.str3925 = private unnamed_addr constant [185 x i8] c"entry:\0A %tmp = call ptr @lp_path_join_ext(ptr %p, ptr @fn_str_dottmp)\0A %f = call ptr @fopen(ptr %tmp, ptr @fn_str_wb)\0A %nz = icmp ne ptr %f, null\0A br i1 %nz, label %ok, label %bad\0A\00" -@.str3926 = private unnamed_addr constant [18 x i8] c"bad:\0A ret i32 0\0A\00" -@.str3927 = private unnamed_addr constant [119 x i8] c"ok:\0A %n = call i64 @strlen(ptr %s)\0A %w = call i64 @fwrite(ptr %s, i64 1, i64 %n, ptr %f)\0A call i32 @fclose(ptr %f)\0A\00" -@.str3928 = private unnamed_addr constant [114 x i8] c" %rr = call i32 @rename(ptr %tmp, ptr %p)\0A %ok2 = icmp eq i32 %rr, 0\0A %z = zext i1 %ok2 to i32\0A ret i32 %z\0A}\0A\00" -@.str3929 = private unnamed_addr constant [48 x i8] c"define ptr @lp_path_join_ext(ptr %a, ptr %b) {\0A\00" -@.str3930 = private unnamed_addr constant [159 x i8] c"entry:\0A %la = call i64 @strlen(ptr %a)\0A %lb = call i64 @strlen(ptr %b)\0A %sum = add i64 %la, %lb\0A %tot = add i64 %sum, 1\0A %m = call ptr @malloc(i64 %tot)\0A\00" -@.str3931 = private unnamed_addr constant [212 x i8] c" call ptr @memcpy(ptr %m, ptr %a, i64 %la)\0A %m2 = getelementptr i8, ptr %m, i64 %la\0A call ptr @memcpy(ptr %m2, ptr %b, i64 %lb)\0A %ep = getelementptr i8, ptr %m, i64 %sum\0A store i8 0, ptr %ep\0A ret ptr %m\0A}\0A\00" -@.str3932 = private unnamed_addr constant [49 x i8] c"define i32 @lp_fs_append_text(ptr %p, ptr %s) {\0A\00" -@.str3933 = private unnamed_addr constant [119 x i8] c"entry:\0A %f = call ptr @fopen(ptr %p, ptr @fn_str_ab)\0A %nz = icmp ne ptr %f, null\0A br i1 %nz, label %ok, label %bad\0A\00" -@.str3934 = private unnamed_addr constant [18 x i8] c"bad:\0A ret i32 0\0A\00" -@.str3935 = private unnamed_addr constant [128 x i8] c"ok:\0A %n = call i64 @strlen(ptr %s)\0A call i64 @fwrite(ptr %s, i64 1, i64 %n, ptr %f)\0A call i32 @fclose(ptr %f)\0A ret i32 1\0A}\0A\00" -@.str3936 = private unnamed_addr constant [36 x i8] c"define i32 @lp_fs_remove(ptr %p) {\0A\00" -@.str3937 = private unnamed_addr constant [107 x i8] c"entry:\0A %r = call i32 @remove(ptr %p)\0A %ok = icmp eq i32 %r, 0\0A %z = zext i1 %ok to i32\0A ret i32 %z\0A}\0A\00" -@.str3938 = private unnamed_addr constant [46 x i8] c"define i32 @lp_fs_copy(ptr %src, ptr %dst) {\0A\00" -@.str3939 = private unnamed_addr constant [145 x i8] c"entry:\0A %lp = alloca i32\0A %buf = call ptr @lp_fs_readall(ptr %src, ptr %lp)\0A %nz = icmp ne ptr %buf, null\0A br i1 %nz, label %ok, label %bad\0A\00" -@.str3940 = private unnamed_addr constant [18 x i8] c"bad:\0A ret i32 0\0A\00" -@.str3941 = private unnamed_addr constant [185 x i8] c"ok:\0A %tmp = call ptr @lp_path_join_ext(ptr %dst, ptr @fn_str_dottmp)\0A %f = call ptr @fopen(ptr %tmp, ptr @fn_str_wb)\0A %fnz = icmp ne ptr %f, null\0A br i1 %fnz, label %w, label %bad\0A\00" -@.str3942 = private unnamed_addr constant [255 x i8] c"w:\0A %n = load i32, ptr %lp\0A %nz64 = zext i32 %n to i64\0A call i64 @fwrite(ptr %buf, i64 1, i64 %nz64, ptr %f)\0A call i32 @fclose(ptr %f)\0A %rr = call i32 @rename(ptr %tmp, ptr %dst)\0A %ok2 = icmp eq i32 %rr, 0\0A %z = zext i1 %ok2 to i32\0A ret i32 %z\0A}\0A\00" -@.str3943 = private unnamed_addr constant [35 x i8] c"define i32 @lp_fs_mkdir(ptr %p) {\0A\00" -@.str3944 = private unnamed_addr constant [105 x i8] c"entry:\0A %dup = call ptr @lp_fs_strdup(ptr %p)\0A %ip = alloca i32\0A store i32 1, ptr %ip\0A br label %lp\0A\00" -@.str3945 = private unnamed_addr constant [183 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %pp = getelementptr i8, ptr %dup, i32 %i\0A %c = load i8, ptr %pp\0A %ci = zext i8 %c to i32\0A %z = icmp eq i32 %ci, 0\0A br i1 %z, label %fin, label %go\0A\00" -@.str3946 = private unnamed_addr constant [68 x i8] c"go:\0A %sl = icmp eq i32 %ci, 47\0A br i1 %sl, label %cut, label %nx\0A\00" -@.str3947 = private unnamed_addr constant [103 x i8] c"cut:\0A store i8 0, ptr %pp\0A call i32 @mkdir(ptr %dup, i32 493)\0A store i8 47, ptr %pp\0A br label %nx\0A\00" -@.str3948 = private unnamed_addr constant [67 x i8] c"nx:\0A %i1 = add i32 %i, 1\0A store i32 %i1, ptr %ip\0A br label %lp\0A\00" -@.str3949 = private unnamed_addr constant [96 x i8] c"fin:\0A call i32 @mkdir(ptr %dup, i32 493)\0A %r = call i32 @lp_fs_is_dir(ptr %p)\0A ret i32 %r\0A}\0A\00" -@.str3950 = private unnamed_addr constant [37 x i8] c"define ptr @lp_fs_list(ptr %path) {\0A\00" -@.str3951 = private unnamed_addr constant [223 x i8] c"entry:\0A %h = call ptr @malloc(i64 16)\0A %d0 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 0\0A %d1 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 1\0A %d2 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 2\0A\00" -@.str3952 = private unnamed_addr constant [182 x i8] c" %datap = alloca ptr\0A %cntp = alloca i32\0A %capp = alloca i32\0A %init = call ptr @malloc(i64 128)\0A store ptr %init, ptr %datap\0A store i32 0, ptr %cntp\0A store i32 16, ptr %capp\0A\00" -@.str3953 = private unnamed_addr constant [109 x i8] c" %dir = call ptr @opendir(ptr %path)\0A %dnz = icmp ne ptr %dir, null\0A br i1 %dnz, label %rd, label %empty\0A\00" -@.str3954 = private unnamed_addr constant [114 x i8] c"rd:\0A %de = call ptr @readdir(ptr %dir)\0A %denz = icmp ne ptr %de, null\0A br i1 %denz, label %ent, label %closed\0A\00" -@.str3955 = private unnamed_addr constant [51 x i8] c"ent:\0A %namep = getelementptr i8, ptr %de, i32 21\0A\00" -@.str3956 = private unnamed_addr constant [135 x i8] c" %n0 = load i8, ptr %namep\0A %n0i = zext i8 %n0 to i32\0A %isdot0 = icmp eq i32 %n0i, 46\0A br i1 %isdot0, label %chkdots, label %keep\0A\00" -@.str3957 = private unnamed_addr constant [176 x i8] c"chkdots:\0A %n1p = getelementptr i8, ptr %namep, i32 1\0A %n1 = load i8, ptr %n1p\0A %n1i = zext i8 %n1 to i32\0A %n1z = icmp eq i32 %n1i, 0\0A br i1 %n1z, label %rd, label %chkdd\0A\00" -@.str3958 = private unnamed_addr constant [85 x i8] c"chkdd:\0A %isdot1 = icmp eq i32 %n1i, 46\0A br i1 %isdot1, label %chkdd2, label %keep\0A\00" -@.str3959 = private unnamed_addr constant [174 x i8] c"chkdd2:\0A %n2p = getelementptr i8, ptr %namep, i32 2\0A %n2 = load i8, ptr %n2p\0A %n2i = zext i8 %n2 to i32\0A %n2z = icmp eq i32 %n2i, 0\0A br i1 %n2z, label %rd, label %keep\0A\00" -@.str3960 = private unnamed_addr constant [50 x i8] c"keep:\0A %nm = call ptr @lp_fs_strdup(ptr %namep)\0A\00" -@.str3961 = private unnamed_addr constant [132 x i8] c" %cnt = load i32, ptr %cntp\0A %cap = load i32, ptr %capp\0A %full = icmp sge i32 %cnt, %cap\0A br i1 %full, label %grow, label %put\0A\00" -@.str3962 = private unnamed_addr constant [232 x i8] c"grow:\0A %nc = mul i32 %cap, 2\0A store i32 %nc, ptr %capp\0A %ncz = zext i32 %nc to i64\0A %nb = mul i64 %ncz, 8\0A %old = load ptr, ptr %datap\0A %new = call ptr @realloc(ptr %old, i64 %nb)\0A store ptr %new, ptr %datap\0A br label %put\0A\00" -@.str3963 = private unnamed_addr constant [215 x i8] c"put:\0A %data = load ptr, ptr %datap\0A %cnt2 = load i32, ptr %cntp\0A %slot = getelementptr ptr, ptr %data, i32 %cnt2\0A store ptr %nm, ptr %slot\0A %cnt3 = add i32 %cnt2, 1\0A store i32 %cnt3, ptr %cntp\0A br label %rd\0A\00" -@.str3964 = private unnamed_addr constant [59 x i8] c"closed:\0A call i32 @closedir(ptr %dir)\0A br label %sortit\0A\00" -@.str3965 = private unnamed_addr constant [27 x i8] c"empty:\0A br label %sortit\0A\00" -@.str3966 = private unnamed_addr constant [130 x i8] c"sortit:\0A %fdata = load ptr, ptr %datap\0A %fcnt = load i32, ptr %cntp\0A %aip = alloca i32\0A store i32 1, ptr %aip\0A br label %so\0A\00" -@.str3967 = private unnamed_addr constant [104 x i8] c"so:\0A %ai = load i32, ptr %aip\0A %ailt = icmp slt i32 %ai, %fcnt\0A br i1 %ailt, label %sob, label %sod\0A\00" -@.str3968 = private unnamed_addr constant [166 x i8] c"sob:\0A %kp = getelementptr ptr, ptr %fdata, i32 %ai\0A %key = load ptr, ptr %kp\0A %jp = alloca i32\0A %aim1 = sub i32 %ai, 1\0A store i32 %aim1, ptr %jp\0A br label %si\0A\00" -@.str3969 = private unnamed_addr constant [98 x i8] c"si:\0A %jj = load i32, ptr %jp\0A %jge = icmp sge i32 %jj, 0\0A br i1 %jge, label %sic, label %sins\0A\00" -@.str3970 = private unnamed_addr constant [194 x i8] c"sic:\0A %ejp = getelementptr ptr, ptr %fdata, i32 %jj\0A %ej = load ptr, ptr %ejp\0A %cmp = call i32 @strcmp(ptr %ej, ptr %key)\0A %gt = icmp sgt i32 %cmp, 0\0A br i1 %gt, label %shift, label %sins\0A\00" -@.str3971 = private unnamed_addr constant [168 x i8] c"shift:\0A %j1 = add i32 %jj, 1\0A %dp1 = getelementptr ptr, ptr %fdata, i32 %j1\0A store ptr %ej, ptr %dp1\0A %jm = sub i32 %jj, 1\0A store i32 %jm, ptr %jp\0A br label %si\0A\00" -@.str3972 = private unnamed_addr constant [201 x i8] c"sins:\0A %jf = load i32, ptr %jp\0A %jf1 = add i32 %jf, 1\0A %insp = getelementptr ptr, ptr %fdata, i32 %jf1\0A store ptr %key, ptr %insp\0A %ai1 = add i32 %ai, 1\0A store i32 %ai1, ptr %aip\0A br label %so\0A\00" -@.str3973 = private unnamed_addr constant [103 x i8] c"sod:\0A store ptr %fdata, ptr %d0\0A store i32 %fcnt, ptr %d1\0A store i32 %fcnt, ptr %d2\0A ret ptr %h\0A}\0A\00" -@.str3974 = private unnamed_addr constant [4 x i8] c"png\00" -@.str3975 = private unnamed_addr constant [10 x i8] c"image/png\00" -@.str3976 = private unnamed_addr constant [4 x i8] c"jpg\00" -@.str3977 = private unnamed_addr constant [11 x i8] c"image/jpeg\00" -@.str3978 = private unnamed_addr constant [5 x i8] c"jpeg\00" -@.str3979 = private unnamed_addr constant [11 x i8] c"image/jpeg\00" -@.str3980 = private unnamed_addr constant [4 x i8] c"gif\00" -@.str3981 = private unnamed_addr constant [10 x i8] c"image/gif\00" -@.str3982 = private unnamed_addr constant [4 x i8] c"bmp\00" -@.str3983 = private unnamed_addr constant [10 x i8] c"image/bmp\00" -@.str3984 = private unnamed_addr constant [5 x i8] c"webp\00" -@.str3985 = private unnamed_addr constant [11 x i8] c"image/webp\00" -@.str3986 = private unnamed_addr constant [4 x i8] c"svg\00" -@.str3987 = private unnamed_addr constant [14 x i8] c"image/svg+xml\00" -@.str3988 = private unnamed_addr constant [4 x i8] c"txt\00" -@.str3989 = private unnamed_addr constant [11 x i8] c"text/plain\00" -@.str3990 = private unnamed_addr constant [3 x i8] c"md\00" -@.str3991 = private unnamed_addr constant [14 x i8] c"text/markdown\00" -@.str3992 = private unnamed_addr constant [4 x i8] c"csv\00" -@.str3993 = private unnamed_addr constant [9 x i8] c"text/csv\00" -@.str3994 = private unnamed_addr constant [5 x i8] c"html\00" -@.str3995 = private unnamed_addr constant [10 x i8] c"text/html\00" -@.str3996 = private unnamed_addr constant [4 x i8] c"htm\00" -@.str3997 = private unnamed_addr constant [10 x i8] c"text/html\00" -@.str3998 = private unnamed_addr constant [4 x i8] c"css\00" -@.str3999 = private unnamed_addr constant [9 x i8] c"text/css\00" -@.str4000 = private unnamed_addr constant [3 x i8] c"js\00" -@.str4001 = private unnamed_addr constant [16 x i8] c"text/javascript\00" -@.str4002 = private unnamed_addr constant [5 x i8] c"json\00" -@.str4003 = private unnamed_addr constant [17 x i8] c"application/json\00" -@.str4004 = private unnamed_addr constant [4 x i8] c"xml\00" -@.str4005 = private unnamed_addr constant [16 x i8] c"application/xml\00" -@.str4006 = private unnamed_addr constant [4 x i8] c"zip\00" -@.str4007 = private unnamed_addr constant [16 x i8] c"application/zip\00" -@.str4008 = private unnamed_addr constant [4 x i8] c"pdf\00" -@.str4009 = private unnamed_addr constant [16 x i8] c"application/pdf\00" -@.str4010 = private unnamed_addr constant [4 x i8] c"wav\00" -@.str4011 = private unnamed_addr constant [10 x i8] c"audio/wav\00" -@.str4012 = private unnamed_addr constant [4 x i8] c"ogg\00" -@.str4013 = private unnamed_addr constant [10 x i8] c"audio/ogg\00" -@.str4014 = private unnamed_addr constant [4 x i8] c"mp3\00" -@.str4015 = private unnamed_addr constant [11 x i8] c"audio/mpeg\00" -@.str4016 = private unnamed_addr constant [4 x i8] c"ttf\00" -@.str4017 = private unnamed_addr constant [9 x i8] c"font/ttf\00" -@.str4018 = private unnamed_addr constant [4 x i8] c"otf\00" -@.str4019 = private unnamed_addr constant [9 x i8] c"font/otf\00" -@.str4020 = private unnamed_addr constant [6 x i8] c"ludic\00" -@.str4021 = private unnamed_addr constant [13 x i8] c"text/x-ludic\00" -@.str4022 = private unnamed_addr constant [25 x i8] c"application/octet-stream\00" -@.str4023 = private unnamed_addr constant [44 x i8] c"@mime_tbl = private unnamed_addr constant [\00" -@.str4024 = private unnamed_addr constant [19 x i8] c" x { ptr, ptr }] [\00" -@.str4025 = private unnamed_addr constant [3 x i8] c", \00" -@.str4026 = private unnamed_addr constant [20 x i8] c"{ ptr, ptr } { ptr \00" -@.str4027 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4028 = private unnamed_addr constant [3 x i8] c" }\00" -@.str4029 = private unnamed_addr constant [3 x i8] c"]\0A\00" -@.str4030 = private unnamed_addr constant [37 x i8] c"define ptr @lp_mime_of(ptr %path) {\0A\00" -@.str4031 = private unnamed_addr constant [146 x i8] c"entry:\0A %ext = call ptr @lp_path_ext(ptr %path)\0A %lc = call ptr @lp_mime_lc(ptr %ext)\0A %ip = alloca i32\0A store i32 0, ptr %ip\0A br label %lp\0A\00" -@.str4032 = private unnamed_addr constant [55 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %lt = icmp slt i32 %i, \00" -@.str4033 = private unnamed_addr constant [39 x i8] c"\0A br i1 %lt, label %body, label %def\0A\00" -@.str4034 = private unnamed_addr constant [30 x i8] c"body:\0A %kp = getelementptr [\00" -@.str4035 = private unnamed_addr constant [182 x i8] c" x { ptr, ptr }], ptr @mime_tbl, i32 0, i32 %i, i32 0\0A %k = load ptr, ptr %kp\0A %c = call i32 @strcmp(ptr %lc, ptr %k)\0A %eq = icmp eq i32 %c, 0\0A br i1 %eq, label %hit, label %nx\0A\00" -@.str4036 = private unnamed_addr constant [29 x i8] c"hit:\0A %vp = getelementptr [\00" -@.str4037 = private unnamed_addr constant [131 x i8] c" x { ptr, ptr }], ptr @mime_tbl, i32 0, i32 %i, i32 1\0A %v = load ptr, ptr %vp\0A %r = call ptr @lp_fs_strdup(ptr %v)\0A ret ptr %r\0A\00" -@.str4038 = private unnamed_addr constant [67 x i8] c"nx:\0A %i1 = add i32 %i, 1\0A store i32 %i1, ptr %ip\0A br label %lp\0A\00" -@.str4039 = private unnamed_addr constant [40 x i8] c"def:\0A %d = call ptr @lp_fs_strdup(ptr \00" -@.str4040 = private unnamed_addr constant [18 x i8] c")\0A ret ptr %d\0A}\0A\00" -@.str4041 = private unnamed_addr constant [34 x i8] c"define ptr @lp_mime_lc(ptr %s) {\0A\00" -@.str4042 = private unnamed_addr constant [132 x i8] c"entry:\0A %l64 = call i64 @strlen(ptr %s)\0A %l = trunc i64 %l64 to i32\0A %cap = add i64 %l64, 1\0A %out = call ptr @malloc(i64 %cap)\0A\00" -@.str4043 = private unnamed_addr constant [127 x i8] c" %b0 = load i8, ptr %s\0A %b0i = zext i8 %b0 to i32\0A %isdot = icmp eq i32 %b0i, 46\0A %start = select i1 %isdot, i32 1, i32 0\0A\00" -@.str4044 = private unnamed_addr constant [105 x i8] c" %ip = alloca i32\0A %op = alloca i32\0A store i32 %start, ptr %ip\0A store i32 0, ptr %op\0A br label %lp\0A\00" -@.str4045 = private unnamed_addr constant [182 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %pp = getelementptr i8, ptr %s, i32 %i\0A %c = load i8, ptr %pp\0A %ci = zext i8 %c to i32\0A %z = icmp eq i32 %ci, 0\0A br i1 %z, label %done, label %go\0A\00" -@.str4046 = private unnamed_addr constant [378 x i8] c"go:\0A %ua = icmp uge i32 %ci, 65\0A %ub = icmp ule i32 %ci, 90\0A %up = and i1 %ua, %ub\0A %lo = add i32 %ci, 32\0A %m = select i1 %up, i32 %lo, i32 %ci\0A %mt = trunc i32 %m to i8\0A %o = load i32, ptr %op\0A %dp = getelementptr i8, ptr %out, i32 %o\0A store i8 %mt, ptr %dp\0A %o1 = add i32 %o, 1\0A store i32 %o1, ptr %op\0A %i1 = add i32 %i, 1\0A store i32 %i1, ptr %ip\0A br label %lp\0A\00" -@.str4047 = private unnamed_addr constant [116 x i8] c"done:\0A %fo = load i32, ptr %op\0A %ep = getelementptr i8, ptr %out, i32 %fo\0A store i8 0, ptr %ep\0A ret ptr %out\0A}\0A\00" -@.str4048 = private unnamed_addr constant [40 x i8] c"define ptr @lp_mime_sniff(ptr %path) {\0A\00" -@.str4049 = private unnamed_addr constant [127 x i8] c"entry:\0A %f = call ptr @fopen(ptr %path, ptr @fn_str_rb)\0A %nz = icmp ne ptr %f, null\0A br i1 %nz, label %ok, label %fallback\0A\00" -@.str4050 = private unnamed_addr constant [226 x i8] c"ok:\0A %buf = call ptr @malloc(i64 16)\0A %rd = call i64 @fread(ptr %buf, i64 1, i64 8, ptr %f)\0A call i32 @fclose(ptr %f)\0A %rdi = trunc i64 %rd to i32\0A %has4 = icmp sge i32 %rdi, 4\0A br i1 %has4, label %chk, label %fallback\0A\00" -@.str4051 = private unnamed_addr constant [394 x i8] c"chk:\0A %b0p = getelementptr i8, ptr %buf, i32 0\0A %b0 = load i8, ptr %b0p\0A %b0i = zext i8 %b0 to i32\0A %b1p = getelementptr i8, ptr %buf, i32 1\0A %b1 = load i8, ptr %b1p\0A %b1i = zext i8 %b1 to i32\0A %b2p = getelementptr i8, ptr %buf, i32 2\0A %b2 = load i8, ptr %b2p\0A %b2i = zext i8 %b2 to i32\0A %b3p = getelementptr i8, ptr %buf, i32 3\0A %b3 = load i8, ptr %b3p\0A %b3i = zext i8 %b3 to i32\0A\00" -@.str4052 = private unnamed_addr constant [225 x i8] c" %p0 = icmp eq i32 %b0i, 137\0A %p1 = icmp eq i32 %b1i, 80\0A %p2 = icmp eq i32 %b2i, 78\0A %p3 = icmp eq i32 %b3i, 71\0A %pa = and i1 %p0, %p1\0A %pb = and i1 %pa, %p2\0A %pc = and i1 %pb, %p3\0A br i1 %pc, label %png, label %cj\0A\00" -@.str4053 = private unnamed_addr constant [72 x i8] c"png:\0A %rpng = call ptr @lp_fs_strdup(ptr @fn_sig_png)\0A ret ptr %rpng\0A\00" -@.str4054 = private unnamed_addr constant [178 x i8] c"cj:\0A %j0 = icmp eq i32 %b0i, 255\0A %j1 = icmp eq i32 %b1i, 216\0A %j2 = icmp eq i32 %b2i, 255\0A %ja = and i1 %j0, %j1\0A %jb = and i1 %ja, %j2\0A br i1 %jb, label %jpg, label %cg\0A\00" -@.str4055 = private unnamed_addr constant [72 x i8] c"jpg:\0A %rjpg = call ptr @lp_fs_strdup(ptr @fn_sig_jpg)\0A ret ptr %rjpg\0A\00" -@.str4056 = private unnamed_addr constant [175 x i8] c"cg:\0A %g0 = icmp eq i32 %b0i, 71\0A %g1 = icmp eq i32 %b1i, 73\0A %g2 = icmp eq i32 %b2i, 70\0A %ga = and i1 %g0, %g1\0A %gb = and i1 %ga, %g2\0A br i1 %gb, label %gif, label %cp\0A\00" -@.str4057 = private unnamed_addr constant [72 x i8] c"gif:\0A %rgif = call ptr @lp_fs_strdup(ptr @fn_sig_gif)\0A ret ptr %rgif\0A\00" -@.str4058 = private unnamed_addr constant [234 x i8] c"cp:\0A %q0 = icmp eq i32 %b0i, 37\0A %q1 = icmp eq i32 %b1i, 80\0A %q2 = icmp eq i32 %b2i, 68\0A %q3 = icmp eq i32 %b3i, 70\0A %qa = and i1 %q0, %q1\0A %qb = and i1 %qa, %q2\0A %qc = and i1 %qb, %q3\0A br i1 %qc, label %pdf, label %fallback\0A\00" -@.str4059 = private unnamed_addr constant [72 x i8] c"pdf:\0A %rpdf = call ptr @lp_fs_strdup(ptr @fn_sig_pdf)\0A ret ptr %rpdf\0A\00" -@.str4060 = private unnamed_addr constant [65 x i8] c"fallback:\0A %r = call ptr @lp_mime_of(ptr %path)\0A ret ptr %r\0A}\0A\00" -@.str4061 = private unnamed_addr constant [62 x i8] c"@fn_str_rb = private unnamed_addr constant [3 x i8] c\22rb\5C00\22\0A\00" -@.str4062 = private unnamed_addr constant [62 x i8] c"@fn_str_wb = private unnamed_addr constant [3 x i8] c\22wb\5C00\22\0A\00" -@.str4063 = private unnamed_addr constant [62 x i8] c"@fn_str_ab = private unnamed_addr constant [3 x i8] c\22ab\5C00\22\0A\00" -@.str4064 = private unnamed_addr constant [62 x i8] c"@fn_str_dot = private unnamed_addr constant [2 x i8] c\22.\5C00\22\0A\00" -@.str4065 = private unnamed_addr constant [64 x i8] c"@fn_str_slash = private unnamed_addr constant [2 x i8] c\22/\5C00\22\0A\00" -@.str4066 = private unnamed_addr constant [63 x i8] c"@fn_str_empty = private unnamed_addr constant [1 x i8] c\22\5C00\22\0A\00" -@.str4067 = private unnamed_addr constant [68 x i8] c"@fn_str_dottmp = private unnamed_addr constant [5 x i8] c\22.tmp\5C00\22\0A\00" -@.str4068 = private unnamed_addr constant [71 x i8] c"@fn_sig_png = private unnamed_addr constant [10 x i8] c\22image/png\5C00\22\0A\00" -@.str4069 = private unnamed_addr constant [72 x i8] c"@fn_sig_jpg = private unnamed_addr constant [11 x i8] c\22image/jpeg\5C00\22\0A\00" -@.str4070 = private unnamed_addr constant [71 x i8] c"@fn_sig_gif = private unnamed_addr constant [10 x i8] c\22image/gif\5C00\22\0A\00" -@.str4071 = private unnamed_addr constant [77 x i8] c"@fn_sig_pdf = private unnamed_addr constant [16 x i8] c\22application/pdf\5C00\22\0A\00" -@.str4072 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" -@.str4073 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str4074 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4075 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4076 = private unnamed_addr constant [4 x i8] c"len\00" -@.str4077 = private unnamed_addr constant [5 x i8] c"push\00" -@.str4078 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str4079 = private unnamed_addr constant [7 x i8] c"sample\00" -@.str4080 = private unnamed_addr constant [6 x i8] c"first\00" -@.str4081 = private unnamed_addr constant [5 x i8] c"last\00" -@.str4082 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str4083 = private unnamed_addr constant [5 x i8] c"swap\00" -@.str4084 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str4085 = private unnamed_addr constant [9 x i8] c"index_of\00" -@.str4086 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str4087 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str4088 = private unnamed_addr constant [10 x i8] c"remove_at\00" -@.str4089 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str4090 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str4091 = private unnamed_addr constant [8 x i8] c"sort_by\00" -@.str4092 = private unnamed_addr constant [13 x i8] c"sort_desc_by\00" -@.str4093 = private unnamed_addr constant [10 x i8] c"sort_with\00" -@.str4094 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4095 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4096 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" -@.str4097 = private unnamed_addr constant [3 x i8] c", \00" -@.str4098 = private unnamed_addr constant [3 x i8] c"ig\00" -@.str4099 = private unnamed_addr constant [4 x i8] c"igd\00" -@.str4100 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4101 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4102 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4103 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4104 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4105 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str4106 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str4107 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str4108 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str4109 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str4110 = private unnamed_addr constant [14 x i8] c", i32 8, i32 \00" -@.str4111 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str4112 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str4113 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str4114 = private unnamed_addr constant [3 x i8] c", \00" -@.str4115 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" -@.str4116 = private unnamed_addr constant [23 x i8] c"call ptr @realloc(ptr \00" -@.str4117 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str4118 = private unnamed_addr constant [2 x i8] c")\00" -@.str4119 = private unnamed_addr constant [13 x i8] c" store ptr \00" -@.str4120 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4121 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4122 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str3807 = private unnamed_addr constant [26 x i8] c"call ptr @lp_mime_of(ptr \00" +@.str3808 = private unnamed_addr constant [2 x i8] c")\00" +@.str3809 = private unnamed_addr constant [7 x i8] c"string\00" +@.str3810 = private unnamed_addr constant [31 x i8] c"declare i32 @access(ptr, i32)\0A\00" +@.str3811 = private unnamed_addr constant [30 x i8] c"declare i32 @mkdir(ptr, i32)\0A\00" +@.str3812 = private unnamed_addr constant [26 x i8] c"declare i32 @remove(ptr)\0A\00" +@.str3813 = private unnamed_addr constant [31 x i8] c"declare i32 @rename(ptr, ptr)\0A\00" +@.str3814 = private unnamed_addr constant [27 x i8] c"declare ptr @opendir(ptr)\0A\00" +@.str3815 = private unnamed_addr constant [27 x i8] c"declare ptr @readdir(ptr)\0A\00" +@.str3816 = private unnamed_addr constant [28 x i8] c"declare i32 @closedir(ptr)\0A\00" +@.str3817 = private unnamed_addr constant [41 x i8] c"define ptr @lp_fs_dup(ptr %s, i32 %n) {\0A\00" +@.str3818 = private unnamed_addr constant [133 x i8] c"entry:\0A %nz = zext i32 %n to i64\0A %t = add i64 %nz, 1\0A %m = call ptr @malloc(i64 %t)\0A call ptr @memcpy(ptr %m, ptr %s, i64 %nz)\0A\00" +@.str3819 = private unnamed_addr constant [81 x i8] c" %end = getelementptr i8, ptr %m, i32 %n\0A store i8 0, ptr %end\0A ret ptr %m\0A}\0A\00" +@.str3820 = private unnamed_addr constant [36 x i8] c"define ptr @lp_fs_strdup(ptr %s) {\0A\00" +@.str3821 = private unnamed_addr constant [127 x i8] c"entry:\0A %l = call i64 @strlen(ptr %s)\0A %li = trunc i64 %l to i32\0A %r = call ptr @lp_fs_dup(ptr %s, i32 %li)\0A ret ptr %r\0A}\0A\00" +@.str3822 = private unnamed_addr constant [39 x i8] c"define i32 @lp_fs_lastslash(ptr %s) {\0A\00" +@.str3823 = private unnamed_addr constant [108 x i8] c"entry:\0A %ip = alloca i32\0A %rp = alloca i32\0A store i32 0, ptr %ip\0A store i32 -1, ptr %rp\0A br label %lp\0A\00" +@.str3824 = private unnamed_addr constant [118 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A\00" +@.str3825 = private unnamed_addr constant [61 x i8] c" %z = icmp eq i32 %c, 0\0A br i1 %z, label %done, label %go\0A\00" +@.str3826 = private unnamed_addr constant [67 x i8] c"go:\0A %sl = icmp eq i32 %c, 47\0A br i1 %sl, label %set, label %nx\0A\00" +@.str3827 = private unnamed_addr constant [45 x i8] c"set:\0A store i32 %i, ptr %rp\0A br label %nx\0A\00" +@.str3828 = private unnamed_addr constant [67 x i8] c"nx:\0A %i1 = add i32 %i, 1\0A store i32 %i1, ptr %ip\0A br label %lp\0A\00" +@.str3829 = private unnamed_addr constant [47 x i8] c"done:\0A %r = load i32, ptr %rp\0A ret i32 %r\0A}\0A\00" +@.str3830 = private unnamed_addr constant [44 x i8] c"define ptr @lp_path_join(ptr %a, ptr %b) {\0A\00" +@.str3831 = private unnamed_addr constant [140 x i8] c"entry:\0A %la64 = call i64 @strlen(ptr %a)\0A %la = trunc i64 %la64 to i32\0A %lb64 = call i64 @strlen(ptr %b)\0A %lb = trunc i64 %lb64 to i32\0A\00" +@.str3832 = private unnamed_addr constant [122 x i8] c" %b0 = load i8, ptr %b\0A %b0i = zext i8 %b0 to i32\0A %babs = icmp eq i32 %b0i, 47\0A br i1 %babs, label %retb, label %ka\0A\00" +@.str3833 = private unnamed_addr constant [60 x i8] c"retb:\0A %rb = call ptr @lp_fs_strdup(ptr %b)\0A ret ptr %rb\0A\00" +@.str3834 = private unnamed_addr constant [73 x i8] c"ka:\0A %aemp = icmp eq i32 %la, 0\0A br i1 %aemp, label %retb2, label %kb\0A\00" +@.str3835 = private unnamed_addr constant [63 x i8] c"retb2:\0A %rb2 = call ptr @lp_fs_strdup(ptr %b)\0A ret ptr %rb2\0A\00" +@.str3836 = private unnamed_addr constant [73 x i8] c"kb:\0A %bemp = icmp eq i32 %lb, 0\0A br i1 %bemp, label %reta, label %chk\0A\00" +@.str3837 = private unnamed_addr constant [60 x i8] c"reta:\0A %ra = call ptr @lp_fs_strdup(ptr %a)\0A ret ptr %ra\0A\00" +@.str3838 = private unnamed_addr constant [159 x i8] c"chk:\0A %lam1 = sub i32 %la, 1\0A %pe = getelementptr i8, ptr %a, i32 %lam1\0A %ae = load i8, ptr %pe\0A %aei = zext i8 %ae to i32\0A %ends = icmp eq i32 %aei, 47\0A\00" +@.str3839 = private unnamed_addr constant [189 x i8] c" %sep = select i1 %ends, i32 0, i32 1\0A %tot = add i32 %la, %lb\0A %tot2 = add i32 %tot, %sep\0A %tot3 = add i32 %tot2, 1\0A %totz = zext i32 %tot3 to i64\0A %m = call ptr @malloc(i64 %totz)\0A\00" +@.str3840 = private unnamed_addr constant [75 x i8] c" %laz = zext i32 %la to i64\0A call ptr @memcpy(ptr %m, ptr %a, i64 %laz)\0A\00" +@.str3841 = private unnamed_addr constant [42 x i8] c" br i1 %ends, label %nosep, label %wsep\0A\00" +@.str3842 = private unnamed_addr constant [90 x i8] c"wsep:\0A %sp = getelementptr i8, ptr %m, i32 %la\0A store i8 47, ptr %sp\0A br label %after\0A\00" +@.str3843 = private unnamed_addr constant [26 x i8] c"nosep:\0A br label %after\0A\00" +@.str3844 = private unnamed_addr constant [155 x i8] c"after:\0A %boff = add i32 %la, %sep\0A %dp = getelementptr i8, ptr %m, i32 %boff\0A %lbz = zext i32 %lb to i64\0A call ptr @memcpy(ptr %dp, ptr %b, i64 %lbz)\0A\00" +@.str3845 = private unnamed_addr constant [115 x i8] c" %endoff = add i32 %boff, %lb\0A %ep = getelementptr i8, ptr %m, i32 %endoff\0A store i8 0, ptr %ep\0A ret ptr %m\0A}\0A\00" +@.str3846 = private unnamed_addr constant [36 x i8] c"define ptr @lp_path_base(ptr %s) {\0A\00" +@.str3847 = private unnamed_addr constant [121 x i8] c"entry:\0A %ls = call i32 @lp_fs_lastslash(ptr %s)\0A %none = icmp eq i32 %ls, -1\0A br i1 %none, label %whole, label %tail\0A\00" +@.str3848 = private unnamed_addr constant [59 x i8] c"whole:\0A %r = call ptr @lp_fs_strdup(ptr %s)\0A ret ptr %r\0A\00" +@.str3849 = private unnamed_addr constant [126 x i8] c"tail:\0A %st = add i32 %ls, 1\0A %p = getelementptr i8, ptr %s, i32 %st\0A %r2 = call ptr @lp_fs_strdup(ptr %p)\0A ret ptr %r2\0A}\0A\00" +@.str3850 = private unnamed_addr constant [35 x i8] c"define ptr @lp_path_dir(ptr %s) {\0A\00" +@.str3851 = private unnamed_addr constant [119 x i8] c"entry:\0A %ls = call i32 @lp_fs_lastslash(ptr %s)\0A %none = icmp eq i32 %ls, -1\0A br i1 %none, label %dot, label %chk0\0A\00" +@.str3852 = private unnamed_addr constant [66 x i8] c"dot:\0A %d = call ptr @lp_fs_strdup(ptr @fn_str_dot)\0A ret ptr %d\0A\00" +@.str3853 = private unnamed_addr constant [79 x i8] c"chk0:\0A %isroot = icmp eq i32 %ls, 0\0A br i1 %isroot, label %root, label %cut\0A\00" +@.str3854 = private unnamed_addr constant [69 x i8] c"root:\0A %r = call ptr @lp_fs_strdup(ptr @fn_str_slash)\0A ret ptr %r\0A\00" +@.str3855 = private unnamed_addr constant [67 x i8] c"cut:\0A %r2 = call ptr @lp_fs_dup(ptr %s, i32 %ls)\0A ret ptr %r2\0A}\0A\00" +@.str3856 = private unnamed_addr constant [35 x i8] c"define ptr @lp_path_ext(ptr %s) {\0A\00" +@.str3857 = private unnamed_addr constant [77 x i8] c"entry:\0A %ls = call i32 @lp_fs_lastslash(ptr %s)\0A %bstart = add i32 %ls, 1\0A\00" +@.str3858 = private unnamed_addr constant [107 x i8] c" %dp = alloca i32\0A %ip = alloca i32\0A store i32 -1, ptr %dp\0A store i32 %bstart, ptr %ip\0A br label %lp\0A\00" +@.str3859 = private unnamed_addr constant [178 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %p = getelementptr i8, ptr %s, i32 %i\0A %b = load i8, ptr %p\0A %c = zext i8 %b to i32\0A %z = icmp eq i32 %c, 0\0A br i1 %z, label %done, label %go\0A\00" +@.str3860 = private unnamed_addr constant [68 x i8] c"go:\0A %dot = icmp eq i32 %c, 46\0A br i1 %dot, label %sd, label %nx\0A\00" +@.str3861 = private unnamed_addr constant [44 x i8] c"sd:\0A store i32 %i, ptr %dp\0A br label %nx\0A\00" +@.str3862 = private unnamed_addr constant [67 x i8] c"nx:\0A %i1 = add i32 %i, 1\0A store i32 %i1, ptr %ip\0A br label %lp\0A\00" +@.str3863 = private unnamed_addr constant [102 x i8] c"done:\0A %d = load i32, ptr %dp\0A %nod = icmp eq i32 %d, -1\0A br i1 %nod, label %empty, label %chkpos\0A\00" +@.str3864 = private unnamed_addr constant [70 x i8] c"empty:\0A %e = call ptr @lp_fs_strdup(ptr @fn_str_empty)\0A ret ptr %e\0A\00" +@.str3865 = private unnamed_addr constant [91 x i8] c"chkpos:\0A %atstart = icmp eq i32 %d, %bstart\0A br i1 %atstart, label %empty2, label %take\0A\00" +@.str3866 = private unnamed_addr constant [73 x i8] c"empty2:\0A %e2 = call ptr @lp_fs_strdup(ptr @fn_str_empty)\0A ret ptr %e2\0A\00" +@.str3867 = private unnamed_addr constant [102 x i8] c"take:\0A %pp = getelementptr i8, ptr %s, i32 %d\0A %r = call ptr @lp_fs_strdup(ptr %pp)\0A ret ptr %r\0A}\0A\00" +@.str3868 = private unnamed_addr constant [36 x i8] c"define ptr @lp_path_stem(ptr %s) {\0A\00" +@.str3869 = private unnamed_addr constant [88 x i8] c"entry:\0A %base = call ptr @lp_path_base(ptr %s)\0A %ext = call ptr @lp_path_ext(ptr %s)\0A\00" +@.str3870 = private unnamed_addr constant [138 x i8] c" %bl64 = call i64 @strlen(ptr %base)\0A %bl = trunc i64 %bl64 to i32\0A %el64 = call i64 @strlen(ptr %ext)\0A %el = trunc i64 %el64 to i32\0A\00" +@.str3871 = private unnamed_addr constant [92 x i8] c" %keep = sub i32 %bl, %el\0A %r = call ptr @lp_fs_dup(ptr %base, i32 %keep)\0A ret ptr %r\0A}\0A\00" +@.str3872 = private unnamed_addr constant [36 x i8] c"define ptr @lp_path_norm(ptr %s) {\0A\00" +@.str3873 = private unnamed_addr constant [133 x i8] c"entry:\0A %len64 = call i64 @strlen(ptr %s)\0A %len = trunc i64 %len64 to i32\0A %cap = add i32 %len, 2\0A %capz = zext i32 %cap to i64\0A\00" +@.str3874 = private unnamed_addr constant [38 x i8] c" %out = call ptr @malloc(i64 %capz)\0A\00" +@.str3875 = private unnamed_addr constant [96 x i8] c" %stz = mul i32 %cap, 4\0A %stzz = zext i32 %stz to i64\0A %segst = call ptr @malloc(i64 %stzz)\0A\00" +@.str3876 = private unnamed_addr constant [83 x i8] c" %b0 = load i8, ptr %s\0A %b0i = zext i8 %b0 to i32\0A %abs = icmp eq i32 %b0i, 47\0A\00" +@.str3877 = private unnamed_addr constant [106 x i8] c" %ip = alloca i32\0A %op = alloca i32\0A %scp = alloca i32\0A store i32 0, ptr %ip\0A store i32 0, ptr %scp\0A\00" +@.str3878 = private unnamed_addr constant [40 x i8] c" br i1 %abs, label %ldr, label %noldr\0A\00" +@.str3879 = private unnamed_addr constant [69 x i8] c"ldr:\0A store i8 47, ptr %out\0A store i32 1, ptr %op\0A br label %seg\0A\00" +@.str3880 = private unnamed_addr constant [47 x i8] c"noldr:\0A store i32 0, ptr %op\0A br label %seg\0A\00" +@.str3881 = private unnamed_addr constant [23 x i8] c"seg:\0A br label %sksl\0A\00" +@.str3882 = private unnamed_addr constant [200 x i8] c"sksl:\0A %i = load i32, ptr %ip\0A %pp = getelementptr i8, ptr %s, i32 %i\0A %cc = load i8, ptr %pp\0A %cci = zext i8 %cc to i32\0A %issl = icmp eq i32 %cci, 47\0A br i1 %issl, label %adv, label %segstart\0A\00" +@.str3883 = private unnamed_addr constant [70 x i8] c"adv:\0A %i2 = add i32 %i, 1\0A store i32 %i2, ptr %ip\0A br label %sksl\0A\00" +@.str3884 = private unnamed_addr constant [54 x i8] c"segstart:\0A %ss = load i32, ptr %ip\0A br label %scan\0A\00" +@.str3885 = private unnamed_addr constant [260 x i8] c"scan:\0A %j = load i32, ptr %ip\0A %pj = getelementptr i8, ptr %s, i32 %j\0A %cj = load i8, ptr %pj\0A %cji = zext i8 %cj to i32\0A %endc = icmp eq i32 %cji, 0\0A %slc = icmp eq i32 %cji, 47\0A %stop = or i1 %endc, %slc\0A br i1 %stop, label %seghave, label %scanadv\0A\00" +@.str3886 = private unnamed_addr constant [74 x i8] c"scanadv:\0A %j1 = add i32 %j, 1\0A store i32 %j1, ptr %ip\0A br label %scan\0A\00" +@.str3887 = private unnamed_addr constant [147 x i8] c"seghave:\0A %se = load i32, ptr %ip\0A %slen = sub i32 %se, %ss\0A %emptyseg = icmp eq i32 %slen, 0\0A br i1 %emptyseg, label %atend, label %classify\0A\00" +@.str3888 = private unnamed_addr constant [11 x i8] c"classify:\0A\00" +@.str3889 = private unnamed_addr constant [244 x i8] c" %is1 = icmp eq i32 %slen, 1\0A %c0p = getelementptr i8, ptr %s, i32 %ss\0A %c0 = load i8, ptr %c0p\0A %c0i = zext i8 %c0 to i32\0A %isdotchar = icmp eq i32 %c0i, 46\0A %isdot = and i1 %is1, %isdotchar\0A br i1 %isdot, label %contseg, label %chkdd\0A\00" +@.str3890 = private unnamed_addr constant [257 x i8] c"chkdd:\0A %is2 = icmp eq i32 %slen, 2\0A %d0p = getelementptr i8, ptr %s, i32 %ss\0A %d0 = load i8, ptr %d0p\0A %d0i = zext i8 %d0 to i32\0A %d1o = add i32 %ss, 1\0A %d1p = getelementptr i8, ptr %s, i32 %d1o\0A %d1 = load i8, ptr %d1p\0A %d1i = zext i8 %d1 to i32\0A\00" +@.str3891 = private unnamed_addr constant [161 x i8] c" %dd0 = icmp eq i32 %d0i, 46\0A %dd1 = icmp eq i32 %d1i, 46\0A %ddx = and i1 %dd0, %dd1\0A %isdd = and i1 %is2, %ddx\0A br i1 %isdd, label %dotdot, label %keepseg\0A\00" +@.str3892 = private unnamed_addr constant [105 x i8] c"dotdot:\0A %sc = load i32, ptr %scp\0A %has = icmp sgt i32 %sc, 0\0A br i1 %has, label %pop, label %chkrel\0A\00" +@.str3893 = private unnamed_addr constant [184 x i8] c"pop:\0A %sc1 = sub i32 %sc, 1\0A %stp = getelementptr i32, ptr %segst, i32 %sc1\0A %newop = load i32, ptr %stp\0A store i32 %newop, ptr %op\0A store i32 %sc1, ptr %scp\0A br label %contseg\0A\00" +@.str3894 = private unnamed_addr constant [54 x i8] c"chkrel:\0A br i1 %abs, label %contseg, label %keepseg\0A\00" +@.str3895 = private unnamed_addr constant [195 x i8] c"keepseg:\0A %sc2 = load i32, ptr %scp\0A %o0 = load i32, ptr %op\0A %stp2 = getelementptr i32, ptr %segst, i32 %sc2\0A store i32 %o0, ptr %stp2\0A %sc2n = add i32 %sc2, 1\0A store i32 %sc2n, ptr %scp\0A\00" +@.str3896 = private unnamed_addr constant [63 x i8] c" %cpp = alloca i32\0A store i32 %ss, ptr %cpp\0A br label %cpy\0A\00" +@.str3897 = private unnamed_addr constant [102 x i8] c"cpy:\0A %k = load i32, ptr %cpp\0A %klt = icmp slt i32 %k, %se\0A br i1 %klt, label %cpyb, label %cpysl\0A\00" +@.str3898 = private unnamed_addr constant [285 x i8] c"cpyb:\0A %skp = getelementptr i8, ptr %s, i32 %k\0A %sk = load i8, ptr %skp\0A %oo = load i32, ptr %op\0A %dkp = getelementptr i8, ptr %out, i32 %oo\0A store i8 %sk, ptr %dkp\0A %oo1 = add i32 %oo, 1\0A store i32 %oo1, ptr %op\0A %k1 = add i32 %k, 1\0A store i32 %k1, ptr %cpp\0A br label %cpy\0A\00" +@.str3899 = private unnamed_addr constant [175 x i8] c"cpysl:\0A %oc = load i32, ptr %op\0A %scp3 = getelementptr i8, ptr %out, i32 %oc\0A store i8 47, ptr %scp3\0A %oc1 = add i32 %oc, 1\0A store i32 %oc1, ptr %op\0A br label %contseg\0A\00" +@.str3900 = private unnamed_addr constant [206 x i8] c"contseg:\0A %ci = load i32, ptr %ip\0A %cip = getelementptr i8, ptr %s, i32 %ci\0A %cic = load i8, ptr %cip\0A %cici = zext i8 %cic to i32\0A %atz = icmp eq i32 %cici, 0\0A br i1 %atz, label %finish, label %seg\0A\00" +@.str3901 = private unnamed_addr constant [27 x i8] c"atend:\0A br label %finish\0A\00" +@.str3902 = private unnamed_addr constant [110 x i8] c"finish:\0A %fo = load i32, ptr %op\0A %gt1 = icmp sgt i32 %fo, 1\0A br i1 %gt1, label %trimchk, label %fdefault\0A\00" +@.str3903 = private unnamed_addr constant [211 x i8] c"trimchk:\0A %lasto = sub i32 %fo, 1\0A %lop = getelementptr i8, ptr %out, i32 %lasto\0A %lc = load i8, ptr %lop\0A %lci = zext i8 %lc to i32\0A %istsl = icmp eq i32 %lci, 47\0A br i1 %istsl, label %trim, label %term\0A\00" +@.str3904 = private unnamed_addr constant [52 x i8] c"trim:\0A store i32 %lasto, ptr %op\0A br label %term\0A\00" +@.str3905 = private unnamed_addr constant [28 x i8] c"fdefault:\0A br label %term\0A\00" +@.str3906 = private unnamed_addr constant [104 x i8] c"term:\0A %eo = load i32, ptr %op\0A %ez = icmp eq i32 %eo, 0\0A br i1 %ez, label %emptyout, label %putnul\0A\00" +@.str3907 = private unnamed_addr constant [114 x i8] c"emptyout:\0A store i8 46, ptr %out\0A %e1 = getelementptr i8, ptr %out, i32 1\0A store i8 0, ptr %e1\0A ret ptr %out\0A\00" +@.str3908 = private unnamed_addr constant [92 x i8] c"putnul:\0A %ep = getelementptr i8, ptr %out, i32 %eo\0A store i8 0, ptr %ep\0A ret ptr %out\0A}\0A\00" +@.str3909 = private unnamed_addr constant [36 x i8] c"define i32 @lp_fs_exists(ptr %p) {\0A\00" +@.str3910 = private unnamed_addr constant [114 x i8] c"entry:\0A %r = call i32 @access(ptr %p, i32 0)\0A %ok = icmp eq i32 %r, 0\0A %z = zext i1 %ok to i32\0A ret i32 %z\0A}\0A\00" +@.str3911 = private unnamed_addr constant [36 x i8] c"define i32 @lp_fs_is_dir(ptr %p) {\0A\00" +@.str3912 = private unnamed_addr constant [105 x i8] c"entry:\0A %d = call ptr @opendir(ptr %p)\0A %nz = icmp ne ptr %d, null\0A br i1 %nz, label %yes, label %no\0A\00" +@.str3913 = private unnamed_addr constant [47 x i8] c"yes:\0A call i32 @closedir(ptr %d)\0A ret i32 1\0A\00" +@.str3914 = private unnamed_addr constant [19 x i8] c"no:\0A ret i32 0\0A}\0A\00" +@.str3915 = private unnamed_addr constant [34 x i8] c"define i32 @lp_fs_size(ptr %p) {\0A\00" +@.str3916 = private unnamed_addr constant [119 x i8] c"entry:\0A %f = call ptr @fopen(ptr %p, ptr @fn_str_rb)\0A %nz = icmp ne ptr %f, null\0A br i1 %nz, label %ok, label %bad\0A\00" +@.str3917 = private unnamed_addr constant [19 x i8] c"bad:\0A ret i32 -1\0A\00" +@.str3918 = private unnamed_addr constant [147 x i8] c"ok:\0A call i32 @fseek(ptr %f, i64 0, i32 2)\0A %n = call i64 @ftell(ptr %f)\0A call i32 @fclose(ptr %f)\0A %ni = trunc i64 %n to i32\0A ret i32 %ni\0A}\0A\00" +@.str3919 = private unnamed_addr constant [50 x i8] c"define ptr @lp_fs_readall(ptr %p, ptr %lenout) {\0A\00" +@.str3920 = private unnamed_addr constant [146 x i8] c"entry:\0A store i32 0, ptr %lenout\0A %f = call ptr @fopen(ptr %p, ptr @fn_str_rb)\0A %nz = icmp ne ptr %f, null\0A br i1 %nz, label %ok, label %bad\0A\00" +@.str3921 = private unnamed_addr constant [21 x i8] c"bad:\0A ret ptr null\0A\00" +@.str3922 = private unnamed_addr constant [147 x i8] c"ok:\0A call i32 @fseek(ptr %f, i64 0, i32 2)\0A %n64 = call i64 @ftell(ptr %f)\0A call i32 @fseek(ptr %f, i64 0, i32 0)\0A %n = trunc i64 %n64 to i32\0A\00" +@.str3923 = private unnamed_addr constant [144 x i8] c" %cap = add i64 %n64, 1\0A %m = call ptr @malloc(i64 %cap)\0A %rd = call i64 @fread(ptr %m, i64 1, i64 %n64, ptr %f)\0A call i32 @fclose(ptr %f)\0A\00" +@.str3924 = private unnamed_addr constant [145 x i8] c" %rdi = trunc i64 %rd to i32\0A %endp = getelementptr i8, ptr %m, i32 %rdi\0A store i8 0, ptr %endp\0A store i32 %rdi, ptr %lenout\0A ret ptr %m\0A}\0A\00" +@.str3925 = private unnamed_addr constant [39 x i8] c"define ptr @lp_fs_read_text(ptr %p) {\0A\00" +@.str3926 = private unnamed_addr constant [90 x i8] c"entry:\0A %lp = alloca i32\0A %r = call ptr @lp_fs_readall(ptr %p, ptr %lp)\0A ret ptr %r\0A}\0A\00" +@.str3927 = private unnamed_addr constant [48 x i8] c"define i32 @lp_fs_write_text(ptr %p, ptr %s) {\0A\00" +@.str3928 = private unnamed_addr constant [185 x i8] c"entry:\0A %tmp = call ptr @lp_path_join_ext(ptr %p, ptr @fn_str_dottmp)\0A %f = call ptr @fopen(ptr %tmp, ptr @fn_str_wb)\0A %nz = icmp ne ptr %f, null\0A br i1 %nz, label %ok, label %bad\0A\00" +@.str3929 = private unnamed_addr constant [18 x i8] c"bad:\0A ret i32 0\0A\00" +@.str3930 = private unnamed_addr constant [119 x i8] c"ok:\0A %n = call i64 @strlen(ptr %s)\0A %w = call i64 @fwrite(ptr %s, i64 1, i64 %n, ptr %f)\0A call i32 @fclose(ptr %f)\0A\00" +@.str3931 = private unnamed_addr constant [114 x i8] c" %rr = call i32 @rename(ptr %tmp, ptr %p)\0A %ok2 = icmp eq i32 %rr, 0\0A %z = zext i1 %ok2 to i32\0A ret i32 %z\0A}\0A\00" +@.str3932 = private unnamed_addr constant [48 x i8] c"define ptr @lp_path_join_ext(ptr %a, ptr %b) {\0A\00" +@.str3933 = private unnamed_addr constant [159 x i8] c"entry:\0A %la = call i64 @strlen(ptr %a)\0A %lb = call i64 @strlen(ptr %b)\0A %sum = add i64 %la, %lb\0A %tot = add i64 %sum, 1\0A %m = call ptr @malloc(i64 %tot)\0A\00" +@.str3934 = private unnamed_addr constant [212 x i8] c" call ptr @memcpy(ptr %m, ptr %a, i64 %la)\0A %m2 = getelementptr i8, ptr %m, i64 %la\0A call ptr @memcpy(ptr %m2, ptr %b, i64 %lb)\0A %ep = getelementptr i8, ptr %m, i64 %sum\0A store i8 0, ptr %ep\0A ret ptr %m\0A}\0A\00" +@.str3935 = private unnamed_addr constant [49 x i8] c"define i32 @lp_fs_append_text(ptr %p, ptr %s) {\0A\00" +@.str3936 = private unnamed_addr constant [119 x i8] c"entry:\0A %f = call ptr @fopen(ptr %p, ptr @fn_str_ab)\0A %nz = icmp ne ptr %f, null\0A br i1 %nz, label %ok, label %bad\0A\00" +@.str3937 = private unnamed_addr constant [18 x i8] c"bad:\0A ret i32 0\0A\00" +@.str3938 = private unnamed_addr constant [128 x i8] c"ok:\0A %n = call i64 @strlen(ptr %s)\0A call i64 @fwrite(ptr %s, i64 1, i64 %n, ptr %f)\0A call i32 @fclose(ptr %f)\0A ret i32 1\0A}\0A\00" +@.str3939 = private unnamed_addr constant [36 x i8] c"define i32 @lp_fs_remove(ptr %p) {\0A\00" +@.str3940 = private unnamed_addr constant [107 x i8] c"entry:\0A %r = call i32 @remove(ptr %p)\0A %ok = icmp eq i32 %r, 0\0A %z = zext i1 %ok to i32\0A ret i32 %z\0A}\0A\00" +@.str3941 = private unnamed_addr constant [46 x i8] c"define i32 @lp_fs_copy(ptr %src, ptr %dst) {\0A\00" +@.str3942 = private unnamed_addr constant [145 x i8] c"entry:\0A %lp = alloca i32\0A %buf = call ptr @lp_fs_readall(ptr %src, ptr %lp)\0A %nz = icmp ne ptr %buf, null\0A br i1 %nz, label %ok, label %bad\0A\00" +@.str3943 = private unnamed_addr constant [18 x i8] c"bad:\0A ret i32 0\0A\00" +@.str3944 = private unnamed_addr constant [185 x i8] c"ok:\0A %tmp = call ptr @lp_path_join_ext(ptr %dst, ptr @fn_str_dottmp)\0A %f = call ptr @fopen(ptr %tmp, ptr @fn_str_wb)\0A %fnz = icmp ne ptr %f, null\0A br i1 %fnz, label %w, label %bad\0A\00" +@.str3945 = private unnamed_addr constant [255 x i8] c"w:\0A %n = load i32, ptr %lp\0A %nz64 = zext i32 %n to i64\0A call i64 @fwrite(ptr %buf, i64 1, i64 %nz64, ptr %f)\0A call i32 @fclose(ptr %f)\0A %rr = call i32 @rename(ptr %tmp, ptr %dst)\0A %ok2 = icmp eq i32 %rr, 0\0A %z = zext i1 %ok2 to i32\0A ret i32 %z\0A}\0A\00" +@.str3946 = private unnamed_addr constant [35 x i8] c"define i32 @lp_fs_mkdir(ptr %p) {\0A\00" +@.str3947 = private unnamed_addr constant [105 x i8] c"entry:\0A %dup = call ptr @lp_fs_strdup(ptr %p)\0A %ip = alloca i32\0A store i32 1, ptr %ip\0A br label %lp\0A\00" +@.str3948 = private unnamed_addr constant [183 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %pp = getelementptr i8, ptr %dup, i32 %i\0A %c = load i8, ptr %pp\0A %ci = zext i8 %c to i32\0A %z = icmp eq i32 %ci, 0\0A br i1 %z, label %fin, label %go\0A\00" +@.str3949 = private unnamed_addr constant [68 x i8] c"go:\0A %sl = icmp eq i32 %ci, 47\0A br i1 %sl, label %cut, label %nx\0A\00" +@.str3950 = private unnamed_addr constant [103 x i8] c"cut:\0A store i8 0, ptr %pp\0A call i32 @mkdir(ptr %dup, i32 493)\0A store i8 47, ptr %pp\0A br label %nx\0A\00" +@.str3951 = private unnamed_addr constant [67 x i8] c"nx:\0A %i1 = add i32 %i, 1\0A store i32 %i1, ptr %ip\0A br label %lp\0A\00" +@.str3952 = private unnamed_addr constant [96 x i8] c"fin:\0A call i32 @mkdir(ptr %dup, i32 493)\0A %r = call i32 @lp_fs_is_dir(ptr %p)\0A ret i32 %r\0A}\0A\00" +@.str3953 = private unnamed_addr constant [37 x i8] c"define ptr @lp_fs_list(ptr %path) {\0A\00" +@.str3954 = private unnamed_addr constant [223 x i8] c"entry:\0A %h = call ptr @malloc(i64 16)\0A %d0 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 0\0A %d1 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 1\0A %d2 = getelementptr inbounds %LSlice, ptr %h, i32 0, i32 2\0A\00" +@.str3955 = private unnamed_addr constant [182 x i8] c" %datap = alloca ptr\0A %cntp = alloca i32\0A %capp = alloca i32\0A %init = call ptr @malloc(i64 128)\0A store ptr %init, ptr %datap\0A store i32 0, ptr %cntp\0A store i32 16, ptr %capp\0A\00" +@.str3956 = private unnamed_addr constant [109 x i8] c" %dir = call ptr @opendir(ptr %path)\0A %dnz = icmp ne ptr %dir, null\0A br i1 %dnz, label %rd, label %empty\0A\00" +@.str3957 = private unnamed_addr constant [114 x i8] c"rd:\0A %de = call ptr @readdir(ptr %dir)\0A %denz = icmp ne ptr %de, null\0A br i1 %denz, label %ent, label %closed\0A\00" +@.str3958 = private unnamed_addr constant [51 x i8] c"ent:\0A %namep = getelementptr i8, ptr %de, i32 21\0A\00" +@.str3959 = private unnamed_addr constant [135 x i8] c" %n0 = load i8, ptr %namep\0A %n0i = zext i8 %n0 to i32\0A %isdot0 = icmp eq i32 %n0i, 46\0A br i1 %isdot0, label %chkdots, label %keep\0A\00" +@.str3960 = private unnamed_addr constant [176 x i8] c"chkdots:\0A %n1p = getelementptr i8, ptr %namep, i32 1\0A %n1 = load i8, ptr %n1p\0A %n1i = zext i8 %n1 to i32\0A %n1z = icmp eq i32 %n1i, 0\0A br i1 %n1z, label %rd, label %chkdd\0A\00" +@.str3961 = private unnamed_addr constant [85 x i8] c"chkdd:\0A %isdot1 = icmp eq i32 %n1i, 46\0A br i1 %isdot1, label %chkdd2, label %keep\0A\00" +@.str3962 = private unnamed_addr constant [174 x i8] c"chkdd2:\0A %n2p = getelementptr i8, ptr %namep, i32 2\0A %n2 = load i8, ptr %n2p\0A %n2i = zext i8 %n2 to i32\0A %n2z = icmp eq i32 %n2i, 0\0A br i1 %n2z, label %rd, label %keep\0A\00" +@.str3963 = private unnamed_addr constant [50 x i8] c"keep:\0A %nm = call ptr @lp_fs_strdup(ptr %namep)\0A\00" +@.str3964 = private unnamed_addr constant [132 x i8] c" %cnt = load i32, ptr %cntp\0A %cap = load i32, ptr %capp\0A %full = icmp sge i32 %cnt, %cap\0A br i1 %full, label %grow, label %put\0A\00" +@.str3965 = private unnamed_addr constant [232 x i8] c"grow:\0A %nc = mul i32 %cap, 2\0A store i32 %nc, ptr %capp\0A %ncz = zext i32 %nc to i64\0A %nb = mul i64 %ncz, 8\0A %old = load ptr, ptr %datap\0A %new = call ptr @realloc(ptr %old, i64 %nb)\0A store ptr %new, ptr %datap\0A br label %put\0A\00" +@.str3966 = private unnamed_addr constant [215 x i8] c"put:\0A %data = load ptr, ptr %datap\0A %cnt2 = load i32, ptr %cntp\0A %slot = getelementptr ptr, ptr %data, i32 %cnt2\0A store ptr %nm, ptr %slot\0A %cnt3 = add i32 %cnt2, 1\0A store i32 %cnt3, ptr %cntp\0A br label %rd\0A\00" +@.str3967 = private unnamed_addr constant [59 x i8] c"closed:\0A call i32 @closedir(ptr %dir)\0A br label %sortit\0A\00" +@.str3968 = private unnamed_addr constant [27 x i8] c"empty:\0A br label %sortit\0A\00" +@.str3969 = private unnamed_addr constant [130 x i8] c"sortit:\0A %fdata = load ptr, ptr %datap\0A %fcnt = load i32, ptr %cntp\0A %aip = alloca i32\0A store i32 1, ptr %aip\0A br label %so\0A\00" +@.str3970 = private unnamed_addr constant [104 x i8] c"so:\0A %ai = load i32, ptr %aip\0A %ailt = icmp slt i32 %ai, %fcnt\0A br i1 %ailt, label %sob, label %sod\0A\00" +@.str3971 = private unnamed_addr constant [166 x i8] c"sob:\0A %kp = getelementptr ptr, ptr %fdata, i32 %ai\0A %key = load ptr, ptr %kp\0A %jp = alloca i32\0A %aim1 = sub i32 %ai, 1\0A store i32 %aim1, ptr %jp\0A br label %si\0A\00" +@.str3972 = private unnamed_addr constant [98 x i8] c"si:\0A %jj = load i32, ptr %jp\0A %jge = icmp sge i32 %jj, 0\0A br i1 %jge, label %sic, label %sins\0A\00" +@.str3973 = private unnamed_addr constant [194 x i8] c"sic:\0A %ejp = getelementptr ptr, ptr %fdata, i32 %jj\0A %ej = load ptr, ptr %ejp\0A %cmp = call i32 @strcmp(ptr %ej, ptr %key)\0A %gt = icmp sgt i32 %cmp, 0\0A br i1 %gt, label %shift, label %sins\0A\00" +@.str3974 = private unnamed_addr constant [168 x i8] c"shift:\0A %j1 = add i32 %jj, 1\0A %dp1 = getelementptr ptr, ptr %fdata, i32 %j1\0A store ptr %ej, ptr %dp1\0A %jm = sub i32 %jj, 1\0A store i32 %jm, ptr %jp\0A br label %si\0A\00" +@.str3975 = private unnamed_addr constant [201 x i8] c"sins:\0A %jf = load i32, ptr %jp\0A %jf1 = add i32 %jf, 1\0A %insp = getelementptr ptr, ptr %fdata, i32 %jf1\0A store ptr %key, ptr %insp\0A %ai1 = add i32 %ai, 1\0A store i32 %ai1, ptr %aip\0A br label %so\0A\00" +@.str3976 = private unnamed_addr constant [103 x i8] c"sod:\0A store ptr %fdata, ptr %d0\0A store i32 %fcnt, ptr %d1\0A store i32 %fcnt, ptr %d2\0A ret ptr %h\0A}\0A\00" +@.str3977 = private unnamed_addr constant [4 x i8] c"png\00" +@.str3978 = private unnamed_addr constant [10 x i8] c"image/png\00" +@.str3979 = private unnamed_addr constant [4 x i8] c"jpg\00" +@.str3980 = private unnamed_addr constant [11 x i8] c"image/jpeg\00" +@.str3981 = private unnamed_addr constant [5 x i8] c"jpeg\00" +@.str3982 = private unnamed_addr constant [11 x i8] c"image/jpeg\00" +@.str3983 = private unnamed_addr constant [4 x i8] c"gif\00" +@.str3984 = private unnamed_addr constant [10 x i8] c"image/gif\00" +@.str3985 = private unnamed_addr constant [4 x i8] c"bmp\00" +@.str3986 = private unnamed_addr constant [10 x i8] c"image/bmp\00" +@.str3987 = private unnamed_addr constant [5 x i8] c"webp\00" +@.str3988 = private unnamed_addr constant [11 x i8] c"image/webp\00" +@.str3989 = private unnamed_addr constant [4 x i8] c"svg\00" +@.str3990 = private unnamed_addr constant [14 x i8] c"image/svg+xml\00" +@.str3991 = private unnamed_addr constant [4 x i8] c"txt\00" +@.str3992 = private unnamed_addr constant [11 x i8] c"text/plain\00" +@.str3993 = private unnamed_addr constant [3 x i8] c"md\00" +@.str3994 = private unnamed_addr constant [14 x i8] c"text/markdown\00" +@.str3995 = private unnamed_addr constant [4 x i8] c"csv\00" +@.str3996 = private unnamed_addr constant [9 x i8] c"text/csv\00" +@.str3997 = private unnamed_addr constant [5 x i8] c"html\00" +@.str3998 = private unnamed_addr constant [10 x i8] c"text/html\00" +@.str3999 = private unnamed_addr constant [4 x i8] c"htm\00" +@.str4000 = private unnamed_addr constant [10 x i8] c"text/html\00" +@.str4001 = private unnamed_addr constant [4 x i8] c"css\00" +@.str4002 = private unnamed_addr constant [9 x i8] c"text/css\00" +@.str4003 = private unnamed_addr constant [3 x i8] c"js\00" +@.str4004 = private unnamed_addr constant [16 x i8] c"text/javascript\00" +@.str4005 = private unnamed_addr constant [5 x i8] c"json\00" +@.str4006 = private unnamed_addr constant [17 x i8] c"application/json\00" +@.str4007 = private unnamed_addr constant [4 x i8] c"xml\00" +@.str4008 = private unnamed_addr constant [16 x i8] c"application/xml\00" +@.str4009 = private unnamed_addr constant [4 x i8] c"zip\00" +@.str4010 = private unnamed_addr constant [16 x i8] c"application/zip\00" +@.str4011 = private unnamed_addr constant [4 x i8] c"pdf\00" +@.str4012 = private unnamed_addr constant [16 x i8] c"application/pdf\00" +@.str4013 = private unnamed_addr constant [4 x i8] c"wav\00" +@.str4014 = private unnamed_addr constant [10 x i8] c"audio/wav\00" +@.str4015 = private unnamed_addr constant [4 x i8] c"ogg\00" +@.str4016 = private unnamed_addr constant [10 x i8] c"audio/ogg\00" +@.str4017 = private unnamed_addr constant [4 x i8] c"mp3\00" +@.str4018 = private unnamed_addr constant [11 x i8] c"audio/mpeg\00" +@.str4019 = private unnamed_addr constant [4 x i8] c"ttf\00" +@.str4020 = private unnamed_addr constant [9 x i8] c"font/ttf\00" +@.str4021 = private unnamed_addr constant [4 x i8] c"otf\00" +@.str4022 = private unnamed_addr constant [9 x i8] c"font/otf\00" +@.str4023 = private unnamed_addr constant [6 x i8] c"ludic\00" +@.str4024 = private unnamed_addr constant [13 x i8] c"text/x-ludic\00" +@.str4025 = private unnamed_addr constant [25 x i8] c"application/octet-stream\00" +@.str4026 = private unnamed_addr constant [44 x i8] c"@mime_tbl = private unnamed_addr constant [\00" +@.str4027 = private unnamed_addr constant [19 x i8] c" x { ptr, ptr }] [\00" +@.str4028 = private unnamed_addr constant [3 x i8] c", \00" +@.str4029 = private unnamed_addr constant [20 x i8] c"{ ptr, ptr } { ptr \00" +@.str4030 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4031 = private unnamed_addr constant [3 x i8] c" }\00" +@.str4032 = private unnamed_addr constant [3 x i8] c"]\0A\00" +@.str4033 = private unnamed_addr constant [37 x i8] c"define ptr @lp_mime_of(ptr %path) {\0A\00" +@.str4034 = private unnamed_addr constant [146 x i8] c"entry:\0A %ext = call ptr @lp_path_ext(ptr %path)\0A %lc = call ptr @lp_mime_lc(ptr %ext)\0A %ip = alloca i32\0A store i32 0, ptr %ip\0A br label %lp\0A\00" +@.str4035 = private unnamed_addr constant [55 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %lt = icmp slt i32 %i, \00" +@.str4036 = private unnamed_addr constant [39 x i8] c"\0A br i1 %lt, label %body, label %def\0A\00" +@.str4037 = private unnamed_addr constant [30 x i8] c"body:\0A %kp = getelementptr [\00" +@.str4038 = private unnamed_addr constant [182 x i8] c" x { ptr, ptr }], ptr @mime_tbl, i32 0, i32 %i, i32 0\0A %k = load ptr, ptr %kp\0A %c = call i32 @strcmp(ptr %lc, ptr %k)\0A %eq = icmp eq i32 %c, 0\0A br i1 %eq, label %hit, label %nx\0A\00" +@.str4039 = private unnamed_addr constant [29 x i8] c"hit:\0A %vp = getelementptr [\00" +@.str4040 = private unnamed_addr constant [131 x i8] c" x { ptr, ptr }], ptr @mime_tbl, i32 0, i32 %i, i32 1\0A %v = load ptr, ptr %vp\0A %r = call ptr @lp_fs_strdup(ptr %v)\0A ret ptr %r\0A\00" +@.str4041 = private unnamed_addr constant [67 x i8] c"nx:\0A %i1 = add i32 %i, 1\0A store i32 %i1, ptr %ip\0A br label %lp\0A\00" +@.str4042 = private unnamed_addr constant [40 x i8] c"def:\0A %d = call ptr @lp_fs_strdup(ptr \00" +@.str4043 = private unnamed_addr constant [18 x i8] c")\0A ret ptr %d\0A}\0A\00" +@.str4044 = private unnamed_addr constant [34 x i8] c"define ptr @lp_mime_lc(ptr %s) {\0A\00" +@.str4045 = private unnamed_addr constant [132 x i8] c"entry:\0A %l64 = call i64 @strlen(ptr %s)\0A %l = trunc i64 %l64 to i32\0A %cap = add i64 %l64, 1\0A %out = call ptr @malloc(i64 %cap)\0A\00" +@.str4046 = private unnamed_addr constant [127 x i8] c" %b0 = load i8, ptr %s\0A %b0i = zext i8 %b0 to i32\0A %isdot = icmp eq i32 %b0i, 46\0A %start = select i1 %isdot, i32 1, i32 0\0A\00" +@.str4047 = private unnamed_addr constant [105 x i8] c" %ip = alloca i32\0A %op = alloca i32\0A store i32 %start, ptr %ip\0A store i32 0, ptr %op\0A br label %lp\0A\00" +@.str4048 = private unnamed_addr constant [182 x i8] c"lp:\0A %i = load i32, ptr %ip\0A %pp = getelementptr i8, ptr %s, i32 %i\0A %c = load i8, ptr %pp\0A %ci = zext i8 %c to i32\0A %z = icmp eq i32 %ci, 0\0A br i1 %z, label %done, label %go\0A\00" +@.str4049 = private unnamed_addr constant [378 x i8] c"go:\0A %ua = icmp uge i32 %ci, 65\0A %ub = icmp ule i32 %ci, 90\0A %up = and i1 %ua, %ub\0A %lo = add i32 %ci, 32\0A %m = select i1 %up, i32 %lo, i32 %ci\0A %mt = trunc i32 %m to i8\0A %o = load i32, ptr %op\0A %dp = getelementptr i8, ptr %out, i32 %o\0A store i8 %mt, ptr %dp\0A %o1 = add i32 %o, 1\0A store i32 %o1, ptr %op\0A %i1 = add i32 %i, 1\0A store i32 %i1, ptr %ip\0A br label %lp\0A\00" +@.str4050 = private unnamed_addr constant [116 x i8] c"done:\0A %fo = load i32, ptr %op\0A %ep = getelementptr i8, ptr %out, i32 %fo\0A store i8 0, ptr %ep\0A ret ptr %out\0A}\0A\00" +@.str4051 = private unnamed_addr constant [40 x i8] c"define ptr @lp_mime_sniff(ptr %path) {\0A\00" +@.str4052 = private unnamed_addr constant [127 x i8] c"entry:\0A %f = call ptr @fopen(ptr %path, ptr @fn_str_rb)\0A %nz = icmp ne ptr %f, null\0A br i1 %nz, label %ok, label %fallback\0A\00" +@.str4053 = private unnamed_addr constant [226 x i8] c"ok:\0A %buf = call ptr @malloc(i64 16)\0A %rd = call i64 @fread(ptr %buf, i64 1, i64 8, ptr %f)\0A call i32 @fclose(ptr %f)\0A %rdi = trunc i64 %rd to i32\0A %has4 = icmp sge i32 %rdi, 4\0A br i1 %has4, label %chk, label %fallback\0A\00" +@.str4054 = private unnamed_addr constant [394 x i8] c"chk:\0A %b0p = getelementptr i8, ptr %buf, i32 0\0A %b0 = load i8, ptr %b0p\0A %b0i = zext i8 %b0 to i32\0A %b1p = getelementptr i8, ptr %buf, i32 1\0A %b1 = load i8, ptr %b1p\0A %b1i = zext i8 %b1 to i32\0A %b2p = getelementptr i8, ptr %buf, i32 2\0A %b2 = load i8, ptr %b2p\0A %b2i = zext i8 %b2 to i32\0A %b3p = getelementptr i8, ptr %buf, i32 3\0A %b3 = load i8, ptr %b3p\0A %b3i = zext i8 %b3 to i32\0A\00" +@.str4055 = private unnamed_addr constant [225 x i8] c" %p0 = icmp eq i32 %b0i, 137\0A %p1 = icmp eq i32 %b1i, 80\0A %p2 = icmp eq i32 %b2i, 78\0A %p3 = icmp eq i32 %b3i, 71\0A %pa = and i1 %p0, %p1\0A %pb = and i1 %pa, %p2\0A %pc = and i1 %pb, %p3\0A br i1 %pc, label %png, label %cj\0A\00" +@.str4056 = private unnamed_addr constant [72 x i8] c"png:\0A %rpng = call ptr @lp_fs_strdup(ptr @fn_sig_png)\0A ret ptr %rpng\0A\00" +@.str4057 = private unnamed_addr constant [178 x i8] c"cj:\0A %j0 = icmp eq i32 %b0i, 255\0A %j1 = icmp eq i32 %b1i, 216\0A %j2 = icmp eq i32 %b2i, 255\0A %ja = and i1 %j0, %j1\0A %jb = and i1 %ja, %j2\0A br i1 %jb, label %jpg, label %cg\0A\00" +@.str4058 = private unnamed_addr constant [72 x i8] c"jpg:\0A %rjpg = call ptr @lp_fs_strdup(ptr @fn_sig_jpg)\0A ret ptr %rjpg\0A\00" +@.str4059 = private unnamed_addr constant [175 x i8] c"cg:\0A %g0 = icmp eq i32 %b0i, 71\0A %g1 = icmp eq i32 %b1i, 73\0A %g2 = icmp eq i32 %b2i, 70\0A %ga = and i1 %g0, %g1\0A %gb = and i1 %ga, %g2\0A br i1 %gb, label %gif, label %cp\0A\00" +@.str4060 = private unnamed_addr constant [72 x i8] c"gif:\0A %rgif = call ptr @lp_fs_strdup(ptr @fn_sig_gif)\0A ret ptr %rgif\0A\00" +@.str4061 = private unnamed_addr constant [234 x i8] c"cp:\0A %q0 = icmp eq i32 %b0i, 37\0A %q1 = icmp eq i32 %b1i, 80\0A %q2 = icmp eq i32 %b2i, 68\0A %q3 = icmp eq i32 %b3i, 70\0A %qa = and i1 %q0, %q1\0A %qb = and i1 %qa, %q2\0A %qc = and i1 %qb, %q3\0A br i1 %qc, label %pdf, label %fallback\0A\00" +@.str4062 = private unnamed_addr constant [72 x i8] c"pdf:\0A %rpdf = call ptr @lp_fs_strdup(ptr @fn_sig_pdf)\0A ret ptr %rpdf\0A\00" +@.str4063 = private unnamed_addr constant [65 x i8] c"fallback:\0A %r = call ptr @lp_mime_of(ptr %path)\0A ret ptr %r\0A}\0A\00" +@.str4064 = private unnamed_addr constant [62 x i8] c"@fn_str_rb = private unnamed_addr constant [3 x i8] c\22rb\5C00\22\0A\00" +@.str4065 = private unnamed_addr constant [62 x i8] c"@fn_str_wb = private unnamed_addr constant [3 x i8] c\22wb\5C00\22\0A\00" +@.str4066 = private unnamed_addr constant [62 x i8] c"@fn_str_ab = private unnamed_addr constant [3 x i8] c\22ab\5C00\22\0A\00" +@.str4067 = private unnamed_addr constant [62 x i8] c"@fn_str_dot = private unnamed_addr constant [2 x i8] c\22.\5C00\22\0A\00" +@.str4068 = private unnamed_addr constant [64 x i8] c"@fn_str_slash = private unnamed_addr constant [2 x i8] c\22/\5C00\22\0A\00" +@.str4069 = private unnamed_addr constant [63 x i8] c"@fn_str_empty = private unnamed_addr constant [1 x i8] c\22\5C00\22\0A\00" +@.str4070 = private unnamed_addr constant [68 x i8] c"@fn_str_dottmp = private unnamed_addr constant [5 x i8] c\22.tmp\5C00\22\0A\00" +@.str4071 = private unnamed_addr constant [71 x i8] c"@fn_sig_png = private unnamed_addr constant [10 x i8] c\22image/png\5C00\22\0A\00" +@.str4072 = private unnamed_addr constant [72 x i8] c"@fn_sig_jpg = private unnamed_addr constant [11 x i8] c\22image/jpeg\5C00\22\0A\00" +@.str4073 = private unnamed_addr constant [71 x i8] c"@fn_sig_gif = private unnamed_addr constant [10 x i8] c\22image/gif\5C00\22\0A\00" +@.str4074 = private unnamed_addr constant [77 x i8] c"@fn_sig_pdf = private unnamed_addr constant [16 x i8] c\22application/pdf\5C00\22\0A\00" +@.str4075 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" +@.str4076 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str4077 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4078 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4079 = private unnamed_addr constant [4 x i8] c"len\00" +@.str4080 = private unnamed_addr constant [5 x i8] c"push\00" +@.str4081 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str4082 = private unnamed_addr constant [7 x i8] c"sample\00" +@.str4083 = private unnamed_addr constant [6 x i8] c"first\00" +@.str4084 = private unnamed_addr constant [5 x i8] c"last\00" +@.str4085 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str4086 = private unnamed_addr constant [5 x i8] c"swap\00" +@.str4087 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str4088 = private unnamed_addr constant [9 x i8] c"index_of\00" +@.str4089 = private unnamed_addr constant [8 x i8] c"reverse\00" +@.str4090 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str4091 = private unnamed_addr constant [10 x i8] c"remove_at\00" +@.str4092 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str4093 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str4094 = private unnamed_addr constant [8 x i8] c"sort_by\00" +@.str4095 = private unnamed_addr constant [13 x i8] c"sort_desc_by\00" +@.str4096 = private unnamed_addr constant [10 x i8] c"sort_with\00" +@.str4097 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4098 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4099 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" +@.str4100 = private unnamed_addr constant [3 x i8] c", \00" +@.str4101 = private unnamed_addr constant [3 x i8] c"ig\00" +@.str4102 = private unnamed_addr constant [4 x i8] c"igd\00" +@.str4103 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4104 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4105 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4106 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4107 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4108 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str4109 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str4110 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str4111 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str4112 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str4113 = private unnamed_addr constant [14 x i8] c", i32 8, i32 \00" +@.str4114 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str4115 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str4116 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str4117 = private unnamed_addr constant [3 x i8] c", \00" +@.str4118 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" +@.str4119 = private unnamed_addr constant [23 x i8] c"call ptr @realloc(ptr \00" +@.str4120 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str4121 = private unnamed_addr constant [2 x i8] c")\00" +@.str4122 = private unnamed_addr constant [13 x i8] c" store ptr \00" @.str4123 = private unnamed_addr constant [7 x i8] c", ptr \00" @.str4124 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4125 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4126 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4127 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4128 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str4129 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4130 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4131 = private unnamed_addr constant [10 x i8] c"icmp slt \00" -@.str4132 = private unnamed_addr constant [2 x i8] c" \00" -@.str4133 = private unnamed_addr constant [3 x i8] c", \00" -@.str4134 = private unnamed_addr constant [14 x i8] c"call i32 @fn_\00" -@.str4135 = private unnamed_addr constant [2 x i8] c"(\00" -@.str4136 = private unnamed_addr constant [2 x i8] c" \00" -@.str4137 = private unnamed_addr constant [3 x i8] c", \00" -@.str4138 = private unnamed_addr constant [2 x i8] c" \00" -@.str4139 = private unnamed_addr constant [2 x i8] c")\00" -@.str4140 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" -@.str4141 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str4142 = private unnamed_addr constant [6 x i8] c"call \00" -@.str4143 = private unnamed_addr constant [6 x i8] c" @fn_\00" -@.str4144 = private unnamed_addr constant [2 x i8] c"(\00" -@.str4145 = private unnamed_addr constant [2 x i8] c" \00" -@.str4146 = private unnamed_addr constant [2 x i8] c")\00" -@.str4147 = private unnamed_addr constant [6 x i8] c"call \00" -@.str4148 = private unnamed_addr constant [6 x i8] c" @fn_\00" -@.str4149 = private unnamed_addr constant [2 x i8] c"(\00" -@.str4150 = private unnamed_addr constant [2 x i8] c" \00" -@.str4151 = private unnamed_addr constant [2 x i8] c")\00" -@.str4152 = private unnamed_addr constant [10 x i8] c"icmp slt \00" +@.str4125 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str4126 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4127 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4128 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4129 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4130 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4131 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" +@.str4132 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4133 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4134 = private unnamed_addr constant [10 x i8] c"icmp slt \00" +@.str4135 = private unnamed_addr constant [2 x i8] c" \00" +@.str4136 = private unnamed_addr constant [3 x i8] c", \00" +@.str4137 = private unnamed_addr constant [14 x i8] c"call i32 @fn_\00" +@.str4138 = private unnamed_addr constant [2 x i8] c"(\00" +@.str4139 = private unnamed_addr constant [2 x i8] c" \00" +@.str4140 = private unnamed_addr constant [3 x i8] c", \00" +@.str4141 = private unnamed_addr constant [2 x i8] c" \00" +@.str4142 = private unnamed_addr constant [2 x i8] c")\00" +@.str4143 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" +@.str4144 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str4145 = private unnamed_addr constant [6 x i8] c"call \00" +@.str4146 = private unnamed_addr constant [6 x i8] c" @fn_\00" +@.str4147 = private unnamed_addr constant [2 x i8] c"(\00" +@.str4148 = private unnamed_addr constant [2 x i8] c" \00" +@.str4149 = private unnamed_addr constant [2 x i8] c")\00" +@.str4150 = private unnamed_addr constant [6 x i8] c"call \00" +@.str4151 = private unnamed_addr constant [6 x i8] c" @fn_\00" +@.str4152 = private unnamed_addr constant [2 x i8] c"(\00" @.str4153 = private unnamed_addr constant [2 x i8] c" \00" -@.str4154 = private unnamed_addr constant [3 x i8] c", \00" -@.str4155 = private unnamed_addr constant [10 x i8] c"icmp sgt \00" +@.str4154 = private unnamed_addr constant [2 x i8] c")\00" +@.str4155 = private unnamed_addr constant [10 x i8] c"icmp slt \00" @.str4156 = private unnamed_addr constant [2 x i8] c" \00" @.str4157 = private unnamed_addr constant [3 x i8] c", \00" -@.str4158 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" -@.str4159 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4160 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str4161 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str4162 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str4163 = private unnamed_addr constant [3 x i8] c", \00" -@.str4164 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" -@.str4165 = private unnamed_addr constant [2 x i8] c")\00" -@.str4166 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4167 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4168 = private unnamed_addr constant [2 x i8] c"1\00" -@.str4169 = private unnamed_addr constant [6 x i8] c"ms_wc\00" -@.str4170 = private unnamed_addr constant [6 x i8] c"ms_wb\00" -@.str4171 = private unnamed_addr constant [6 x i8] c"ms_we\00" -@.str4172 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4173 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4174 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4175 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4176 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4177 = private unnamed_addr constant [3 x i8] c", \00" -@.str4178 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4179 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4180 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4181 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4182 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4183 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str4184 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str4185 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4186 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4187 = private unnamed_addr constant [2 x i8] c"0\00" -@.str4188 = private unnamed_addr constant [6 x i8] c"ms_ic\00" -@.str4189 = private unnamed_addr constant [6 x i8] c"ms_ib\00" -@.str4190 = private unnamed_addr constant [6 x i8] c"ms_ie\00" -@.str4191 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4192 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4193 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4194 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4195 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4196 = private unnamed_addr constant [3 x i8] c", \00" -@.str4197 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4198 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4199 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4200 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4201 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4202 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4203 = private unnamed_addr constant [3 x i8] c", \00" -@.str4204 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4205 = private unnamed_addr constant [3 x i8] c", \00" -@.str4206 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str4207 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4208 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4209 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4210 = private unnamed_addr constant [3 x i8] c", \00" -@.str4211 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4212 = private unnamed_addr constant [3 x i8] c", \00" -@.str4213 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str4214 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4215 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4216 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4217 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4218 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4158 = private unnamed_addr constant [10 x i8] c"icmp sgt \00" +@.str4159 = private unnamed_addr constant [2 x i8] c" \00" +@.str4160 = private unnamed_addr constant [3 x i8] c", \00" +@.str4161 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" +@.str4162 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4163 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str4164 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str4165 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str4166 = private unnamed_addr constant [3 x i8] c", \00" +@.str4167 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" +@.str4168 = private unnamed_addr constant [2 x i8] c")\00" +@.str4169 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4170 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4171 = private unnamed_addr constant [2 x i8] c"1\00" +@.str4172 = private unnamed_addr constant [6 x i8] c"ms_wc\00" +@.str4173 = private unnamed_addr constant [6 x i8] c"ms_wb\00" +@.str4174 = private unnamed_addr constant [6 x i8] c"ms_we\00" +@.str4175 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4176 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4177 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4178 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4179 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4180 = private unnamed_addr constant [3 x i8] c", \00" +@.str4181 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4182 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4183 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4184 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4185 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4186 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str4187 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str4188 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4189 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4190 = private unnamed_addr constant [2 x i8] c"0\00" +@.str4191 = private unnamed_addr constant [6 x i8] c"ms_ic\00" +@.str4192 = private unnamed_addr constant [6 x i8] c"ms_ib\00" +@.str4193 = private unnamed_addr constant [6 x i8] c"ms_ie\00" +@.str4194 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4195 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4196 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4197 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4198 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4199 = private unnamed_addr constant [3 x i8] c", \00" +@.str4200 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4201 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4202 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4203 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4204 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4205 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4206 = private unnamed_addr constant [3 x i8] c", \00" +@.str4207 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4208 = private unnamed_addr constant [3 x i8] c", \00" +@.str4209 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str4210 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4211 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4212 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4213 = private unnamed_addr constant [3 x i8] c", \00" +@.str4214 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4215 = private unnamed_addr constant [3 x i8] c", \00" +@.str4216 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str4217 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4218 = private unnamed_addr constant [7 x i8] c", i32 \00" @.str4219 = private unnamed_addr constant [4 x i8] c"i32\00" @.str4220 = private unnamed_addr constant [4 x i8] c"i32\00" @.str4221 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4222 = private unnamed_addr constant [6 x i8] c"ms_mc\00" -@.str4223 = private unnamed_addr constant [6 x i8] c"ms_mb\00" -@.str4224 = private unnamed_addr constant [8 x i8] c"ms_mend\00" -@.str4225 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4226 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4227 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4228 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4229 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4230 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4231 = private unnamed_addr constant [3 x i8] c", \00" -@.str4232 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4233 = private unnamed_addr constant [3 x i8] c", \00" -@.str4234 = private unnamed_addr constant [8 x i8] c"and i1 \00" -@.str4235 = private unnamed_addr constant [3 x i8] c", \00" -@.str4236 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4237 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4238 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4239 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4240 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4241 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4242 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4243 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4244 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4245 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4246 = private unnamed_addr constant [9 x i8] c"ms_takeR\00" -@.str4247 = private unnamed_addr constant [9 x i8] c"ms_takeL\00" -@.str4248 = private unnamed_addr constant [9 x i8] c"ms_takeD\00" -@.str4249 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4250 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4251 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4252 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4253 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4254 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4255 = private unnamed_addr constant [2 x i8] c" \00" -@.str4256 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4257 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4258 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4259 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4260 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4261 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4262 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4263 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4264 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4265 = private unnamed_addr constant [2 x i8] c" \00" -@.str4266 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4267 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4268 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4269 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4270 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4271 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4272 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4273 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4274 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4275 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4276 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4277 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4278 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4279 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4280 = private unnamed_addr constant [7 x i8] c"ms_dac\00" -@.str4281 = private unnamed_addr constant [7 x i8] c"ms_dab\00" -@.str4282 = private unnamed_addr constant [7 x i8] c"ms_dae\00" -@.str4283 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4284 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4285 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4286 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4287 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4288 = private unnamed_addr constant [3 x i8] c", \00" -@.str4289 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4290 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4291 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4292 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4293 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4294 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4295 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4296 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4297 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4298 = private unnamed_addr constant [2 x i8] c" \00" -@.str4299 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4300 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4301 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4302 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4303 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4222 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4223 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4224 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4225 = private unnamed_addr constant [6 x i8] c"ms_mc\00" +@.str4226 = private unnamed_addr constant [6 x i8] c"ms_mb\00" +@.str4227 = private unnamed_addr constant [8 x i8] c"ms_mend\00" +@.str4228 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4229 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4230 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4231 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4232 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4233 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4234 = private unnamed_addr constant [3 x i8] c", \00" +@.str4235 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4236 = private unnamed_addr constant [3 x i8] c", \00" +@.str4237 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str4238 = private unnamed_addr constant [3 x i8] c", \00" +@.str4239 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4240 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4241 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4242 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4243 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4244 = private unnamed_addr constant [6 x i8] c"load \00" +@.str4245 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4246 = private unnamed_addr constant [6 x i8] c"load \00" +@.str4247 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4248 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4249 = private unnamed_addr constant [9 x i8] c"ms_takeR\00" +@.str4250 = private unnamed_addr constant [9 x i8] c"ms_takeL\00" +@.str4251 = private unnamed_addr constant [9 x i8] c"ms_takeD\00" +@.str4252 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4253 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4254 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4255 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4256 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4257 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4258 = private unnamed_addr constant [2 x i8] c" \00" +@.str4259 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4260 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4261 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4262 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4263 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4264 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4265 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4266 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4267 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4268 = private unnamed_addr constant [2 x i8] c" \00" +@.str4269 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4270 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4271 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4272 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4273 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4274 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4275 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4276 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4277 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4278 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4279 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4280 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4281 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4282 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4283 = private unnamed_addr constant [7 x i8] c"ms_dac\00" +@.str4284 = private unnamed_addr constant [7 x i8] c"ms_dab\00" +@.str4285 = private unnamed_addr constant [7 x i8] c"ms_dae\00" +@.str4286 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4287 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4288 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4289 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4290 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4291 = private unnamed_addr constant [3 x i8] c", \00" +@.str4292 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4293 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4294 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4295 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4296 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4297 = private unnamed_addr constant [6 x i8] c"load \00" +@.str4298 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4299 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4300 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4301 = private unnamed_addr constant [2 x i8] c" \00" +@.str4302 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4303 = private unnamed_addr constant [2 x i8] c"\0A\00" @.str4304 = private unnamed_addr constant [9 x i8] c"add i32 \00" @.str4305 = private unnamed_addr constant [4 x i8] c", 1\00" @.str4306 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4307 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4308 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4309 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4310 = private unnamed_addr constant [7 x i8] c"ms_dbc\00" -@.str4311 = private unnamed_addr constant [7 x i8] c"ms_dbb\00" -@.str4312 = private unnamed_addr constant [7 x i8] c"ms_dbe\00" -@.str4313 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4314 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4315 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4316 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4317 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4318 = private unnamed_addr constant [3 x i8] c", \00" -@.str4319 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4320 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4321 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4322 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4323 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4324 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4325 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4326 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4327 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4328 = private unnamed_addr constant [2 x i8] c" \00" -@.str4329 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4330 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4331 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4332 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4333 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4307 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4308 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4309 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4310 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4311 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4312 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4313 = private unnamed_addr constant [7 x i8] c"ms_dbc\00" +@.str4314 = private unnamed_addr constant [7 x i8] c"ms_dbb\00" +@.str4315 = private unnamed_addr constant [7 x i8] c"ms_dbe\00" +@.str4316 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4317 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4318 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4319 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4320 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4321 = private unnamed_addr constant [3 x i8] c", \00" +@.str4322 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4323 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4324 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4325 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4326 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4327 = private unnamed_addr constant [6 x i8] c"load \00" +@.str4328 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4329 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4330 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4331 = private unnamed_addr constant [2 x i8] c" \00" +@.str4332 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4333 = private unnamed_addr constant [2 x i8] c"\0A\00" @.str4334 = private unnamed_addr constant [9 x i8] c"add i32 \00" @.str4335 = private unnamed_addr constant [4 x i8] c", 1\00" @.str4336 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4337 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4338 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4339 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4340 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4341 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4342 = private unnamed_addr constant [7 x i8] c"ms_cbc\00" -@.str4343 = private unnamed_addr constant [7 x i8] c"ms_cbb\00" -@.str4344 = private unnamed_addr constant [7 x i8] c"ms_cbe\00" -@.str4345 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4346 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4347 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4348 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4349 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4350 = private unnamed_addr constant [3 x i8] c", \00" -@.str4351 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4352 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4353 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4354 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4355 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4356 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4357 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4358 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4359 = private unnamed_addr constant [2 x i8] c" \00" +@.str4337 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4338 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4339 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4340 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4341 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4342 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4343 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4344 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4345 = private unnamed_addr constant [7 x i8] c"ms_cbc\00" +@.str4346 = private unnamed_addr constant [7 x i8] c"ms_cbb\00" +@.str4347 = private unnamed_addr constant [7 x i8] c"ms_cbe\00" +@.str4348 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4349 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4350 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4351 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4352 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4353 = private unnamed_addr constant [3 x i8] c", \00" +@.str4354 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4355 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4356 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4357 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4358 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4359 = private unnamed_addr constant [6 x i8] c"load \00" @.str4360 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4361 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4362 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4363 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4364 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4365 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4366 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4367 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4368 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4369 = private unnamed_addr constant [3 x i8] c", \00" -@.str4370 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4371 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4372 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4373 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4374 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4375 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4376 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4377 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4378 = private unnamed_addr constant [23 x i8] c" call void @free(ptr \00" -@.str4379 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str4380 = private unnamed_addr constant [6 x i8] c"List.\00" -@.str4381 = private unnamed_addr constant [25 x i8] c" needs (slice, function)\00" -@.str4382 = private unnamed_addr constant [6 x i8] c"List.\00" -@.str4383 = private unnamed_addr constant [46 x i8] c": the second argument must be a function name\00" -@.str4384 = private unnamed_addr constant [6 x i8] c"List.\00" -@.str4385 = private unnamed_addr constant [22 x i8] c": no function named '\00" -@.str4386 = private unnamed_addr constant [2 x i8] c"'\00" -@.str4387 = private unnamed_addr constant [4 x i8] c"len\00" -@.str4388 = private unnamed_addr constant [5 x i8] c"push\00" -@.str4389 = private unnamed_addr constant [7 x i8] c"sample\00" -@.str4390 = private unnamed_addr constant [15 x i8] c"rt_list_sample\00" -@.str4391 = private unnamed_addr constant [68 x i8] c"List.sample needs the engine runtime (a game, or import ludic.core)\00" -@.str4392 = private unnamed_addr constant [33 x i8] c"call ptr @fn_rt_list_sample(ptr \00" -@.str4393 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4394 = private unnamed_addr constant [2 x i8] c")\00" -@.str4395 = private unnamed_addr constant [6 x i8] c"[]int\00" -@.str4396 = private unnamed_addr constant [6 x i8] c"List.\00" -@.str4397 = private unnamed_addr constant [15 x i8] c" needs a slice\00" -@.str4398 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str4399 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" -@.str4400 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4401 = private unnamed_addr constant [2 x i8] c"0\00" -@.str4402 = private unnamed_addr constant [5 x i8] c"void\00" -@.str4403 = private unnamed_addr constant [6 x i8] c"first\00" +@.str4361 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4362 = private unnamed_addr constant [2 x i8] c" \00" +@.str4363 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4364 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4365 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4366 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4367 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4368 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4369 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4370 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4371 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4372 = private unnamed_addr constant [3 x i8] c", \00" +@.str4373 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4374 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4375 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4376 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4377 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4378 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4379 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4380 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4381 = private unnamed_addr constant [23 x i8] c" call void @free(ptr \00" +@.str4382 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str4383 = private unnamed_addr constant [6 x i8] c"List.\00" +@.str4384 = private unnamed_addr constant [25 x i8] c" needs (slice, function)\00" +@.str4385 = private unnamed_addr constant [6 x i8] c"List.\00" +@.str4386 = private unnamed_addr constant [46 x i8] c": the second argument must be a function name\00" +@.str4387 = private unnamed_addr constant [6 x i8] c"List.\00" +@.str4388 = private unnamed_addr constant [22 x i8] c": no function named '\00" +@.str4389 = private unnamed_addr constant [2 x i8] c"'\00" +@.str4390 = private unnamed_addr constant [4 x i8] c"len\00" +@.str4391 = private unnamed_addr constant [5 x i8] c"push\00" +@.str4392 = private unnamed_addr constant [7 x i8] c"sample\00" +@.str4393 = private unnamed_addr constant [15 x i8] c"rt_list_sample\00" +@.str4394 = private unnamed_addr constant [68 x i8] c"List.sample needs the engine runtime (a game, or import ludic.core)\00" +@.str4395 = private unnamed_addr constant [33 x i8] c"call ptr @fn_rt_list_sample(ptr \00" +@.str4396 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4397 = private unnamed_addr constant [2 x i8] c")\00" +@.str4398 = private unnamed_addr constant [6 x i8] c"[]int\00" +@.str4399 = private unnamed_addr constant [6 x i8] c"List.\00" +@.str4400 = private unnamed_addr constant [15 x i8] c" needs a slice\00" +@.str4401 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str4402 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" +@.str4403 = private unnamed_addr constant [2 x i8] c"\0A\00" @.str4404 = private unnamed_addr constant [2 x i8] c"0\00" -@.str4405 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4406 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4407 = private unnamed_addr constant [5 x i8] c"last\00" -@.str4408 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4409 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4410 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4411 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4412 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4413 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str4414 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4415 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4416 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4417 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4418 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4419 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str4420 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4421 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4422 = private unnamed_addr constant [5 x i8] c"swap\00" -@.str4423 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4424 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4425 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4426 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4427 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4428 = private unnamed_addr constant [2 x i8] c" \00" +@.str4405 = private unnamed_addr constant [5 x i8] c"void\00" +@.str4406 = private unnamed_addr constant [6 x i8] c"first\00" +@.str4407 = private unnamed_addr constant [2 x i8] c"0\00" +@.str4408 = private unnamed_addr constant [6 x i8] c"load \00" +@.str4409 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4410 = private unnamed_addr constant [5 x i8] c"last\00" +@.str4411 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4412 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4413 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4414 = private unnamed_addr constant [6 x i8] c"load \00" +@.str4415 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4416 = private unnamed_addr constant [4 x i8] c"pop\00" +@.str4417 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4418 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4419 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4420 = private unnamed_addr constant [6 x i8] c"load \00" +@.str4421 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4422 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str4423 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4424 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4425 = private unnamed_addr constant [5 x i8] c"swap\00" +@.str4426 = private unnamed_addr constant [6 x i8] c"load \00" +@.str4427 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4428 = private unnamed_addr constant [6 x i8] c"load \00" @.str4429 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4430 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4431 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4432 = private unnamed_addr constant [2 x i8] c" \00" -@.str4433 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4434 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4435 = private unnamed_addr constant [2 x i8] c"0\00" -@.str4436 = private unnamed_addr constant [5 x i8] c"void\00" -@.str4437 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str4438 = private unnamed_addr constant [9 x i8] c"index_of\00" -@.str4439 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4440 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4441 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4442 = private unnamed_addr constant [3 x i8] c"-1\00" +@.str4430 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4431 = private unnamed_addr constant [2 x i8] c" \00" +@.str4432 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4433 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4434 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4435 = private unnamed_addr constant [2 x i8] c" \00" +@.str4436 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4437 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4438 = private unnamed_addr constant [2 x i8] c"0\00" +@.str4439 = private unnamed_addr constant [5 x i8] c"void\00" +@.str4440 = private unnamed_addr constant [9 x i8] c"contains\00" +@.str4441 = private unnamed_addr constant [9 x i8] c"index_of\00" +@.str4442 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" @.str4443 = private unnamed_addr constant [4 x i8] c"i32\00" @.str4444 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4445 = private unnamed_addr constant [2 x i8] c"0\00" -@.str4446 = private unnamed_addr constant [8 x i8] c"lc_cond\00" -@.str4447 = private unnamed_addr constant [8 x i8] c"lc_body\00" -@.str4448 = private unnamed_addr constant [7 x i8] c"lc_hit\00" -@.str4449 = private unnamed_addr constant [8 x i8] c"lc_next\00" -@.str4450 = private unnamed_addr constant [7 x i8] c"lc_end\00" -@.str4451 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4452 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4453 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4454 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4455 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4456 = private unnamed_addr constant [3 x i8] c", \00" -@.str4457 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4458 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4459 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4460 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4461 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4462 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4463 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4464 = private unnamed_addr constant [9 x i8] c"icmp eq \00" -@.str4465 = private unnamed_addr constant [2 x i8] c" \00" -@.str4466 = private unnamed_addr constant [3 x i8] c", \00" -@.str4467 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4468 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4469 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4470 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4471 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4472 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4473 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4474 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4475 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4476 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4477 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4478 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4479 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4480 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4481 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4482 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4483 = private unnamed_addr constant [9 x i8] c"index_of\00" -@.str4484 = private unnamed_addr constant [4 x i8] c"int\00" -@.str4485 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" -@.str4486 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str4487 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str4488 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str4489 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str4490 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str4491 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4492 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4493 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4494 = private unnamed_addr constant [5 x i8] c"li_c\00" -@.str4495 = private unnamed_addr constant [5 x i8] c"li_b\00" -@.str4496 = private unnamed_addr constant [5 x i8] c"li_e\00" -@.str4497 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4498 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4499 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4500 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4501 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" -@.str4502 = private unnamed_addr constant [3 x i8] c", \00" -@.str4503 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4504 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4505 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4506 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4507 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4508 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4509 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4510 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4511 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4512 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4513 = private unnamed_addr constant [2 x i8] c" \00" +@.str4445 = private unnamed_addr constant [3 x i8] c"-1\00" +@.str4446 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4447 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4448 = private unnamed_addr constant [2 x i8] c"0\00" +@.str4449 = private unnamed_addr constant [8 x i8] c"lc_cond\00" +@.str4450 = private unnamed_addr constant [8 x i8] c"lc_body\00" +@.str4451 = private unnamed_addr constant [7 x i8] c"lc_hit\00" +@.str4452 = private unnamed_addr constant [8 x i8] c"lc_next\00" +@.str4453 = private unnamed_addr constant [7 x i8] c"lc_end\00" +@.str4454 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4455 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4456 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4457 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4458 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4459 = private unnamed_addr constant [3 x i8] c", \00" +@.str4460 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4461 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4462 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4463 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4464 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4465 = private unnamed_addr constant [6 x i8] c"load \00" +@.str4466 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4467 = private unnamed_addr constant [9 x i8] c"icmp eq \00" +@.str4468 = private unnamed_addr constant [2 x i8] c" \00" +@.str4469 = private unnamed_addr constant [3 x i8] c", \00" +@.str4470 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4471 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4472 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4473 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4474 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4475 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4476 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4477 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4478 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4479 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4480 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4481 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4482 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4483 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4484 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4485 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4486 = private unnamed_addr constant [9 x i8] c"index_of\00" +@.str4487 = private unnamed_addr constant [4 x i8] c"int\00" +@.str4488 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" +@.str4489 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str4490 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str4491 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str4492 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str4493 = private unnamed_addr constant [7 x i8] c"insert\00" +@.str4494 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4495 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4496 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4497 = private unnamed_addr constant [5 x i8] c"li_c\00" +@.str4498 = private unnamed_addr constant [5 x i8] c"li_b\00" +@.str4499 = private unnamed_addr constant [5 x i8] c"li_e\00" +@.str4500 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4501 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4502 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4503 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4504 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" +@.str4505 = private unnamed_addr constant [3 x i8] c", \00" +@.str4506 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4507 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4508 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4509 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4510 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4511 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4512 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4513 = private unnamed_addr constant [6 x i8] c"load \00" @.str4514 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4515 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4516 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4517 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4515 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4516 = private unnamed_addr constant [2 x i8] c" \00" +@.str4517 = private unnamed_addr constant [7 x i8] c", ptr \00" @.str4518 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4519 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4520 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4521 = private unnamed_addr constant [2 x i8] c" \00" -@.str4522 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4523 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4524 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4525 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4526 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str4527 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4528 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4529 = private unnamed_addr constant [2 x i8] c"0\00" -@.str4530 = private unnamed_addr constant [5 x i8] c"void\00" -@.str4531 = private unnamed_addr constant [10 x i8] c"remove_at\00" -@.str4532 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4533 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4534 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4535 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4536 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4537 = private unnamed_addr constant [5 x i8] c"lr_c\00" -@.str4538 = private unnamed_addr constant [5 x i8] c"lr_b\00" -@.str4539 = private unnamed_addr constant [5 x i8] c"lr_e\00" -@.str4540 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4541 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4542 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4543 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4544 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4545 = private unnamed_addr constant [3 x i8] c", \00" -@.str4546 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4547 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4548 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4549 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4550 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4551 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4552 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4553 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4554 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4555 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4556 = private unnamed_addr constant [2 x i8] c" \00" +@.str4519 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4520 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4521 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4522 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4523 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4524 = private unnamed_addr constant [2 x i8] c" \00" +@.str4525 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4526 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4527 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4528 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4529 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str4530 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4531 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4532 = private unnamed_addr constant [2 x i8] c"0\00" +@.str4533 = private unnamed_addr constant [5 x i8] c"void\00" +@.str4534 = private unnamed_addr constant [10 x i8] c"remove_at\00" +@.str4535 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4536 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4537 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4538 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4539 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4540 = private unnamed_addr constant [5 x i8] c"lr_c\00" +@.str4541 = private unnamed_addr constant [5 x i8] c"lr_b\00" +@.str4542 = private unnamed_addr constant [5 x i8] c"lr_e\00" +@.str4543 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4544 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4545 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4546 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4547 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4548 = private unnamed_addr constant [3 x i8] c", \00" +@.str4549 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4550 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4551 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4552 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4553 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4554 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4555 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4556 = private unnamed_addr constant [6 x i8] c"load \00" @.str4557 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4558 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4559 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4560 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4558 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4559 = private unnamed_addr constant [2 x i8] c" \00" +@.str4560 = private unnamed_addr constant [7 x i8] c", ptr \00" @.str4561 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4562 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4563 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str4564 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4565 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4566 = private unnamed_addr constant [2 x i8] c"0\00" -@.str4567 = private unnamed_addr constant [5 x i8] c"void\00" -@.str4568 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str4569 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4570 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4571 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4572 = private unnamed_addr constant [3 x i8] c"-1\00" +@.str4562 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4563 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4564 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4565 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4566 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str4567 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4568 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4569 = private unnamed_addr constant [2 x i8] c"0\00" +@.str4570 = private unnamed_addr constant [5 x i8] c"void\00" +@.str4571 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str4572 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" @.str4573 = private unnamed_addr constant [4 x i8] c"i32\00" @.str4574 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4575 = private unnamed_addr constant [2 x i8] c"0\00" -@.str4576 = private unnamed_addr constant [5 x i8] c"lv_c\00" -@.str4577 = private unnamed_addr constant [5 x i8] c"lv_b\00" -@.str4578 = private unnamed_addr constant [5 x i8] c"lv_h\00" -@.str4579 = private unnamed_addr constant [5 x i8] c"lv_n\00" -@.str4580 = private unnamed_addr constant [5 x i8] c"lv_e\00" -@.str4581 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4582 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4583 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4584 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4585 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4586 = private unnamed_addr constant [3 x i8] c", \00" +@.str4575 = private unnamed_addr constant [3 x i8] c"-1\00" +@.str4576 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4577 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4578 = private unnamed_addr constant [2 x i8] c"0\00" +@.str4579 = private unnamed_addr constant [5 x i8] c"lv_c\00" +@.str4580 = private unnamed_addr constant [5 x i8] c"lv_b\00" +@.str4581 = private unnamed_addr constant [5 x i8] c"lv_h\00" +@.str4582 = private unnamed_addr constant [5 x i8] c"lv_n\00" +@.str4583 = private unnamed_addr constant [5 x i8] c"lv_e\00" +@.str4584 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4585 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4586 = private unnamed_addr constant [3 x i8] c":\0A\00" @.str4587 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" @.str4588 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4589 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str4590 = private unnamed_addr constant [8 x i8] c"and i1 \00" -@.str4591 = private unnamed_addr constant [3 x i8] c", \00" -@.str4592 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4593 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4594 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4595 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4596 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4597 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4598 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4599 = private unnamed_addr constant [9 x i8] c"icmp eq \00" -@.str4600 = private unnamed_addr constant [2 x i8] c" \00" -@.str4601 = private unnamed_addr constant [3 x i8] c", \00" -@.str4602 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4603 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4604 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4605 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4606 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4607 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4608 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4609 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4610 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4611 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4612 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4613 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4614 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4615 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4616 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4617 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4618 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" -@.str4619 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str4620 = private unnamed_addr constant [6 x i8] c"lv_do\00" -@.str4621 = private unnamed_addr constant [7 x i8] c"lv_end\00" -@.str4622 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4623 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4624 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4625 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4626 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4627 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4628 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4629 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4630 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4631 = private unnamed_addr constant [6 x i8] c"lv_dc\00" -@.str4632 = private unnamed_addr constant [6 x i8] c"lv_db\00" -@.str4633 = private unnamed_addr constant [6 x i8] c"lv_de\00" -@.str4634 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4635 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4636 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4637 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4638 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4639 = private unnamed_addr constant [3 x i8] c", \00" -@.str4640 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4641 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4642 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4643 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4644 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4645 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4646 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4647 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4648 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4649 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4650 = private unnamed_addr constant [2 x i8] c" \00" +@.str4589 = private unnamed_addr constant [3 x i8] c", \00" +@.str4590 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4591 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4592 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str4593 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str4594 = private unnamed_addr constant [3 x i8] c", \00" +@.str4595 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4596 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4597 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4598 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4599 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4600 = private unnamed_addr constant [6 x i8] c"load \00" +@.str4601 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4602 = private unnamed_addr constant [9 x i8] c"icmp eq \00" +@.str4603 = private unnamed_addr constant [2 x i8] c" \00" +@.str4604 = private unnamed_addr constant [3 x i8] c", \00" +@.str4605 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4606 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4607 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4608 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4609 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4610 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4611 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4612 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4613 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4614 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4615 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4616 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4617 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4618 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4619 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4620 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4621 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" +@.str4622 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str4623 = private unnamed_addr constant [6 x i8] c"lv_do\00" +@.str4624 = private unnamed_addr constant [7 x i8] c"lv_end\00" +@.str4625 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4626 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4627 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4628 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4629 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4630 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4631 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4632 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4633 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4634 = private unnamed_addr constant [6 x i8] c"lv_dc\00" +@.str4635 = private unnamed_addr constant [6 x i8] c"lv_db\00" +@.str4636 = private unnamed_addr constant [6 x i8] c"lv_de\00" +@.str4637 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4638 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4639 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4640 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4641 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4642 = private unnamed_addr constant [3 x i8] c", \00" +@.str4643 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4644 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4645 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4646 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4647 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4648 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4649 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4650 = private unnamed_addr constant [6 x i8] c"load \00" @.str4651 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4652 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4653 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4654 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4652 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4653 = private unnamed_addr constant [2 x i8] c" \00" +@.str4654 = private unnamed_addr constant [7 x i8] c", ptr \00" @.str4655 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4656 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4657 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str4658 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4659 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4660 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4661 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4662 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4663 = private unnamed_addr constant [2 x i8] c"0\00" -@.str4664 = private unnamed_addr constant [5 x i8] c"void\00" -@.str4665 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str4666 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4667 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4668 = private unnamed_addr constant [5 x i8] c", 32\00" -@.str4669 = private unnamed_addr constant [9 x i8] c"sort_ins\00" -@.str4670 = private unnamed_addr constant [9 x i8] c"sort_mrg\00" -@.str4671 = private unnamed_addr constant [9 x i8] c"sort_end\00" -@.str4672 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4673 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4674 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4675 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4676 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4677 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4678 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4679 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4680 = private unnamed_addr constant [2 x i8] c"1\00" -@.str4681 = private unnamed_addr constant [6 x i8] c"ls_oc\00" -@.str4682 = private unnamed_addr constant [6 x i8] c"ls_ob\00" -@.str4683 = private unnamed_addr constant [6 x i8] c"ls_oe\00" -@.str4684 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4685 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4686 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4687 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4688 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4689 = private unnamed_addr constant [3 x i8] c", \00" -@.str4690 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4691 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4692 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4693 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4694 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4695 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4696 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4697 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4698 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4699 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4656 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4657 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4658 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4659 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4660 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str4661 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4662 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4663 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4664 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4665 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4666 = private unnamed_addr constant [2 x i8] c"0\00" +@.str4667 = private unnamed_addr constant [5 x i8] c"void\00" +@.str4668 = private unnamed_addr constant [5 x i8] c"sort\00" +@.str4669 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4670 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4671 = private unnamed_addr constant [5 x i8] c", 32\00" +@.str4672 = private unnamed_addr constant [9 x i8] c"sort_ins\00" +@.str4673 = private unnamed_addr constant [9 x i8] c"sort_mrg\00" +@.str4674 = private unnamed_addr constant [9 x i8] c"sort_end\00" +@.str4675 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4676 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4677 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4678 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4679 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4680 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4681 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4682 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4683 = private unnamed_addr constant [2 x i8] c"1\00" +@.str4684 = private unnamed_addr constant [6 x i8] c"ls_oc\00" +@.str4685 = private unnamed_addr constant [6 x i8] c"ls_ob\00" +@.str4686 = private unnamed_addr constant [6 x i8] c"ls_oe\00" +@.str4687 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4688 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4689 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4690 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4691 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4692 = private unnamed_addr constant [3 x i8] c", \00" +@.str4693 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4694 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4695 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4696 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4697 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4698 = private unnamed_addr constant [6 x i8] c"load \00" +@.str4699 = private unnamed_addr constant [7 x i8] c", ptr \00" @.str4700 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4701 = private unnamed_addr constant [6 x i8] c"ls_ic\00" -@.str4702 = private unnamed_addr constant [6 x i8] c"ls_ib\00" -@.str4703 = private unnamed_addr constant [6 x i8] c"ls_ie\00" -@.str4704 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4705 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4706 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4707 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4708 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" -@.str4709 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str4710 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4711 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4712 = private unnamed_addr constant [10 x i8] c"icmp sgt \00" -@.str4713 = private unnamed_addr constant [2 x i8] c" \00" -@.str4714 = private unnamed_addr constant [3 x i8] c", \00" -@.str4715 = private unnamed_addr constant [8 x i8] c"and i1 \00" -@.str4716 = private unnamed_addr constant [3 x i8] c", \00" -@.str4717 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4718 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4719 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4720 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4721 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4722 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4723 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4724 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4725 = private unnamed_addr constant [2 x i8] c" \00" -@.str4726 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4727 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4728 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4729 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4730 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4731 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4732 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4733 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4734 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4735 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4736 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4737 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4738 = private unnamed_addr constant [2 x i8] c" \00" -@.str4739 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4740 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4741 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4742 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4743 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4744 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4745 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4746 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4701 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4702 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4703 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4704 = private unnamed_addr constant [6 x i8] c"ls_ic\00" +@.str4705 = private unnamed_addr constant [6 x i8] c"ls_ib\00" +@.str4706 = private unnamed_addr constant [6 x i8] c"ls_ie\00" +@.str4707 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4708 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4709 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4710 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4711 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" +@.str4712 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str4713 = private unnamed_addr constant [6 x i8] c"load \00" +@.str4714 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4715 = private unnamed_addr constant [10 x i8] c"icmp sgt \00" +@.str4716 = private unnamed_addr constant [2 x i8] c" \00" +@.str4717 = private unnamed_addr constant [3 x i8] c", \00" +@.str4718 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str4719 = private unnamed_addr constant [3 x i8] c", \00" +@.str4720 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4721 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4722 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4723 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4724 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4725 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4726 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4727 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4728 = private unnamed_addr constant [2 x i8] c" \00" +@.str4729 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4730 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4731 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4732 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4733 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4734 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4735 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4736 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4737 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4738 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4739 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4740 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4741 = private unnamed_addr constant [2 x i8] c" \00" +@.str4742 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4743 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4744 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4745 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4746 = private unnamed_addr constant [4 x i8] c"i32\00" @.str4747 = private unnamed_addr constant [13 x i8] c" br label %\00" @.str4748 = private unnamed_addr constant [2 x i8] c"\0A\00" @.str4749 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4750 = private unnamed_addr constant [1 x i8] c"\00" -@.str4751 = private unnamed_addr constant [1 x i8] c"\00" -@.str4752 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4753 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4754 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4755 = private unnamed_addr constant [2 x i8] c"0\00" -@.str4756 = private unnamed_addr constant [5 x i8] c"void\00" -@.str4757 = private unnamed_addr constant [10 x i8] c"sort_with\00" -@.str4758 = private unnamed_addr constant [18 x i8] c"List.sort_with: '\00" -@.str4759 = private unnamed_addr constant [26 x i8] c"' must take two arguments\00" -@.str4760 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4761 = private unnamed_addr constant [2 x i8] c"0\00" -@.str4762 = private unnamed_addr constant [5 x i8] c"void\00" -@.str4763 = private unnamed_addr constant [8 x i8] c"sort_by\00" -@.str4764 = private unnamed_addr constant [13 x i8] c"sort_desc_by\00" -@.str4765 = private unnamed_addr constant [6 x i8] c"List.\00" -@.str4766 = private unnamed_addr constant [8 x i8] c": key '\00" -@.str4767 = private unnamed_addr constant [25 x i8] c"' must take one argument\00" -@.str4768 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str4769 = private unnamed_addr constant [5 x i8] c"void\00" -@.str4770 = private unnamed_addr constant [6 x i8] c"List.\00" -@.str4771 = private unnamed_addr constant [8 x i8] c": key '\00" -@.str4772 = private unnamed_addr constant [23 x i8] c"' must return a number\00" -@.str4773 = private unnamed_addr constant [13 x i8] c"sort_desc_by\00" -@.str4774 = private unnamed_addr constant [2 x i8] c"0\00" -@.str4775 = private unnamed_addr constant [5 x i8] c"void\00" -@.str4776 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4777 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4778 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4779 = private unnamed_addr constant [2 x i8] c"0\00" +@.str4750 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4751 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4752 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4753 = private unnamed_addr constant [1 x i8] c"\00" +@.str4754 = private unnamed_addr constant [1 x i8] c"\00" +@.str4755 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4756 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4757 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4758 = private unnamed_addr constant [2 x i8] c"0\00" +@.str4759 = private unnamed_addr constant [5 x i8] c"void\00" +@.str4760 = private unnamed_addr constant [10 x i8] c"sort_with\00" +@.str4761 = private unnamed_addr constant [18 x i8] c"List.sort_with: '\00" +@.str4762 = private unnamed_addr constant [26 x i8] c"' must take two arguments\00" +@.str4763 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4764 = private unnamed_addr constant [2 x i8] c"0\00" +@.str4765 = private unnamed_addr constant [5 x i8] c"void\00" +@.str4766 = private unnamed_addr constant [8 x i8] c"sort_by\00" +@.str4767 = private unnamed_addr constant [13 x i8] c"sort_desc_by\00" +@.str4768 = private unnamed_addr constant [6 x i8] c"List.\00" +@.str4769 = private unnamed_addr constant [8 x i8] c": key '\00" +@.str4770 = private unnamed_addr constant [25 x i8] c"' must take one argument\00" +@.str4771 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str4772 = private unnamed_addr constant [5 x i8] c"void\00" +@.str4773 = private unnamed_addr constant [6 x i8] c"List.\00" +@.str4774 = private unnamed_addr constant [8 x i8] c": key '\00" +@.str4775 = private unnamed_addr constant [23 x i8] c"' must return a number\00" +@.str4776 = private unnamed_addr constant [13 x i8] c"sort_desc_by\00" +@.str4777 = private unnamed_addr constant [2 x i8] c"0\00" +@.str4778 = private unnamed_addr constant [5 x i8] c"void\00" +@.str4779 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" @.str4780 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4781 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4782 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4781 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4782 = private unnamed_addr constant [2 x i8] c"0\00" @.str4783 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4784 = private unnamed_addr constant [8 x i8] c"lr_cond\00" -@.str4785 = private unnamed_addr constant [8 x i8] c"lr_body\00" -@.str4786 = private unnamed_addr constant [7 x i8] c"lr_end\00" -@.str4787 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4788 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4789 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4790 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4791 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str4792 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4793 = private unnamed_addr constant [3 x i8] c", \00" -@.str4794 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str4795 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4796 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str4797 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4798 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4799 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4800 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4801 = private unnamed_addr constant [6 x i8] c"load \00" -@.str4802 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4803 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4804 = private unnamed_addr constant [2 x i8] c" \00" +@.str4784 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4785 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4786 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4787 = private unnamed_addr constant [8 x i8] c"lr_cond\00" +@.str4788 = private unnamed_addr constant [8 x i8] c"lr_body\00" +@.str4789 = private unnamed_addr constant [7 x i8] c"lr_end\00" +@.str4790 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4791 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4792 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4793 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4794 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str4795 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4796 = private unnamed_addr constant [3 x i8] c", \00" +@.str4797 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str4798 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4799 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str4800 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4801 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4802 = private unnamed_addr constant [6 x i8] c"load \00" +@.str4803 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4804 = private unnamed_addr constant [6 x i8] c"load \00" @.str4805 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4806 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4807 = private unnamed_addr constant [9 x i8] c" store \00" -@.str4808 = private unnamed_addr constant [2 x i8] c" \00" -@.str4809 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str4810 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4811 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4812 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4813 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4814 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4806 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4807 = private unnamed_addr constant [2 x i8] c" \00" +@.str4808 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4809 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4810 = private unnamed_addr constant [9 x i8] c" store \00" +@.str4811 = private unnamed_addr constant [2 x i8] c" \00" +@.str4812 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str4813 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4814 = private unnamed_addr constant [9 x i8] c"add i32 \00" @.str4815 = private unnamed_addr constant [4 x i8] c", 1\00" @.str4816 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str4817 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str4818 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str4819 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str4820 = private unnamed_addr constant [2 x i8] c"0\00" -@.str4821 = private unnamed_addr constant [5 x i8] c"void\00" -@.str4822 = private unnamed_addr constant [3 x i8] c"in\00" -@.str4823 = private unnamed_addr constant [4 x i8] c"out\00" -@.str4824 = private unnamed_addr constant [7 x i8] c"in_out\00" -@.str4825 = private unnamed_addr constant [5 x i8] c"back\00" -@.str4826 = private unnamed_addr constant [7 x i8] c"bounce\00" -@.str4827 = private unnamed_addr constant [8 x i8] c"elastic\00" -@.str4828 = private unnamed_addr constant [7 x i8] c"495616\00" -@.str4829 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4830 = private unnamed_addr constant [8 x i8] c", 35747\00" -@.str4831 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4832 = private unnamed_addr constant [8 x i8] c", 49152\00" -@.str4833 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4834 = private unnamed_addr constant [8 x i8] c", 53620\00" -@.str4835 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4836 = private unnamed_addr constant [8 x i8] c", 61440\00" -@.str4837 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4838 = private unnamed_addr constant [8 x i8] c", 62557\00" -@.str4839 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4840 = private unnamed_addr constant [8 x i8] c", 64512\00" -@.str4841 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4842 = private unnamed_addr constant [8 x i8] c", 59578\00" -@.str4843 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str4844 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4845 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4846 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4847 = private unnamed_addr constant [8 x i8] c", 47663\00" -@.str4848 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str4849 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4850 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4851 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4852 = private unnamed_addr constant [8 x i8] c", 23831\00" -@.str4853 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str4854 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4855 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4856 = private unnamed_addr constant [17 x i8] c"sub i32 131072, \00" -@.str4857 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str4858 = private unnamed_addr constant [4 x i8] c", 3\00" -@.str4859 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str4860 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str4861 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4862 = private unnamed_addr constant [3 x i8] c", \00" -@.str4863 = private unnamed_addr constant [7 x i8] c"177051\00" -@.str4864 = private unnamed_addr constant [7 x i8] c"111515\00" -@.str4865 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4866 = private unnamed_addr constant [3 x i8] c", \00" -@.str4867 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str4868 = private unnamed_addr constant [5 x i8] c", 10\00" -@.str4869 = private unnamed_addr constant [12 x i8] c"sub i32 0, \00" -@.str4870 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_exp2(i32 \00" -@.str4871 = private unnamed_addr constant [2 x i8] c")\00" -@.str4872 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4873 = private unnamed_addr constant [8 x i8] c", 49152\00" -@.str4874 = private unnamed_addr constant [7 x i8] c"137258\00" -@.str4875 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" -@.str4876 = private unnamed_addr constant [2 x i8] c")\00" -@.str4877 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str4878 = private unnamed_addr constant [8 x i8] c", 65536\00" -@.str4879 = private unnamed_addr constant [3 x i8] c"in\00" -@.str4880 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str4881 = private unnamed_addr constant [4 x i8] c"out\00" -@.str4882 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str4883 = private unnamed_addr constant [7 x i8] c"in_out\00" -@.str4884 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str4885 = private unnamed_addr constant [5 x i8] c"back\00" -@.str4886 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str4887 = private unnamed_addr constant [8 x i8] c"elastic\00" -@.str4888 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str4817 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4818 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4819 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str4820 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str4821 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str4822 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str4823 = private unnamed_addr constant [2 x i8] c"0\00" +@.str4824 = private unnamed_addr constant [5 x i8] c"void\00" +@.str4825 = private unnamed_addr constant [3 x i8] c"in\00" +@.str4826 = private unnamed_addr constant [4 x i8] c"out\00" +@.str4827 = private unnamed_addr constant [7 x i8] c"in_out\00" +@.str4828 = private unnamed_addr constant [5 x i8] c"back\00" +@.str4829 = private unnamed_addr constant [7 x i8] c"bounce\00" +@.str4830 = private unnamed_addr constant [8 x i8] c"elastic\00" +@.str4831 = private unnamed_addr constant [7 x i8] c"495616\00" +@.str4832 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4833 = private unnamed_addr constant [8 x i8] c", 35747\00" +@.str4834 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4835 = private unnamed_addr constant [8 x i8] c", 49152\00" +@.str4836 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4837 = private unnamed_addr constant [8 x i8] c", 53620\00" +@.str4838 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4839 = private unnamed_addr constant [8 x i8] c", 61440\00" +@.str4840 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4841 = private unnamed_addr constant [8 x i8] c", 62557\00" +@.str4842 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4843 = private unnamed_addr constant [8 x i8] c", 64512\00" +@.str4844 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4845 = private unnamed_addr constant [8 x i8] c", 59578\00" +@.str4846 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str4847 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4848 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4849 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4850 = private unnamed_addr constant [8 x i8] c", 47663\00" +@.str4851 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str4852 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4853 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4854 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4855 = private unnamed_addr constant [8 x i8] c", 23831\00" +@.str4856 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str4857 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4858 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4859 = private unnamed_addr constant [17 x i8] c"sub i32 131072, \00" +@.str4860 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str4861 = private unnamed_addr constant [4 x i8] c", 3\00" +@.str4862 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str4863 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str4864 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4865 = private unnamed_addr constant [3 x i8] c", \00" +@.str4866 = private unnamed_addr constant [7 x i8] c"177051\00" +@.str4867 = private unnamed_addr constant [7 x i8] c"111515\00" +@.str4868 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4869 = private unnamed_addr constant [3 x i8] c", \00" +@.str4870 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str4871 = private unnamed_addr constant [5 x i8] c", 10\00" +@.str4872 = private unnamed_addr constant [12 x i8] c"sub i32 0, \00" +@.str4873 = private unnamed_addr constant [26 x i8] c"call i32 @lp_fx_exp2(i32 \00" +@.str4874 = private unnamed_addr constant [2 x i8] c")\00" +@.str4875 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4876 = private unnamed_addr constant [8 x i8] c", 49152\00" +@.str4877 = private unnamed_addr constant [7 x i8] c"137258\00" +@.str4878 = private unnamed_addr constant [25 x i8] c"call i32 @lp_fx_sin(i32 \00" +@.str4879 = private unnamed_addr constant [2 x i8] c")\00" +@.str4880 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str4881 = private unnamed_addr constant [8 x i8] c", 65536\00" +@.str4882 = private unnamed_addr constant [3 x i8] c"in\00" +@.str4883 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str4884 = private unnamed_addr constant [4 x i8] c"out\00" +@.str4885 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str4886 = private unnamed_addr constant [7 x i8] c"in_out\00" +@.str4887 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str4888 = private unnamed_addr constant [5 x i8] c"back\00" @.str4889 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str4890 = private unnamed_addr constant [6 x i8] c"frame\00" -@.str4891 = private unnamed_addr constant [5 x i8] c"once\00" -@.str4892 = private unnamed_addr constant [9 x i8] c"pingpong\00" -@.str4893 = private unnamed_addr constant [9 x i8] c"finished\00" -@.str4894 = private unnamed_addr constant [9 x i8] c"duration\00" -@.str4895 = private unnamed_addr constant [7 x i8] c"cell_x\00" -@.str4896 = private unnamed_addr constant [7 x i8] c"cell_y\00" -@.str4897 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str4898 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str4899 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str4900 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str4901 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str4902 = private unnamed_addr constant [3 x i8] c", \00" -@.str4903 = private unnamed_addr constant [10 x i8] c"ashr i64 \00" -@.str4904 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str4905 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str4906 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str4907 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4908 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4909 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str4910 = private unnamed_addr constant [14 x i8] c", i32 1, i32 \00" -@.str4911 = private unnamed_addr constant [6 x i8] c"frame\00" -@.str4912 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str4913 = private unnamed_addr constant [3 x i8] c", \00" -@.str4914 = private unnamed_addr constant [4 x i8] c"int\00" -@.str4915 = private unnamed_addr constant [5 x i8] c"once\00" -@.str4916 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4917 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str4918 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4919 = private unnamed_addr constant [3 x i8] c", \00" -@.str4920 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str4921 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4922 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4923 = private unnamed_addr constant [4 x i8] c"int\00" -@.str4924 = private unnamed_addr constant [9 x i8] c"pingpong\00" -@.str4925 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str4926 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str4927 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4928 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str4929 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str4930 = private unnamed_addr constant [3 x i8] c", \00" -@.str4931 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str4932 = private unnamed_addr constant [3 x i8] c", \00" -@.str4933 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4934 = private unnamed_addr constant [3 x i8] c", \00" -@.str4935 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str4936 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4937 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4938 = private unnamed_addr constant [4 x i8] c"int\00" -@.str4939 = private unnamed_addr constant [9 x i8] c"finished\00" -@.str4940 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" -@.str4941 = private unnamed_addr constant [3 x i8] c", \00" -@.str4942 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str4943 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str4944 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str4945 = private unnamed_addr constant [9 x i8] c"duration\00" -@.str4946 = private unnamed_addr constant [9 x i8] c"shl i32 \00" -@.str4947 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str4948 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" -@.str4949 = private unnamed_addr constant [3 x i8] c", \00" -@.str4950 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str4951 = private unnamed_addr constant [7 x i8] c"cell_x\00" -@.str4952 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str4953 = private unnamed_addr constant [3 x i8] c", \00" -@.str4954 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str4955 = private unnamed_addr constant [3 x i8] c", \00" -@.str4956 = private unnamed_addr constant [4 x i8] c"int\00" -@.str4957 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" +@.str4890 = private unnamed_addr constant [8 x i8] c"elastic\00" +@.str4891 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str4892 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str4893 = private unnamed_addr constant [6 x i8] c"frame\00" +@.str4894 = private unnamed_addr constant [5 x i8] c"once\00" +@.str4895 = private unnamed_addr constant [9 x i8] c"pingpong\00" +@.str4896 = private unnamed_addr constant [9 x i8] c"finished\00" +@.str4897 = private unnamed_addr constant [9 x i8] c"duration\00" +@.str4898 = private unnamed_addr constant [7 x i8] c"cell_x\00" +@.str4899 = private unnamed_addr constant [7 x i8] c"cell_y\00" +@.str4900 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str4901 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str4902 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str4903 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str4904 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str4905 = private unnamed_addr constant [3 x i8] c", \00" +@.str4906 = private unnamed_addr constant [10 x i8] c"ashr i64 \00" +@.str4907 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str4908 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str4909 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str4910 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4911 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4912 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str4913 = private unnamed_addr constant [14 x i8] c", i32 1, i32 \00" +@.str4914 = private unnamed_addr constant [6 x i8] c"frame\00" +@.str4915 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str4916 = private unnamed_addr constant [3 x i8] c", \00" +@.str4917 = private unnamed_addr constant [4 x i8] c"int\00" +@.str4918 = private unnamed_addr constant [5 x i8] c"once\00" +@.str4919 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4920 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str4921 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4922 = private unnamed_addr constant [3 x i8] c", \00" +@.str4923 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str4924 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4925 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4926 = private unnamed_addr constant [4 x i8] c"int\00" +@.str4927 = private unnamed_addr constant [9 x i8] c"pingpong\00" +@.str4928 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str4929 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str4930 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4931 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str4932 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str4933 = private unnamed_addr constant [3 x i8] c", \00" +@.str4934 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str4935 = private unnamed_addr constant [3 x i8] c", \00" +@.str4936 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4937 = private unnamed_addr constant [3 x i8] c", \00" +@.str4938 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str4939 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4940 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4941 = private unnamed_addr constant [4 x i8] c"int\00" +@.str4942 = private unnamed_addr constant [9 x i8] c"finished\00" +@.str4943 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" +@.str4944 = private unnamed_addr constant [3 x i8] c", \00" +@.str4945 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str4946 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str4947 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str4948 = private unnamed_addr constant [9 x i8] c"duration\00" +@.str4949 = private unnamed_addr constant [9 x i8] c"shl i32 \00" +@.str4950 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str4951 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" +@.str4952 = private unnamed_addr constant [3 x i8] c", \00" +@.str4953 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str4954 = private unnamed_addr constant [7 x i8] c"cell_x\00" +@.str4955 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str4956 = private unnamed_addr constant [3 x i8] c", \00" +@.str4957 = private unnamed_addr constant [9 x i8] c"mul i32 \00" @.str4958 = private unnamed_addr constant [3 x i8] c", \00" -@.str4959 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str4960 = private unnamed_addr constant [3 x i8] c", \00" -@.str4961 = private unnamed_addr constant [4 x i8] c"int\00" -@.str4962 = private unnamed_addr constant [9 x i8] c"progress\00" -@.str4963 = private unnamed_addr constant [5 x i8] c"loop\00" -@.str4964 = private unnamed_addr constant [5 x i8] c"yoyo\00" -@.str4965 = private unnamed_addr constant [5 x i8] c"done\00" -@.str4966 = private unnamed_addr constant [5 x i8] c"ease\00" -@.str4967 = private unnamed_addr constant [7 x i8] c"number\00" -@.str4968 = private unnamed_addr constant [6 x i8] c"round\00" -@.str4969 = private unnamed_addr constant [6 x i8] c"point\00" -@.str4970 = private unnamed_addr constant [5 x i8] c"tint\00" -@.str4971 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" -@.str4972 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str4973 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str4974 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4975 = private unnamed_addr constant [12 x i8] c", i32 65536\00" -@.str4976 = private unnamed_addr constant [9 x i8] c"progress\00" -@.str4977 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" -@.str4978 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str4979 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str4980 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4981 = private unnamed_addr constant [12 x i8] c", i32 65536\00" -@.str4982 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str4983 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str4984 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str4985 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str4986 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" -@.str4987 = private unnamed_addr constant [8 x i8] c", 65536\00" -@.str4988 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str4989 = private unnamed_addr constant [18 x i8] c", i32 65536, i32 \00" -@.str4990 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str4991 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str4992 = private unnamed_addr constant [12 x i8] c", i32 65536\00" -@.str4993 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str4994 = private unnamed_addr constant [5 x i8] c"loop\00" -@.str4995 = private unnamed_addr constant [9 x i8] c"and i32 \00" -@.str4996 = private unnamed_addr constant [8 x i8] c", 65535\00" -@.str4997 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str4998 = private unnamed_addr constant [5 x i8] c"yoyo\00" -@.str4999 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str5000 = private unnamed_addr constant [9 x i8] c", 131072\00" -@.str5001 = private unnamed_addr constant [17 x i8] c"sub i32 131072, \00" -@.str5002 = private unnamed_addr constant [14 x i8] c"icmp sle i32 \00" -@.str5003 = private unnamed_addr constant [8 x i8] c", 65536\00" -@.str5004 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str5005 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5006 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5007 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str5008 = private unnamed_addr constant [5 x i8] c"done\00" -@.str5009 = private unnamed_addr constant [29 x i8] c"call i32 @fn_tween_done(i32 \00" -@.str5010 = private unnamed_addr constant [2 x i8] c")\00" -@.str5011 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str5012 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" -@.str5013 = private unnamed_addr constant [3 x i8] c", \00" -@.str5014 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str5015 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str5016 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str5017 = private unnamed_addr constant [5 x i8] c"ease\00" -@.str5018 = private unnamed_addr constant [55 x i8] c"Tween.ease: the easing mode must be a literal int 0..6\00" -@.str5019 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str5020 = private unnamed_addr constant [7 x i8] c"number\00" -@.str5021 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str5022 = private unnamed_addr constant [6 x i8] c"round\00" -@.str5023 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str5024 = private unnamed_addr constant [3 x i8] c", \00" -@.str5025 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str5026 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str5027 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str5028 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str5029 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str5030 = private unnamed_addr constant [3 x i8] c", \00" -@.str5031 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str5032 = private unnamed_addr constant [8 x i8] c", 32768\00" -@.str5033 = private unnamed_addr constant [10 x i8] c"ashr i64 \00" -@.str5034 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str5035 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str5036 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str5037 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5038 = private unnamed_addr constant [3 x i8] c", \00" -@.str5039 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5040 = private unnamed_addr constant [6 x i8] c"point\00" -@.str5041 = private unnamed_addr constant [7 x i8] c"Vector\00" -@.str5042 = private unnamed_addr constant [3 x i8] c"16\00" -@.str5043 = private unnamed_addr constant [3 x i8] c"16\00" -@.str5044 = private unnamed_addr constant [2 x i8] c"8\00" -@.str5045 = private unnamed_addr constant [2 x i8] c"8\00" -@.str5046 = private unnamed_addr constant [2 x i8] c"0\00" -@.str5047 = private unnamed_addr constant [2 x i8] c"0\00" -@.str5048 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5049 = private unnamed_addr constant [6 x i8] c"rects\00" -@.str5050 = private unnamed_addr constant [11 x i8] c"point_rect\00" -@.str5051 = private unnamed_addr constant [8 x i8] c"circles\00" -@.str5052 = private unnamed_addr constant [12 x i8] c"rect_circle\00" -@.str5053 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str5054 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str5055 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str5056 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str5057 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str5058 = private unnamed_addr constant [3 x i8] c", \00" -@.str5059 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str5060 = private unnamed_addr constant [3 x i8] c", \00" -@.str5061 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str5062 = private unnamed_addr constant [3 x i8] c", \00" -@.str5063 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str5064 = private unnamed_addr constant [3 x i8] c", \00" -@.str5065 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str5066 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5067 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5068 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" -@.str5069 = private unnamed_addr constant [3 x i8] c", \00" -@.str5070 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str5071 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5072 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5073 = private unnamed_addr constant [6 x i8] c"rects\00" -@.str5074 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5075 = private unnamed_addr constant [3 x i8] c", \00" -@.str5076 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5077 = private unnamed_addr constant [3 x i8] c", \00" -@.str5078 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5079 = private unnamed_addr constant [3 x i8] c", \00" -@.str5080 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5081 = private unnamed_addr constant [3 x i8] c", \00" -@.str5082 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str5083 = private unnamed_addr constant [3 x i8] c", \00" -@.str5084 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str5085 = private unnamed_addr constant [3 x i8] c", \00" -@.str5086 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str5087 = private unnamed_addr constant [3 x i8] c", \00" -@.str5088 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str5089 = private unnamed_addr constant [3 x i8] c", \00" -@.str5090 = private unnamed_addr constant [8 x i8] c"and i1 \00" -@.str5091 = private unnamed_addr constant [3 x i8] c", \00" -@.str5092 = private unnamed_addr constant [8 x i8] c"and i1 \00" -@.str5093 = private unnamed_addr constant [3 x i8] c", \00" -@.str5094 = private unnamed_addr constant [8 x i8] c"and i1 \00" -@.str5095 = private unnamed_addr constant [3 x i8] c", \00" -@.str5096 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str5097 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str5098 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str5099 = private unnamed_addr constant [11 x i8] c"point_rect\00" -@.str5100 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5101 = private unnamed_addr constant [3 x i8] c", \00" -@.str5102 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5103 = private unnamed_addr constant [3 x i8] c", \00" -@.str5104 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" -@.str5105 = private unnamed_addr constant [3 x i8] c", \00" -@.str5106 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str5107 = private unnamed_addr constant [3 x i8] c", \00" -@.str5108 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" -@.str5109 = private unnamed_addr constant [3 x i8] c", \00" -@.str5110 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str5111 = private unnamed_addr constant [3 x i8] c", \00" -@.str5112 = private unnamed_addr constant [8 x i8] c"and i1 \00" -@.str5113 = private unnamed_addr constant [3 x i8] c", \00" -@.str5114 = private unnamed_addr constant [8 x i8] c"and i1 \00" -@.str5115 = private unnamed_addr constant [3 x i8] c", \00" -@.str5116 = private unnamed_addr constant [8 x i8] c"and i1 \00" -@.str5117 = private unnamed_addr constant [3 x i8] c", \00" -@.str5118 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str5119 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str5120 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str5121 = private unnamed_addr constant [8 x i8] c"circles\00" -@.str5122 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str5123 = private unnamed_addr constant [3 x i8] c", \00" -@.str5124 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str5125 = private unnamed_addr constant [3 x i8] c", \00" -@.str5126 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5127 = private unnamed_addr constant [3 x i8] c", \00" -@.str5128 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str5129 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str5130 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str5131 = private unnamed_addr constant [3 x i8] c", \00" -@.str5132 = private unnamed_addr constant [14 x i8] c"icmp sle i64 \00" -@.str5133 = private unnamed_addr constant [3 x i8] c", \00" -@.str5134 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str5135 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str5136 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str5137 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5138 = private unnamed_addr constant [3 x i8] c", \00" -@.str5139 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5140 = private unnamed_addr constant [3 x i8] c", \00" -@.str5141 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str5142 = private unnamed_addr constant [3 x i8] c", \00" -@.str5143 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str5144 = private unnamed_addr constant [3 x i8] c", \00" -@.str5145 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str5146 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str5147 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str5148 = private unnamed_addr constant [3 x i8] c", \00" -@.str5149 = private unnamed_addr constant [14 x i8] c"icmp sle i64 \00" -@.str5150 = private unnamed_addr constant [3 x i8] c", \00" -@.str5151 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str5152 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str5153 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str5154 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str5155 = private unnamed_addr constant [6 x i8] c"words\00" -@.str5156 = private unnamed_addr constant [5 x i8] c"copy\00" -@.str5157 = private unnamed_addr constant [5 x i8] c"fill\00" -@.str5158 = private unnamed_addr constant [5 x i8] c"peek\00" -@.str5159 = private unnamed_addr constant [5 x i8] c"poke\00" -@.str5160 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str5161 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str5162 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str5163 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" -@.str5164 = private unnamed_addr constant [2 x i8] c")\00" -@.str5165 = private unnamed_addr constant [8 x i8] c"pointer\00" -@.str5166 = private unnamed_addr constant [6 x i8] c"words\00" -@.str5167 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5168 = private unnamed_addr constant [4 x i8] c", 4\00" -@.str5169 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str5170 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str5171 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" -@.str5172 = private unnamed_addr constant [2 x i8] c")\00" -@.str5173 = private unnamed_addr constant [6 x i8] c"words\00" -@.str5174 = private unnamed_addr constant [5 x i8] c"copy\00" -@.str5175 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str5176 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str5177 = private unnamed_addr constant [24 x i8] c" call ptr @memcpy(ptr \00" -@.str5178 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str5179 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str5180 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str5181 = private unnamed_addr constant [2 x i8] c"0\00" -@.str5182 = private unnamed_addr constant [5 x i8] c"void\00" -@.str5183 = private unnamed_addr constant [5 x i8] c"fill\00" -@.str5184 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str5185 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str5186 = private unnamed_addr constant [24 x i8] c" call ptr @memset(ptr \00" -@.str5187 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5188 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str5189 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str5190 = private unnamed_addr constant [2 x i8] c"0\00" -@.str5191 = private unnamed_addr constant [5 x i8] c"void\00" -@.str5192 = private unnamed_addr constant [5 x i8] c"peek\00" -@.str5193 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str5194 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5195 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" -@.str5196 = private unnamed_addr constant [9 x i8] c"zext i8 \00" -@.str5197 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str5198 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5199 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str5200 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5201 = private unnamed_addr constant [11 x i8] c"trunc i32 \00" -@.str5202 = private unnamed_addr constant [7 x i8] c" to i8\00" -@.str5203 = private unnamed_addr constant [12 x i8] c" store i8 \00" -@.str5204 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str5205 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str5206 = private unnamed_addr constant [2 x i8] c"0\00" -@.str5207 = private unnamed_addr constant [5 x i8] c"void\00" -@.str5208 = private unnamed_addr constant [6 x i8] c"frame\00" -@.str5209 = private unnamed_addr constant [6 x i8] c"delta\00" -@.str5210 = private unnamed_addr constant [8 x i8] c"elapsed\00" -@.str5211 = private unnamed_addr constant [4 x i8] c"now\00" -@.str5212 = private unnamed_addr constant [6 x i8] c"since\00" -@.str5213 = private unnamed_addr constant [6 x i8] c"frame\00" -@.str5214 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_frame\00" -@.str5215 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5216 = private unnamed_addr constant [6 x i8] c"delta\00" -@.str5217 = private unnamed_addr constant [5 x i8] c"1092\00" -@.str5218 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str5219 = private unnamed_addr constant [8 x i8] c"elapsed\00" -@.str5220 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_frame\00" -@.str5221 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5222 = private unnamed_addr constant [7 x i8] c", 1092\00" -@.str5223 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str5224 = private unnamed_addr constant [6 x i8] c"since\00" -@.str5225 = private unnamed_addr constant [25 x i8] c"call i64 @time(ptr null)\00" -@.str5226 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str5227 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str5228 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str5229 = private unnamed_addr constant [3 x i8] c", \00" -@.str5230 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5231 = private unnamed_addr constant [25 x i8] c"call i64 @time(ptr null)\00" -@.str5232 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str5233 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str5234 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5235 = private unnamed_addr constant [8 x i8] c"seconds\00" -@.str5236 = private unnamed_addr constant [8 x i8] c"minutes\00" -@.str5237 = private unnamed_addr constant [6 x i8] c"hours\00" -@.str5238 = private unnamed_addr constant [5 x i8] c"days\00" -@.str5239 = private unnamed_addr constant [11 x i8] c"as_seconds\00" -@.str5240 = private unnamed_addr constant [11 x i8] c"as_minutes\00" -@.str5241 = private unnamed_addr constant [9 x i8] c"as_hours\00" -@.str5242 = private unnamed_addr constant [8 x i8] c"as_days\00" -@.str5243 = private unnamed_addr constant [8 x i8] c"seconds\00" -@.str5244 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5245 = private unnamed_addr constant [8 x i8] c"minutes\00" -@.str5246 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5247 = private unnamed_addr constant [5 x i8] c", 60\00" -@.str5248 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5249 = private unnamed_addr constant [6 x i8] c"hours\00" -@.str5250 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5251 = private unnamed_addr constant [7 x i8] c", 3600\00" -@.str5252 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5253 = private unnamed_addr constant [5 x i8] c"days\00" -@.str5254 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5255 = private unnamed_addr constant [8 x i8] c", 86400\00" -@.str5256 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5257 = private unnamed_addr constant [11 x i8] c"as_seconds\00" -@.str5258 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5259 = private unnamed_addr constant [11 x i8] c"as_minutes\00" -@.str5260 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" -@.str5261 = private unnamed_addr constant [5 x i8] c", 60\00" -@.str5262 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5263 = private unnamed_addr constant [9 x i8] c"as_hours\00" -@.str5264 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" -@.str5265 = private unnamed_addr constant [7 x i8] c", 3600\00" -@.str5266 = private unnamed_addr constant [4 x i8] c"int\00" +@.str4959 = private unnamed_addr constant [4 x i8] c"int\00" +@.str4960 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" +@.str4961 = private unnamed_addr constant [3 x i8] c", \00" +@.str4962 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str4963 = private unnamed_addr constant [3 x i8] c", \00" +@.str4964 = private unnamed_addr constant [4 x i8] c"int\00" +@.str4965 = private unnamed_addr constant [9 x i8] c"progress\00" +@.str4966 = private unnamed_addr constant [5 x i8] c"loop\00" +@.str4967 = private unnamed_addr constant [5 x i8] c"yoyo\00" +@.str4968 = private unnamed_addr constant [5 x i8] c"done\00" +@.str4969 = private unnamed_addr constant [5 x i8] c"ease\00" +@.str4970 = private unnamed_addr constant [7 x i8] c"number\00" +@.str4971 = private unnamed_addr constant [6 x i8] c"round\00" +@.str4972 = private unnamed_addr constant [6 x i8] c"point\00" +@.str4973 = private unnamed_addr constant [5 x i8] c"tint\00" +@.str4974 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" +@.str4975 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str4976 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str4977 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4978 = private unnamed_addr constant [12 x i8] c", i32 65536\00" +@.str4979 = private unnamed_addr constant [9 x i8] c"progress\00" +@.str4980 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" +@.str4981 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str4982 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str4983 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4984 = private unnamed_addr constant [12 x i8] c", i32 65536\00" +@.str4985 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str4986 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str4987 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str4988 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str4989 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" +@.str4990 = private unnamed_addr constant [8 x i8] c", 65536\00" +@.str4991 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str4992 = private unnamed_addr constant [18 x i8] c", i32 65536, i32 \00" +@.str4993 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str4994 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str4995 = private unnamed_addr constant [12 x i8] c", i32 65536\00" +@.str4996 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str4997 = private unnamed_addr constant [5 x i8] c"loop\00" +@.str4998 = private unnamed_addr constant [9 x i8] c"and i32 \00" +@.str4999 = private unnamed_addr constant [8 x i8] c", 65535\00" +@.str5000 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str5001 = private unnamed_addr constant [5 x i8] c"yoyo\00" +@.str5002 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5003 = private unnamed_addr constant [9 x i8] c", 131072\00" +@.str5004 = private unnamed_addr constant [17 x i8] c"sub i32 131072, \00" +@.str5005 = private unnamed_addr constant [14 x i8] c"icmp sle i32 \00" +@.str5006 = private unnamed_addr constant [8 x i8] c", 65536\00" +@.str5007 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str5008 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5009 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5010 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str5011 = private unnamed_addr constant [5 x i8] c"done\00" +@.str5012 = private unnamed_addr constant [29 x i8] c"call i32 @fn_tween_done(i32 \00" +@.str5013 = private unnamed_addr constant [2 x i8] c")\00" +@.str5014 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str5015 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" +@.str5016 = private unnamed_addr constant [3 x i8] c", \00" +@.str5017 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str5018 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str5019 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str5020 = private unnamed_addr constant [5 x i8] c"ease\00" +@.str5021 = private unnamed_addr constant [55 x i8] c"Tween.ease: the easing mode must be a literal int 0..6\00" +@.str5022 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str5023 = private unnamed_addr constant [7 x i8] c"number\00" +@.str5024 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str5025 = private unnamed_addr constant [6 x i8] c"round\00" +@.str5026 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str5027 = private unnamed_addr constant [3 x i8] c", \00" +@.str5028 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str5029 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str5030 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str5031 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str5032 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str5033 = private unnamed_addr constant [3 x i8] c", \00" +@.str5034 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str5035 = private unnamed_addr constant [8 x i8] c", 32768\00" +@.str5036 = private unnamed_addr constant [10 x i8] c"ashr i64 \00" +@.str5037 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str5038 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str5039 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str5040 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5041 = private unnamed_addr constant [3 x i8] c", \00" +@.str5042 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5043 = private unnamed_addr constant [6 x i8] c"point\00" +@.str5044 = private unnamed_addr constant [7 x i8] c"Vector\00" +@.str5045 = private unnamed_addr constant [3 x i8] c"16\00" +@.str5046 = private unnamed_addr constant [3 x i8] c"16\00" +@.str5047 = private unnamed_addr constant [2 x i8] c"8\00" +@.str5048 = private unnamed_addr constant [2 x i8] c"8\00" +@.str5049 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5050 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5051 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5052 = private unnamed_addr constant [6 x i8] c"rects\00" +@.str5053 = private unnamed_addr constant [11 x i8] c"point_rect\00" +@.str5054 = private unnamed_addr constant [8 x i8] c"circles\00" +@.str5055 = private unnamed_addr constant [12 x i8] c"rect_circle\00" +@.str5056 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str5057 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str5058 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str5059 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str5060 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str5061 = private unnamed_addr constant [3 x i8] c", \00" +@.str5062 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str5063 = private unnamed_addr constant [3 x i8] c", \00" +@.str5064 = private unnamed_addr constant [9 x i8] c"add i64 \00" +@.str5065 = private unnamed_addr constant [3 x i8] c", \00" +@.str5066 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str5067 = private unnamed_addr constant [3 x i8] c", \00" +@.str5068 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str5069 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5070 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5071 = private unnamed_addr constant [14 x i8] c"icmp sgt i32 \00" +@.str5072 = private unnamed_addr constant [3 x i8] c", \00" +@.str5073 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str5074 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5075 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5076 = private unnamed_addr constant [6 x i8] c"rects\00" +@.str5077 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5078 = private unnamed_addr constant [3 x i8] c", \00" +@.str5079 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5080 = private unnamed_addr constant [3 x i8] c", \00" +@.str5081 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5082 = private unnamed_addr constant [3 x i8] c", \00" +@.str5083 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5084 = private unnamed_addr constant [3 x i8] c", \00" +@.str5085 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str5086 = private unnamed_addr constant [3 x i8] c", \00" +@.str5087 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str5088 = private unnamed_addr constant [3 x i8] c", \00" +@.str5089 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str5090 = private unnamed_addr constant [3 x i8] c", \00" +@.str5091 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str5092 = private unnamed_addr constant [3 x i8] c", \00" +@.str5093 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str5094 = private unnamed_addr constant [3 x i8] c", \00" +@.str5095 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str5096 = private unnamed_addr constant [3 x i8] c", \00" +@.str5097 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str5098 = private unnamed_addr constant [3 x i8] c", \00" +@.str5099 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str5100 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str5101 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str5102 = private unnamed_addr constant [11 x i8] c"point_rect\00" +@.str5103 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5104 = private unnamed_addr constant [3 x i8] c", \00" +@.str5105 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5106 = private unnamed_addr constant [3 x i8] c", \00" +@.str5107 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" +@.str5108 = private unnamed_addr constant [3 x i8] c", \00" +@.str5109 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str5110 = private unnamed_addr constant [3 x i8] c", \00" +@.str5111 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" +@.str5112 = private unnamed_addr constant [3 x i8] c", \00" +@.str5113 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str5114 = private unnamed_addr constant [3 x i8] c", \00" +@.str5115 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str5116 = private unnamed_addr constant [3 x i8] c", \00" +@.str5117 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str5118 = private unnamed_addr constant [3 x i8] c", \00" +@.str5119 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str5120 = private unnamed_addr constant [3 x i8] c", \00" +@.str5121 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str5122 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str5123 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str5124 = private unnamed_addr constant [8 x i8] c"circles\00" +@.str5125 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str5126 = private unnamed_addr constant [3 x i8] c", \00" +@.str5127 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str5128 = private unnamed_addr constant [3 x i8] c", \00" +@.str5129 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5130 = private unnamed_addr constant [3 x i8] c", \00" +@.str5131 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str5132 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str5133 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str5134 = private unnamed_addr constant [3 x i8] c", \00" +@.str5135 = private unnamed_addr constant [14 x i8] c"icmp sle i64 \00" +@.str5136 = private unnamed_addr constant [3 x i8] c", \00" +@.str5137 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str5138 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str5139 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str5140 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5141 = private unnamed_addr constant [3 x i8] c", \00" +@.str5142 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5143 = private unnamed_addr constant [3 x i8] c", \00" +@.str5144 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str5145 = private unnamed_addr constant [3 x i8] c", \00" +@.str5146 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str5147 = private unnamed_addr constant [3 x i8] c", \00" +@.str5148 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str5149 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str5150 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str5151 = private unnamed_addr constant [3 x i8] c", \00" +@.str5152 = private unnamed_addr constant [14 x i8] c"icmp sle i64 \00" +@.str5153 = private unnamed_addr constant [3 x i8] c", \00" +@.str5154 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str5155 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str5156 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str5157 = private unnamed_addr constant [6 x i8] c"bytes\00" +@.str5158 = private unnamed_addr constant [6 x i8] c"words\00" +@.str5159 = private unnamed_addr constant [5 x i8] c"copy\00" +@.str5160 = private unnamed_addr constant [5 x i8] c"fill\00" +@.str5161 = private unnamed_addr constant [5 x i8] c"peek\00" +@.str5162 = private unnamed_addr constant [5 x i8] c"poke\00" +@.str5163 = private unnamed_addr constant [6 x i8] c"bytes\00" +@.str5164 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str5165 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str5166 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" +@.str5167 = private unnamed_addr constant [2 x i8] c")\00" +@.str5168 = private unnamed_addr constant [8 x i8] c"pointer\00" +@.str5169 = private unnamed_addr constant [6 x i8] c"words\00" +@.str5170 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5171 = private unnamed_addr constant [4 x i8] c", 4\00" +@.str5172 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str5173 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str5174 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" +@.str5175 = private unnamed_addr constant [2 x i8] c")\00" +@.str5176 = private unnamed_addr constant [6 x i8] c"words\00" +@.str5177 = private unnamed_addr constant [5 x i8] c"copy\00" +@.str5178 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str5179 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str5180 = private unnamed_addr constant [24 x i8] c" call ptr @memcpy(ptr \00" +@.str5181 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str5182 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str5183 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str5184 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5185 = private unnamed_addr constant [5 x i8] c"void\00" +@.str5186 = private unnamed_addr constant [5 x i8] c"fill\00" +@.str5187 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str5188 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str5189 = private unnamed_addr constant [24 x i8] c" call ptr @memset(ptr \00" +@.str5190 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5191 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str5192 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str5193 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5194 = private unnamed_addr constant [5 x i8] c"void\00" +@.str5195 = private unnamed_addr constant [5 x i8] c"peek\00" +@.str5196 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" +@.str5197 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5198 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" +@.str5199 = private unnamed_addr constant [9 x i8] c"zext i8 \00" +@.str5200 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str5201 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5202 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" +@.str5203 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5204 = private unnamed_addr constant [11 x i8] c"trunc i32 \00" +@.str5205 = private unnamed_addr constant [7 x i8] c" to i8\00" +@.str5206 = private unnamed_addr constant [12 x i8] c" store i8 \00" +@.str5207 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str5208 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str5209 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5210 = private unnamed_addr constant [5 x i8] c"void\00" +@.str5211 = private unnamed_addr constant [6 x i8] c"frame\00" +@.str5212 = private unnamed_addr constant [6 x i8] c"delta\00" +@.str5213 = private unnamed_addr constant [8 x i8] c"elapsed\00" +@.str5214 = private unnamed_addr constant [4 x i8] c"now\00" +@.str5215 = private unnamed_addr constant [6 x i8] c"since\00" +@.str5216 = private unnamed_addr constant [6 x i8] c"frame\00" +@.str5217 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_frame\00" +@.str5218 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5219 = private unnamed_addr constant [6 x i8] c"delta\00" +@.str5220 = private unnamed_addr constant [5 x i8] c"1092\00" +@.str5221 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str5222 = private unnamed_addr constant [8 x i8] c"elapsed\00" +@.str5223 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_frame\00" +@.str5224 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5225 = private unnamed_addr constant [7 x i8] c", 1092\00" +@.str5226 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str5227 = private unnamed_addr constant [6 x i8] c"since\00" +@.str5228 = private unnamed_addr constant [25 x i8] c"call i64 @time(ptr null)\00" +@.str5229 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str5230 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str5231 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str5232 = private unnamed_addr constant [3 x i8] c", \00" +@.str5233 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5234 = private unnamed_addr constant [25 x i8] c"call i64 @time(ptr null)\00" +@.str5235 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str5236 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str5237 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5238 = private unnamed_addr constant [8 x i8] c"seconds\00" +@.str5239 = private unnamed_addr constant [8 x i8] c"minutes\00" +@.str5240 = private unnamed_addr constant [6 x i8] c"hours\00" +@.str5241 = private unnamed_addr constant [5 x i8] c"days\00" +@.str5242 = private unnamed_addr constant [11 x i8] c"as_seconds\00" +@.str5243 = private unnamed_addr constant [11 x i8] c"as_minutes\00" +@.str5244 = private unnamed_addr constant [9 x i8] c"as_hours\00" +@.str5245 = private unnamed_addr constant [8 x i8] c"as_days\00" +@.str5246 = private unnamed_addr constant [8 x i8] c"seconds\00" +@.str5247 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5248 = private unnamed_addr constant [8 x i8] c"minutes\00" +@.str5249 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5250 = private unnamed_addr constant [5 x i8] c", 60\00" +@.str5251 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5252 = private unnamed_addr constant [6 x i8] c"hours\00" +@.str5253 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5254 = private unnamed_addr constant [7 x i8] c", 3600\00" +@.str5255 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5256 = private unnamed_addr constant [5 x i8] c"days\00" +@.str5257 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5258 = private unnamed_addr constant [8 x i8] c", 86400\00" +@.str5259 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5260 = private unnamed_addr constant [11 x i8] c"as_seconds\00" +@.str5261 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5262 = private unnamed_addr constant [11 x i8] c"as_minutes\00" +@.str5263 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" +@.str5264 = private unnamed_addr constant [5 x i8] c", 60\00" +@.str5265 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5266 = private unnamed_addr constant [9 x i8] c"as_hours\00" @.str5267 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" -@.str5268 = private unnamed_addr constant [8 x i8] c", 86400\00" +@.str5268 = private unnamed_addr constant [7 x i8] c", 3600\00" @.str5269 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5270 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str5271 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str5272 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str5273 = private unnamed_addr constant [37 x i8] c" call void @lp_civil_from_days(i32 \00" -@.str5274 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str5275 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str5276 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str5277 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str5278 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str5279 = private unnamed_addr constant [4 x i8] c"new\00" -@.str5280 = private unnamed_addr constant [5 x i8] c"year\00" -@.str5281 = private unnamed_addr constant [6 x i8] c"month\00" -@.str5282 = private unnamed_addr constant [4 x i8] c"day\00" -@.str5283 = private unnamed_addr constant [8 x i8] c"weekday\00" -@.str5284 = private unnamed_addr constant [8 x i8] c"is_leap\00" -@.str5285 = private unnamed_addr constant [14 x i8] c"days_in_month\00" -@.str5286 = private unnamed_addr constant [9 x i8] c"to_epoch\00" -@.str5287 = private unnamed_addr constant [9 x i8] c"add_days\00" -@.str5288 = private unnamed_addr constant [10 x i8] c"diff_days\00" -@.str5289 = private unnamed_addr constant [4 x i8] c"new\00" -@.str5290 = private unnamed_addr constant [34 x i8] c"call i32 @lp_days_from_civil(i32 \00" -@.str5291 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5292 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5293 = private unnamed_addr constant [2 x i8] c")\00" -@.str5294 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5295 = private unnamed_addr constant [5 x i8] c"year\00" -@.str5296 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5297 = private unnamed_addr constant [6 x i8] c"month\00" -@.str5298 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5299 = private unnamed_addr constant [4 x i8] c"day\00" -@.str5300 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5301 = private unnamed_addr constant [8 x i8] c"weekday\00" -@.str5302 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5303 = private unnamed_addr constant [4 x i8] c", 4\00" -@.str5304 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str5305 = private unnamed_addr constant [4 x i8] c", 7\00" -@.str5306 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5307 = private unnamed_addr constant [4 x i8] c", 7\00" -@.str5308 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str5309 = private unnamed_addr constant [4 x i8] c", 7\00" -@.str5310 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5311 = private unnamed_addr constant [8 x i8] c"is_leap\00" -@.str5312 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str5313 = private unnamed_addr constant [4 x i8] c", 4\00" -@.str5314 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str5315 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str5316 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str5317 = private unnamed_addr constant [6 x i8] c", 100\00" -@.str5318 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str5319 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str5320 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str5321 = private unnamed_addr constant [6 x i8] c", 400\00" -@.str5322 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str5323 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str5324 = private unnamed_addr constant [8 x i8] c"and i1 \00" -@.str5325 = private unnamed_addr constant [3 x i8] c", \00" -@.str5326 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str5327 = private unnamed_addr constant [3 x i8] c", \00" -@.str5328 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str5329 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str5330 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str5331 = private unnamed_addr constant [14 x i8] c"days_in_month\00" -@.str5332 = private unnamed_addr constant [34 x i8] c"call i32 @lp_days_from_civil(i32 \00" -@.str5333 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5334 = private unnamed_addr constant [9 x i8] c", i32 1)\00" -@.str5335 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str5336 = private unnamed_addr constant [5 x i8] c", 12\00" -@.str5337 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5338 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str5339 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str5340 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5341 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5342 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5343 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str5344 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str5345 = private unnamed_addr constant [14 x i8] c", i32 1, i32 \00" -@.str5346 = private unnamed_addr constant [34 x i8] c"call i32 @lp_days_from_civil(i32 \00" -@.str5347 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5348 = private unnamed_addr constant [9 x i8] c", i32 1)\00" -@.str5349 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str5350 = private unnamed_addr constant [3 x i8] c", \00" -@.str5351 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5352 = private unnamed_addr constant [9 x i8] c"to_epoch\00" -@.str5353 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5354 = private unnamed_addr constant [8 x i8] c", 86400\00" -@.str5355 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5356 = private unnamed_addr constant [9 x i8] c"add_days\00" -@.str5357 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5358 = private unnamed_addr constant [3 x i8] c", \00" -@.str5359 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5360 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str5270 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" +@.str5271 = private unnamed_addr constant [8 x i8] c", 86400\00" +@.str5272 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5273 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str5274 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str5275 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str5276 = private unnamed_addr constant [37 x i8] c" call void @lp_civil_from_days(i32 \00" +@.str5277 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str5278 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str5279 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str5280 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str5281 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str5282 = private unnamed_addr constant [4 x i8] c"new\00" +@.str5283 = private unnamed_addr constant [5 x i8] c"year\00" +@.str5284 = private unnamed_addr constant [6 x i8] c"month\00" +@.str5285 = private unnamed_addr constant [4 x i8] c"day\00" +@.str5286 = private unnamed_addr constant [8 x i8] c"weekday\00" +@.str5287 = private unnamed_addr constant [8 x i8] c"is_leap\00" +@.str5288 = private unnamed_addr constant [14 x i8] c"days_in_month\00" +@.str5289 = private unnamed_addr constant [9 x i8] c"to_epoch\00" +@.str5290 = private unnamed_addr constant [9 x i8] c"add_days\00" +@.str5291 = private unnamed_addr constant [10 x i8] c"diff_days\00" +@.str5292 = private unnamed_addr constant [4 x i8] c"new\00" +@.str5293 = private unnamed_addr constant [34 x i8] c"call i32 @lp_days_from_civil(i32 \00" +@.str5294 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5295 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5296 = private unnamed_addr constant [2 x i8] c")\00" +@.str5297 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5298 = private unnamed_addr constant [5 x i8] c"year\00" +@.str5299 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5300 = private unnamed_addr constant [6 x i8] c"month\00" +@.str5301 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5302 = private unnamed_addr constant [4 x i8] c"day\00" +@.str5303 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5304 = private unnamed_addr constant [8 x i8] c"weekday\00" +@.str5305 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5306 = private unnamed_addr constant [4 x i8] c", 4\00" +@.str5307 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5308 = private unnamed_addr constant [4 x i8] c", 7\00" +@.str5309 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5310 = private unnamed_addr constant [4 x i8] c", 7\00" +@.str5311 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5312 = private unnamed_addr constant [4 x i8] c", 7\00" +@.str5313 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5314 = private unnamed_addr constant [8 x i8] c"is_leap\00" +@.str5315 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5316 = private unnamed_addr constant [4 x i8] c", 4\00" +@.str5317 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str5318 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str5319 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5320 = private unnamed_addr constant [6 x i8] c", 100\00" +@.str5321 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str5322 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str5323 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5324 = private unnamed_addr constant [6 x i8] c", 400\00" +@.str5325 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str5326 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str5327 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str5328 = private unnamed_addr constant [3 x i8] c", \00" +@.str5329 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str5330 = private unnamed_addr constant [3 x i8] c", \00" +@.str5331 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str5332 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str5333 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str5334 = private unnamed_addr constant [14 x i8] c"days_in_month\00" +@.str5335 = private unnamed_addr constant [34 x i8] c"call i32 @lp_days_from_civil(i32 \00" +@.str5336 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5337 = private unnamed_addr constant [9 x i8] c", i32 1)\00" +@.str5338 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str5339 = private unnamed_addr constant [5 x i8] c", 12\00" +@.str5340 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5341 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str5342 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str5343 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5344 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5345 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5346 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str5347 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str5348 = private unnamed_addr constant [14 x i8] c", i32 1, i32 \00" +@.str5349 = private unnamed_addr constant [34 x i8] c"call i32 @lp_days_from_civil(i32 \00" +@.str5350 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5351 = private unnamed_addr constant [9 x i8] c", i32 1)\00" +@.str5352 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str5353 = private unnamed_addr constant [3 x i8] c", \00" +@.str5354 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5355 = private unnamed_addr constant [9 x i8] c"to_epoch\00" +@.str5356 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5357 = private unnamed_addr constant [8 x i8] c", 86400\00" +@.str5358 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5359 = private unnamed_addr constant [9 x i8] c"add_days\00" +@.str5360 = private unnamed_addr constant [9 x i8] c"add i32 \00" @.str5361 = private unnamed_addr constant [3 x i8] c", \00" @.str5362 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5363 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str5364 = private unnamed_addr constant [8 x i8] c", 86400\00" -@.str5365 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5366 = private unnamed_addr constant [8 x i8] c", 86400\00" -@.str5367 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str5368 = private unnamed_addr constant [8 x i8] c", 86400\00" -@.str5369 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str5370 = private unnamed_addr constant [3 x i8] c", \00" -@.str5371 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" -@.str5372 = private unnamed_addr constant [8 x i8] c", 86400\00" -@.str5373 = private unnamed_addr constant [5 x i8] c"from\00" -@.str5374 = private unnamed_addr constant [5 x i8] c"date\00" -@.str5375 = private unnamed_addr constant [4 x i8] c"add\00" -@.str5376 = private unnamed_addr constant [5 x i8] c"year\00" -@.str5377 = private unnamed_addr constant [6 x i8] c"month\00" -@.str5378 = private unnamed_addr constant [4 x i8] c"day\00" -@.str5379 = private unnamed_addr constant [8 x i8] c"weekday\00" -@.str5380 = private unnamed_addr constant [5 x i8] c"hour\00" -@.str5381 = private unnamed_addr constant [7 x i8] c"minute\00" -@.str5382 = private unnamed_addr constant [7 x i8] c"second\00" -@.str5383 = private unnamed_addr constant [7 x i8] c"format\00" -@.str5384 = private unnamed_addr constant [6 x i8] c"parse\00" -@.str5385 = private unnamed_addr constant [29 x i8] c"call ptr @lp_str_concat(ptr \00" -@.str5386 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str5387 = private unnamed_addr constant [2 x i8] c")\00" -@.str5388 = private unnamed_addr constant [47 x i8] c"DateTime.format needs a string-literal pattern\00" -@.str5389 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str5390 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str5391 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str5392 = private unnamed_addr constant [37 x i8] c" call void @lp_civil_from_days(i32 \00" -@.str5393 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str5394 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str5395 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str5396 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str5397 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str5398 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str5399 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str5400 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" -@.str5401 = private unnamed_addr constant [7 x i8] c", 3600\00" -@.str5402 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str5403 = private unnamed_addr constant [7 x i8] c", 3600\00" -@.str5404 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" -@.str5405 = private unnamed_addr constant [5 x i8] c", 60\00" -@.str5406 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str5407 = private unnamed_addr constant [5 x i8] c", 60\00" -@.str5408 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str5409 = private unnamed_addr constant [6 x i8] c", 100\00" -@.str5410 = private unnamed_addr constant [1 x i8] c"\00" -@.str5411 = private unnamed_addr constant [5 x i8] c"YYYY\00" -@.str5412 = private unnamed_addr constant [3 x i8] c"YY\00" -@.str5413 = private unnamed_addr constant [3 x i8] c"MM\00" -@.str5414 = private unnamed_addr constant [3 x i8] c"DD\00" -@.str5415 = private unnamed_addr constant [3 x i8] c"HH\00" -@.str5416 = private unnamed_addr constant [3 x i8] c"mm\00" -@.str5417 = private unnamed_addr constant [3 x i8] c"ss\00" -@.str5418 = private unnamed_addr constant [26 x i8] c"call ptr @lp_dt_pad0(i32 \00" -@.str5419 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5420 = private unnamed_addr constant [2 x i8] c")\00" -@.str5421 = private unnamed_addr constant [7 x i8] c"string\00" -@.str5422 = private unnamed_addr constant [46 x i8] c"DateTime.parse needs a string-literal pattern\00" -@.str5423 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str5424 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str5425 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5363 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str5364 = private unnamed_addr constant [3 x i8] c", \00" +@.str5365 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5366 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5367 = private unnamed_addr constant [8 x i8] c", 86400\00" +@.str5368 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5369 = private unnamed_addr constant [8 x i8] c", 86400\00" +@.str5370 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5371 = private unnamed_addr constant [8 x i8] c", 86400\00" +@.str5372 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str5373 = private unnamed_addr constant [3 x i8] c", \00" +@.str5374 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" +@.str5375 = private unnamed_addr constant [8 x i8] c", 86400\00" +@.str5376 = private unnamed_addr constant [5 x i8] c"from\00" +@.str5377 = private unnamed_addr constant [5 x i8] c"date\00" +@.str5378 = private unnamed_addr constant [4 x i8] c"add\00" +@.str5379 = private unnamed_addr constant [5 x i8] c"year\00" +@.str5380 = private unnamed_addr constant [6 x i8] c"month\00" +@.str5381 = private unnamed_addr constant [4 x i8] c"day\00" +@.str5382 = private unnamed_addr constant [8 x i8] c"weekday\00" +@.str5383 = private unnamed_addr constant [5 x i8] c"hour\00" +@.str5384 = private unnamed_addr constant [7 x i8] c"minute\00" +@.str5385 = private unnamed_addr constant [7 x i8] c"second\00" +@.str5386 = private unnamed_addr constant [7 x i8] c"format\00" +@.str5387 = private unnamed_addr constant [6 x i8] c"parse\00" +@.str5388 = private unnamed_addr constant [29 x i8] c"call ptr @lp_str_concat(ptr \00" +@.str5389 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str5390 = private unnamed_addr constant [2 x i8] c")\00" +@.str5391 = private unnamed_addr constant [47 x i8] c"DateTime.format needs a string-literal pattern\00" +@.str5392 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str5393 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str5394 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str5395 = private unnamed_addr constant [37 x i8] c" call void @lp_civil_from_days(i32 \00" +@.str5396 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str5397 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str5398 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str5399 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str5400 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str5401 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str5402 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str5403 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" +@.str5404 = private unnamed_addr constant [7 x i8] c", 3600\00" +@.str5405 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5406 = private unnamed_addr constant [7 x i8] c", 3600\00" +@.str5407 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" +@.str5408 = private unnamed_addr constant [5 x i8] c", 60\00" +@.str5409 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5410 = private unnamed_addr constant [5 x i8] c", 60\00" +@.str5411 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5412 = private unnamed_addr constant [6 x i8] c", 100\00" +@.str5413 = private unnamed_addr constant [1 x i8] c"\00" +@.str5414 = private unnamed_addr constant [5 x i8] c"YYYY\00" +@.str5415 = private unnamed_addr constant [3 x i8] c"YY\00" +@.str5416 = private unnamed_addr constant [3 x i8] c"MM\00" +@.str5417 = private unnamed_addr constant [3 x i8] c"DD\00" +@.str5418 = private unnamed_addr constant [3 x i8] c"HH\00" +@.str5419 = private unnamed_addr constant [3 x i8] c"mm\00" +@.str5420 = private unnamed_addr constant [3 x i8] c"ss\00" +@.str5421 = private unnamed_addr constant [26 x i8] c"call ptr @lp_dt_pad0(i32 \00" +@.str5422 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5423 = private unnamed_addr constant [2 x i8] c")\00" +@.str5424 = private unnamed_addr constant [7 x i8] c"string\00" +@.str5425 = private unnamed_addr constant [46 x i8] c"DateTime.parse needs a string-literal pattern\00" @.str5426 = private unnamed_addr constant [4 x i8] c"i32\00" @.str5427 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str5428 = private unnamed_addr constant [5 x i8] c"1970\00" +@.str5428 = private unnamed_addr constant [2 x i8] c"0\00" @.str5429 = private unnamed_addr constant [4 x i8] c"i32\00" @.str5430 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str5431 = private unnamed_addr constant [2 x i8] c"1\00" +@.str5431 = private unnamed_addr constant [5 x i8] c"1970\00" @.str5432 = private unnamed_addr constant [4 x i8] c"i32\00" @.str5433 = private unnamed_addr constant [4 x i8] c"i32\00" @.str5434 = private unnamed_addr constant [2 x i8] c"1\00" @.str5435 = private unnamed_addr constant [4 x i8] c"i32\00" @.str5436 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str5437 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5437 = private unnamed_addr constant [2 x i8] c"1\00" @.str5438 = private unnamed_addr constant [4 x i8] c"i32\00" @.str5439 = private unnamed_addr constant [4 x i8] c"i32\00" @.str5440 = private unnamed_addr constant [2 x i8] c"0\00" @.str5441 = private unnamed_addr constant [4 x i8] c"i32\00" @.str5442 = private unnamed_addr constant [4 x i8] c"i32\00" @.str5443 = private unnamed_addr constant [2 x i8] c"0\00" -@.str5444 = private unnamed_addr constant [5 x i8] c"YYYY\00" -@.str5445 = private unnamed_addr constant [3 x i8] c"MM\00" -@.str5446 = private unnamed_addr constant [3 x i8] c"DD\00" -@.str5447 = private unnamed_addr constant [3 x i8] c"HH\00" -@.str5448 = private unnamed_addr constant [3 x i8] c"mm\00" -@.str5449 = private unnamed_addr constant [3 x i8] c"ss\00" -@.str5450 = private unnamed_addr constant [24 x i8] c"call i32 @lp_dt_rd(ptr \00" -@.str5451 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5452 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5453 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str5454 = private unnamed_addr constant [2 x i8] c")\00" -@.str5455 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str5456 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str5457 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str5458 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str5444 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str5445 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str5446 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5447 = private unnamed_addr constant [5 x i8] c"YYYY\00" +@.str5448 = private unnamed_addr constant [3 x i8] c"MM\00" +@.str5449 = private unnamed_addr constant [3 x i8] c"DD\00" +@.str5450 = private unnamed_addr constant [3 x i8] c"HH\00" +@.str5451 = private unnamed_addr constant [3 x i8] c"mm\00" +@.str5452 = private unnamed_addr constant [3 x i8] c"ss\00" +@.str5453 = private unnamed_addr constant [24 x i8] c"call i32 @lp_dt_rd(ptr \00" +@.str5454 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5455 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5456 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str5457 = private unnamed_addr constant [2 x i8] c")\00" +@.str5458 = private unnamed_addr constant [4 x i8] c"i32\00" @.str5459 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" @.str5460 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" @.str5461 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str5462 = private unnamed_addr constant [34 x i8] c"call i32 @lp_days_from_civil(i32 \00" -@.str5463 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5464 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5465 = private unnamed_addr constant [2 x i8] c")\00" -@.str5466 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5467 = private unnamed_addr constant [8 x i8] c", 86400\00" -@.str5468 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5469 = private unnamed_addr constant [7 x i8] c", 3600\00" -@.str5470 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5471 = private unnamed_addr constant [5 x i8] c", 60\00" -@.str5472 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5473 = private unnamed_addr constant [3 x i8] c", \00" -@.str5474 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5475 = private unnamed_addr constant [3 x i8] c", \00" -@.str5476 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5477 = private unnamed_addr constant [3 x i8] c", \00" -@.str5478 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str5479 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str5480 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str5481 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str5482 = private unnamed_addr constant [15 x i8] c", i32 -1, i32 \00" -@.str5483 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5484 = private unnamed_addr constant [7 x i8] c"format\00" -@.str5485 = private unnamed_addr constant [6 x i8] c"parse\00" -@.str5486 = private unnamed_addr constant [5 x i8] c"from\00" -@.str5487 = private unnamed_addr constant [34 x i8] c"call i32 @lp_days_from_civil(i32 \00" -@.str5488 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5489 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str5490 = private unnamed_addr constant [2 x i8] c")\00" -@.str5491 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5492 = private unnamed_addr constant [8 x i8] c", 86400\00" -@.str5493 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5494 = private unnamed_addr constant [7 x i8] c", 3600\00" -@.str5495 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5496 = private unnamed_addr constant [5 x i8] c", 60\00" -@.str5497 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5498 = private unnamed_addr constant [3 x i8] c", \00" -@.str5499 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5500 = private unnamed_addr constant [3 x i8] c", \00" -@.str5501 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5502 = private unnamed_addr constant [3 x i8] c", \00" -@.str5503 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5504 = private unnamed_addr constant [5 x i8] c"date\00" -@.str5505 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5506 = private unnamed_addr constant [4 x i8] c"add\00" -@.str5507 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5508 = private unnamed_addr constant [3 x i8] c", \00" -@.str5509 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5510 = private unnamed_addr constant [5 x i8] c"year\00" -@.str5511 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5512 = private unnamed_addr constant [6 x i8] c"month\00" -@.str5513 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5514 = private unnamed_addr constant [4 x i8] c"day\00" -@.str5515 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5516 = private unnamed_addr constant [8 x i8] c"weekday\00" -@.str5517 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5518 = private unnamed_addr constant [4 x i8] c", 4\00" -@.str5519 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str5520 = private unnamed_addr constant [4 x i8] c", 7\00" -@.str5521 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5522 = private unnamed_addr constant [4 x i8] c", 7\00" -@.str5523 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str5524 = private unnamed_addr constant [4 x i8] c", 7\00" -@.str5525 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5526 = private unnamed_addr constant [5 x i8] c"hour\00" -@.str5527 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" -@.str5528 = private unnamed_addr constant [7 x i8] c", 3600\00" -@.str5529 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5530 = private unnamed_addr constant [7 x i8] c"minute\00" -@.str5531 = private unnamed_addr constant [10 x i8] c"srem i32 \00" -@.str5532 = private unnamed_addr constant [7 x i8] c", 3600\00" -@.str5533 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" -@.str5534 = private unnamed_addr constant [5 x i8] c", 60\00" -@.str5535 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5536 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5462 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str5463 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str5464 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str5465 = private unnamed_addr constant [34 x i8] c"call i32 @lp_days_from_civil(i32 \00" +@.str5466 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5467 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5468 = private unnamed_addr constant [2 x i8] c")\00" +@.str5469 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5470 = private unnamed_addr constant [8 x i8] c", 86400\00" +@.str5471 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5472 = private unnamed_addr constant [7 x i8] c", 3600\00" +@.str5473 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5474 = private unnamed_addr constant [5 x i8] c", 60\00" +@.str5475 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5476 = private unnamed_addr constant [3 x i8] c", \00" +@.str5477 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5478 = private unnamed_addr constant [3 x i8] c", \00" +@.str5479 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5480 = private unnamed_addr constant [3 x i8] c", \00" +@.str5481 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str5482 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str5483 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str5484 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str5485 = private unnamed_addr constant [15 x i8] c", i32 -1, i32 \00" +@.str5486 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5487 = private unnamed_addr constant [7 x i8] c"format\00" +@.str5488 = private unnamed_addr constant [6 x i8] c"parse\00" +@.str5489 = private unnamed_addr constant [5 x i8] c"from\00" +@.str5490 = private unnamed_addr constant [34 x i8] c"call i32 @lp_days_from_civil(i32 \00" +@.str5491 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5492 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str5493 = private unnamed_addr constant [2 x i8] c")\00" +@.str5494 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5495 = private unnamed_addr constant [8 x i8] c", 86400\00" +@.str5496 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5497 = private unnamed_addr constant [7 x i8] c", 3600\00" +@.str5498 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5499 = private unnamed_addr constant [5 x i8] c", 60\00" +@.str5500 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5501 = private unnamed_addr constant [3 x i8] c", \00" +@.str5502 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5503 = private unnamed_addr constant [3 x i8] c", \00" +@.str5504 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5505 = private unnamed_addr constant [3 x i8] c", \00" +@.str5506 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5507 = private unnamed_addr constant [5 x i8] c"date\00" +@.str5508 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5509 = private unnamed_addr constant [4 x i8] c"add\00" +@.str5510 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5511 = private unnamed_addr constant [3 x i8] c", \00" +@.str5512 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5513 = private unnamed_addr constant [5 x i8] c"year\00" +@.str5514 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5515 = private unnamed_addr constant [6 x i8] c"month\00" +@.str5516 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5517 = private unnamed_addr constant [4 x i8] c"day\00" +@.str5518 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5519 = private unnamed_addr constant [8 x i8] c"weekday\00" +@.str5520 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5521 = private unnamed_addr constant [4 x i8] c", 4\00" +@.str5522 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5523 = private unnamed_addr constant [4 x i8] c", 7\00" +@.str5524 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5525 = private unnamed_addr constant [4 x i8] c", 7\00" +@.str5526 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5527 = private unnamed_addr constant [4 x i8] c", 7\00" +@.str5528 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5529 = private unnamed_addr constant [5 x i8] c"hour\00" +@.str5530 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" +@.str5531 = private unnamed_addr constant [7 x i8] c", 3600\00" +@.str5532 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5533 = private unnamed_addr constant [7 x i8] c"minute\00" +@.str5534 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5535 = private unnamed_addr constant [7 x i8] c", 3600\00" +@.str5536 = private unnamed_addr constant [10 x i8] c"sdiv i32 \00" @.str5537 = private unnamed_addr constant [5 x i8] c", 60\00" @.str5538 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5539 = private unnamed_addr constant [59 x i8] c"define i32 @lp_days_from_civil(i32 %y0, i32 %m, i32 %d) {\0A\00" -@.str5540 = private unnamed_addr constant [30 x i8] c" %mle2 = icmp sle i32 %m, 2\0A\00" -@.str5541 = private unnamed_addr constant [41 x i8] c" %ysub = select i1 %mle2, i32 1, i32 0\0A\00" -@.str5542 = private unnamed_addr constant [27 x i8] c" %y = sub i32 %y0, %ysub\0A\00" -@.str5543 = private unnamed_addr constant [30 x i8] c" %yneg = icmp slt i32 %y, 0\0A\00" -@.str5544 = private unnamed_addr constant [28 x i8] c" %ym399 = sub i32 %y, 399\0A\00" -@.str5545 = private unnamed_addr constant [47 x i8] c" %enum = select i1 %yneg, i32 %ym399, i32 %y\0A\00" -@.str5546 = private unnamed_addr constant [30 x i8] c" %era = sdiv i32 %enum, 400\0A\00" -@.str5547 = private unnamed_addr constant [31 x i8] c" %era400 = mul i32 %era, 400\0A\00" -@.str5548 = private unnamed_addr constant [30 x i8] c" %yoe = sub i32 %y, %era400\0A\00" -@.str5549 = private unnamed_addr constant [30 x i8] c" %mgt2 = icmp sgt i32 %m, 2\0A\00" -@.str5550 = private unnamed_addr constant [44 x i8] c" %mshift = select i1 %mgt2, i32 -3, i32 9\0A\00" -@.str5551 = private unnamed_addr constant [29 x i8] c" %mm = add i32 %m, %mshift\0A\00" -@.str5552 = private unnamed_addr constant [28 x i8] c" %t153 = mul i32 153, %mm\0A\00" -@.str5553 = private unnamed_addr constant [29 x i8] c" %t153b = add i32 %t153, 2\0A\00" -@.str5554 = private unnamed_addr constant [30 x i8] c" %doy0 = sdiv i32 %t153b, 5\0A\00" -@.str5555 = private unnamed_addr constant [29 x i8] c" %doy1 = add i32 %doy0, %d\0A\00" -@.str5556 = private unnamed_addr constant [27 x i8] c" %doy = sub i32 %doy1, 1\0A\00" -@.str5557 = private unnamed_addr constant [31 x i8] c" %yoe365 = mul i32 %yoe, 365\0A\00" -@.str5558 = private unnamed_addr constant [28 x i8] c" %yoe4 = sdiv i32 %yoe, 4\0A\00" -@.str5559 = private unnamed_addr constant [32 x i8] c" %yoe100 = sdiv i32 %yoe, 100\0A\00" -@.str5560 = private unnamed_addr constant [34 x i8] c" %doe0 = add i32 %yoe365, %yoe4\0A\00" -@.str5561 = private unnamed_addr constant [34 x i8] c" %doe1 = sub i32 %doe0, %yoe100\0A\00" -@.str5562 = private unnamed_addr constant [30 x i8] c" %doe = add i32 %doe1, %doy\0A\00" -@.str5563 = private unnamed_addr constant [35 x i8] c" %e146097 = mul i32 %era, 146097\0A\00" -@.str5564 = private unnamed_addr constant [32 x i8] c" %r0 = add i32 %e146097, %doe\0A\00" -@.str5565 = private unnamed_addr constant [28 x i8] c" %r = sub i32 %r0, 719468\0A\00" -@.str5566 = private unnamed_addr constant [14 x i8] c" ret i32 %r\0A\00" -@.str5567 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str5568 = private unnamed_addr constant [71 x i8] c"define void @lp_civil_from_days(i32 %z0, ptr %yp, ptr %mp, ptr %dp) {\0A\00" -@.str5569 = private unnamed_addr constant [28 x i8] c" %z = add i32 %z0, 719468\0A\00" -@.str5570 = private unnamed_addr constant [30 x i8] c" %zneg = icmp slt i32 %z, 0\0A\00" -@.str5571 = private unnamed_addr constant [28 x i8] c" %zm = sub i32 %z, 146096\0A\00" -@.str5572 = private unnamed_addr constant [44 x i8] c" %enum = select i1 %zneg, i32 %zm, i32 %z\0A\00" -@.str5573 = private unnamed_addr constant [33 x i8] c" %era = sdiv i32 %enum, 146097\0A\00" -@.str5574 = private unnamed_addr constant [37 x i8] c" %era146097 = mul i32 %era, 146097\0A\00" -@.str5575 = private unnamed_addr constant [33 x i8] c" %doe = sub i32 %z, %era146097\0A\00" -@.str5576 = private unnamed_addr constant [32 x i8] c" %d1460 = sdiv i32 %doe, 1460\0A\00" -@.str5577 = private unnamed_addr constant [34 x i8] c" %d36524 = sdiv i32 %doe, 36524\0A\00" -@.str5578 = private unnamed_addr constant [36 x i8] c" %d146096 = sdiv i32 %doe, 146096\0A\00" -@.str5579 = private unnamed_addr constant [30 x i8] c" %ya = sub i32 %doe, %d1460\0A\00" -@.str5580 = private unnamed_addr constant [30 x i8] c" %yb = add i32 %ya, %d36524\0A\00" -@.str5581 = private unnamed_addr constant [31 x i8] c" %yc = sub i32 %yb, %d146096\0A\00" -@.str5582 = private unnamed_addr constant [28 x i8] c" %yoe = sdiv i32 %yc, 365\0A\00" -@.str5583 = private unnamed_addr constant [31 x i8] c" %era400 = mul i32 %era, 400\0A\00" -@.str5584 = private unnamed_addr constant [31 x i8] c" %yy = add i32 %yoe, %era400\0A\00" -@.str5585 = private unnamed_addr constant [31 x i8] c" %yoe365 = mul i32 %yoe, 365\0A\00" -@.str5586 = private unnamed_addr constant [28 x i8] c" %yoe4 = sdiv i32 %yoe, 4\0A\00" -@.str5587 = private unnamed_addr constant [32 x i8] c" %yoe100 = sdiv i32 %yoe, 100\0A\00" -@.str5588 = private unnamed_addr constant [34 x i8] c" %sub0 = add i32 %yoe365, %yoe4\0A\00" -@.str5589 = private unnamed_addr constant [34 x i8] c" %sub1 = sub i32 %sub0, %yoe100\0A\00" -@.str5590 = private unnamed_addr constant [30 x i8] c" %doy = sub i32 %doe, %sub1\0A\00" -@.str5591 = private unnamed_addr constant [30 x i8] c" %fivedoy = mul i32 5, %doy\0A\00" -@.str5592 = private unnamed_addr constant [35 x i8] c" %fivedoy2 = add i32 %fivedoy, 2\0A\00" -@.str5593 = private unnamed_addr constant [34 x i8] c" %mpv = sdiv i32 %fivedoy2, 153\0A\00" -@.str5594 = private unnamed_addr constant [29 x i8] c" %m153 = mul i32 153, %mpv\0A\00" -@.str5595 = private unnamed_addr constant [29 x i8] c" %m153b = add i32 %m153, 2\0A\00" -@.str5596 = private unnamed_addr constant [31 x i8] c" %m153c = sdiv i32 %m153b, 5\0A\00" -@.str5597 = private unnamed_addr constant [31 x i8] c" %dd0 = sub i32 %doy, %m153c\0A\00" -@.str5598 = private unnamed_addr constant [25 x i8] c" %dd = add i32 %dd0, 1\0A\00" -@.str5599 = private unnamed_addr constant [35 x i8] c" %mplt10 = icmp slt i32 %mpv, 10\0A\00" -@.str5600 = private unnamed_addr constant [29 x i8] c" %mplus3 = add i32 %mpv, 3\0A\00" -@.str5601 = private unnamed_addr constant [30 x i8] c" %mminus9 = sub i32 %mpv, 9\0A\00" -@.str5602 = private unnamed_addr constant [56 x i8] c" %mfin = select i1 %mplt10, i32 %mplus3, i32 %mminus9\0A\00" -@.str5603 = private unnamed_addr constant [34 x i8] c" %mmle2 = icmp sle i32 %mfin, 2\0A\00" -@.str5604 = private unnamed_addr constant [42 x i8] c" %yinc = select i1 %mmle2, i32 1, i32 0\0A\00" -@.str5605 = private unnamed_addr constant [30 x i8] c" %yfin = add i32 %yy, %yinc\0A\00" -@.str5606 = private unnamed_addr constant [28 x i8] c" store i32 %yfin, ptr %yp\0A\00" -@.str5607 = private unnamed_addr constant [28 x i8] c" store i32 %mfin, ptr %mp\0A\00" -@.str5608 = private unnamed_addr constant [26 x i8] c" store i32 %dd, ptr %dp\0A\00" -@.str5609 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" -@.str5610 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str5611 = private unnamed_addr constant [42 x i8] c"define ptr @lp_dt_pad0(i32 %v, i32 %w) {\0A\00" -@.str5612 = private unnamed_addr constant [28 x i8] c" %we = zext i32 %w to i64\0A\00" -@.str5613 = private unnamed_addr constant [24 x i8] c" %sz = add i64 %we, 1\0A\00" -@.str5614 = private unnamed_addr constant [36 x i8] c" %buf = call ptr @malloc(i64 %sz)\0A\00" -@.str5615 = private unnamed_addr constant [46 x i8] c" %endp = getelementptr i8, ptr %buf, i32 %w\0A\00" -@.str5616 = private unnamed_addr constant [25 x i8] c" store i8 0, ptr %endp\0A\00" -@.str5617 = private unnamed_addr constant [39 x i8] c" %kp = alloca i32\0A %vp = alloca i32\0A\00" -@.str5618 = private unnamed_addr constant [74 x i8] c" %km1 = sub i32 %w, 1\0A store i32 %km1, ptr %kp\0A store i32 %v, ptr %vp\0A\00" -@.str5619 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" -@.str5620 = private unnamed_addr constant [99 x i8] c"loop:\0A %k = load i32, ptr %kp\0A %kok = icmp sge i32 %k, 0\0A br i1 %kok, label %body, label %done\0A\00" -@.str5621 = private unnamed_addr constant [109 x i8] c"body:\0A %vv = load i32, ptr %vp\0A %d = srem i32 %vv, 10\0A %ch = add i32 %d, 48\0A %ch8 = trunc i32 %ch to i8\0A\00" -@.str5622 = private unnamed_addr constant [69 x i8] c" %cp = getelementptr i8, ptr %buf, i32 %k\0A store i8 %ch8, ptr %cp\0A\00" -@.str5623 = private unnamed_addr constant [115 x i8] c" %vn = sdiv i32 %vv, 10\0A store i32 %vn, ptr %vp\0A %kn = sub i32 %k, 1\0A store i32 %kn, ptr %kp\0A br label %loop\0A\00" -@.str5624 = private unnamed_addr constant [24 x i8] c"done:\0A ret ptr %buf\0A}\0A\00" -@.str5625 = private unnamed_addr constant [62 x i8] c"define i32 @lp_dt_rd(ptr %s, i32 %off, i32 %w, ptr %failp) {\0A\00" -@.str5626 = private unnamed_addr constant [89 x i8] c" %accp = alloca i32\0A store i32 0, ptr %accp\0A %kp = alloca i32\0A store i32 0, ptr %kp\0A\00" -@.str5627 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" -@.str5628 = private unnamed_addr constant [100 x i8] c"loop:\0A %k = load i32, ptr %kp\0A %kok = icmp slt i32 %k, %w\0A br i1 %kok, label %body, label %done\0A\00" -@.str5629 = private unnamed_addr constant [127 x i8] c"body:\0A %idx = add i32 %off, %k\0A %cp = getelementptr i8, ptr %s, i32 %idx\0A %c8 = load i8, ptr %cp\0A %c = sext i8 %c8 to i32\0A\00" -@.str5630 = private unnamed_addr constant [70 x i8] c" %zero = icmp eq i32 %c, 0\0A br i1 %zero, label %stop, label %digit\0A\00" -@.str5631 = private unnamed_addr constant [50 x i8] c"stop:\0A store i32 1, ptr %failp\0A br label %done\0A\00" -@.str5632 = private unnamed_addr constant [129 x i8] c"digit:\0A %lt = icmp slt i32 %c, 48\0A %gt = icmp sgt i32 %c, 57\0A %isbad = or i1 %lt, %gt\0A br i1 %isbad, label %fail, label %ok\0A\00" -@.str5633 = private unnamed_addr constant [50 x i8] c"fail:\0A store i32 1, ptr %failp\0A br label %next\0A\00" -@.str5634 = private unnamed_addr constant [159 x i8] c"ok:\0A %acc0 = load i32, ptr %accp\0A %m10 = mul i32 %acc0, 10\0A %dg = sub i32 %c, 48\0A %acc1 = add i32 %m10, %dg\0A store i32 %acc1, ptr %accp\0A br label %next\0A\00" -@.str5635 = private unnamed_addr constant [71 x i8] c"next:\0A %kn = add i32 %k, 1\0A store i32 %kn, ptr %kp\0A br label %loop\0A\00" -@.str5636 = private unnamed_addr constant [49 x i8] c"done:\0A %r = load i32, ptr %accp\0A ret i32 %r\0A}\0A\00" -@.str5637 = private unnamed_addr constant [4 x i8] c"now\00" -@.str5638 = private unnamed_addr constant [4 x i8] c"set\00" -@.str5639 = private unnamed_addr constant [8 x i8] c"advance\00" -@.str5640 = private unnamed_addr constant [6 x i8] c"reset\00" -@.str5641 = private unnamed_addr constant [4 x i8] c"now\00" -@.str5642 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_clock\00" -@.str5643 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5644 = private unnamed_addr constant [6 x i8] c"reset\00" -@.str5645 = private unnamed_addr constant [29 x i8] c" store i32 0, ptr @L_clock\0A\00" -@.str5646 = private unnamed_addr constant [2 x i8] c"0\00" -@.str5647 = private unnamed_addr constant [5 x i8] c"void\00" -@.str5648 = private unnamed_addr constant [4 x i8] c"set\00" -@.str5649 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str5650 = private unnamed_addr constant [16 x i8] c", ptr @L_clock\0A\00" -@.str5651 = private unnamed_addr constant [2 x i8] c"0\00" -@.str5652 = private unnamed_addr constant [5 x i8] c"void\00" -@.str5653 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_clock\00" -@.str5654 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5655 = private unnamed_addr constant [3 x i8] c", \00" -@.str5656 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str5657 = private unnamed_addr constant [16 x i8] c", ptr @L_clock\0A\00" -@.str5658 = private unnamed_addr constant [2 x i8] c"0\00" -@.str5659 = private unnamed_addr constant [5 x i8] c"void\00" -@.str5660 = private unnamed_addr constant [4 x i8] c"rgb\00" -@.str5661 = private unnamed_addr constant [5 x i8] c"rgba\00" -@.str5662 = private unnamed_addr constant [5 x i8] c"lerp\00" -@.str5663 = private unnamed_addr constant [7 x i8] c"darken\00" -@.str5664 = private unnamed_addr constant [8 x i8] c"lighten\00" -@.str5665 = private unnamed_addr constant [11 x i8] c"with_alpha\00" -@.str5666 = private unnamed_addr constant [10 x i8] c"lshr i32 \00" -@.str5667 = private unnamed_addr constant [3 x i8] c", \00" -@.str5668 = private unnamed_addr constant [9 x i8] c"and i32 \00" -@.str5669 = private unnamed_addr constant [6 x i8] c", 255\00" -@.str5670 = private unnamed_addr constant [9 x i8] c"shl i32 \00" -@.str5671 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str5672 = private unnamed_addr constant [9 x i8] c"shl i32 \00" -@.str5673 = private unnamed_addr constant [4 x i8] c", 8\00" -@.str5674 = private unnamed_addr constant [8 x i8] c"or i32 \00" -@.str5675 = private unnamed_addr constant [3 x i8] c", \00" -@.str5676 = private unnamed_addr constant [8 x i8] c"or i32 \00" -@.str5677 = private unnamed_addr constant [3 x i8] c", \00" -@.str5678 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str5679 = private unnamed_addr constant [3 x i8] c", \00" -@.str5680 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5681 = private unnamed_addr constant [3 x i8] c", \00" -@.str5682 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str5683 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str5684 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5685 = private unnamed_addr constant [3 x i8] c", \00" -@.str5686 = private unnamed_addr constant [4 x i8] c"rgb\00" -@.str5687 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5688 = private unnamed_addr constant [5 x i8] c"rgba\00" -@.str5689 = private unnamed_addr constant [9 x i8] c"shl i32 \00" -@.str5690 = private unnamed_addr constant [5 x i8] c", 24\00" -@.str5691 = private unnamed_addr constant [8 x i8] c"or i32 \00" -@.str5692 = private unnamed_addr constant [3 x i8] c", \00" -@.str5693 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5694 = private unnamed_addr constant [11 x i8] c"with_alpha\00" -@.str5695 = private unnamed_addr constant [9 x i8] c"and i32 \00" -@.str5696 = private unnamed_addr constant [11 x i8] c", 16777215\00" -@.str5697 = private unnamed_addr constant [9 x i8] c"shl i32 \00" -@.str5698 = private unnamed_addr constant [5 x i8] c", 24\00" -@.str5699 = private unnamed_addr constant [8 x i8] c"or i32 \00" -@.str5700 = private unnamed_addr constant [3 x i8] c", \00" -@.str5701 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5702 = private unnamed_addr constant [5 x i8] c"lerp\00" -@.str5703 = private unnamed_addr constant [3 x i8] c"16\00" -@.str5704 = private unnamed_addr constant [3 x i8] c"16\00" -@.str5705 = private unnamed_addr constant [2 x i8] c"8\00" -@.str5706 = private unnamed_addr constant [2 x i8] c"8\00" -@.str5707 = private unnamed_addr constant [2 x i8] c"0\00" -@.str5708 = private unnamed_addr constant [2 x i8] c"0\00" -@.str5709 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5710 = private unnamed_addr constant [7 x i8] c"darken\00" -@.str5711 = private unnamed_addr constant [16 x i8] c"sub i32 65536, \00" -@.str5712 = private unnamed_addr constant [3 x i8] c"16\00" -@.str5713 = private unnamed_addr constant [2 x i8] c"8\00" -@.str5714 = private unnamed_addr constant [2 x i8] c"0\00" -@.str5715 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5716 = private unnamed_addr constant [3 x i8] c", \00" -@.str5717 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str5718 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str5719 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5720 = private unnamed_addr constant [3 x i8] c", \00" -@.str5721 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str5722 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str5723 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5724 = private unnamed_addr constant [3 x i8] c", \00" -@.str5725 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str5726 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str5727 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5728 = private unnamed_addr constant [3 x i8] c"16\00" -@.str5729 = private unnamed_addr constant [2 x i8] c"8\00" -@.str5730 = private unnamed_addr constant [2 x i8] c"0\00" -@.str5731 = private unnamed_addr constant [14 x i8] c"sub i32 255, \00" -@.str5732 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str5733 = private unnamed_addr constant [3 x i8] c", \00" -@.str5734 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str5735 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str5736 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5737 = private unnamed_addr constant [3 x i8] c", \00" -@.str5738 = private unnamed_addr constant [14 x i8] c"sub i32 255, \00" -@.str5739 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5539 = private unnamed_addr constant [10 x i8] c"srem i32 \00" +@.str5540 = private unnamed_addr constant [5 x i8] c", 60\00" +@.str5541 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5542 = private unnamed_addr constant [59 x i8] c"define i32 @lp_days_from_civil(i32 %y0, i32 %m, i32 %d) {\0A\00" +@.str5543 = private unnamed_addr constant [30 x i8] c" %mle2 = icmp sle i32 %m, 2\0A\00" +@.str5544 = private unnamed_addr constant [41 x i8] c" %ysub = select i1 %mle2, i32 1, i32 0\0A\00" +@.str5545 = private unnamed_addr constant [27 x i8] c" %y = sub i32 %y0, %ysub\0A\00" +@.str5546 = private unnamed_addr constant [30 x i8] c" %yneg = icmp slt i32 %y, 0\0A\00" +@.str5547 = private unnamed_addr constant [28 x i8] c" %ym399 = sub i32 %y, 399\0A\00" +@.str5548 = private unnamed_addr constant [47 x i8] c" %enum = select i1 %yneg, i32 %ym399, i32 %y\0A\00" +@.str5549 = private unnamed_addr constant [30 x i8] c" %era = sdiv i32 %enum, 400\0A\00" +@.str5550 = private unnamed_addr constant [31 x i8] c" %era400 = mul i32 %era, 400\0A\00" +@.str5551 = private unnamed_addr constant [30 x i8] c" %yoe = sub i32 %y, %era400\0A\00" +@.str5552 = private unnamed_addr constant [30 x i8] c" %mgt2 = icmp sgt i32 %m, 2\0A\00" +@.str5553 = private unnamed_addr constant [44 x i8] c" %mshift = select i1 %mgt2, i32 -3, i32 9\0A\00" +@.str5554 = private unnamed_addr constant [29 x i8] c" %mm = add i32 %m, %mshift\0A\00" +@.str5555 = private unnamed_addr constant [28 x i8] c" %t153 = mul i32 153, %mm\0A\00" +@.str5556 = private unnamed_addr constant [29 x i8] c" %t153b = add i32 %t153, 2\0A\00" +@.str5557 = private unnamed_addr constant [30 x i8] c" %doy0 = sdiv i32 %t153b, 5\0A\00" +@.str5558 = private unnamed_addr constant [29 x i8] c" %doy1 = add i32 %doy0, %d\0A\00" +@.str5559 = private unnamed_addr constant [27 x i8] c" %doy = sub i32 %doy1, 1\0A\00" +@.str5560 = private unnamed_addr constant [31 x i8] c" %yoe365 = mul i32 %yoe, 365\0A\00" +@.str5561 = private unnamed_addr constant [28 x i8] c" %yoe4 = sdiv i32 %yoe, 4\0A\00" +@.str5562 = private unnamed_addr constant [32 x i8] c" %yoe100 = sdiv i32 %yoe, 100\0A\00" +@.str5563 = private unnamed_addr constant [34 x i8] c" %doe0 = add i32 %yoe365, %yoe4\0A\00" +@.str5564 = private unnamed_addr constant [34 x i8] c" %doe1 = sub i32 %doe0, %yoe100\0A\00" +@.str5565 = private unnamed_addr constant [30 x i8] c" %doe = add i32 %doe1, %doy\0A\00" +@.str5566 = private unnamed_addr constant [35 x i8] c" %e146097 = mul i32 %era, 146097\0A\00" +@.str5567 = private unnamed_addr constant [32 x i8] c" %r0 = add i32 %e146097, %doe\0A\00" +@.str5568 = private unnamed_addr constant [28 x i8] c" %r = sub i32 %r0, 719468\0A\00" +@.str5569 = private unnamed_addr constant [14 x i8] c" ret i32 %r\0A\00" +@.str5570 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str5571 = private unnamed_addr constant [71 x i8] c"define void @lp_civil_from_days(i32 %z0, ptr %yp, ptr %mp, ptr %dp) {\0A\00" +@.str5572 = private unnamed_addr constant [28 x i8] c" %z = add i32 %z0, 719468\0A\00" +@.str5573 = private unnamed_addr constant [30 x i8] c" %zneg = icmp slt i32 %z, 0\0A\00" +@.str5574 = private unnamed_addr constant [28 x i8] c" %zm = sub i32 %z, 146096\0A\00" +@.str5575 = private unnamed_addr constant [44 x i8] c" %enum = select i1 %zneg, i32 %zm, i32 %z\0A\00" +@.str5576 = private unnamed_addr constant [33 x i8] c" %era = sdiv i32 %enum, 146097\0A\00" +@.str5577 = private unnamed_addr constant [37 x i8] c" %era146097 = mul i32 %era, 146097\0A\00" +@.str5578 = private unnamed_addr constant [33 x i8] c" %doe = sub i32 %z, %era146097\0A\00" +@.str5579 = private unnamed_addr constant [32 x i8] c" %d1460 = sdiv i32 %doe, 1460\0A\00" +@.str5580 = private unnamed_addr constant [34 x i8] c" %d36524 = sdiv i32 %doe, 36524\0A\00" +@.str5581 = private unnamed_addr constant [36 x i8] c" %d146096 = sdiv i32 %doe, 146096\0A\00" +@.str5582 = private unnamed_addr constant [30 x i8] c" %ya = sub i32 %doe, %d1460\0A\00" +@.str5583 = private unnamed_addr constant [30 x i8] c" %yb = add i32 %ya, %d36524\0A\00" +@.str5584 = private unnamed_addr constant [31 x i8] c" %yc = sub i32 %yb, %d146096\0A\00" +@.str5585 = private unnamed_addr constant [28 x i8] c" %yoe = sdiv i32 %yc, 365\0A\00" +@.str5586 = private unnamed_addr constant [31 x i8] c" %era400 = mul i32 %era, 400\0A\00" +@.str5587 = private unnamed_addr constant [31 x i8] c" %yy = add i32 %yoe, %era400\0A\00" +@.str5588 = private unnamed_addr constant [31 x i8] c" %yoe365 = mul i32 %yoe, 365\0A\00" +@.str5589 = private unnamed_addr constant [28 x i8] c" %yoe4 = sdiv i32 %yoe, 4\0A\00" +@.str5590 = private unnamed_addr constant [32 x i8] c" %yoe100 = sdiv i32 %yoe, 100\0A\00" +@.str5591 = private unnamed_addr constant [34 x i8] c" %sub0 = add i32 %yoe365, %yoe4\0A\00" +@.str5592 = private unnamed_addr constant [34 x i8] c" %sub1 = sub i32 %sub0, %yoe100\0A\00" +@.str5593 = private unnamed_addr constant [30 x i8] c" %doy = sub i32 %doe, %sub1\0A\00" +@.str5594 = private unnamed_addr constant [30 x i8] c" %fivedoy = mul i32 5, %doy\0A\00" +@.str5595 = private unnamed_addr constant [35 x i8] c" %fivedoy2 = add i32 %fivedoy, 2\0A\00" +@.str5596 = private unnamed_addr constant [34 x i8] c" %mpv = sdiv i32 %fivedoy2, 153\0A\00" +@.str5597 = private unnamed_addr constant [29 x i8] c" %m153 = mul i32 153, %mpv\0A\00" +@.str5598 = private unnamed_addr constant [29 x i8] c" %m153b = add i32 %m153, 2\0A\00" +@.str5599 = private unnamed_addr constant [31 x i8] c" %m153c = sdiv i32 %m153b, 5\0A\00" +@.str5600 = private unnamed_addr constant [31 x i8] c" %dd0 = sub i32 %doy, %m153c\0A\00" +@.str5601 = private unnamed_addr constant [25 x i8] c" %dd = add i32 %dd0, 1\0A\00" +@.str5602 = private unnamed_addr constant [35 x i8] c" %mplt10 = icmp slt i32 %mpv, 10\0A\00" +@.str5603 = private unnamed_addr constant [29 x i8] c" %mplus3 = add i32 %mpv, 3\0A\00" +@.str5604 = private unnamed_addr constant [30 x i8] c" %mminus9 = sub i32 %mpv, 9\0A\00" +@.str5605 = private unnamed_addr constant [56 x i8] c" %mfin = select i1 %mplt10, i32 %mplus3, i32 %mminus9\0A\00" +@.str5606 = private unnamed_addr constant [34 x i8] c" %mmle2 = icmp sle i32 %mfin, 2\0A\00" +@.str5607 = private unnamed_addr constant [42 x i8] c" %yinc = select i1 %mmle2, i32 1, i32 0\0A\00" +@.str5608 = private unnamed_addr constant [30 x i8] c" %yfin = add i32 %yy, %yinc\0A\00" +@.str5609 = private unnamed_addr constant [28 x i8] c" store i32 %yfin, ptr %yp\0A\00" +@.str5610 = private unnamed_addr constant [28 x i8] c" store i32 %mfin, ptr %mp\0A\00" +@.str5611 = private unnamed_addr constant [26 x i8] c" store i32 %dd, ptr %dp\0A\00" +@.str5612 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" +@.str5613 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str5614 = private unnamed_addr constant [42 x i8] c"define ptr @lp_dt_pad0(i32 %v, i32 %w) {\0A\00" +@.str5615 = private unnamed_addr constant [28 x i8] c" %we = zext i32 %w to i64\0A\00" +@.str5616 = private unnamed_addr constant [24 x i8] c" %sz = add i64 %we, 1\0A\00" +@.str5617 = private unnamed_addr constant [36 x i8] c" %buf = call ptr @malloc(i64 %sz)\0A\00" +@.str5618 = private unnamed_addr constant [46 x i8] c" %endp = getelementptr i8, ptr %buf, i32 %w\0A\00" +@.str5619 = private unnamed_addr constant [25 x i8] c" store i8 0, ptr %endp\0A\00" +@.str5620 = private unnamed_addr constant [39 x i8] c" %kp = alloca i32\0A %vp = alloca i32\0A\00" +@.str5621 = private unnamed_addr constant [74 x i8] c" %km1 = sub i32 %w, 1\0A store i32 %km1, ptr %kp\0A store i32 %v, ptr %vp\0A\00" +@.str5622 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" +@.str5623 = private unnamed_addr constant [99 x i8] c"loop:\0A %k = load i32, ptr %kp\0A %kok = icmp sge i32 %k, 0\0A br i1 %kok, label %body, label %done\0A\00" +@.str5624 = private unnamed_addr constant [109 x i8] c"body:\0A %vv = load i32, ptr %vp\0A %d = srem i32 %vv, 10\0A %ch = add i32 %d, 48\0A %ch8 = trunc i32 %ch to i8\0A\00" +@.str5625 = private unnamed_addr constant [69 x i8] c" %cp = getelementptr i8, ptr %buf, i32 %k\0A store i8 %ch8, ptr %cp\0A\00" +@.str5626 = private unnamed_addr constant [115 x i8] c" %vn = sdiv i32 %vv, 10\0A store i32 %vn, ptr %vp\0A %kn = sub i32 %k, 1\0A store i32 %kn, ptr %kp\0A br label %loop\0A\00" +@.str5627 = private unnamed_addr constant [24 x i8] c"done:\0A ret ptr %buf\0A}\0A\00" +@.str5628 = private unnamed_addr constant [62 x i8] c"define i32 @lp_dt_rd(ptr %s, i32 %off, i32 %w, ptr %failp) {\0A\00" +@.str5629 = private unnamed_addr constant [89 x i8] c" %accp = alloca i32\0A store i32 0, ptr %accp\0A %kp = alloca i32\0A store i32 0, ptr %kp\0A\00" +@.str5630 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" +@.str5631 = private unnamed_addr constant [100 x i8] c"loop:\0A %k = load i32, ptr %kp\0A %kok = icmp slt i32 %k, %w\0A br i1 %kok, label %body, label %done\0A\00" +@.str5632 = private unnamed_addr constant [127 x i8] c"body:\0A %idx = add i32 %off, %k\0A %cp = getelementptr i8, ptr %s, i32 %idx\0A %c8 = load i8, ptr %cp\0A %c = sext i8 %c8 to i32\0A\00" +@.str5633 = private unnamed_addr constant [70 x i8] c" %zero = icmp eq i32 %c, 0\0A br i1 %zero, label %stop, label %digit\0A\00" +@.str5634 = private unnamed_addr constant [50 x i8] c"stop:\0A store i32 1, ptr %failp\0A br label %done\0A\00" +@.str5635 = private unnamed_addr constant [129 x i8] c"digit:\0A %lt = icmp slt i32 %c, 48\0A %gt = icmp sgt i32 %c, 57\0A %isbad = or i1 %lt, %gt\0A br i1 %isbad, label %fail, label %ok\0A\00" +@.str5636 = private unnamed_addr constant [50 x i8] c"fail:\0A store i32 1, ptr %failp\0A br label %next\0A\00" +@.str5637 = private unnamed_addr constant [159 x i8] c"ok:\0A %acc0 = load i32, ptr %accp\0A %m10 = mul i32 %acc0, 10\0A %dg = sub i32 %c, 48\0A %acc1 = add i32 %m10, %dg\0A store i32 %acc1, ptr %accp\0A br label %next\0A\00" +@.str5638 = private unnamed_addr constant [71 x i8] c"next:\0A %kn = add i32 %k, 1\0A store i32 %kn, ptr %kp\0A br label %loop\0A\00" +@.str5639 = private unnamed_addr constant [49 x i8] c"done:\0A %r = load i32, ptr %accp\0A ret i32 %r\0A}\0A\00" +@.str5640 = private unnamed_addr constant [4 x i8] c"now\00" +@.str5641 = private unnamed_addr constant [4 x i8] c"set\00" +@.str5642 = private unnamed_addr constant [8 x i8] c"advance\00" +@.str5643 = private unnamed_addr constant [6 x i8] c"reset\00" +@.str5644 = private unnamed_addr constant [4 x i8] c"now\00" +@.str5645 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_clock\00" +@.str5646 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5647 = private unnamed_addr constant [6 x i8] c"reset\00" +@.str5648 = private unnamed_addr constant [29 x i8] c" store i32 0, ptr @L_clock\0A\00" +@.str5649 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5650 = private unnamed_addr constant [5 x i8] c"void\00" +@.str5651 = private unnamed_addr constant [4 x i8] c"set\00" +@.str5652 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str5653 = private unnamed_addr constant [16 x i8] c", ptr @L_clock\0A\00" +@.str5654 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5655 = private unnamed_addr constant [5 x i8] c"void\00" +@.str5656 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_clock\00" +@.str5657 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5658 = private unnamed_addr constant [3 x i8] c", \00" +@.str5659 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str5660 = private unnamed_addr constant [16 x i8] c", ptr @L_clock\0A\00" +@.str5661 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5662 = private unnamed_addr constant [5 x i8] c"void\00" +@.str5663 = private unnamed_addr constant [4 x i8] c"rgb\00" +@.str5664 = private unnamed_addr constant [5 x i8] c"rgba\00" +@.str5665 = private unnamed_addr constant [5 x i8] c"lerp\00" +@.str5666 = private unnamed_addr constant [7 x i8] c"darken\00" +@.str5667 = private unnamed_addr constant [8 x i8] c"lighten\00" +@.str5668 = private unnamed_addr constant [11 x i8] c"with_alpha\00" +@.str5669 = private unnamed_addr constant [10 x i8] c"lshr i32 \00" +@.str5670 = private unnamed_addr constant [3 x i8] c", \00" +@.str5671 = private unnamed_addr constant [9 x i8] c"and i32 \00" +@.str5672 = private unnamed_addr constant [6 x i8] c", 255\00" +@.str5673 = private unnamed_addr constant [9 x i8] c"shl i32 \00" +@.str5674 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str5675 = private unnamed_addr constant [9 x i8] c"shl i32 \00" +@.str5676 = private unnamed_addr constant [4 x i8] c", 8\00" +@.str5677 = private unnamed_addr constant [8 x i8] c"or i32 \00" +@.str5678 = private unnamed_addr constant [3 x i8] c", \00" +@.str5679 = private unnamed_addr constant [8 x i8] c"or i32 \00" +@.str5680 = private unnamed_addr constant [3 x i8] c", \00" +@.str5681 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str5682 = private unnamed_addr constant [3 x i8] c", \00" +@.str5683 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5684 = private unnamed_addr constant [3 x i8] c", \00" +@.str5685 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str5686 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str5687 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5688 = private unnamed_addr constant [3 x i8] c", \00" +@.str5689 = private unnamed_addr constant [4 x i8] c"rgb\00" +@.str5690 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5691 = private unnamed_addr constant [5 x i8] c"rgba\00" +@.str5692 = private unnamed_addr constant [9 x i8] c"shl i32 \00" +@.str5693 = private unnamed_addr constant [5 x i8] c", 24\00" +@.str5694 = private unnamed_addr constant [8 x i8] c"or i32 \00" +@.str5695 = private unnamed_addr constant [3 x i8] c", \00" +@.str5696 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5697 = private unnamed_addr constant [11 x i8] c"with_alpha\00" +@.str5698 = private unnamed_addr constant [9 x i8] c"and i32 \00" +@.str5699 = private unnamed_addr constant [11 x i8] c", 16777215\00" +@.str5700 = private unnamed_addr constant [9 x i8] c"shl i32 \00" +@.str5701 = private unnamed_addr constant [5 x i8] c", 24\00" +@.str5702 = private unnamed_addr constant [8 x i8] c"or i32 \00" +@.str5703 = private unnamed_addr constant [3 x i8] c", \00" +@.str5704 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5705 = private unnamed_addr constant [5 x i8] c"lerp\00" +@.str5706 = private unnamed_addr constant [3 x i8] c"16\00" +@.str5707 = private unnamed_addr constant [3 x i8] c"16\00" +@.str5708 = private unnamed_addr constant [2 x i8] c"8\00" +@.str5709 = private unnamed_addr constant [2 x i8] c"8\00" +@.str5710 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5711 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5712 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5713 = private unnamed_addr constant [7 x i8] c"darken\00" +@.str5714 = private unnamed_addr constant [16 x i8] c"sub i32 65536, \00" +@.str5715 = private unnamed_addr constant [3 x i8] c"16\00" +@.str5716 = private unnamed_addr constant [2 x i8] c"8\00" +@.str5717 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5718 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5719 = private unnamed_addr constant [3 x i8] c", \00" +@.str5720 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str5721 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str5722 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5723 = private unnamed_addr constant [3 x i8] c", \00" +@.str5724 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str5725 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str5726 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5727 = private unnamed_addr constant [3 x i8] c", \00" +@.str5728 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str5729 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str5730 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5731 = private unnamed_addr constant [3 x i8] c"16\00" +@.str5732 = private unnamed_addr constant [2 x i8] c"8\00" +@.str5733 = private unnamed_addr constant [2 x i8] c"0\00" +@.str5734 = private unnamed_addr constant [14 x i8] c"sub i32 255, \00" +@.str5735 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5736 = private unnamed_addr constant [3 x i8] c", \00" +@.str5737 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str5738 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str5739 = private unnamed_addr constant [9 x i8] c"add i32 \00" @.str5740 = private unnamed_addr constant [3 x i8] c", \00" -@.str5741 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str5742 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str5743 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5744 = private unnamed_addr constant [3 x i8] c", \00" -@.str5745 = private unnamed_addr constant [14 x i8] c"sub i32 255, \00" -@.str5746 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5741 = private unnamed_addr constant [14 x i8] c"sub i32 255, \00" +@.str5742 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5743 = private unnamed_addr constant [3 x i8] c", \00" +@.str5744 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str5745 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str5746 = private unnamed_addr constant [9 x i8] c"add i32 \00" @.str5747 = private unnamed_addr constant [3 x i8] c", \00" -@.str5748 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str5749 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str5750 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str5751 = private unnamed_addr constant [3 x i8] c", \00" -@.str5752 = private unnamed_addr constant [4 x i8] c"int\00" -@.str5753 = private unnamed_addr constant [6 x i8] c"White\00" -@.str5754 = private unnamed_addr constant [5 x i8] c"Snow\00" -@.str5755 = private unnamed_addr constant [6 x i8] c"Ivory\00" -@.str5756 = private unnamed_addr constant [14 x i8] c"EggShellWhite\00" -@.str5757 = private unnamed_addr constant [12 x i8] c"FloralWhite\00" -@.str5758 = private unnamed_addr constant [9 x i8] c"SeaShell\00" -@.str5759 = private unnamed_addr constant [6 x i8] c"Linen\00" -@.str5760 = private unnamed_addr constant [13 x i8] c"AntiqueWhite\00" -@.str5761 = private unnamed_addr constant [8 x i8] c"OldLace\00" -@.str5762 = private unnamed_addr constant [6 x i8] c"Beige\00" -@.str5763 = private unnamed_addr constant [6 x i8] c"Cream\00" -@.str5764 = private unnamed_addr constant [9 x i8] c"Honeydew\00" -@.str5765 = private unnamed_addr constant [10 x i8] c"MintCream\00" -@.str5766 = private unnamed_addr constant [6 x i8] c"Azure\00" -@.str5767 = private unnamed_addr constant [10 x i8] c"AliceBlue\00" -@.str5768 = private unnamed_addr constant [11 x i8] c"GhostWhite\00" -@.str5769 = private unnamed_addr constant [11 x i8] c"WhiteSmoke\00" -@.str5770 = private unnamed_addr constant [9 x i8] c"Lavender\00" -@.str5771 = private unnamed_addr constant [5 x i8] c"Bone\00" -@.str5772 = private unnamed_addr constant [10 x i8] c"Parchment\00" -@.str5773 = private unnamed_addr constant [10 x i8] c"Gainsboro\00" -@.str5774 = private unnamed_addr constant [10 x i8] c"LightGray\00" -@.str5775 = private unnamed_addr constant [7 x i8] c"Silver\00" -@.str5776 = private unnamed_addr constant [4 x i8] c"Ash\00" -@.str5777 = private unnamed_addr constant [9 x i8] c"DarkGray\00" -@.str5778 = private unnamed_addr constant [5 x i8] c"Gray\00" -@.str5779 = private unnamed_addr constant [8 x i8] c"DimGray\00" -@.str5780 = private unnamed_addr constant [7 x i8] c"Nickel\00" -@.str5781 = private unnamed_addr constant [6 x i8] c"Slate\00" -@.str5782 = private unnamed_addr constant [10 x i8] c"SlateGray\00" -@.str5783 = private unnamed_addr constant [15 x i8] c"LightSlateGray\00" -@.str5784 = private unnamed_addr constant [9 x i8] c"Gunmetal\00" -@.str5785 = private unnamed_addr constant [9 x i8] c"Charcoal\00" -@.str5786 = private unnamed_addr constant [9 x i8] c"Graphite\00" -@.str5787 = private unnamed_addr constant [5 x i8] c"Onyx\00" -@.str5788 = private unnamed_addr constant [4 x i8] c"Jet\00" -@.str5789 = private unnamed_addr constant [6 x i8] c"Black\00" -@.str5790 = private unnamed_addr constant [11 x i8] c"EerieBlack\00" -@.str5791 = private unnamed_addr constant [12 x i8] c"RaisinBlack\00" -@.str5792 = private unnamed_addr constant [6 x i8] c"Ebony\00" -@.str5793 = private unnamed_addr constant [4 x i8] c"Red\00" -@.str5794 = private unnamed_addr constant [8 x i8] c"Crimson\00" -@.str5795 = private unnamed_addr constant [8 x i8] c"Scarlet\00" -@.str5796 = private unnamed_addr constant [10 x i8] c"Vermilion\00" -@.str5797 = private unnamed_addr constant [10 x i8] c"FireBrick\00" -@.str5798 = private unnamed_addr constant [9 x i8] c"Cinnabar\00" -@.str5799 = private unnamed_addr constant [8 x i8] c"DarkRed\00" -@.str5800 = private unnamed_addr constant [7 x i8] c"Maroon\00" -@.str5801 = private unnamed_addr constant [5 x i8] c"Ruby\00" -@.str5802 = private unnamed_addr constant [9 x i8] c"Cardinal\00" -@.str5803 = private unnamed_addr constant [10 x i8] c"IndianRed\00" -@.str5804 = private unnamed_addr constant [5 x i8] c"Rust\00" -@.str5805 = private unnamed_addr constant [8 x i8] c"Sangria\00" -@.str5806 = private unnamed_addr constant [8 x i8] c"Redwood\00" -@.str5807 = private unnamed_addr constant [7 x i8] c"Cerise\00" -@.str5808 = private unnamed_addr constant [9 x i8] c"Amaranth\00" -@.str5809 = private unnamed_addr constant [8 x i8] c"Carmine\00" -@.str5810 = private unnamed_addr constant [9 x i8] c"Chestnut\00" -@.str5811 = private unnamed_addr constant [6 x i8] c"Brick\00" -@.str5812 = private unnamed_addr constant [11 x i8] c"TerraCotta\00" -@.str5813 = private unnamed_addr constant [5 x i8] c"Pink\00" -@.str5814 = private unnamed_addr constant [10 x i8] c"LightPink\00" -@.str5815 = private unnamed_addr constant [8 x i8] c"HotPink\00" -@.str5816 = private unnamed_addr constant [9 x i8] c"DeepPink\00" -@.str5817 = private unnamed_addr constant [14 x i8] c"PaleVioletRed\00" -@.str5818 = private unnamed_addr constant [5 x i8] c"Rose\00" -@.str5819 = private unnamed_addr constant [6 x i8] c"Blush\00" -@.str5820 = private unnamed_addr constant [7 x i8] c"Salmon\00" -@.str5821 = private unnamed_addr constant [12 x i8] c"LightSalmon\00" -@.str5822 = private unnamed_addr constant [11 x i8] c"DarkSalmon\00" -@.str5823 = private unnamed_addr constant [6 x i8] c"Coral\00" -@.str5824 = private unnamed_addr constant [11 x i8] c"Watermelon\00" -@.str5825 = private unnamed_addr constant [9 x i8] c"Flamingo\00" -@.str5826 = private unnamed_addr constant [10 x i8] c"Bubblegum\00" -@.str5827 = private unnamed_addr constant [8 x i8] c"Fuchsia\00" -@.str5828 = private unnamed_addr constant [8 x i8] c"Magenta\00" -@.str5829 = private unnamed_addr constant [6 x i8] c"Mauve\00" -@.str5830 = private unnamed_addr constant [5 x i8] c"Puce\00" -@.str5831 = private unnamed_addr constant [8 x i8] c"Thistle\00" -@.str5832 = private unnamed_addr constant [7 x i8] c"Orchid\00" -@.str5833 = private unnamed_addr constant [7 x i8] c"Orange\00" -@.str5834 = private unnamed_addr constant [11 x i8] c"DarkOrange\00" -@.str5835 = private unnamed_addr constant [10 x i8] c"Tangerine\00" -@.str5836 = private unnamed_addr constant [8 x i8] c"Pumpkin\00" -@.str5837 = private unnamed_addr constant [8 x i8] c"Apricot\00" -@.str5838 = private unnamed_addr constant [6 x i8] c"Peach\00" -@.str5839 = private unnamed_addr constant [11 x i8] c"Cantaloupe\00" -@.str5840 = private unnamed_addr constant [6 x i8] c"Amber\00" -@.str5841 = private unnamed_addr constant [7 x i8] c"Bronze\00" -@.str5842 = private unnamed_addr constant [7 x i8] c"Copper\00" -@.str5843 = private unnamed_addr constant [9 x i8] c"Marigold\00" -@.str5844 = private unnamed_addr constant [7 x i8] c"Carrot\00" -@.str5845 = private unnamed_addr constant [10 x i8] c"Persimmon\00" -@.str5846 = private unnamed_addr constant [7 x i8] c"Papaya\00" -@.str5847 = private unnamed_addr constant [7 x i8] c"Sunset\00" -@.str5848 = private unnamed_addr constant [7 x i8] c"Yellow\00" -@.str5849 = private unnamed_addr constant [12 x i8] c"LightYellow\00" -@.str5850 = private unnamed_addr constant [5 x i8] c"Gold\00" -@.str5851 = private unnamed_addr constant [10 x i8] c"Goldenrod\00" -@.str5852 = private unnamed_addr constant [6 x i8] c"Lemon\00" -@.str5853 = private unnamed_addr constant [7 x i8] c"Canary\00" -@.str5854 = private unnamed_addr constant [8 x i8] c"Mustard\00" -@.str5855 = private unnamed_addr constant [5 x i8] c"Flax\00" -@.str5856 = private unnamed_addr constant [6 x i8] c"Wheat\00" -@.str5857 = private unnamed_addr constant [5 x i8] c"Corn\00" -@.str5858 = private unnamed_addr constant [10 x i8] c"Dandelion\00" -@.str5859 = private unnamed_addr constant [8 x i8] c"Saffron\00" -@.str5860 = private unnamed_addr constant [6 x i8] c"Khaki\00" -@.str5861 = private unnamed_addr constant [10 x i8] c"DarkKhaki\00" -@.str5862 = private unnamed_addr constant [6 x i8] c"Straw\00" -@.str5863 = private unnamed_addr constant [6 x i8] c"Brown\00" -@.str5864 = private unnamed_addr constant [12 x i8] c"SaddleBrown\00" -@.str5865 = private unnamed_addr constant [7 x i8] c"Sienna\00" -@.str5866 = private unnamed_addr constant [10 x i8] c"Chocolate\00" -@.str5867 = private unnamed_addr constant [5 x i8] c"Peru\00" -@.str5868 = private unnamed_addr constant [4 x i8] c"Tan\00" -@.str5869 = private unnamed_addr constant [10 x i8] c"BurlyWood\00" -@.str5870 = private unnamed_addr constant [5 x i8] c"Sand\00" -@.str5871 = private unnamed_addr constant [7 x i8] c"Coffee\00" -@.str5872 = private unnamed_addr constant [9 x i8] c"Espresso\00" -@.str5873 = private unnamed_addr constant [9 x i8] c"Mahogany\00" -@.str5874 = private unnamed_addr constant [7 x i8] c"Walnut\00" -@.str5875 = private unnamed_addr constant [6 x i8] c"Umber\00" -@.str5876 = private unnamed_addr constant [6 x i8] c"Sepia\00" -@.str5877 = private unnamed_addr constant [6 x i8] c"Taupe\00" -@.str5878 = private unnamed_addr constant [5 x i8] c"Fawn\00" -@.str5879 = private unnamed_addr constant [8 x i8] c"Caramel\00" -@.str5880 = private unnamed_addr constant [6 x i8] c"Cocoa\00" -@.str5881 = private unnamed_addr constant [6 x i8] c"Hazel\00" -@.str5882 = private unnamed_addr constant [6 x i8] c"Wenge\00" -@.str5883 = private unnamed_addr constant [6 x i8] c"Green\00" -@.str5884 = private unnamed_addr constant [5 x i8] c"Lime\00" -@.str5885 = private unnamed_addr constant [10 x i8] c"LimeGreen\00" -@.str5886 = private unnamed_addr constant [10 x i8] c"LawnGreen\00" -@.str5887 = private unnamed_addr constant [11 x i8] c"Chartreuse\00" -@.str5888 = private unnamed_addr constant [12 x i8] c"GreenYellow\00" -@.str5889 = private unnamed_addr constant [12 x i8] c"SpringGreen\00" -@.str5890 = private unnamed_addr constant [10 x i8] c"MintGreen\00" -@.str5891 = private unnamed_addr constant [9 x i8] c"SeaGreen\00" -@.str5892 = private unnamed_addr constant [15 x i8] c"MediumSeaGreen\00" -@.str5893 = private unnamed_addr constant [12 x i8] c"ForestGreen\00" -@.str5894 = private unnamed_addr constant [10 x i8] c"DarkGreen\00" -@.str5895 = private unnamed_addr constant [10 x i8] c"OliveDrab\00" -@.str5896 = private unnamed_addr constant [6 x i8] c"Olive\00" -@.str5897 = private unnamed_addr constant [5 x i8] c"Moss\00" -@.str5898 = private unnamed_addr constant [5 x i8] c"Fern\00" -@.str5899 = private unnamed_addr constant [8 x i8] c"Emerald\00" -@.str5900 = private unnamed_addr constant [5 x i8] c"Jade\00" -@.str5901 = private unnamed_addr constant [10 x i8] c"Malachite\00" -@.str5902 = private unnamed_addr constant [9 x i8] c"Shamrock\00" -@.str5903 = private unnamed_addr constant [10 x i8] c"Pistachio\00" -@.str5904 = private unnamed_addr constant [8 x i8] c"Avocado\00" -@.str5905 = private unnamed_addr constant [5 x i8] c"Pine\00" -@.str5906 = private unnamed_addr constant [5 x i8] c"Sage\00" -@.str5907 = private unnamed_addr constant [6 x i8] c"Kelly\00" -@.str5908 = private unnamed_addr constant [7 x i8] c"Hunter\00" -@.str5909 = private unnamed_addr constant [6 x i8] c"Basil\00" -@.str5910 = private unnamed_addr constant [7 x i8] c"Clover\00" -@.str5911 = private unnamed_addr constant [8 x i8] c"Juniper\00" -@.str5912 = private unnamed_addr constant [5 x i8] c"Neon\00" -@.str5913 = private unnamed_addr constant [5 x i8] c"Cyan\00" -@.str5914 = private unnamed_addr constant [5 x i8] c"Aqua\00" -@.str5915 = private unnamed_addr constant [10 x i8] c"LightCyan\00" -@.str5916 = private unnamed_addr constant [14 x i8] c"PaleTurquoise\00" -@.str5917 = private unnamed_addr constant [11 x i8] c"Aquamarine\00" -@.str5918 = private unnamed_addr constant [10 x i8] c"Turquoise\00" -@.str5919 = private unnamed_addr constant [16 x i8] c"MediumTurquoise\00" -@.str5920 = private unnamed_addr constant [14 x i8] c"DarkTurquoise\00" -@.str5921 = private unnamed_addr constant [5 x i8] c"Teal\00" -@.str5922 = private unnamed_addr constant [9 x i8] c"DarkCyan\00" -@.str5923 = private unnamed_addr constant [10 x i8] c"CadetBlue\00" -@.str5924 = private unnamed_addr constant [7 x i8] c"Lagoon\00" -@.str5925 = private unnamed_addr constant [8 x i8] c"Seafoam\00" -@.str5926 = private unnamed_addr constant [9 x i8] c"Cerulean\00" -@.str5927 = private unnamed_addr constant [13 x i8] c"SkyBlueLight\00" -@.str5928 = private unnamed_addr constant [6 x i8] c"Robin\00" -@.str5929 = private unnamed_addr constant [10 x i8] c"Verdigris\00" -@.str5930 = private unnamed_addr constant [8 x i8] c"Celadon\00" -@.str5931 = private unnamed_addr constant [5 x i8] c"Blue\00" -@.str5932 = private unnamed_addr constant [10 x i8] c"LightBlue\00" -@.str5933 = private unnamed_addr constant [11 x i8] c"PowderBlue\00" -@.str5934 = private unnamed_addr constant [8 x i8] c"SkyBlue\00" -@.str5935 = private unnamed_addr constant [13 x i8] c"LightSkyBlue\00" -@.str5936 = private unnamed_addr constant [12 x i8] c"DeepSkyBlue\00" -@.str5937 = private unnamed_addr constant [11 x i8] c"DodgerBlue\00" -@.str5938 = private unnamed_addr constant [15 x i8] c"CornflowerBlue\00" -@.str5939 = private unnamed_addr constant [10 x i8] c"SteelBlue\00" -@.str5940 = private unnamed_addr constant [10 x i8] c"RoyalBlue\00" -@.str5941 = private unnamed_addr constant [11 x i8] c"MediumBlue\00" -@.str5942 = private unnamed_addr constant [9 x i8] c"DarkBlue\00" -@.str5943 = private unnamed_addr constant [5 x i8] c"Navy\00" -@.str5944 = private unnamed_addr constant [13 x i8] c"MidnightBlue\00" -@.str5945 = private unnamed_addr constant [7 x i8] c"Cobalt\00" -@.str5946 = private unnamed_addr constant [9 x i8] c"Sapphire\00" -@.str5947 = private unnamed_addr constant [6 x i8] c"Denim\00" -@.str5948 = private unnamed_addr constant [7 x i8] c"Indigo\00" -@.str5949 = private unnamed_addr constant [9 x i8] c"Prussian\00" -@.str5950 = private unnamed_addr constant [12 x i8] c"Ultramarine\00" -@.str5951 = private unnamed_addr constant [11 x i8] c"Periwinkle\00" -@.str5952 = private unnamed_addr constant [5 x i8] c"Iris\00" -@.str5953 = private unnamed_addr constant [9 x i8] c"Glaucous\00" -@.str5954 = private unnamed_addr constant [7 x i8] c"Zaffre\00" -@.str5955 = private unnamed_addr constant [6 x i8] c"Berry\00" -@.str5956 = private unnamed_addr constant [7 x i8] c"Purple\00" -@.str5957 = private unnamed_addr constant [7 x i8] c"Violet\00" -@.str5958 = private unnamed_addr constant [11 x i8] c"DarkViolet\00" -@.str5959 = private unnamed_addr constant [11 x i8] c"BlueViolet\00" -@.str5960 = private unnamed_addr constant [13 x i8] c"MediumPurple\00" -@.str5961 = private unnamed_addr constant [9 x i8] c"Amethyst\00" -@.str5962 = private unnamed_addr constant [5 x i8] c"Plum\00" -@.str5963 = private unnamed_addr constant [9 x i8] c"Eggplant\00" -@.str5964 = private unnamed_addr constant [6 x i8] c"Grape\00" -@.str5965 = private unnamed_addr constant [5 x i8] c"Wine\00" -@.str5966 = private unnamed_addr constant [9 x i8] c"Mulberry\00" -@.str5967 = private unnamed_addr constant [6 x i8] c"Lilac\00" -@.str5968 = private unnamed_addr constant [9 x i8] c"Wisteria\00" -@.str5969 = private unnamed_addr constant [11 x i8] c"Heliotrope\00" -@.str5970 = private unnamed_addr constant [10 x i8] c"Byzantium\00" -@.str5971 = private unnamed_addr constant [7 x i8] c"Tyrian\00" -@.str5972 = private unnamed_addr constant [14 x i8] c"RebeccaPurple\00" -@.str5973 = private unnamed_addr constant [8 x i8] c"Orchid2\00" -@.str5974 = private unnamed_addr constant [6 x i8] c"Space\00" -@.str5975 = private unnamed_addr constant [6 x i8] c"Enter\00" -@.str5976 = private unnamed_addr constant [7 x i8] c"Return\00" -@.str5977 = private unnamed_addr constant [7 x i8] c"Escape\00" -@.str5978 = private unnamed_addr constant [4 x i8] c"Esc\00" -@.str5979 = private unnamed_addr constant [6 x i8] c"Shift\00" -@.str5980 = private unnamed_addr constant [4 x i8] c"Tab\00" -@.str5981 = private unnamed_addr constant [10 x i8] c"Backspace\00" -@.str5982 = private unnamed_addr constant [3 x i8] c"Up\00" -@.str5983 = private unnamed_addr constant [5 x i8] c"Down\00" -@.str5984 = private unnamed_addr constant [5 x i8] c"Left\00" -@.str5985 = private unnamed_addr constant [6 x i8] c"Right\00" -@.str5986 = private unnamed_addr constant [7 x i8] c"Digit0\00" -@.str5987 = private unnamed_addr constant [7 x i8] c"Digit1\00" -@.str5988 = private unnamed_addr constant [7 x i8] c"Digit2\00" -@.str5989 = private unnamed_addr constant [7 x i8] c"Digit3\00" -@.str5990 = private unnamed_addr constant [7 x i8] c"Digit4\00" -@.str5991 = private unnamed_addr constant [7 x i8] c"Digit5\00" -@.str5992 = private unnamed_addr constant [7 x i8] c"Digit6\00" -@.str5993 = private unnamed_addr constant [7 x i8] c"Digit7\00" -@.str5994 = private unnamed_addr constant [7 x i8] c"Digit8\00" -@.str5995 = private unnamed_addr constant [7 x i8] c"Digit9\00" -@.str5996 = private unnamed_addr constant [15 x i8] c"getelementptr \00" -@.str5997 = private unnamed_addr constant [18 x i8] c", ptr null, i32 1\00" -@.str5998 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str5999 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str6000 = private unnamed_addr constant [27 x i8] c"unknown record type in new\00" -@.str6001 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" -@.str6002 = private unnamed_addr constant [2 x i8] c")\00" -@.str6003 = private unnamed_addr constant [3 x i8] c" \00" -@.str6004 = private unnamed_addr constant [27 x i8] c" = getelementptr inbounds \00" -@.str6005 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6006 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str6007 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6008 = private unnamed_addr constant [2 x i8] c"0\00" -@.str6009 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str6010 = private unnamed_addr constant [5 x i8] c"null\00" -@.str6011 = private unnamed_addr constant [9 x i8] c" store \00" -@.str6012 = private unnamed_addr constant [2 x i8] c" \00" -@.str6013 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6014 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6015 = private unnamed_addr constant [8 x i8] c"%LSlice\00" -@.str6016 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" -@.str6017 = private unnamed_addr constant [2 x i8] c")\00" -@.str6018 = private unnamed_addr constant [3 x i8] c" \00" -@.str6019 = private unnamed_addr constant [40 x i8] c" = getelementptr inbounds %LSlice, ptr \00" -@.str6020 = private unnamed_addr constant [16 x i8] c", i32 0, i32 0\0A\00" -@.str6021 = private unnamed_addr constant [23 x i8] c" store ptr null, ptr \00" -@.str6022 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6023 = private unnamed_addr constant [3 x i8] c" \00" -@.str6024 = private unnamed_addr constant [40 x i8] c" = getelementptr inbounds %LSlice, ptr \00" -@.str6025 = private unnamed_addr constant [16 x i8] c", i32 0, i32 1\0A\00" -@.str6026 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" -@.str6027 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6028 = private unnamed_addr constant [3 x i8] c" \00" -@.str6029 = private unnamed_addr constant [40 x i8] c" = getelementptr inbounds %LSlice, ptr \00" -@.str6030 = private unnamed_addr constant [16 x i8] c", i32 0, i32 2\0A\00" -@.str6031 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" -@.str6032 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6033 = private unnamed_addr constant [3 x i8] c" \00" -@.str6034 = private unnamed_addr constant [40 x i8] c" = getelementptr inbounds %LSlice, ptr \00" -@.str6035 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str6036 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6037 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str6038 = private unnamed_addr constant [4 x i8] c"int\00" -@.str6039 = private unnamed_addr constant [22 x i8] c"call i64 @strlen(ptr \00" -@.str6040 = private unnamed_addr constant [2 x i8] c")\00" -@.str6041 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str6042 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str6043 = private unnamed_addr constant [4 x i8] c"int\00" -@.str6044 = private unnamed_addr constant [2 x i8] c"0\00" -@.str6045 = private unnamed_addr constant [5 x i8] c"void\00" -@.str6046 = private unnamed_addr constant [67 x i8] c"an empty list literal has no element type: write `new []T` instead\00" -@.str6047 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str6048 = private unnamed_addr constant [34 x i8] c"list literal mixes element types \00" -@.str6049 = private unnamed_addr constant [6 x i8] c" and \00" -@.str6050 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str6051 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str6052 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" -@.str6053 = private unnamed_addr constant [3 x i8] c", \00" -@.str6054 = private unnamed_addr constant [5 x i8] c"grow\00" -@.str6055 = private unnamed_addr constant [4 x i8] c"put\00" -@.str6056 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str6057 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str6058 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str6059 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6060 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str6061 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str6062 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str6063 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str6064 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str6065 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str6066 = private unnamed_addr constant [14 x i8] c", i32 8, i32 \00" -@.str6067 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str6068 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str6069 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str6070 = private unnamed_addr constant [3 x i8] c", \00" -@.str6071 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" -@.str6072 = private unnamed_addr constant [23 x i8] c"call ptr @realloc(ptr \00" -@.str6073 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str6074 = private unnamed_addr constant [2 x i8] c")\00" -@.str6075 = private unnamed_addr constant [13 x i8] c" store ptr \00" -@.str6076 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6077 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6078 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str5748 = private unnamed_addr constant [14 x i8] c"sub i32 255, \00" +@.str5749 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str5750 = private unnamed_addr constant [3 x i8] c", \00" +@.str5751 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str5752 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str5753 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str5754 = private unnamed_addr constant [3 x i8] c", \00" +@.str5755 = private unnamed_addr constant [4 x i8] c"int\00" +@.str5756 = private unnamed_addr constant [6 x i8] c"White\00" +@.str5757 = private unnamed_addr constant [5 x i8] c"Snow\00" +@.str5758 = private unnamed_addr constant [6 x i8] c"Ivory\00" +@.str5759 = private unnamed_addr constant [14 x i8] c"EggShellWhite\00" +@.str5760 = private unnamed_addr constant [12 x i8] c"FloralWhite\00" +@.str5761 = private unnamed_addr constant [9 x i8] c"SeaShell\00" +@.str5762 = private unnamed_addr constant [6 x i8] c"Linen\00" +@.str5763 = private unnamed_addr constant [13 x i8] c"AntiqueWhite\00" +@.str5764 = private unnamed_addr constant [8 x i8] c"OldLace\00" +@.str5765 = private unnamed_addr constant [6 x i8] c"Beige\00" +@.str5766 = private unnamed_addr constant [6 x i8] c"Cream\00" +@.str5767 = private unnamed_addr constant [9 x i8] c"Honeydew\00" +@.str5768 = private unnamed_addr constant [10 x i8] c"MintCream\00" +@.str5769 = private unnamed_addr constant [6 x i8] c"Azure\00" +@.str5770 = private unnamed_addr constant [10 x i8] c"AliceBlue\00" +@.str5771 = private unnamed_addr constant [11 x i8] c"GhostWhite\00" +@.str5772 = private unnamed_addr constant [11 x i8] c"WhiteSmoke\00" +@.str5773 = private unnamed_addr constant [9 x i8] c"Lavender\00" +@.str5774 = private unnamed_addr constant [5 x i8] c"Bone\00" +@.str5775 = private unnamed_addr constant [10 x i8] c"Parchment\00" +@.str5776 = private unnamed_addr constant [10 x i8] c"Gainsboro\00" +@.str5777 = private unnamed_addr constant [10 x i8] c"LightGray\00" +@.str5778 = private unnamed_addr constant [7 x i8] c"Silver\00" +@.str5779 = private unnamed_addr constant [4 x i8] c"Ash\00" +@.str5780 = private unnamed_addr constant [9 x i8] c"DarkGray\00" +@.str5781 = private unnamed_addr constant [5 x i8] c"Gray\00" +@.str5782 = private unnamed_addr constant [8 x i8] c"DimGray\00" +@.str5783 = private unnamed_addr constant [7 x i8] c"Nickel\00" +@.str5784 = private unnamed_addr constant [6 x i8] c"Slate\00" +@.str5785 = private unnamed_addr constant [10 x i8] c"SlateGray\00" +@.str5786 = private unnamed_addr constant [15 x i8] c"LightSlateGray\00" +@.str5787 = private unnamed_addr constant [9 x i8] c"Gunmetal\00" +@.str5788 = private unnamed_addr constant [9 x i8] c"Charcoal\00" +@.str5789 = private unnamed_addr constant [9 x i8] c"Graphite\00" +@.str5790 = private unnamed_addr constant [5 x i8] c"Onyx\00" +@.str5791 = private unnamed_addr constant [4 x i8] c"Jet\00" +@.str5792 = private unnamed_addr constant [6 x i8] c"Black\00" +@.str5793 = private unnamed_addr constant [11 x i8] c"EerieBlack\00" +@.str5794 = private unnamed_addr constant [12 x i8] c"RaisinBlack\00" +@.str5795 = private unnamed_addr constant [6 x i8] c"Ebony\00" +@.str5796 = private unnamed_addr constant [4 x i8] c"Red\00" +@.str5797 = private unnamed_addr constant [8 x i8] c"Crimson\00" +@.str5798 = private unnamed_addr constant [8 x i8] c"Scarlet\00" +@.str5799 = private unnamed_addr constant [10 x i8] c"Vermilion\00" +@.str5800 = private unnamed_addr constant [10 x i8] c"FireBrick\00" +@.str5801 = private unnamed_addr constant [9 x i8] c"Cinnabar\00" +@.str5802 = private unnamed_addr constant [8 x i8] c"DarkRed\00" +@.str5803 = private unnamed_addr constant [7 x i8] c"Maroon\00" +@.str5804 = private unnamed_addr constant [5 x i8] c"Ruby\00" +@.str5805 = private unnamed_addr constant [9 x i8] c"Cardinal\00" +@.str5806 = private unnamed_addr constant [10 x i8] c"IndianRed\00" +@.str5807 = private unnamed_addr constant [5 x i8] c"Rust\00" +@.str5808 = private unnamed_addr constant [8 x i8] c"Sangria\00" +@.str5809 = private unnamed_addr constant [8 x i8] c"Redwood\00" +@.str5810 = private unnamed_addr constant [7 x i8] c"Cerise\00" +@.str5811 = private unnamed_addr constant [9 x i8] c"Amaranth\00" +@.str5812 = private unnamed_addr constant [8 x i8] c"Carmine\00" +@.str5813 = private unnamed_addr constant [9 x i8] c"Chestnut\00" +@.str5814 = private unnamed_addr constant [6 x i8] c"Brick\00" +@.str5815 = private unnamed_addr constant [11 x i8] c"TerraCotta\00" +@.str5816 = private unnamed_addr constant [5 x i8] c"Pink\00" +@.str5817 = private unnamed_addr constant [10 x i8] c"LightPink\00" +@.str5818 = private unnamed_addr constant [8 x i8] c"HotPink\00" +@.str5819 = private unnamed_addr constant [9 x i8] c"DeepPink\00" +@.str5820 = private unnamed_addr constant [14 x i8] c"PaleVioletRed\00" +@.str5821 = private unnamed_addr constant [5 x i8] c"Rose\00" +@.str5822 = private unnamed_addr constant [6 x i8] c"Blush\00" +@.str5823 = private unnamed_addr constant [7 x i8] c"Salmon\00" +@.str5824 = private unnamed_addr constant [12 x i8] c"LightSalmon\00" +@.str5825 = private unnamed_addr constant [11 x i8] c"DarkSalmon\00" +@.str5826 = private unnamed_addr constant [6 x i8] c"Coral\00" +@.str5827 = private unnamed_addr constant [11 x i8] c"Watermelon\00" +@.str5828 = private unnamed_addr constant [9 x i8] c"Flamingo\00" +@.str5829 = private unnamed_addr constant [10 x i8] c"Bubblegum\00" +@.str5830 = private unnamed_addr constant [8 x i8] c"Fuchsia\00" +@.str5831 = private unnamed_addr constant [8 x i8] c"Magenta\00" +@.str5832 = private unnamed_addr constant [6 x i8] c"Mauve\00" +@.str5833 = private unnamed_addr constant [5 x i8] c"Puce\00" +@.str5834 = private unnamed_addr constant [8 x i8] c"Thistle\00" +@.str5835 = private unnamed_addr constant [7 x i8] c"Orchid\00" +@.str5836 = private unnamed_addr constant [7 x i8] c"Orange\00" +@.str5837 = private unnamed_addr constant [11 x i8] c"DarkOrange\00" +@.str5838 = private unnamed_addr constant [10 x i8] c"Tangerine\00" +@.str5839 = private unnamed_addr constant [8 x i8] c"Pumpkin\00" +@.str5840 = private unnamed_addr constant [8 x i8] c"Apricot\00" +@.str5841 = private unnamed_addr constant [6 x i8] c"Peach\00" +@.str5842 = private unnamed_addr constant [11 x i8] c"Cantaloupe\00" +@.str5843 = private unnamed_addr constant [6 x i8] c"Amber\00" +@.str5844 = private unnamed_addr constant [7 x i8] c"Bronze\00" +@.str5845 = private unnamed_addr constant [7 x i8] c"Copper\00" +@.str5846 = private unnamed_addr constant [9 x i8] c"Marigold\00" +@.str5847 = private unnamed_addr constant [7 x i8] c"Carrot\00" +@.str5848 = private unnamed_addr constant [10 x i8] c"Persimmon\00" +@.str5849 = private unnamed_addr constant [7 x i8] c"Papaya\00" +@.str5850 = private unnamed_addr constant [7 x i8] c"Sunset\00" +@.str5851 = private unnamed_addr constant [7 x i8] c"Yellow\00" +@.str5852 = private unnamed_addr constant [12 x i8] c"LightYellow\00" +@.str5853 = private unnamed_addr constant [5 x i8] c"Gold\00" +@.str5854 = private unnamed_addr constant [10 x i8] c"Goldenrod\00" +@.str5855 = private unnamed_addr constant [6 x i8] c"Lemon\00" +@.str5856 = private unnamed_addr constant [7 x i8] c"Canary\00" +@.str5857 = private unnamed_addr constant [8 x i8] c"Mustard\00" +@.str5858 = private unnamed_addr constant [5 x i8] c"Flax\00" +@.str5859 = private unnamed_addr constant [6 x i8] c"Wheat\00" +@.str5860 = private unnamed_addr constant [5 x i8] c"Corn\00" +@.str5861 = private unnamed_addr constant [10 x i8] c"Dandelion\00" +@.str5862 = private unnamed_addr constant [8 x i8] c"Saffron\00" +@.str5863 = private unnamed_addr constant [6 x i8] c"Khaki\00" +@.str5864 = private unnamed_addr constant [10 x i8] c"DarkKhaki\00" +@.str5865 = private unnamed_addr constant [6 x i8] c"Straw\00" +@.str5866 = private unnamed_addr constant [6 x i8] c"Brown\00" +@.str5867 = private unnamed_addr constant [12 x i8] c"SaddleBrown\00" +@.str5868 = private unnamed_addr constant [7 x i8] c"Sienna\00" +@.str5869 = private unnamed_addr constant [10 x i8] c"Chocolate\00" +@.str5870 = private unnamed_addr constant [5 x i8] c"Peru\00" +@.str5871 = private unnamed_addr constant [4 x i8] c"Tan\00" +@.str5872 = private unnamed_addr constant [10 x i8] c"BurlyWood\00" +@.str5873 = private unnamed_addr constant [5 x i8] c"Sand\00" +@.str5874 = private unnamed_addr constant [7 x i8] c"Coffee\00" +@.str5875 = private unnamed_addr constant [9 x i8] c"Espresso\00" +@.str5876 = private unnamed_addr constant [9 x i8] c"Mahogany\00" +@.str5877 = private unnamed_addr constant [7 x i8] c"Walnut\00" +@.str5878 = private unnamed_addr constant [6 x i8] c"Umber\00" +@.str5879 = private unnamed_addr constant [6 x i8] c"Sepia\00" +@.str5880 = private unnamed_addr constant [6 x i8] c"Taupe\00" +@.str5881 = private unnamed_addr constant [5 x i8] c"Fawn\00" +@.str5882 = private unnamed_addr constant [8 x i8] c"Caramel\00" +@.str5883 = private unnamed_addr constant [6 x i8] c"Cocoa\00" +@.str5884 = private unnamed_addr constant [6 x i8] c"Hazel\00" +@.str5885 = private unnamed_addr constant [6 x i8] c"Wenge\00" +@.str5886 = private unnamed_addr constant [6 x i8] c"Green\00" +@.str5887 = private unnamed_addr constant [5 x i8] c"Lime\00" +@.str5888 = private unnamed_addr constant [10 x i8] c"LimeGreen\00" +@.str5889 = private unnamed_addr constant [10 x i8] c"LawnGreen\00" +@.str5890 = private unnamed_addr constant [11 x i8] c"Chartreuse\00" +@.str5891 = private unnamed_addr constant [12 x i8] c"GreenYellow\00" +@.str5892 = private unnamed_addr constant [12 x i8] c"SpringGreen\00" +@.str5893 = private unnamed_addr constant [10 x i8] c"MintGreen\00" +@.str5894 = private unnamed_addr constant [9 x i8] c"SeaGreen\00" +@.str5895 = private unnamed_addr constant [15 x i8] c"MediumSeaGreen\00" +@.str5896 = private unnamed_addr constant [12 x i8] c"ForestGreen\00" +@.str5897 = private unnamed_addr constant [10 x i8] c"DarkGreen\00" +@.str5898 = private unnamed_addr constant [10 x i8] c"OliveDrab\00" +@.str5899 = private unnamed_addr constant [6 x i8] c"Olive\00" +@.str5900 = private unnamed_addr constant [5 x i8] c"Moss\00" +@.str5901 = private unnamed_addr constant [5 x i8] c"Fern\00" +@.str5902 = private unnamed_addr constant [8 x i8] c"Emerald\00" +@.str5903 = private unnamed_addr constant [5 x i8] c"Jade\00" +@.str5904 = private unnamed_addr constant [10 x i8] c"Malachite\00" +@.str5905 = private unnamed_addr constant [9 x i8] c"Shamrock\00" +@.str5906 = private unnamed_addr constant [10 x i8] c"Pistachio\00" +@.str5907 = private unnamed_addr constant [8 x i8] c"Avocado\00" +@.str5908 = private unnamed_addr constant [5 x i8] c"Pine\00" +@.str5909 = private unnamed_addr constant [5 x i8] c"Sage\00" +@.str5910 = private unnamed_addr constant [6 x i8] c"Kelly\00" +@.str5911 = private unnamed_addr constant [7 x i8] c"Hunter\00" +@.str5912 = private unnamed_addr constant [6 x i8] c"Basil\00" +@.str5913 = private unnamed_addr constant [7 x i8] c"Clover\00" +@.str5914 = private unnamed_addr constant [8 x i8] c"Juniper\00" +@.str5915 = private unnamed_addr constant [5 x i8] c"Neon\00" +@.str5916 = private unnamed_addr constant [5 x i8] c"Cyan\00" +@.str5917 = private unnamed_addr constant [5 x i8] c"Aqua\00" +@.str5918 = private unnamed_addr constant [10 x i8] c"LightCyan\00" +@.str5919 = private unnamed_addr constant [14 x i8] c"PaleTurquoise\00" +@.str5920 = private unnamed_addr constant [11 x i8] c"Aquamarine\00" +@.str5921 = private unnamed_addr constant [10 x i8] c"Turquoise\00" +@.str5922 = private unnamed_addr constant [16 x i8] c"MediumTurquoise\00" +@.str5923 = private unnamed_addr constant [14 x i8] c"DarkTurquoise\00" +@.str5924 = private unnamed_addr constant [5 x i8] c"Teal\00" +@.str5925 = private unnamed_addr constant [9 x i8] c"DarkCyan\00" +@.str5926 = private unnamed_addr constant [10 x i8] c"CadetBlue\00" +@.str5927 = private unnamed_addr constant [7 x i8] c"Lagoon\00" +@.str5928 = private unnamed_addr constant [8 x i8] c"Seafoam\00" +@.str5929 = private unnamed_addr constant [9 x i8] c"Cerulean\00" +@.str5930 = private unnamed_addr constant [13 x i8] c"SkyBlueLight\00" +@.str5931 = private unnamed_addr constant [6 x i8] c"Robin\00" +@.str5932 = private unnamed_addr constant [10 x i8] c"Verdigris\00" +@.str5933 = private unnamed_addr constant [8 x i8] c"Celadon\00" +@.str5934 = private unnamed_addr constant [5 x i8] c"Blue\00" +@.str5935 = private unnamed_addr constant [10 x i8] c"LightBlue\00" +@.str5936 = private unnamed_addr constant [11 x i8] c"PowderBlue\00" +@.str5937 = private unnamed_addr constant [8 x i8] c"SkyBlue\00" +@.str5938 = private unnamed_addr constant [13 x i8] c"LightSkyBlue\00" +@.str5939 = private unnamed_addr constant [12 x i8] c"DeepSkyBlue\00" +@.str5940 = private unnamed_addr constant [11 x i8] c"DodgerBlue\00" +@.str5941 = private unnamed_addr constant [15 x i8] c"CornflowerBlue\00" +@.str5942 = private unnamed_addr constant [10 x i8] c"SteelBlue\00" +@.str5943 = private unnamed_addr constant [10 x i8] c"RoyalBlue\00" +@.str5944 = private unnamed_addr constant [11 x i8] c"MediumBlue\00" +@.str5945 = private unnamed_addr constant [9 x i8] c"DarkBlue\00" +@.str5946 = private unnamed_addr constant [5 x i8] c"Navy\00" +@.str5947 = private unnamed_addr constant [13 x i8] c"MidnightBlue\00" +@.str5948 = private unnamed_addr constant [7 x i8] c"Cobalt\00" +@.str5949 = private unnamed_addr constant [9 x i8] c"Sapphire\00" +@.str5950 = private unnamed_addr constant [6 x i8] c"Denim\00" +@.str5951 = private unnamed_addr constant [7 x i8] c"Indigo\00" +@.str5952 = private unnamed_addr constant [9 x i8] c"Prussian\00" +@.str5953 = private unnamed_addr constant [12 x i8] c"Ultramarine\00" +@.str5954 = private unnamed_addr constant [11 x i8] c"Periwinkle\00" +@.str5955 = private unnamed_addr constant [5 x i8] c"Iris\00" +@.str5956 = private unnamed_addr constant [9 x i8] c"Glaucous\00" +@.str5957 = private unnamed_addr constant [7 x i8] c"Zaffre\00" +@.str5958 = private unnamed_addr constant [6 x i8] c"Berry\00" +@.str5959 = private unnamed_addr constant [7 x i8] c"Purple\00" +@.str5960 = private unnamed_addr constant [7 x i8] c"Violet\00" +@.str5961 = private unnamed_addr constant [11 x i8] c"DarkViolet\00" +@.str5962 = private unnamed_addr constant [11 x i8] c"BlueViolet\00" +@.str5963 = private unnamed_addr constant [13 x i8] c"MediumPurple\00" +@.str5964 = private unnamed_addr constant [9 x i8] c"Amethyst\00" +@.str5965 = private unnamed_addr constant [5 x i8] c"Plum\00" +@.str5966 = private unnamed_addr constant [9 x i8] c"Eggplant\00" +@.str5967 = private unnamed_addr constant [6 x i8] c"Grape\00" +@.str5968 = private unnamed_addr constant [5 x i8] c"Wine\00" +@.str5969 = private unnamed_addr constant [9 x i8] c"Mulberry\00" +@.str5970 = private unnamed_addr constant [6 x i8] c"Lilac\00" +@.str5971 = private unnamed_addr constant [9 x i8] c"Wisteria\00" +@.str5972 = private unnamed_addr constant [11 x i8] c"Heliotrope\00" +@.str5973 = private unnamed_addr constant [10 x i8] c"Byzantium\00" +@.str5974 = private unnamed_addr constant [7 x i8] c"Tyrian\00" +@.str5975 = private unnamed_addr constant [14 x i8] c"RebeccaPurple\00" +@.str5976 = private unnamed_addr constant [8 x i8] c"Orchid2\00" +@.str5977 = private unnamed_addr constant [6 x i8] c"Space\00" +@.str5978 = private unnamed_addr constant [6 x i8] c"Enter\00" +@.str5979 = private unnamed_addr constant [7 x i8] c"Return\00" +@.str5980 = private unnamed_addr constant [7 x i8] c"Escape\00" +@.str5981 = private unnamed_addr constant [4 x i8] c"Esc\00" +@.str5982 = private unnamed_addr constant [6 x i8] c"Shift\00" +@.str5983 = private unnamed_addr constant [4 x i8] c"Tab\00" +@.str5984 = private unnamed_addr constant [10 x i8] c"Backspace\00" +@.str5985 = private unnamed_addr constant [3 x i8] c"Up\00" +@.str5986 = private unnamed_addr constant [5 x i8] c"Down\00" +@.str5987 = private unnamed_addr constant [5 x i8] c"Left\00" +@.str5988 = private unnamed_addr constant [6 x i8] c"Right\00" +@.str5989 = private unnamed_addr constant [7 x i8] c"Digit0\00" +@.str5990 = private unnamed_addr constant [7 x i8] c"Digit1\00" +@.str5991 = private unnamed_addr constant [7 x i8] c"Digit2\00" +@.str5992 = private unnamed_addr constant [7 x i8] c"Digit3\00" +@.str5993 = private unnamed_addr constant [7 x i8] c"Digit4\00" +@.str5994 = private unnamed_addr constant [7 x i8] c"Digit5\00" +@.str5995 = private unnamed_addr constant [7 x i8] c"Digit6\00" +@.str5996 = private unnamed_addr constant [7 x i8] c"Digit7\00" +@.str5997 = private unnamed_addr constant [7 x i8] c"Digit8\00" +@.str5998 = private unnamed_addr constant [7 x i8] c"Digit9\00" +@.str5999 = private unnamed_addr constant [15 x i8] c"getelementptr \00" +@.str6000 = private unnamed_addr constant [18 x i8] c", ptr null, i32 1\00" +@.str6001 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" +@.str6002 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str6003 = private unnamed_addr constant [27 x i8] c"unknown record type in new\00" +@.str6004 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" +@.str6005 = private unnamed_addr constant [2 x i8] c")\00" +@.str6006 = private unnamed_addr constant [3 x i8] c" \00" +@.str6007 = private unnamed_addr constant [27 x i8] c" = getelementptr inbounds \00" +@.str6008 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6009 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str6010 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6011 = private unnamed_addr constant [2 x i8] c"0\00" +@.str6012 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str6013 = private unnamed_addr constant [5 x i8] c"null\00" +@.str6014 = private unnamed_addr constant [9 x i8] c" store \00" +@.str6015 = private unnamed_addr constant [2 x i8] c" \00" +@.str6016 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6017 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6018 = private unnamed_addr constant [8 x i8] c"%LSlice\00" +@.str6019 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" +@.str6020 = private unnamed_addr constant [2 x i8] c")\00" +@.str6021 = private unnamed_addr constant [3 x i8] c" \00" +@.str6022 = private unnamed_addr constant [40 x i8] c" = getelementptr inbounds %LSlice, ptr \00" +@.str6023 = private unnamed_addr constant [16 x i8] c", i32 0, i32 0\0A\00" +@.str6024 = private unnamed_addr constant [23 x i8] c" store ptr null, ptr \00" +@.str6025 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6026 = private unnamed_addr constant [3 x i8] c" \00" +@.str6027 = private unnamed_addr constant [40 x i8] c" = getelementptr inbounds %LSlice, ptr \00" +@.str6028 = private unnamed_addr constant [16 x i8] c", i32 0, i32 1\0A\00" +@.str6029 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" +@.str6030 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6031 = private unnamed_addr constant [3 x i8] c" \00" +@.str6032 = private unnamed_addr constant [40 x i8] c" = getelementptr inbounds %LSlice, ptr \00" +@.str6033 = private unnamed_addr constant [16 x i8] c", i32 0, i32 2\0A\00" +@.str6034 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" +@.str6035 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6036 = private unnamed_addr constant [3 x i8] c" \00" +@.str6037 = private unnamed_addr constant [40 x i8] c" = getelementptr inbounds %LSlice, ptr \00" +@.str6038 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str6039 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6040 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str6041 = private unnamed_addr constant [4 x i8] c"int\00" +@.str6042 = private unnamed_addr constant [22 x i8] c"call i64 @strlen(ptr \00" +@.str6043 = private unnamed_addr constant [2 x i8] c")\00" +@.str6044 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str6045 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str6046 = private unnamed_addr constant [4 x i8] c"int\00" +@.str6047 = private unnamed_addr constant [2 x i8] c"0\00" +@.str6048 = private unnamed_addr constant [5 x i8] c"void\00" +@.str6049 = private unnamed_addr constant [67 x i8] c"an empty list literal has no element type: write `new []T` instead\00" +@.str6050 = private unnamed_addr constant [3 x i8] c"[]\00" +@.str6051 = private unnamed_addr constant [34 x i8] c"list literal mixes element types \00" +@.str6052 = private unnamed_addr constant [6 x i8] c" and \00" +@.str6053 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str6054 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str6055 = private unnamed_addr constant [14 x i8] c"icmp sge i32 \00" +@.str6056 = private unnamed_addr constant [3 x i8] c", \00" +@.str6057 = private unnamed_addr constant [5 x i8] c"grow\00" +@.str6058 = private unnamed_addr constant [4 x i8] c"put\00" +@.str6059 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str6060 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str6061 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str6062 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6063 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str6064 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str6065 = private unnamed_addr constant [4 x i8] c", 2\00" +@.str6066 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str6067 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str6068 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str6069 = private unnamed_addr constant [14 x i8] c", i32 8, i32 \00" +@.str6070 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str6071 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str6072 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str6073 = private unnamed_addr constant [3 x i8] c", \00" +@.str6074 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" +@.str6075 = private unnamed_addr constant [23 x i8] c"call ptr @realloc(ptr \00" +@.str6076 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str6077 = private unnamed_addr constant [2 x i8] c")\00" +@.str6078 = private unnamed_addr constant [13 x i8] c" store ptr \00" @.str6079 = private unnamed_addr constant [7 x i8] c", ptr \00" @.str6080 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6081 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str6082 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6083 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str6084 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" -@.str6085 = private unnamed_addr constant [3 x i8] c" \00" -@.str6086 = private unnamed_addr constant [27 x i8] c" = getelementptr inbounds \00" -@.str6087 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6088 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str6089 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6090 = private unnamed_addr constant [9 x i8] c" store \00" -@.str6091 = private unnamed_addr constant [2 x i8] c" \00" -@.str6092 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6093 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6094 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str6095 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str6096 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str6097 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6098 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6081 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str6082 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6083 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6084 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str6085 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6086 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str6087 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" +@.str6088 = private unnamed_addr constant [3 x i8] c" \00" +@.str6089 = private unnamed_addr constant [27 x i8] c" = getelementptr inbounds \00" +@.str6090 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6091 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str6092 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6093 = private unnamed_addr constant [9 x i8] c" store \00" +@.str6094 = private unnamed_addr constant [2 x i8] c" \00" +@.str6095 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6096 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6097 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str6098 = private unnamed_addr constant [4 x i8] c", 1\00" @.str6099 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str6100 = private unnamed_addr constant [4 x i8] c"int\00" -@.str6101 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6102 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6103 = private unnamed_addr constant [7 x i8] c"result\00" -@.str6104 = private unnamed_addr constant [33 x i8] c"try expects a result value (got \00" -@.str6105 = private unnamed_addr constant [12 x i8] c") \E2\80\94 line \00" -@.str6106 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str6107 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" -@.str6108 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6109 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" -@.str6110 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str6111 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str6112 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str6113 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str6114 = private unnamed_addr constant [6 x i8] c"tryok\00" -@.str6115 = private unnamed_addr constant [8 x i8] c"tryelse\00" -@.str6116 = private unnamed_addr constant [7 x i8] c"tryend\00" -@.str6117 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str6118 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str6119 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str6120 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6121 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str6122 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" -@.str6123 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str6124 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str6125 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str6126 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6127 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6128 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str6129 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6130 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str6131 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" -@.str6132 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str6133 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" -@.str6134 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str6135 = private unnamed_addr constant [13 x i8] c" store ptr \00" -@.str6136 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6137 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6138 = private unnamed_addr constant [6 x i8] c"error\00" -@.str6139 = private unnamed_addr constant [7 x i8] c"string\00" -@.str6140 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str6141 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6142 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str6143 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str6144 = private unnamed_addr constant [4 x i8] c"int\00" -@.str6145 = private unnamed_addr constant [6 x i8] c"load \00" -@.str6146 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6147 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str6148 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str6149 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str6150 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str6151 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str6152 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str6153 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6154 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6155 = private unnamed_addr constant [3 x i8] c"sc\00" -@.str6156 = private unnamed_addr constant [6 x i8] c"scend\00" -@.str6157 = private unnamed_addr constant [4 x i8] c"and\00" -@.str6158 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str6159 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str6160 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str6161 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6162 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str6100 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6101 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6102 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str6103 = private unnamed_addr constant [4 x i8] c"int\00" +@.str6104 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6105 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6106 = private unnamed_addr constant [7 x i8] c"result\00" +@.str6107 = private unnamed_addr constant [33 x i8] c"try expects a result value (got \00" +@.str6108 = private unnamed_addr constant [12 x i8] c") \E2\80\94 line \00" +@.str6109 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str6110 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" +@.str6111 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6112 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" +@.str6113 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str6114 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str6115 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str6116 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str6117 = private unnamed_addr constant [6 x i8] c"tryok\00" +@.str6118 = private unnamed_addr constant [8 x i8] c"tryelse\00" +@.str6119 = private unnamed_addr constant [7 x i8] c"tryend\00" +@.str6120 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str6121 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str6122 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str6123 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6124 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str6125 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" +@.str6126 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str6127 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str6128 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str6129 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6130 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6131 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str6132 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6133 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str6134 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" +@.str6135 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" +@.str6136 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" +@.str6137 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str6138 = private unnamed_addr constant [13 x i8] c" store ptr \00" +@.str6139 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6140 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6141 = private unnamed_addr constant [6 x i8] c"error\00" +@.str6142 = private unnamed_addr constant [7 x i8] c"string\00" +@.str6143 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str6144 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6145 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str6146 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str6147 = private unnamed_addr constant [4 x i8] c"int\00" +@.str6148 = private unnamed_addr constant [6 x i8] c"load \00" +@.str6149 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6150 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str6151 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str6152 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str6153 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str6154 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str6155 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str6156 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6157 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6158 = private unnamed_addr constant [3 x i8] c"sc\00" +@.str6159 = private unnamed_addr constant [6 x i8] c"scend\00" +@.str6160 = private unnamed_addr constant [4 x i8] c"and\00" +@.str6161 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str6162 = private unnamed_addr constant [10 x i8] c", label %\00" @.str6163 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str6164 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str6165 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6166 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str6167 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str6168 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str6169 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str6170 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str6171 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str6172 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6173 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6174 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str6175 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6176 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str6177 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str6178 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str6179 = private unnamed_addr constant [2 x i8] c"<\00" -@.str6180 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str6181 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str6182 = private unnamed_addr constant [4 x i8] c"sle\00" -@.str6183 = private unnamed_addr constant [2 x i8] c">\00" -@.str6184 = private unnamed_addr constant [4 x i8] c"sgt\00" -@.str6185 = private unnamed_addr constant [3 x i8] c">=\00" -@.str6186 = private unnamed_addr constant [4 x i8] c"sge\00" -@.str6187 = private unnamed_addr constant [3 x i8] c"==\00" -@.str6188 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str6189 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str6190 = private unnamed_addr constant [2 x i8] c"<\00" -@.str6191 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str6192 = private unnamed_addr constant [2 x i8] c">\00" -@.str6193 = private unnamed_addr constant [3 x i8] c">=\00" -@.str6194 = private unnamed_addr constant [3 x i8] c"==\00" -@.str6195 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str6196 = private unnamed_addr constant [2 x i8] c"+\00" -@.str6197 = private unnamed_addr constant [4 x i8] c"add\00" -@.str6198 = private unnamed_addr constant [2 x i8] c"-\00" -@.str6199 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str6200 = private unnamed_addr constant [2 x i8] c"*\00" -@.str6201 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str6202 = private unnamed_addr constant [2 x i8] c"/\00" -@.str6203 = private unnamed_addr constant [5 x i8] c"sdiv\00" -@.str6204 = private unnamed_addr constant [2 x i8] c"&\00" -@.str6205 = private unnamed_addr constant [4 x i8] c"and\00" -@.str6206 = private unnamed_addr constant [2 x i8] c"|\00" -@.str6207 = private unnamed_addr constant [3 x i8] c"or\00" -@.str6208 = private unnamed_addr constant [2 x i8] c"^\00" -@.str6209 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str6210 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str6211 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str6212 = private unnamed_addr constant [3 x i8] c">>\00" -@.str6213 = private unnamed_addr constant [5 x i8] c"lshr\00" -@.str6214 = private unnamed_addr constant [5 x i8] c"srem\00" -@.str6215 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str6216 = private unnamed_addr constant [9 x i8] c"shl i32 \00" -@.str6217 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str6218 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str6219 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str6220 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str6221 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str6164 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6165 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str6166 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str6167 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str6168 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6169 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str6170 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str6171 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str6172 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str6173 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str6174 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str6175 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6176 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6177 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str6178 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6179 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str6180 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str6181 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str6182 = private unnamed_addr constant [2 x i8] c"<\00" +@.str6183 = private unnamed_addr constant [4 x i8] c"slt\00" +@.str6184 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str6185 = private unnamed_addr constant [4 x i8] c"sle\00" +@.str6186 = private unnamed_addr constant [2 x i8] c">\00" +@.str6187 = private unnamed_addr constant [4 x i8] c"sgt\00" +@.str6188 = private unnamed_addr constant [3 x i8] c">=\00" +@.str6189 = private unnamed_addr constant [4 x i8] c"sge\00" +@.str6190 = private unnamed_addr constant [3 x i8] c"==\00" +@.str6191 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str6192 = private unnamed_addr constant [3 x i8] c"ne\00" +@.str6193 = private unnamed_addr constant [2 x i8] c"<\00" +@.str6194 = private unnamed_addr constant [3 x i8] c"<=\00" +@.str6195 = private unnamed_addr constant [2 x i8] c">\00" +@.str6196 = private unnamed_addr constant [3 x i8] c">=\00" +@.str6197 = private unnamed_addr constant [3 x i8] c"==\00" +@.str6198 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str6199 = private unnamed_addr constant [2 x i8] c"+\00" +@.str6200 = private unnamed_addr constant [4 x i8] c"add\00" +@.str6201 = private unnamed_addr constant [2 x i8] c"-\00" +@.str6202 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str6203 = private unnamed_addr constant [2 x i8] c"*\00" +@.str6204 = private unnamed_addr constant [4 x i8] c"mul\00" +@.str6205 = private unnamed_addr constant [2 x i8] c"/\00" +@.str6206 = private unnamed_addr constant [5 x i8] c"sdiv\00" +@.str6207 = private unnamed_addr constant [2 x i8] c"&\00" +@.str6208 = private unnamed_addr constant [4 x i8] c"and\00" +@.str6209 = private unnamed_addr constant [2 x i8] c"|\00" +@.str6210 = private unnamed_addr constant [3 x i8] c"or\00" +@.str6211 = private unnamed_addr constant [2 x i8] c"^\00" +@.str6212 = private unnamed_addr constant [4 x i8] c"xor\00" +@.str6213 = private unnamed_addr constant [3 x i8] c"<<\00" +@.str6214 = private unnamed_addr constant [4 x i8] c"shl\00" +@.str6215 = private unnamed_addr constant [3 x i8] c">>\00" +@.str6216 = private unnamed_addr constant [5 x i8] c"lshr\00" +@.str6217 = private unnamed_addr constant [5 x i8] c"srem\00" +@.str6218 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str6219 = private unnamed_addr constant [9 x i8] c"shl i32 \00" +@.str6220 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str6221 = private unnamed_addr constant [4 x i8] c"i64\00" @.str6222 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str6223 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str6224 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str6225 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str6223 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str6224 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str6225 = private unnamed_addr constant [4 x i8] c"i32\00" @.str6226 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str6227 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str6228 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str6229 = private unnamed_addr constant [2 x i8] c"+\00" -@.str6230 = private unnamed_addr constant [29 x i8] c"call ptr @lp_str_concat(ptr \00" -@.str6231 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6232 = private unnamed_addr constant [2 x i8] c")\00" -@.str6233 = private unnamed_addr constant [7 x i8] c"string\00" -@.str6234 = private unnamed_addr constant [25 x i8] c"call i32 @lp_str_eq(ptr \00" -@.str6235 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6236 = private unnamed_addr constant [2 x i8] c")\00" -@.str6237 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str6238 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str6239 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str6240 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str6241 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str6242 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str6243 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str6244 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str6245 = private unnamed_addr constant [5 x i8] c"long\00" -@.str6246 = private unnamed_addr constant [4 x i8] c"int\00" -@.str6247 = private unnamed_addr constant [4 x i8] c"and\00" -@.str6248 = private unnamed_addr constant [3 x i8] c"or\00" -@.str6249 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str6250 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str6251 = private unnamed_addr constant [2 x i8] c"+\00" -@.str6252 = private unnamed_addr constant [2 x i8] c"+\00" -@.str6253 = private unnamed_addr constant [3 x i8] c"==\00" -@.str6254 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str6255 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str6256 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str6257 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str6258 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str6259 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str6227 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str6228 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str6229 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str6230 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str6231 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str6232 = private unnamed_addr constant [2 x i8] c"+\00" +@.str6233 = private unnamed_addr constant [29 x i8] c"call ptr @lp_str_concat(ptr \00" +@.str6234 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6235 = private unnamed_addr constant [2 x i8] c")\00" +@.str6236 = private unnamed_addr constant [7 x i8] c"string\00" +@.str6237 = private unnamed_addr constant [25 x i8] c"call i32 @lp_str_eq(ptr \00" +@.str6238 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6239 = private unnamed_addr constant [2 x i8] c")\00" +@.str6240 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str6241 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str6242 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str6243 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str6244 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str6245 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str6246 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str6247 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str6248 = private unnamed_addr constant [5 x i8] c"long\00" +@.str6249 = private unnamed_addr constant [4 x i8] c"int\00" +@.str6250 = private unnamed_addr constant [4 x i8] c"and\00" +@.str6251 = private unnamed_addr constant [3 x i8] c"or\00" +@.str6252 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str6253 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str6254 = private unnamed_addr constant [2 x i8] c"+\00" +@.str6255 = private unnamed_addr constant [2 x i8] c"+\00" +@.str6256 = private unnamed_addr constant [3 x i8] c"==\00" +@.str6257 = private unnamed_addr constant [3 x i8] c"!=\00" +@.str6258 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str6259 = private unnamed_addr constant [6 x i8] c"fixed\00" @.str6260 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str6261 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str6262 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str6263 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str6264 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str6265 = private unnamed_addr constant [2 x i8] c" \00" -@.str6266 = private unnamed_addr constant [2 x i8] c" \00" -@.str6267 = private unnamed_addr constant [3 x i8] c", \00" -@.str6268 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str6269 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str6270 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str6271 = private unnamed_addr constant [6 x i8] c" i64 \00" -@.str6272 = private unnamed_addr constant [3 x i8] c", \00" -@.str6273 = private unnamed_addr constant [5 x i8] c"long\00" -@.str6274 = private unnamed_addr constant [2 x i8] c"*\00" -@.str6275 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str6276 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str6277 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str6278 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str6279 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str6280 = private unnamed_addr constant [3 x i8] c", \00" -@.str6281 = private unnamed_addr constant [10 x i8] c"ashr i64 \00" -@.str6282 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str6283 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str6284 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str6285 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str6286 = private unnamed_addr constant [2 x i8] c"/\00" -@.str6287 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str6288 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str6289 = private unnamed_addr constant [9 x i8] c"shl i64 \00" -@.str6290 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str6291 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str6292 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str6293 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" -@.str6294 = private unnamed_addr constant [3 x i8] c", \00" -@.str6295 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str6296 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str6297 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str6298 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str6299 = private unnamed_addr constant [3 x i8] c", \00" +@.str6261 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str6262 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str6263 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str6264 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str6265 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str6266 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str6267 = private unnamed_addr constant [6 x i8] c"icmp \00" +@.str6268 = private unnamed_addr constant [2 x i8] c" \00" +@.str6269 = private unnamed_addr constant [2 x i8] c" \00" +@.str6270 = private unnamed_addr constant [3 x i8] c", \00" +@.str6271 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str6272 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str6273 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str6274 = private unnamed_addr constant [6 x i8] c" i64 \00" +@.str6275 = private unnamed_addr constant [3 x i8] c", \00" +@.str6276 = private unnamed_addr constant [5 x i8] c"long\00" +@.str6277 = private unnamed_addr constant [2 x i8] c"*\00" +@.str6278 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str6279 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str6280 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str6281 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str6282 = private unnamed_addr constant [9 x i8] c"mul i64 \00" +@.str6283 = private unnamed_addr constant [3 x i8] c", \00" +@.str6284 = private unnamed_addr constant [10 x i8] c"ashr i64 \00" +@.str6285 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str6286 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str6287 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str6288 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str6289 = private unnamed_addr constant [2 x i8] c"/\00" +@.str6290 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str6291 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str6292 = private unnamed_addr constant [9 x i8] c"shl i64 \00" +@.str6293 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str6294 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str6295 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str6296 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" +@.str6297 = private unnamed_addr constant [3 x i8] c", \00" +@.str6298 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str6299 = private unnamed_addr constant [8 x i8] c" to i32\00" @.str6300 = private unnamed_addr constant [6 x i8] c"fixed\00" @.str6301 = private unnamed_addr constant [6 x i8] c" i32 \00" @.str6302 = private unnamed_addr constant [3 x i8] c", \00" -@.str6303 = private unnamed_addr constant [4 x i8] c"int\00" -@.str6304 = private unnamed_addr constant [59 x i8] c"named and positional arguments cannot be mixed in one call\00" -@.str6305 = private unnamed_addr constant [26 x i8] c"wrong number of arguments\00" -@.str6306 = private unnamed_addr constant [19 x i8] c"no argument named \00" -@.str6307 = private unnamed_addr constant [5 x i8] c"exok\00" -@.str6308 = private unnamed_addr constant [6 x i8] c"exbad\00" -@.str6309 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str6310 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str6311 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str6312 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6313 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str6314 = private unnamed_addr constant [33 x i8] c" store i32 1, ptr @L_test_fail\0A\00" -@.str6315 = private unnamed_addr constant [1 x i8] c"\00" -@.str6316 = private unnamed_addr constant [51 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_line, ptr \00" -@.str6317 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str6318 = private unnamed_addr constant [53 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_expect, ptr \00" -@.str6319 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str6320 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str6321 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str6322 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str6323 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6324 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str6325 = private unnamed_addr constant [12 x i8] c"despawn_all\00" -@.str6326 = private unnamed_addr constant [32 x i8] c".despawn_all takes no arguments\00" -@.str6327 = private unnamed_addr constant [7 x i8] c"__each\00" -@.str6328 = private unnamed_addr constant [5 x i8] c"self\00" -@.str6329 = private unnamed_addr constant [2 x i8] c"0\00" -@.str6330 = private unnamed_addr constant [5 x i8] c"void\00" -@.str6331 = private unnamed_addr constant [6 x i8] c"count\00" -@.str6332 = private unnamed_addr constant [26 x i8] c".count takes no arguments\00" -@.str6333 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str6334 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str6335 = private unnamed_addr constant [2 x i8] c"0\00" +@.str6303 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str6304 = private unnamed_addr constant [6 x i8] c" i32 \00" +@.str6305 = private unnamed_addr constant [3 x i8] c", \00" +@.str6306 = private unnamed_addr constant [4 x i8] c"int\00" +@.str6307 = private unnamed_addr constant [59 x i8] c"named and positional arguments cannot be mixed in one call\00" +@.str6308 = private unnamed_addr constant [26 x i8] c"wrong number of arguments\00" +@.str6309 = private unnamed_addr constant [19 x i8] c"no argument named \00" +@.str6310 = private unnamed_addr constant [5 x i8] c"exok\00" +@.str6311 = private unnamed_addr constant [6 x i8] c"exbad\00" +@.str6312 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str6313 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str6314 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str6315 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6316 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str6317 = private unnamed_addr constant [33 x i8] c" store i32 1, ptr @L_test_fail\0A\00" +@.str6318 = private unnamed_addr constant [1 x i8] c"\00" +@.str6319 = private unnamed_addr constant [51 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_line, ptr \00" +@.str6320 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str6321 = private unnamed_addr constant [53 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_expect, ptr \00" +@.str6322 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str6323 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str6324 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str6325 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str6326 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6327 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str6328 = private unnamed_addr constant [12 x i8] c"despawn_all\00" +@.str6329 = private unnamed_addr constant [32 x i8] c".despawn_all takes no arguments\00" +@.str6330 = private unnamed_addr constant [7 x i8] c"__each\00" +@.str6331 = private unnamed_addr constant [5 x i8] c"self\00" +@.str6332 = private unnamed_addr constant [2 x i8] c"0\00" +@.str6333 = private unnamed_addr constant [5 x i8] c"void\00" +@.str6334 = private unnamed_addr constant [6 x i8] c"count\00" +@.str6335 = private unnamed_addr constant [26 x i8] c".count takes no arguments\00" @.str6336 = private unnamed_addr constant [4 x i8] c"i32\00" @.str6337 = private unnamed_addr constant [4 x i8] c"i32\00" @.str6338 = private unnamed_addr constant [2 x i8] c"0\00" -@.str6339 = private unnamed_addr constant [3 x i8] c"cc\00" -@.str6340 = private unnamed_addr constant [3 x i8] c"cb\00" -@.str6341 = private unnamed_addr constant [3 x i8] c"cn\00" -@.str6342 = private unnamed_addr constant [3 x i8] c"ce\00" -@.str6343 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str6344 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6345 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str6346 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str6347 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_entc\00" -@.str6348 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str6349 = private unnamed_addr constant [3 x i8] c", \00" -@.str6350 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str6351 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str6352 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str6353 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6354 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str6355 = private unnamed_addr constant [25 x i8] c"getelementptr inbounds [\00" -@.str6356 = private unnamed_addr constant [35 x i8] c" x i32], ptr @L_alive, i32 0, i32 \00" -@.str6357 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str6339 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str6340 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str6341 = private unnamed_addr constant [2 x i8] c"0\00" +@.str6342 = private unnamed_addr constant [3 x i8] c"cc\00" +@.str6343 = private unnamed_addr constant [3 x i8] c"cb\00" +@.str6344 = private unnamed_addr constant [3 x i8] c"cn\00" +@.str6345 = private unnamed_addr constant [3 x i8] c"ce\00" +@.str6346 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str6347 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6348 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str6349 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str6350 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_entc\00" +@.str6351 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str6352 = private unnamed_addr constant [3 x i8] c", \00" +@.str6353 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str6354 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str6355 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str6356 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6357 = private unnamed_addr constant [3 x i8] c":\0A\00" @.str6358 = private unnamed_addr constant [25 x i8] c"getelementptr inbounds [\00" -@.str6359 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" -@.str6360 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str6361 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" -@.str6362 = private unnamed_addr constant [9 x i8] c"zext i8 \00" -@.str6363 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str6364 = private unnamed_addr constant [9 x i8] c"and i32 \00" -@.str6365 = private unnamed_addr constant [3 x i8] c", \00" -@.str6366 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str6367 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str6359 = private unnamed_addr constant [35 x i8] c" x i32], ptr @L_alive, i32 0, i32 \00" +@.str6360 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str6361 = private unnamed_addr constant [25 x i8] c"getelementptr inbounds [\00" +@.str6362 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" +@.str6363 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str6364 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" +@.str6365 = private unnamed_addr constant [9 x i8] c"zext i8 \00" +@.str6366 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str6367 = private unnamed_addr constant [9 x i8] c"and i32 \00" @.str6368 = private unnamed_addr constant [3 x i8] c", \00" -@.str6369 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str6370 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str6371 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6372 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str6373 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str6374 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str6375 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str6376 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str6377 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6378 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str6379 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str6380 = private unnamed_addr constant [4 x i8] c"int\00" -@.str6381 = private unnamed_addr constant [2 x i8] c".\00" -@.str6382 = private unnamed_addr constant [32 x i8] c" takes one argument: the entity\00" -@.str6383 = private unnamed_addr constant [3 x i8] c"of\00" -@.str6384 = private unnamed_addr constant [25 x i8] c"getelementptr inbounds [\00" -@.str6385 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" -@.str6386 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" -@.str6387 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str6388 = private unnamed_addr constant [14 x i8] c"icmp ult i32 \00" -@.str6389 = private unnamed_addr constant [3 x i8] c", \00" -@.str6390 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str6391 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str6392 = private unnamed_addr constant [8 x i8] c", i32 0\00" -@.str6393 = private unnamed_addr constant [25 x i8] c"getelementptr inbounds [\00" -@.str6394 = private unnamed_addr constant [35 x i8] c" x i32], ptr @L_alive, i32 0, i32 \00" -@.str6395 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str6396 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str6397 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str6398 = private unnamed_addr constant [25 x i8] c"getelementptr inbounds [\00" -@.str6399 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" -@.str6400 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str6401 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" -@.str6402 = private unnamed_addr constant [12 x i8] c"icmp ne i8 \00" -@.str6403 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str6404 = private unnamed_addr constant [8 x i8] c"and i1 \00" -@.str6405 = private unnamed_addr constant [3 x i8] c", \00" -@.str6406 = private unnamed_addr constant [8 x i8] c"and i1 \00" -@.str6407 = private unnamed_addr constant [3 x i8] c", \00" -@.str6408 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str6409 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str6410 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str6411 = private unnamed_addr constant [5 x i8] c"name\00" -@.str6412 = private unnamed_addr constant [7 x i8] c"string\00" -@.str6413 = private unnamed_addr constant [3 x i8] c"of\00" -@.str6414 = private unnamed_addr constant [4 x i8] c"has\00" -@.str6415 = private unnamed_addr constant [6 x i8] c"count\00" -@.str6416 = private unnamed_addr constant [12 x i8] c"despawn_all\00" -@.str6417 = private unnamed_addr constant [2 x i8] c"_\00" -@.str6418 = private unnamed_addr constant [5 x i8] c"Math\00" -@.str6419 = private unnamed_addr constant [22 x i8] c"unknown builtin Math.\00" -@.str6420 = private unnamed_addr constant [5 x i8] c"Text\00" -@.str6421 = private unnamed_addr constant [22 x i8] c"unknown builtin Text.\00" -@.str6422 = private unnamed_addr constant [5 x i8] c"List\00" -@.str6423 = private unnamed_addr constant [22 x i8] c"unknown builtin List.\00" -@.str6424 = private unnamed_addr constant [5 x i8] c"Ease\00" -@.str6425 = private unnamed_addr constant [22 x i8] c"unknown builtin Ease.\00" -@.str6426 = private unnamed_addr constant [5 x i8] c"Anim\00" -@.str6427 = private unnamed_addr constant [6 x i8] c"Tween\00" -@.str6428 = private unnamed_addr constant [10 x i8] c"Collision\00" -@.str6429 = private unnamed_addr constant [27 x i8] c"unknown builtin Collision.\00" -@.str6430 = private unnamed_addr constant [7 x i8] c"Memory\00" -@.str6431 = private unnamed_addr constant [24 x i8] c"unknown builtin Memory.\00" -@.str6432 = private unnamed_addr constant [6 x i8] c"Color\00" -@.str6433 = private unnamed_addr constant [23 x i8] c"unknown builtin Color.\00" -@.str6434 = private unnamed_addr constant [5 x i8] c"Time\00" -@.str6435 = private unnamed_addr constant [22 x i8] c"unknown builtin Time.\00" -@.str6436 = private unnamed_addr constant [5 x i8] c"Hash\00" -@.str6437 = private unnamed_addr constant [22 x i8] c"unknown builtin Hash.\00" -@.str6438 = private unnamed_addr constant [7 x i8] c"Crypto\00" -@.str6439 = private unnamed_addr constant [24 x i8] c"unknown builtin Crypto.\00" -@.str6440 = private unnamed_addr constant [5 x i8] c"Uuid\00" -@.str6441 = private unnamed_addr constant [22 x i8] c"unknown builtin Uuid.\00" -@.str6442 = private unnamed_addr constant [6 x i8] c"Noise\00" -@.str6443 = private unnamed_addr constant [23 x i8] c"unknown builtin Noise.\00" -@.str6444 = private unnamed_addr constant [4 x i8] c"Log\00" -@.str6445 = private unnamed_addr constant [21 x i8] c"unknown builtin Log.\00" -@.str6446 = private unnamed_addr constant [3 x i8] c"Os\00" -@.str6447 = private unnamed_addr constant [20 x i8] c"unknown builtin Os.\00" -@.str6448 = private unnamed_addr constant [8 x i8] c"Unicode\00" -@.str6449 = private unnamed_addr constant [25 x i8] c"unknown builtin Unicode.\00" -@.str6450 = private unnamed_addr constant [3 x i8] c"Fs\00" -@.str6451 = private unnamed_addr constant [20 x i8] c"unknown builtin Fs.\00" -@.str6452 = private unnamed_addr constant [5 x i8] c"Path\00" -@.str6453 = private unnamed_addr constant [22 x i8] c"unknown builtin Path.\00" -@.str6454 = private unnamed_addr constant [5 x i8] c"Mime\00" -@.str6455 = private unnamed_addr constant [22 x i8] c"unknown builtin Mime.\00" -@.str6456 = private unnamed_addr constant [7 x i8] c"Vector\00" -@.str6457 = private unnamed_addr constant [24 x i8] c"unknown builtin Vector.\00" -@.str6458 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str6459 = private unnamed_addr constant [23 x i8] c"unknown builtin IVec2.\00" -@.str6460 = private unnamed_addr constant [5 x i8] c"Rect\00" -@.str6461 = private unnamed_addr constant [22 x i8] c"unknown builtin Rect.\00" -@.str6462 = private unnamed_addr constant [9 x i8] c"Duration\00" -@.str6463 = private unnamed_addr constant [26 x i8] c"unknown builtin Duration.\00" -@.str6464 = private unnamed_addr constant [5 x i8] c"Date\00" -@.str6465 = private unnamed_addr constant [22 x i8] c"unknown builtin Date.\00" -@.str6466 = private unnamed_addr constant [9 x i8] c"DateTime\00" -@.str6467 = private unnamed_addr constant [26 x i8] c"unknown builtin DateTime.\00" -@.str6468 = private unnamed_addr constant [6 x i8] c"Clock\00" -@.str6469 = private unnamed_addr constant [23 x i8] c"unknown builtin Clock.\00" -@.str6470 = private unnamed_addr constant [5 x i8] c"Pool\00" -@.str6471 = private unnamed_addr constant [9 x i8] c"capacity\00" -@.str6472 = private unnamed_addr constant [4 x i8] c"int\00" -@.str6473 = private unnamed_addr constant [9 x i8] c"reserved\00" -@.str6474 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_entc\00" +@.str6369 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str6370 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str6371 = private unnamed_addr constant [3 x i8] c", \00" +@.str6372 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str6373 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str6374 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6375 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str6376 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str6377 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str6378 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str6379 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str6380 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6381 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str6382 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str6383 = private unnamed_addr constant [4 x i8] c"int\00" +@.str6384 = private unnamed_addr constant [2 x i8] c".\00" +@.str6385 = private unnamed_addr constant [32 x i8] c" takes one argument: the entity\00" +@.str6386 = private unnamed_addr constant [3 x i8] c"of\00" +@.str6387 = private unnamed_addr constant [25 x i8] c"getelementptr inbounds [\00" +@.str6388 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" +@.str6389 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" +@.str6390 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str6391 = private unnamed_addr constant [14 x i8] c"icmp ult i32 \00" +@.str6392 = private unnamed_addr constant [3 x i8] c", \00" +@.str6393 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str6394 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str6395 = private unnamed_addr constant [8 x i8] c", i32 0\00" +@.str6396 = private unnamed_addr constant [25 x i8] c"getelementptr inbounds [\00" +@.str6397 = private unnamed_addr constant [35 x i8] c" x i32], ptr @L_alive, i32 0, i32 \00" +@.str6398 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str6399 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str6400 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str6401 = private unnamed_addr constant [25 x i8] c"getelementptr inbounds [\00" +@.str6402 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" +@.str6403 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str6404 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" +@.str6405 = private unnamed_addr constant [12 x i8] c"icmp ne i8 \00" +@.str6406 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str6407 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str6408 = private unnamed_addr constant [3 x i8] c", \00" +@.str6409 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str6410 = private unnamed_addr constant [3 x i8] c", \00" +@.str6411 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str6412 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str6413 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str6414 = private unnamed_addr constant [5 x i8] c"name\00" +@.str6415 = private unnamed_addr constant [7 x i8] c"string\00" +@.str6416 = private unnamed_addr constant [3 x i8] c"of\00" +@.str6417 = private unnamed_addr constant [4 x i8] c"has\00" +@.str6418 = private unnamed_addr constant [6 x i8] c"count\00" +@.str6419 = private unnamed_addr constant [12 x i8] c"despawn_all\00" +@.str6420 = private unnamed_addr constant [2 x i8] c"_\00" +@.str6421 = private unnamed_addr constant [5 x i8] c"Math\00" +@.str6422 = private unnamed_addr constant [22 x i8] c"unknown builtin Math.\00" +@.str6423 = private unnamed_addr constant [5 x i8] c"Text\00" +@.str6424 = private unnamed_addr constant [22 x i8] c"unknown builtin Text.\00" +@.str6425 = private unnamed_addr constant [5 x i8] c"List\00" +@.str6426 = private unnamed_addr constant [22 x i8] c"unknown builtin List.\00" +@.str6427 = private unnamed_addr constant [5 x i8] c"Ease\00" +@.str6428 = private unnamed_addr constant [22 x i8] c"unknown builtin Ease.\00" +@.str6429 = private unnamed_addr constant [5 x i8] c"Anim\00" +@.str6430 = private unnamed_addr constant [6 x i8] c"Tween\00" +@.str6431 = private unnamed_addr constant [10 x i8] c"Collision\00" +@.str6432 = private unnamed_addr constant [27 x i8] c"unknown builtin Collision.\00" +@.str6433 = private unnamed_addr constant [7 x i8] c"Memory\00" +@.str6434 = private unnamed_addr constant [24 x i8] c"unknown builtin Memory.\00" +@.str6435 = private unnamed_addr constant [6 x i8] c"Color\00" +@.str6436 = private unnamed_addr constant [23 x i8] c"unknown builtin Color.\00" +@.str6437 = private unnamed_addr constant [5 x i8] c"Time\00" +@.str6438 = private unnamed_addr constant [22 x i8] c"unknown builtin Time.\00" +@.str6439 = private unnamed_addr constant [5 x i8] c"Hash\00" +@.str6440 = private unnamed_addr constant [22 x i8] c"unknown builtin Hash.\00" +@.str6441 = private unnamed_addr constant [7 x i8] c"Crypto\00" +@.str6442 = private unnamed_addr constant [24 x i8] c"unknown builtin Crypto.\00" +@.str6443 = private unnamed_addr constant [5 x i8] c"Uuid\00" +@.str6444 = private unnamed_addr constant [22 x i8] c"unknown builtin Uuid.\00" +@.str6445 = private unnamed_addr constant [6 x i8] c"Noise\00" +@.str6446 = private unnamed_addr constant [23 x i8] c"unknown builtin Noise.\00" +@.str6447 = private unnamed_addr constant [4 x i8] c"Log\00" +@.str6448 = private unnamed_addr constant [21 x i8] c"unknown builtin Log.\00" +@.str6449 = private unnamed_addr constant [3 x i8] c"Os\00" +@.str6450 = private unnamed_addr constant [20 x i8] c"unknown builtin Os.\00" +@.str6451 = private unnamed_addr constant [8 x i8] c"Unicode\00" +@.str6452 = private unnamed_addr constant [25 x i8] c"unknown builtin Unicode.\00" +@.str6453 = private unnamed_addr constant [3 x i8] c"Fs\00" +@.str6454 = private unnamed_addr constant [20 x i8] c"unknown builtin Fs.\00" +@.str6455 = private unnamed_addr constant [5 x i8] c"Path\00" +@.str6456 = private unnamed_addr constant [22 x i8] c"unknown builtin Path.\00" +@.str6457 = private unnamed_addr constant [5 x i8] c"Mime\00" +@.str6458 = private unnamed_addr constant [22 x i8] c"unknown builtin Mime.\00" +@.str6459 = private unnamed_addr constant [7 x i8] c"Vector\00" +@.str6460 = private unnamed_addr constant [24 x i8] c"unknown builtin Vector.\00" +@.str6461 = private unnamed_addr constant [6 x i8] c"IVec2\00" +@.str6462 = private unnamed_addr constant [23 x i8] c"unknown builtin IVec2.\00" +@.str6463 = private unnamed_addr constant [5 x i8] c"Rect\00" +@.str6464 = private unnamed_addr constant [22 x i8] c"unknown builtin Rect.\00" +@.str6465 = private unnamed_addr constant [9 x i8] c"Duration\00" +@.str6466 = private unnamed_addr constant [26 x i8] c"unknown builtin Duration.\00" +@.str6467 = private unnamed_addr constant [5 x i8] c"Date\00" +@.str6468 = private unnamed_addr constant [22 x i8] c"unknown builtin Date.\00" +@.str6469 = private unnamed_addr constant [9 x i8] c"DateTime\00" +@.str6470 = private unnamed_addr constant [26 x i8] c"unknown builtin DateTime.\00" +@.str6471 = private unnamed_addr constant [6 x i8] c"Clock\00" +@.str6472 = private unnamed_addr constant [23 x i8] c"unknown builtin Clock.\00" +@.str6473 = private unnamed_addr constant [5 x i8] c"Pool\00" +@.str6474 = private unnamed_addr constant [9 x i8] c"capacity\00" @.str6475 = private unnamed_addr constant [4 x i8] c"int\00" -@.str6476 = private unnamed_addr constant [5 x i8] c"free\00" -@.str6477 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_freen\00" +@.str6476 = private unnamed_addr constant [9 x i8] c"reserved\00" +@.str6477 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_entc\00" @.str6478 = private unnamed_addr constant [4 x i8] c"int\00" -@.str6479 = private unnamed_addr constant [5 x i8] c"live\00" -@.str6480 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_entc\00" -@.str6481 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_freen\00" -@.str6482 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str6483 = private unnamed_addr constant [3 x i8] c", \00" -@.str6484 = private unnamed_addr constant [4 x i8] c"int\00" -@.str6485 = private unnamed_addr constant [22 x i8] c"unknown builtin Pool.\00" -@.str6486 = private unnamed_addr constant [7 x i8] c"Screen\00" -@.str6487 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str6488 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str6489 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6490 = private unnamed_addr constant [15 x i8] c"fill_rectangle\00" -@.str6491 = private unnamed_addr constant [10 x i8] c"fill_rect\00" -@.str6492 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6493 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6494 = private unnamed_addr constant [6 x i8] c"width\00" -@.str6495 = private unnamed_addr constant [7 x i8] c"height\00" -@.str6496 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6497 = private unnamed_addr constant [4 x i8] c"bar\00" -@.str6498 = private unnamed_addr constant [4 x i8] c"bar\00" -@.str6499 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6500 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6501 = private unnamed_addr constant [6 x i8] c"width\00" -@.str6502 = private unnamed_addr constant [7 x i8] c"height\00" -@.str6503 = private unnamed_addr constant [6 x i8] c"value\00" -@.str6504 = private unnamed_addr constant [4 x i8] c"max\00" -@.str6505 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6506 = private unnamed_addr constant [5 x i8] c"back\00" -@.str6507 = private unnamed_addr constant [15 x i8] c"draw_rectangle\00" -@.str6508 = private unnamed_addr constant [11 x i8] c"frame_rect\00" -@.str6509 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6510 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6511 = private unnamed_addr constant [6 x i8] c"width\00" -@.str6512 = private unnamed_addr constant [7 x i8] c"height\00" -@.str6513 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6514 = private unnamed_addr constant [10 x i8] c"put_pixel\00" -@.str6515 = private unnamed_addr constant [7 x i8] c"put_px\00" -@.str6516 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6517 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6518 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6519 = private unnamed_addr constant [10 x i8] c"draw_text\00" -@.str6520 = private unnamed_addr constant [5 x i8] c"text\00" -@.str6521 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6522 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6479 = private unnamed_addr constant [5 x i8] c"free\00" +@.str6480 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_freen\00" +@.str6481 = private unnamed_addr constant [4 x i8] c"int\00" +@.str6482 = private unnamed_addr constant [5 x i8] c"live\00" +@.str6483 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_entc\00" +@.str6484 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_freen\00" +@.str6485 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str6486 = private unnamed_addr constant [3 x i8] c", \00" +@.str6487 = private unnamed_addr constant [4 x i8] c"int\00" +@.str6488 = private unnamed_addr constant [22 x i8] c"unknown builtin Pool.\00" +@.str6489 = private unnamed_addr constant [7 x i8] c"Screen\00" +@.str6490 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str6491 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str6492 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6493 = private unnamed_addr constant [15 x i8] c"fill_rectangle\00" +@.str6494 = private unnamed_addr constant [10 x i8] c"fill_rect\00" +@.str6495 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6496 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6497 = private unnamed_addr constant [6 x i8] c"width\00" +@.str6498 = private unnamed_addr constant [7 x i8] c"height\00" +@.str6499 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6500 = private unnamed_addr constant [4 x i8] c"bar\00" +@.str6501 = private unnamed_addr constant [4 x i8] c"bar\00" +@.str6502 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6503 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6504 = private unnamed_addr constant [6 x i8] c"width\00" +@.str6505 = private unnamed_addr constant [7 x i8] c"height\00" +@.str6506 = private unnamed_addr constant [6 x i8] c"value\00" +@.str6507 = private unnamed_addr constant [4 x i8] c"max\00" +@.str6508 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6509 = private unnamed_addr constant [5 x i8] c"back\00" +@.str6510 = private unnamed_addr constant [15 x i8] c"draw_rectangle\00" +@.str6511 = private unnamed_addr constant [11 x i8] c"frame_rect\00" +@.str6512 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6513 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6514 = private unnamed_addr constant [6 x i8] c"width\00" +@.str6515 = private unnamed_addr constant [7 x i8] c"height\00" +@.str6516 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6517 = private unnamed_addr constant [10 x i8] c"put_pixel\00" +@.str6518 = private unnamed_addr constant [7 x i8] c"put_px\00" +@.str6519 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6520 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6521 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6522 = private unnamed_addr constant [10 x i8] c"draw_text\00" @.str6523 = private unnamed_addr constant [5 x i8] c"text\00" -@.str6524 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6525 = private unnamed_addr constant [6 x i8] c"scale\00" -@.str6526 = private unnamed_addr constant [12 x i8] c"draw_number\00" -@.str6527 = private unnamed_addr constant [9 x i8] c"text_int\00" -@.str6528 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6529 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6530 = private unnamed_addr constant [6 x i8] c"value\00" -@.str6531 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6532 = private unnamed_addr constant [6 x i8] c"scale\00" -@.str6533 = private unnamed_addr constant [5 x i8] c"show\00" -@.str6534 = private unnamed_addr constant [8 x i8] c"present\00" -@.str6535 = private unnamed_addr constant [6 x i8] c"width\00" -@.str6536 = private unnamed_addr constant [9 x i8] c"screen_w\00" -@.str6537 = private unnamed_addr constant [7 x i8] c"height\00" -@.str6538 = private unnamed_addr constant [9 x i8] c"screen_h\00" -@.str6539 = private unnamed_addr constant [7 x i8] c"status\00" -@.str6540 = private unnamed_addr constant [7 x i8] c"status\00" -@.str6541 = private unnamed_addr constant [5 x i8] c"text\00" -@.str6542 = private unnamed_addr constant [5 x i8] c"line\00" -@.str6543 = private unnamed_addr constant [5 x i8] c"line\00" -@.str6544 = private unnamed_addr constant [3 x i8] c"x1\00" -@.str6545 = private unnamed_addr constant [3 x i8] c"y1\00" -@.str6546 = private unnamed_addr constant [3 x i8] c"x2\00" -@.str6547 = private unnamed_addr constant [3 x i8] c"y2\00" -@.str6548 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6549 = private unnamed_addr constant [7 x i8] c"circle\00" -@.str6550 = private unnamed_addr constant [7 x i8] c"circle\00" -@.str6551 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6552 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6553 = private unnamed_addr constant [7 x i8] c"radius\00" -@.str6554 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6555 = private unnamed_addr constant [12 x i8] c"fill_circle\00" -@.str6556 = private unnamed_addr constant [12 x i8] c"fill_circle\00" -@.str6557 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6558 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6559 = private unnamed_addr constant [7 x i8] c"radius\00" -@.str6560 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6561 = private unnamed_addr constant [9 x i8] c"triangle\00" -@.str6562 = private unnamed_addr constant [9 x i8] c"triangle\00" -@.str6563 = private unnamed_addr constant [3 x i8] c"x1\00" -@.str6564 = private unnamed_addr constant [3 x i8] c"y1\00" -@.str6565 = private unnamed_addr constant [3 x i8] c"x2\00" -@.str6566 = private unnamed_addr constant [3 x i8] c"y2\00" -@.str6567 = private unnamed_addr constant [3 x i8] c"x3\00" -@.str6568 = private unnamed_addr constant [3 x i8] c"y3\00" -@.str6569 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6570 = private unnamed_addr constant [14 x i8] c"fill_triangle\00" -@.str6571 = private unnamed_addr constant [14 x i8] c"fill_triangle\00" -@.str6572 = private unnamed_addr constant [3 x i8] c"x1\00" -@.str6573 = private unnamed_addr constant [3 x i8] c"y1\00" -@.str6574 = private unnamed_addr constant [3 x i8] c"x2\00" -@.str6575 = private unnamed_addr constant [3 x i8] c"y2\00" -@.str6576 = private unnamed_addr constant [3 x i8] c"x3\00" -@.str6577 = private unnamed_addr constant [3 x i8] c"y3\00" -@.str6578 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6579 = private unnamed_addr constant [7 x i8] c"sprite\00" -@.str6580 = private unnamed_addr constant [12 x i8] c"draw_sprite\00" -@.str6581 = private unnamed_addr constant [3 x i8] c"id\00" -@.str6582 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6583 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6584 = private unnamed_addr constant [14 x i8] c"sprite_scaled\00" -@.str6585 = private unnamed_addr constant [19 x i8] c"draw_sprite_scaled\00" -@.str6586 = private unnamed_addr constant [3 x i8] c"id\00" -@.str6587 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6588 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6589 = private unnamed_addr constant [6 x i8] c"scale\00" -@.str6590 = private unnamed_addr constant [5 x i8] c"oval\00" -@.str6591 = private unnamed_addr constant [5 x i8] c"oval\00" -@.str6592 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6593 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6594 = private unnamed_addr constant [3 x i8] c"rx\00" -@.str6595 = private unnamed_addr constant [3 x i8] c"ry\00" -@.str6596 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6597 = private unnamed_addr constant [7 x i8] c"camera\00" -@.str6598 = private unnamed_addr constant [7 x i8] c"camera\00" -@.str6599 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6600 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6601 = private unnamed_addr constant [5 x i8] c"clip\00" -@.str6602 = private unnamed_addr constant [5 x i8] c"clip\00" -@.str6603 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6604 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6605 = private unnamed_addr constant [6 x i8] c"width\00" -@.str6606 = private unnamed_addr constant [7 x i8] c"height\00" -@.str6607 = private unnamed_addr constant [11 x i8] c"clip_reset\00" -@.str6608 = private unnamed_addr constant [11 x i8] c"clip_reset\00" -@.str6609 = private unnamed_addr constant [11 x i8] c"blend_mode\00" -@.str6610 = private unnamed_addr constant [11 x i8] c"blend_mode\00" -@.str6611 = private unnamed_addr constant [5 x i8] c"mode\00" -@.str6612 = private unnamed_addr constant [13 x i8] c"measure_text\00" -@.str6613 = private unnamed_addr constant [13 x i8] c"measure_text\00" -@.str6614 = private unnamed_addr constant [5 x i8] c"text\00" -@.str6615 = private unnamed_addr constant [6 x i8] c"pixel\00" -@.str6616 = private unnamed_addr constant [7 x i8] c"get_px\00" -@.str6617 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6618 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6619 = private unnamed_addr constant [7 x i8] c"Sprite\00" -@.str6620 = private unnamed_addr constant [6 x i8] c"sheet\00" -@.str6621 = private unnamed_addr constant [12 x i8] c"atlas_sheet\00" -@.str6622 = private unnamed_addr constant [5 x i8] c"path\00" -@.str6623 = private unnamed_addr constant [6 x i8] c"cellw\00" -@.str6624 = private unnamed_addr constant [6 x i8] c"cellh\00" -@.str6625 = private unnamed_addr constant [5 x i8] c"cell\00" -@.str6626 = private unnamed_addr constant [11 x i8] c"atlas_cell\00" -@.str6627 = private unnamed_addr constant [6 x i8] c"sheet\00" -@.str6628 = private unnamed_addr constant [4 x i8] c"col\00" -@.str6629 = private unnamed_addr constant [4 x i8] c"row\00" -@.str6630 = private unnamed_addr constant [10 x i8] c"cell_span\00" -@.str6631 = private unnamed_addr constant [16 x i8] c"atlas_cell_span\00" -@.str6632 = private unnamed_addr constant [6 x i8] c"sheet\00" -@.str6633 = private unnamed_addr constant [4 x i8] c"col\00" -@.str6634 = private unnamed_addr constant [4 x i8] c"row\00" -@.str6635 = private unnamed_addr constant [5 x i8] c"cols\00" -@.str6636 = private unnamed_addr constant [5 x i8] c"rows\00" -@.str6637 = private unnamed_addr constant [6 x i8] c"strip\00" -@.str6638 = private unnamed_addr constant [12 x i8] c"atlas_strip\00" -@.str6639 = private unnamed_addr constant [6 x i8] c"sheet\00" -@.str6640 = private unnamed_addr constant [4 x i8] c"col\00" -@.str6641 = private unnamed_addr constant [4 x i8] c"row\00" -@.str6642 = private unnamed_addr constant [6 x i8] c"count\00" -@.str6643 = private unnamed_addr constant [5 x i8] c"rows\00" -@.str6644 = private unnamed_addr constant [7 x i8] c"define\00" -@.str6645 = private unnamed_addr constant [13 x i8] c"atlas_define\00" -@.str6646 = private unnamed_addr constant [5 x i8] c"name\00" -@.str6647 = private unnamed_addr constant [6 x i8] c"sheet\00" -@.str6648 = private unnamed_addr constant [4 x i8] c"col\00" -@.str6649 = private unnamed_addr constant [4 x i8] c"row\00" -@.str6650 = private unnamed_addr constant [6 x i8] c"named\00" -@.str6651 = private unnamed_addr constant [12 x i8] c"atlas_named\00" -@.str6652 = private unnamed_addr constant [5 x i8] c"name\00" -@.str6653 = private unnamed_addr constant [5 x i8] c"draw\00" -@.str6654 = private unnamed_addr constant [11 x i8] c"atlas_draw\00" -@.str6655 = private unnamed_addr constant [3 x i8] c"id\00" -@.str6656 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6657 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6658 = private unnamed_addr constant [12 x i8] c"draw_scaled\00" -@.str6659 = private unnamed_addr constant [18 x i8] c"atlas_draw_scaled\00" -@.str6660 = private unnamed_addr constant [3 x i8] c"id\00" -@.str6661 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6662 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6663 = private unnamed_addr constant [6 x i8] c"scale\00" -@.str6664 = private unnamed_addr constant [11 x i8] c"draw_meter\00" -@.str6665 = private unnamed_addr constant [17 x i8] c"atlas_draw_meter\00" -@.str6666 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6667 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6668 = private unnamed_addr constant [6 x i8] c"value\00" -@.str6669 = private unnamed_addr constant [4 x i8] c"max\00" -@.str6670 = private unnamed_addr constant [9 x i8] c"per_icon\00" -@.str6671 = private unnamed_addr constant [8 x i8] c"spacing\00" -@.str6672 = private unnamed_addr constant [5 x i8] c"full\00" -@.str6673 = private unnamed_addr constant [5 x i8] c"half\00" -@.str6674 = private unnamed_addr constant [6 x i8] c"empty\00" -@.str6675 = private unnamed_addr constant [6 x i8] c"width\00" -@.str6676 = private unnamed_addr constant [12 x i8] c"atlas_width\00" -@.str6677 = private unnamed_addr constant [3 x i8] c"id\00" -@.str6678 = private unnamed_addr constant [7 x i8] c"height\00" -@.str6679 = private unnamed_addr constant [13 x i8] c"atlas_height\00" +@.str6524 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6525 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6526 = private unnamed_addr constant [5 x i8] c"text\00" +@.str6527 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6528 = private unnamed_addr constant [6 x i8] c"scale\00" +@.str6529 = private unnamed_addr constant [12 x i8] c"draw_number\00" +@.str6530 = private unnamed_addr constant [9 x i8] c"text_int\00" +@.str6531 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6532 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6533 = private unnamed_addr constant [6 x i8] c"value\00" +@.str6534 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6535 = private unnamed_addr constant [6 x i8] c"scale\00" +@.str6536 = private unnamed_addr constant [5 x i8] c"show\00" +@.str6537 = private unnamed_addr constant [8 x i8] c"present\00" +@.str6538 = private unnamed_addr constant [6 x i8] c"width\00" +@.str6539 = private unnamed_addr constant [9 x i8] c"screen_w\00" +@.str6540 = private unnamed_addr constant [7 x i8] c"height\00" +@.str6541 = private unnamed_addr constant [9 x i8] c"screen_h\00" +@.str6542 = private unnamed_addr constant [7 x i8] c"status\00" +@.str6543 = private unnamed_addr constant [7 x i8] c"status\00" +@.str6544 = private unnamed_addr constant [5 x i8] c"text\00" +@.str6545 = private unnamed_addr constant [5 x i8] c"line\00" +@.str6546 = private unnamed_addr constant [5 x i8] c"line\00" +@.str6547 = private unnamed_addr constant [3 x i8] c"x1\00" +@.str6548 = private unnamed_addr constant [3 x i8] c"y1\00" +@.str6549 = private unnamed_addr constant [3 x i8] c"x2\00" +@.str6550 = private unnamed_addr constant [3 x i8] c"y2\00" +@.str6551 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6552 = private unnamed_addr constant [7 x i8] c"circle\00" +@.str6553 = private unnamed_addr constant [7 x i8] c"circle\00" +@.str6554 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6555 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6556 = private unnamed_addr constant [7 x i8] c"radius\00" +@.str6557 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6558 = private unnamed_addr constant [12 x i8] c"fill_circle\00" +@.str6559 = private unnamed_addr constant [12 x i8] c"fill_circle\00" +@.str6560 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6561 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6562 = private unnamed_addr constant [7 x i8] c"radius\00" +@.str6563 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6564 = private unnamed_addr constant [9 x i8] c"triangle\00" +@.str6565 = private unnamed_addr constant [9 x i8] c"triangle\00" +@.str6566 = private unnamed_addr constant [3 x i8] c"x1\00" +@.str6567 = private unnamed_addr constant [3 x i8] c"y1\00" +@.str6568 = private unnamed_addr constant [3 x i8] c"x2\00" +@.str6569 = private unnamed_addr constant [3 x i8] c"y2\00" +@.str6570 = private unnamed_addr constant [3 x i8] c"x3\00" +@.str6571 = private unnamed_addr constant [3 x i8] c"y3\00" +@.str6572 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6573 = private unnamed_addr constant [14 x i8] c"fill_triangle\00" +@.str6574 = private unnamed_addr constant [14 x i8] c"fill_triangle\00" +@.str6575 = private unnamed_addr constant [3 x i8] c"x1\00" +@.str6576 = private unnamed_addr constant [3 x i8] c"y1\00" +@.str6577 = private unnamed_addr constant [3 x i8] c"x2\00" +@.str6578 = private unnamed_addr constant [3 x i8] c"y2\00" +@.str6579 = private unnamed_addr constant [3 x i8] c"x3\00" +@.str6580 = private unnamed_addr constant [3 x i8] c"y3\00" +@.str6581 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6582 = private unnamed_addr constant [7 x i8] c"sprite\00" +@.str6583 = private unnamed_addr constant [12 x i8] c"draw_sprite\00" +@.str6584 = private unnamed_addr constant [3 x i8] c"id\00" +@.str6585 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6586 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6587 = private unnamed_addr constant [14 x i8] c"sprite_scaled\00" +@.str6588 = private unnamed_addr constant [19 x i8] c"draw_sprite_scaled\00" +@.str6589 = private unnamed_addr constant [3 x i8] c"id\00" +@.str6590 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6591 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6592 = private unnamed_addr constant [6 x i8] c"scale\00" +@.str6593 = private unnamed_addr constant [5 x i8] c"oval\00" +@.str6594 = private unnamed_addr constant [5 x i8] c"oval\00" +@.str6595 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6596 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6597 = private unnamed_addr constant [3 x i8] c"rx\00" +@.str6598 = private unnamed_addr constant [3 x i8] c"ry\00" +@.str6599 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6600 = private unnamed_addr constant [7 x i8] c"camera\00" +@.str6601 = private unnamed_addr constant [7 x i8] c"camera\00" +@.str6602 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6603 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6604 = private unnamed_addr constant [5 x i8] c"clip\00" +@.str6605 = private unnamed_addr constant [5 x i8] c"clip\00" +@.str6606 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6607 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6608 = private unnamed_addr constant [6 x i8] c"width\00" +@.str6609 = private unnamed_addr constant [7 x i8] c"height\00" +@.str6610 = private unnamed_addr constant [11 x i8] c"clip_reset\00" +@.str6611 = private unnamed_addr constant [11 x i8] c"clip_reset\00" +@.str6612 = private unnamed_addr constant [11 x i8] c"blend_mode\00" +@.str6613 = private unnamed_addr constant [11 x i8] c"blend_mode\00" +@.str6614 = private unnamed_addr constant [5 x i8] c"mode\00" +@.str6615 = private unnamed_addr constant [13 x i8] c"measure_text\00" +@.str6616 = private unnamed_addr constant [13 x i8] c"measure_text\00" +@.str6617 = private unnamed_addr constant [5 x i8] c"text\00" +@.str6618 = private unnamed_addr constant [6 x i8] c"pixel\00" +@.str6619 = private unnamed_addr constant [7 x i8] c"get_px\00" +@.str6620 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6621 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6622 = private unnamed_addr constant [7 x i8] c"Sprite\00" +@.str6623 = private unnamed_addr constant [6 x i8] c"sheet\00" +@.str6624 = private unnamed_addr constant [12 x i8] c"atlas_sheet\00" +@.str6625 = private unnamed_addr constant [5 x i8] c"path\00" +@.str6626 = private unnamed_addr constant [6 x i8] c"cellw\00" +@.str6627 = private unnamed_addr constant [6 x i8] c"cellh\00" +@.str6628 = private unnamed_addr constant [5 x i8] c"cell\00" +@.str6629 = private unnamed_addr constant [11 x i8] c"atlas_cell\00" +@.str6630 = private unnamed_addr constant [6 x i8] c"sheet\00" +@.str6631 = private unnamed_addr constant [4 x i8] c"col\00" +@.str6632 = private unnamed_addr constant [4 x i8] c"row\00" +@.str6633 = private unnamed_addr constant [10 x i8] c"cell_span\00" +@.str6634 = private unnamed_addr constant [16 x i8] c"atlas_cell_span\00" +@.str6635 = private unnamed_addr constant [6 x i8] c"sheet\00" +@.str6636 = private unnamed_addr constant [4 x i8] c"col\00" +@.str6637 = private unnamed_addr constant [4 x i8] c"row\00" +@.str6638 = private unnamed_addr constant [5 x i8] c"cols\00" +@.str6639 = private unnamed_addr constant [5 x i8] c"rows\00" +@.str6640 = private unnamed_addr constant [6 x i8] c"strip\00" +@.str6641 = private unnamed_addr constant [12 x i8] c"atlas_strip\00" +@.str6642 = private unnamed_addr constant [6 x i8] c"sheet\00" +@.str6643 = private unnamed_addr constant [4 x i8] c"col\00" +@.str6644 = private unnamed_addr constant [4 x i8] c"row\00" +@.str6645 = private unnamed_addr constant [6 x i8] c"count\00" +@.str6646 = private unnamed_addr constant [5 x i8] c"rows\00" +@.str6647 = private unnamed_addr constant [7 x i8] c"define\00" +@.str6648 = private unnamed_addr constant [13 x i8] c"atlas_define\00" +@.str6649 = private unnamed_addr constant [5 x i8] c"name\00" +@.str6650 = private unnamed_addr constant [6 x i8] c"sheet\00" +@.str6651 = private unnamed_addr constant [4 x i8] c"col\00" +@.str6652 = private unnamed_addr constant [4 x i8] c"row\00" +@.str6653 = private unnamed_addr constant [6 x i8] c"named\00" +@.str6654 = private unnamed_addr constant [12 x i8] c"atlas_named\00" +@.str6655 = private unnamed_addr constant [5 x i8] c"name\00" +@.str6656 = private unnamed_addr constant [5 x i8] c"draw\00" +@.str6657 = private unnamed_addr constant [11 x i8] c"atlas_draw\00" +@.str6658 = private unnamed_addr constant [3 x i8] c"id\00" +@.str6659 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6660 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6661 = private unnamed_addr constant [12 x i8] c"draw_scaled\00" +@.str6662 = private unnamed_addr constant [18 x i8] c"atlas_draw_scaled\00" +@.str6663 = private unnamed_addr constant [3 x i8] c"id\00" +@.str6664 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6665 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6666 = private unnamed_addr constant [6 x i8] c"scale\00" +@.str6667 = private unnamed_addr constant [11 x i8] c"draw_meter\00" +@.str6668 = private unnamed_addr constant [17 x i8] c"atlas_draw_meter\00" +@.str6669 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6670 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6671 = private unnamed_addr constant [6 x i8] c"value\00" +@.str6672 = private unnamed_addr constant [4 x i8] c"max\00" +@.str6673 = private unnamed_addr constant [9 x i8] c"per_icon\00" +@.str6674 = private unnamed_addr constant [8 x i8] c"spacing\00" +@.str6675 = private unnamed_addr constant [5 x i8] c"full\00" +@.str6676 = private unnamed_addr constant [5 x i8] c"half\00" +@.str6677 = private unnamed_addr constant [6 x i8] c"empty\00" +@.str6678 = private unnamed_addr constant [6 x i8] c"width\00" +@.str6679 = private unnamed_addr constant [12 x i8] c"atlas_width\00" @.str6680 = private unnamed_addr constant [3 x i8] c"id\00" -@.str6681 = private unnamed_addr constant [5 x i8] c"Font\00" -@.str6682 = private unnamed_addr constant [5 x i8] c"load\00" -@.str6683 = private unnamed_addr constant [10 x i8] c"font_load\00" -@.str6684 = private unnamed_addr constant [5 x i8] c"path\00" -@.str6685 = private unnamed_addr constant [3 x i8] c"Ui\00" -@.str6686 = private unnamed_addr constant [6 x i8] c"build\00" -@.str6687 = private unnamed_addr constant [9 x i8] c"ui_build\00" -@.str6688 = private unnamed_addr constant [5 x i8] c"open\00" -@.str6689 = private unnamed_addr constant [8 x i8] c"ui_open\00" -@.str6690 = private unnamed_addr constant [3 x i8] c"id\00" -@.str6691 = private unnamed_addr constant [6 x i8] c"close\00" -@.str6692 = private unnamed_addr constant [9 x i8] c"ui_close\00" -@.str6693 = private unnamed_addr constant [5 x i8] c"tick\00" -@.str6694 = private unnamed_addr constant [8 x i8] c"ui_tick\00" -@.str6695 = private unnamed_addr constant [4 x i8] c"key\00" -@.str6696 = private unnamed_addr constant [8 x i8] c"clicked\00" -@.str6697 = private unnamed_addr constant [11 x i8] c"ui_clicked\00" -@.str6698 = private unnamed_addr constant [3 x i8] c"id\00" -@.str6699 = private unnamed_addr constant [9 x i8] c"set_text\00" -@.str6700 = private unnamed_addr constant [12 x i8] c"ui_set_text\00" +@.str6681 = private unnamed_addr constant [7 x i8] c"height\00" +@.str6682 = private unnamed_addr constant [13 x i8] c"atlas_height\00" +@.str6683 = private unnamed_addr constant [3 x i8] c"id\00" +@.str6684 = private unnamed_addr constant [5 x i8] c"Font\00" +@.str6685 = private unnamed_addr constant [5 x i8] c"load\00" +@.str6686 = private unnamed_addr constant [10 x i8] c"font_load\00" +@.str6687 = private unnamed_addr constant [5 x i8] c"path\00" +@.str6688 = private unnamed_addr constant [3 x i8] c"Ui\00" +@.str6689 = private unnamed_addr constant [6 x i8] c"build\00" +@.str6690 = private unnamed_addr constant [9 x i8] c"ui_build\00" +@.str6691 = private unnamed_addr constant [5 x i8] c"open\00" +@.str6692 = private unnamed_addr constant [8 x i8] c"ui_open\00" +@.str6693 = private unnamed_addr constant [3 x i8] c"id\00" +@.str6694 = private unnamed_addr constant [6 x i8] c"close\00" +@.str6695 = private unnamed_addr constant [9 x i8] c"ui_close\00" +@.str6696 = private unnamed_addr constant [5 x i8] c"tick\00" +@.str6697 = private unnamed_addr constant [8 x i8] c"ui_tick\00" +@.str6698 = private unnamed_addr constant [4 x i8] c"key\00" +@.str6699 = private unnamed_addr constant [8 x i8] c"clicked\00" +@.str6700 = private unnamed_addr constant [11 x i8] c"ui_clicked\00" @.str6701 = private unnamed_addr constant [3 x i8] c"id\00" -@.str6702 = private unnamed_addr constant [5 x i8] c"text\00" -@.str6703 = private unnamed_addr constant [7 x i8] c"render\00" -@.str6704 = private unnamed_addr constant [10 x i8] c"ui_render\00" -@.str6705 = private unnamed_addr constant [5 x i8] c"File\00" -@.str6706 = private unnamed_addr constant [5 x i8] c"open\00" -@.str6707 = private unnamed_addr constant [10 x i8] c"file_open\00" -@.str6708 = private unnamed_addr constant [5 x i8] c"path\00" -@.str6709 = private unnamed_addr constant [5 x i8] c"mode\00" -@.str6710 = private unnamed_addr constant [5 x i8] c"read\00" -@.str6711 = private unnamed_addr constant [10 x i8] c"file_read\00" -@.str6712 = private unnamed_addr constant [5 x i8] c"file\00" -@.str6713 = private unnamed_addr constant [7 x i8] c"buffer\00" -@.str6714 = private unnamed_addr constant [6 x i8] c"count\00" -@.str6715 = private unnamed_addr constant [6 x i8] c"write\00" -@.str6716 = private unnamed_addr constant [11 x i8] c"file_write\00" -@.str6717 = private unnamed_addr constant [5 x i8] c"file\00" -@.str6718 = private unnamed_addr constant [7 x i8] c"buffer\00" -@.str6719 = private unnamed_addr constant [6 x i8] c"count\00" -@.str6720 = private unnamed_addr constant [5 x i8] c"seek\00" -@.str6721 = private unnamed_addr constant [10 x i8] c"file_seek\00" -@.str6722 = private unnamed_addr constant [5 x i8] c"file\00" -@.str6723 = private unnamed_addr constant [7 x i8] c"offset\00" -@.str6724 = private unnamed_addr constant [7 x i8] c"whence\00" -@.str6725 = private unnamed_addr constant [5 x i8] c"tell\00" -@.str6726 = private unnamed_addr constant [10 x i8] c"file_tell\00" -@.str6727 = private unnamed_addr constant [5 x i8] c"file\00" -@.str6728 = private unnamed_addr constant [6 x i8] c"close\00" -@.str6729 = private unnamed_addr constant [11 x i8] c"file_close\00" +@.str6702 = private unnamed_addr constant [9 x i8] c"set_text\00" +@.str6703 = private unnamed_addr constant [12 x i8] c"ui_set_text\00" +@.str6704 = private unnamed_addr constant [3 x i8] c"id\00" +@.str6705 = private unnamed_addr constant [5 x i8] c"text\00" +@.str6706 = private unnamed_addr constant [7 x i8] c"render\00" +@.str6707 = private unnamed_addr constant [10 x i8] c"ui_render\00" +@.str6708 = private unnamed_addr constant [5 x i8] c"File\00" +@.str6709 = private unnamed_addr constant [5 x i8] c"open\00" +@.str6710 = private unnamed_addr constant [10 x i8] c"file_open\00" +@.str6711 = private unnamed_addr constant [5 x i8] c"path\00" +@.str6712 = private unnamed_addr constant [5 x i8] c"mode\00" +@.str6713 = private unnamed_addr constant [5 x i8] c"read\00" +@.str6714 = private unnamed_addr constant [10 x i8] c"file_read\00" +@.str6715 = private unnamed_addr constant [5 x i8] c"file\00" +@.str6716 = private unnamed_addr constant [7 x i8] c"buffer\00" +@.str6717 = private unnamed_addr constant [6 x i8] c"count\00" +@.str6718 = private unnamed_addr constant [6 x i8] c"write\00" +@.str6719 = private unnamed_addr constant [11 x i8] c"file_write\00" +@.str6720 = private unnamed_addr constant [5 x i8] c"file\00" +@.str6721 = private unnamed_addr constant [7 x i8] c"buffer\00" +@.str6722 = private unnamed_addr constant [6 x i8] c"count\00" +@.str6723 = private unnamed_addr constant [5 x i8] c"seek\00" +@.str6724 = private unnamed_addr constant [10 x i8] c"file_seek\00" +@.str6725 = private unnamed_addr constant [5 x i8] c"file\00" +@.str6726 = private unnamed_addr constant [7 x i8] c"offset\00" +@.str6727 = private unnamed_addr constant [7 x i8] c"whence\00" +@.str6728 = private unnamed_addr constant [5 x i8] c"tell\00" +@.str6729 = private unnamed_addr constant [10 x i8] c"file_tell\00" @.str6730 = private unnamed_addr constant [5 x i8] c"file\00" -@.str6731 = private unnamed_addr constant [3 x i8] c"Fx\00" -@.str6732 = private unnamed_addr constant [7 x i8] c"sparks\00" -@.str6733 = private unnamed_addr constant [10 x i8] c"fx_sparks\00" -@.str6734 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6735 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6736 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6737 = private unnamed_addr constant [6 x i8] c"count\00" -@.str6738 = private unnamed_addr constant [7 x i8] c"number\00" -@.str6739 = private unnamed_addr constant [10 x i8] c"fx_number\00" -@.str6740 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6741 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6742 = private unnamed_addr constant [6 x i8] c"value\00" -@.str6743 = private unnamed_addr constant [6 x i8] c"color\00" -@.str6744 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str6745 = private unnamed_addr constant [9 x i8] c"fx_clear\00" -@.str6746 = private unnamed_addr constant [7 x i8] c"Prefab\00" -@.str6747 = private unnamed_addr constant [9 x i8] c"spawn_at\00" -@.str6748 = private unnamed_addr constant [48 x i8] c"Prefab.spawn_at: the program declares no prefab\00" -@.str6749 = private unnamed_addr constant [9 x i8] c"Position\00" -@.str6750 = private unnamed_addr constant [42 x i8] c"Prefab.spawn_at needs a Position property\00" -@.str6751 = private unnamed_addr constant [5 x i8] c"name\00" -@.str6752 = private unnamed_addr constant [3 x i8] c"at\00" -@.str6753 = private unnamed_addr constant [30 x i8] c"call i32 @L_spawn_prefab(ptr \00" -@.str6754 = private unnamed_addr constant [2 x i8] c")\00" -@.str6755 = private unnamed_addr constant [25 x i8] c"getelementptr inbounds [\00" -@.str6756 = private unnamed_addr constant [48 x i8] c" x %Cmp_Position], ptr @S_Position, i32 0, i32 \00" -@.str6757 = private unnamed_addr constant [43 x i8] c"getelementptr inbounds %Cmp_Position, ptr \00" -@.str6758 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str6759 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6731 = private unnamed_addr constant [6 x i8] c"close\00" +@.str6732 = private unnamed_addr constant [11 x i8] c"file_close\00" +@.str6733 = private unnamed_addr constant [5 x i8] c"file\00" +@.str6734 = private unnamed_addr constant [3 x i8] c"Fx\00" +@.str6735 = private unnamed_addr constant [7 x i8] c"sparks\00" +@.str6736 = private unnamed_addr constant [10 x i8] c"fx_sparks\00" +@.str6737 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6738 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6739 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6740 = private unnamed_addr constant [6 x i8] c"count\00" +@.str6741 = private unnamed_addr constant [7 x i8] c"number\00" +@.str6742 = private unnamed_addr constant [10 x i8] c"fx_number\00" +@.str6743 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6744 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6745 = private unnamed_addr constant [6 x i8] c"value\00" +@.str6746 = private unnamed_addr constant [6 x i8] c"color\00" +@.str6747 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str6748 = private unnamed_addr constant [9 x i8] c"fx_clear\00" +@.str6749 = private unnamed_addr constant [7 x i8] c"Prefab\00" +@.str6750 = private unnamed_addr constant [9 x i8] c"spawn_at\00" +@.str6751 = private unnamed_addr constant [48 x i8] c"Prefab.spawn_at: the program declares no prefab\00" +@.str6752 = private unnamed_addr constant [9 x i8] c"Position\00" +@.str6753 = private unnamed_addr constant [42 x i8] c"Prefab.spawn_at needs a Position property\00" +@.str6754 = private unnamed_addr constant [5 x i8] c"name\00" +@.str6755 = private unnamed_addr constant [3 x i8] c"at\00" +@.str6756 = private unnamed_addr constant [30 x i8] c"call i32 @L_spawn_prefab(ptr \00" +@.str6757 = private unnamed_addr constant [2 x i8] c")\00" +@.str6758 = private unnamed_addr constant [25 x i8] c"getelementptr inbounds [\00" +@.str6759 = private unnamed_addr constant [48 x i8] c" x %Cmp_Position], ptr @S_Position, i32 0, i32 \00" @.str6760 = private unnamed_addr constant [43 x i8] c"getelementptr inbounds %Cmp_Position, ptr \00" @.str6761 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str6762 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6763 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str6764 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str6765 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6762 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6763 = private unnamed_addr constant [43 x i8] c"getelementptr inbounds %Cmp_Position, ptr \00" +@.str6764 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str6765 = private unnamed_addr constant [2 x i8] c"y\00" @.str6766 = private unnamed_addr constant [13 x i8] c" store i32 \00" @.str6767 = private unnamed_addr constant [7 x i8] c", ptr \00" @.str6768 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str6769 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str6770 = private unnamed_addr constant [6 x i8] c"spawn\00" -@.str6771 = private unnamed_addr constant [45 x i8] c"Prefab.spawn: the program declares no prefab\00" -@.str6772 = private unnamed_addr constant [5 x i8] c"name\00" -@.str6773 = private unnamed_addr constant [51 x i8] c"Prefab.spawn takes one argument: the prefab's name\00" -@.str6774 = private unnamed_addr constant [30 x i8] c"call i32 @L_spawn_prefab(ptr \00" -@.str6775 = private unnamed_addr constant [2 x i8] c")\00" -@.str6776 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str6777 = private unnamed_addr constant [24 x i8] c"unknown builtin Prefab.\00" -@.str6778 = private unnamed_addr constant [7 x i8] c"Assets\00" -@.str6779 = private unnamed_addr constant [5 x i8] c"font\00" -@.str6780 = private unnamed_addr constant [12 x i8] c"assets_font\00" -@.str6781 = private unnamed_addr constant [5 x i8] c"name\00" -@.str6782 = private unnamed_addr constant [12 x i8] c"enqueue_dir\00" -@.str6783 = private unnamed_addr constant [19 x i8] c"assets_enqueue_dir\00" -@.str6784 = private unnamed_addr constant [5 x i8] c"path\00" -@.str6785 = private unnamed_addr constant [6 x i8] c"image\00" -@.str6786 = private unnamed_addr constant [12 x i8] c"atlas_image\00" +@.str6769 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str6770 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str6771 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str6772 = private unnamed_addr constant [7 x i8] c"entity\00" +@.str6773 = private unnamed_addr constant [6 x i8] c"spawn\00" +@.str6774 = private unnamed_addr constant [45 x i8] c"Prefab.spawn: the program declares no prefab\00" +@.str6775 = private unnamed_addr constant [5 x i8] c"name\00" +@.str6776 = private unnamed_addr constant [51 x i8] c"Prefab.spawn takes one argument: the prefab's name\00" +@.str6777 = private unnamed_addr constant [30 x i8] c"call i32 @L_spawn_prefab(ptr \00" +@.str6778 = private unnamed_addr constant [2 x i8] c")\00" +@.str6779 = private unnamed_addr constant [7 x i8] c"entity\00" +@.str6780 = private unnamed_addr constant [24 x i8] c"unknown builtin Prefab.\00" +@.str6781 = private unnamed_addr constant [7 x i8] c"Assets\00" +@.str6782 = private unnamed_addr constant [5 x i8] c"font\00" +@.str6783 = private unnamed_addr constant [12 x i8] c"assets_font\00" +@.str6784 = private unnamed_addr constant [5 x i8] c"name\00" +@.str6785 = private unnamed_addr constant [12 x i8] c"enqueue_dir\00" +@.str6786 = private unnamed_addr constant [19 x i8] c"assets_enqueue_dir\00" @.str6787 = private unnamed_addr constant [5 x i8] c"path\00" -@.str6788 = private unnamed_addr constant [5 x i8] c"load\00" +@.str6788 = private unnamed_addr constant [6 x i8] c"image\00" @.str6789 = private unnamed_addr constant [12 x i8] c"atlas_image\00" @.str6790 = private unnamed_addr constant [5 x i8] c"path\00" -@.str6791 = private unnamed_addr constant [4 x i8] c"get\00" -@.str6792 = private unnamed_addr constant [12 x i8] c"atlas_named\00" -@.str6793 = private unnamed_addr constant [5 x i8] c"name\00" -@.str6794 = private unnamed_addr constant [8 x i8] c"enqueue\00" -@.str6795 = private unnamed_addr constant [15 x i8] c"assets_enqueue\00" +@.str6791 = private unnamed_addr constant [5 x i8] c"load\00" +@.str6792 = private unnamed_addr constant [12 x i8] c"atlas_image\00" +@.str6793 = private unnamed_addr constant [5 x i8] c"path\00" +@.str6794 = private unnamed_addr constant [4 x i8] c"get\00" +@.str6795 = private unnamed_addr constant [12 x i8] c"atlas_named\00" @.str6796 = private unnamed_addr constant [5 x i8] c"name\00" -@.str6797 = private unnamed_addr constant [5 x i8] c"path\00" -@.str6798 = private unnamed_addr constant [5 x i8] c"pump\00" -@.str6799 = private unnamed_addr constant [12 x i8] c"assets_pump\00" -@.str6800 = private unnamed_addr constant [4 x i8] c"max\00" -@.str6801 = private unnamed_addr constant [6 x i8] c"total\00" -@.str6802 = private unnamed_addr constant [13 x i8] c"assets_total\00" -@.str6803 = private unnamed_addr constant [7 x i8] c"loaded\00" -@.str6804 = private unnamed_addr constant [14 x i8] c"assets_loaded\00" -@.str6805 = private unnamed_addr constant [6 x i8] c"ready\00" -@.str6806 = private unnamed_addr constant [13 x i8] c"assets_ready\00" -@.str6807 = private unnamed_addr constant [9 x i8] c"progress\00" -@.str6808 = private unnamed_addr constant [16 x i8] c"assets_progress\00" -@.str6809 = private unnamed_addr constant [7 x i8] c"Camera\00" -@.str6810 = private unnamed_addr constant [4 x i8] c"set\00" -@.str6811 = private unnamed_addr constant [7 x i8] c"camera\00" -@.str6812 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6813 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6814 = private unnamed_addr constant [7 x i8] c"follow\00" -@.str6815 = private unnamed_addr constant [14 x i8] c"camera_follow\00" -@.str6816 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6817 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6818 = private unnamed_addr constant [5 x i8] c"lerp\00" -@.str6819 = private unnamed_addr constant [6 x i8] c"shake\00" -@.str6820 = private unnamed_addr constant [13 x i8] c"camera_shake\00" -@.str6821 = private unnamed_addr constant [7 x i8] c"amount\00" -@.str6822 = private unnamed_addr constant [10 x i8] c"shake_for\00" -@.str6823 = private unnamed_addr constant [17 x i8] c"camera_shake_for\00" +@.str6797 = private unnamed_addr constant [8 x i8] c"enqueue\00" +@.str6798 = private unnamed_addr constant [15 x i8] c"assets_enqueue\00" +@.str6799 = private unnamed_addr constant [5 x i8] c"name\00" +@.str6800 = private unnamed_addr constant [5 x i8] c"path\00" +@.str6801 = private unnamed_addr constant [5 x i8] c"pump\00" +@.str6802 = private unnamed_addr constant [12 x i8] c"assets_pump\00" +@.str6803 = private unnamed_addr constant [4 x i8] c"max\00" +@.str6804 = private unnamed_addr constant [6 x i8] c"total\00" +@.str6805 = private unnamed_addr constant [13 x i8] c"assets_total\00" +@.str6806 = private unnamed_addr constant [7 x i8] c"loaded\00" +@.str6807 = private unnamed_addr constant [14 x i8] c"assets_loaded\00" +@.str6808 = private unnamed_addr constant [6 x i8] c"ready\00" +@.str6809 = private unnamed_addr constant [13 x i8] c"assets_ready\00" +@.str6810 = private unnamed_addr constant [9 x i8] c"progress\00" +@.str6811 = private unnamed_addr constant [16 x i8] c"assets_progress\00" +@.str6812 = private unnamed_addr constant [7 x i8] c"Camera\00" +@.str6813 = private unnamed_addr constant [4 x i8] c"set\00" +@.str6814 = private unnamed_addr constant [7 x i8] c"camera\00" +@.str6815 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6816 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6817 = private unnamed_addr constant [7 x i8] c"follow\00" +@.str6818 = private unnamed_addr constant [14 x i8] c"camera_follow\00" +@.str6819 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6820 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6821 = private unnamed_addr constant [5 x i8] c"lerp\00" +@.str6822 = private unnamed_addr constant [6 x i8] c"shake\00" +@.str6823 = private unnamed_addr constant [13 x i8] c"camera_shake\00" @.str6824 = private unnamed_addr constant [7 x i8] c"amount\00" -@.str6825 = private unnamed_addr constant [7 x i8] c"frames\00" -@.str6826 = private unnamed_addr constant [5 x i8] c"zoom\00" -@.str6827 = private unnamed_addr constant [12 x i8] c"camera_zoom\00" -@.str6828 = private unnamed_addr constant [6 x i8] c"scale\00" -@.str6829 = private unnamed_addr constant [4 x i8] c"Map\00" -@.str6830 = private unnamed_addr constant [5 x i8] c"size\00" -@.str6831 = private unnamed_addr constant [9 x i8] c"map_size\00" -@.str6832 = private unnamed_addr constant [6 x i8] c"width\00" -@.str6833 = private unnamed_addr constant [7 x i8] c"height\00" -@.str6834 = private unnamed_addr constant [4 x i8] c"row\00" -@.str6835 = private unnamed_addr constant [8 x i8] c"map_row\00" -@.str6836 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6837 = private unnamed_addr constant [6 x i8] c"cells\00" -@.str6838 = private unnamed_addr constant [5 x i8] c"tile\00" -@.str6839 = private unnamed_addr constant [5 x i8] c"tile\00" -@.str6840 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6841 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6842 = private unnamed_addr constant [4 x i8] c"get\00" -@.str6843 = private unnamed_addr constant [5 x i8] c"tile\00" -@.str6844 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6845 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6846 = private unnamed_addr constant [4 x i8] c"set\00" -@.str6847 = private unnamed_addr constant [8 x i8] c"map_set\00" -@.str6848 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6849 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6850 = private unnamed_addr constant [6 x i8] c"glyph\00" -@.str6851 = private unnamed_addr constant [5 x i8] c"fill\00" -@.str6852 = private unnamed_addr constant [9 x i8] c"map_fill\00" +@.str6825 = private unnamed_addr constant [10 x i8] c"shake_for\00" +@.str6826 = private unnamed_addr constant [17 x i8] c"camera_shake_for\00" +@.str6827 = private unnamed_addr constant [7 x i8] c"amount\00" +@.str6828 = private unnamed_addr constant [7 x i8] c"frames\00" +@.str6829 = private unnamed_addr constant [5 x i8] c"zoom\00" +@.str6830 = private unnamed_addr constant [12 x i8] c"camera_zoom\00" +@.str6831 = private unnamed_addr constant [6 x i8] c"scale\00" +@.str6832 = private unnamed_addr constant [4 x i8] c"Map\00" +@.str6833 = private unnamed_addr constant [5 x i8] c"size\00" +@.str6834 = private unnamed_addr constant [9 x i8] c"map_size\00" +@.str6835 = private unnamed_addr constant [6 x i8] c"width\00" +@.str6836 = private unnamed_addr constant [7 x i8] c"height\00" +@.str6837 = private unnamed_addr constant [4 x i8] c"row\00" +@.str6838 = private unnamed_addr constant [8 x i8] c"map_row\00" +@.str6839 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6840 = private unnamed_addr constant [6 x i8] c"cells\00" +@.str6841 = private unnamed_addr constant [5 x i8] c"tile\00" +@.str6842 = private unnamed_addr constant [5 x i8] c"tile\00" +@.str6843 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6844 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6845 = private unnamed_addr constant [4 x i8] c"get\00" +@.str6846 = private unnamed_addr constant [5 x i8] c"tile\00" +@.str6847 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6848 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6849 = private unnamed_addr constant [4 x i8] c"set\00" +@.str6850 = private unnamed_addr constant [8 x i8] c"map_set\00" +@.str6851 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6852 = private unnamed_addr constant [2 x i8] c"y\00" @.str6853 = private unnamed_addr constant [6 x i8] c"glyph\00" -@.str6854 = private unnamed_addr constant [5 x i8] c"rect\00" -@.str6855 = private unnamed_addr constant [9 x i8] c"map_rect\00" -@.str6856 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6857 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6858 = private unnamed_addr constant [6 x i8] c"width\00" -@.str6859 = private unnamed_addr constant [7 x i8] c"height\00" -@.str6860 = private unnamed_addr constant [6 x i8] c"glyph\00" -@.str6861 = private unnamed_addr constant [7 x i8] c"border\00" -@.str6862 = private unnamed_addr constant [11 x i8] c"map_border\00" +@.str6854 = private unnamed_addr constant [5 x i8] c"fill\00" +@.str6855 = private unnamed_addr constant [9 x i8] c"map_fill\00" +@.str6856 = private unnamed_addr constant [6 x i8] c"glyph\00" +@.str6857 = private unnamed_addr constant [5 x i8] c"rect\00" +@.str6858 = private unnamed_addr constant [9 x i8] c"map_rect\00" +@.str6859 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6860 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6861 = private unnamed_addr constant [6 x i8] c"width\00" +@.str6862 = private unnamed_addr constant [7 x i8] c"height\00" @.str6863 = private unnamed_addr constant [6 x i8] c"glyph\00" -@.str6864 = private unnamed_addr constant [12 x i8] c"random_cell\00" -@.str6865 = private unnamed_addr constant [16 x i8] c"map_random_cell\00" +@.str6864 = private unnamed_addr constant [7 x i8] c"border\00" +@.str6865 = private unnamed_addr constant [11 x i8] c"map_border\00" @.str6866 = private unnamed_addr constant [6 x i8] c"glyph\00" -@.str6867 = private unnamed_addr constant [16 x i8] c"random_cell_far\00" -@.str6868 = private unnamed_addr constant [20 x i8] c"map_random_cell_far\00" +@.str6867 = private unnamed_addr constant [12 x i8] c"random_cell\00" +@.str6868 = private unnamed_addr constant [16 x i8] c"map_random_cell\00" @.str6869 = private unnamed_addr constant [6 x i8] c"glyph\00" -@.str6870 = private unnamed_addr constant [5 x i8] c"from\00" -@.str6871 = private unnamed_addr constant [10 x i8] c"min_tiles\00" -@.str6872 = private unnamed_addr constant [9 x i8] c"is_solid\00" -@.str6873 = private unnamed_addr constant [13 x i8] c"map_is_solid\00" -@.str6874 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6875 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6876 = private unnamed_addr constant [12 x i8] c"is_solid_at\00" -@.str6877 = private unnamed_addr constant [16 x i8] c"map_is_solid_at\00" -@.str6878 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6879 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6880 = private unnamed_addr constant [8 x i8] c"to_tile\00" -@.str6881 = private unnamed_addr constant [12 x i8] c"map_to_tile\00" -@.str6882 = private unnamed_addr constant [6 x i8] c"pixel\00" -@.str6883 = private unnamed_addr constant [6 x i8] c"width\00" -@.str6884 = private unnamed_addr constant [10 x i8] c"map_width\00" -@.str6885 = private unnamed_addr constant [7 x i8] c"height\00" -@.str6886 = private unnamed_addr constant [11 x i8] c"map_height\00" -@.str6887 = private unnamed_addr constant [7 x i8] c"Random\00" -@.str6888 = private unnamed_addr constant [6 x i8] c"range\00" -@.str6889 = private unnamed_addr constant [10 x i8] c"rng_range\00" -@.str6890 = private unnamed_addr constant [4 x i8] c"low\00" -@.str6891 = private unnamed_addr constant [5 x i8] c"high\00" -@.str6892 = private unnamed_addr constant [9 x i8] c"weighted\00" -@.str6893 = private unnamed_addr constant [13 x i8] c"rng_weighted\00" -@.str6894 = private unnamed_addr constant [8 x i8] c"weights\00" -@.str6895 = private unnamed_addr constant [7 x i8] c"chance\00" -@.str6896 = private unnamed_addr constant [11 x i8] c"rng_chance\00" -@.str6897 = private unnamed_addr constant [8 x i8] c"percent\00" -@.str6898 = private unnamed_addr constant [5 x i8] c"seed\00" -@.str6899 = private unnamed_addr constant [5 x i8] c"seed\00" -@.str6900 = private unnamed_addr constant [6 x i8] c"value\00" -@.str6901 = private unnamed_addr constant [6 x i8] c"value\00" -@.str6902 = private unnamed_addr constant [10 x i8] c"rng_value\00" -@.str6903 = private unnamed_addr constant [4 x i8] c"int\00" -@.str6904 = private unnamed_addr constant [8 x i8] c"rng_int\00" -@.str6905 = private unnamed_addr constant [4 x i8] c"max\00" -@.str6906 = private unnamed_addr constant [5 x i8] c"sign\00" -@.str6907 = private unnamed_addr constant [9 x i8] c"rng_sign\00" -@.str6908 = private unnamed_addr constant [6 x i8] c"Input\00" -@.str6909 = private unnamed_addr constant [4 x i8] c"key\00" -@.str6910 = private unnamed_addr constant [4 x i8] c"key\00" -@.str6911 = private unnamed_addr constant [5 x i8] c"bind\00" -@.str6912 = private unnamed_addr constant [11 x i8] c"input_bind\00" -@.str6913 = private unnamed_addr constant [7 x i8] c"action\00" -@.str6914 = private unnamed_addr constant [4 x i8] c"key\00" -@.str6915 = private unnamed_addr constant [7 x i8] c"rebind\00" -@.str6916 = private unnamed_addr constant [13 x i8] c"input_rebind\00" -@.str6917 = private unnamed_addr constant [7 x i8] c"action\00" -@.str6918 = private unnamed_addr constant [4 x i8] c"old\00" -@.str6919 = private unnamed_addr constant [4 x i8] c"new\00" -@.str6920 = private unnamed_addr constant [5 x i8] c"poll\00" -@.str6921 = private unnamed_addr constant [11 x i8] c"input_poll\00" -@.str6922 = private unnamed_addr constant [5 x i8] c"down\00" -@.str6923 = private unnamed_addr constant [11 x i8] c"input_down\00" -@.str6924 = private unnamed_addr constant [8 x i8] c"pressed\00" -@.str6925 = private unnamed_addr constant [14 x i8] c"input_pressed\00" -@.str6926 = private unnamed_addr constant [7 x i8] c"record\00" -@.str6927 = private unnamed_addr constant [13 x i8] c"input_record\00" -@.str6928 = private unnamed_addr constant [7 x i8] c"replay\00" -@.str6929 = private unnamed_addr constant [13 x i8] c"input_replay\00" -@.str6930 = private unnamed_addr constant [7 x i8] c"action\00" -@.str6931 = private unnamed_addr constant [14 x i8] c"input_default\00" -@.str6932 = private unnamed_addr constant [7 x i8] c"action\00" -@.str6933 = private unnamed_addr constant [4 x i8] c"key\00" -@.str6934 = private unnamed_addr constant [9 x i8] c"bind_pad\00" -@.str6935 = private unnamed_addr constant [15 x i8] c"input_bind_pad\00" -@.str6936 = private unnamed_addr constant [7 x i8] c"action\00" -@.str6937 = private unnamed_addr constant [7 x i8] c"button\00" -@.str6938 = private unnamed_addr constant [7 x i8] c"active\00" -@.str6939 = private unnamed_addr constant [13 x i8] c"input_active\00" -@.str6940 = private unnamed_addr constant [7 x i8] c"action\00" -@.str6941 = private unnamed_addr constant [13 x i8] c"just_pressed\00" -@.str6942 = private unnamed_addr constant [19 x i8] c"input_just_pressed\00" +@.str6870 = private unnamed_addr constant [16 x i8] c"random_cell_far\00" +@.str6871 = private unnamed_addr constant [20 x i8] c"map_random_cell_far\00" +@.str6872 = private unnamed_addr constant [6 x i8] c"glyph\00" +@.str6873 = private unnamed_addr constant [5 x i8] c"from\00" +@.str6874 = private unnamed_addr constant [10 x i8] c"min_tiles\00" +@.str6875 = private unnamed_addr constant [9 x i8] c"is_solid\00" +@.str6876 = private unnamed_addr constant [13 x i8] c"map_is_solid\00" +@.str6877 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6878 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6879 = private unnamed_addr constant [12 x i8] c"is_solid_at\00" +@.str6880 = private unnamed_addr constant [16 x i8] c"map_is_solid_at\00" +@.str6881 = private unnamed_addr constant [2 x i8] c"x\00" +@.str6882 = private unnamed_addr constant [2 x i8] c"y\00" +@.str6883 = private unnamed_addr constant [8 x i8] c"to_tile\00" +@.str6884 = private unnamed_addr constant [12 x i8] c"map_to_tile\00" +@.str6885 = private unnamed_addr constant [6 x i8] c"pixel\00" +@.str6886 = private unnamed_addr constant [6 x i8] c"width\00" +@.str6887 = private unnamed_addr constant [10 x i8] c"map_width\00" +@.str6888 = private unnamed_addr constant [7 x i8] c"height\00" +@.str6889 = private unnamed_addr constant [11 x i8] c"map_height\00" +@.str6890 = private unnamed_addr constant [7 x i8] c"Random\00" +@.str6891 = private unnamed_addr constant [6 x i8] c"range\00" +@.str6892 = private unnamed_addr constant [10 x i8] c"rng_range\00" +@.str6893 = private unnamed_addr constant [4 x i8] c"low\00" +@.str6894 = private unnamed_addr constant [5 x i8] c"high\00" +@.str6895 = private unnamed_addr constant [9 x i8] c"weighted\00" +@.str6896 = private unnamed_addr constant [13 x i8] c"rng_weighted\00" +@.str6897 = private unnamed_addr constant [8 x i8] c"weights\00" +@.str6898 = private unnamed_addr constant [7 x i8] c"chance\00" +@.str6899 = private unnamed_addr constant [11 x i8] c"rng_chance\00" +@.str6900 = private unnamed_addr constant [8 x i8] c"percent\00" +@.str6901 = private unnamed_addr constant [5 x i8] c"seed\00" +@.str6902 = private unnamed_addr constant [5 x i8] c"seed\00" +@.str6903 = private unnamed_addr constant [6 x i8] c"value\00" +@.str6904 = private unnamed_addr constant [6 x i8] c"value\00" +@.str6905 = private unnamed_addr constant [10 x i8] c"rng_value\00" +@.str6906 = private unnamed_addr constant [4 x i8] c"int\00" +@.str6907 = private unnamed_addr constant [8 x i8] c"rng_int\00" +@.str6908 = private unnamed_addr constant [4 x i8] c"max\00" +@.str6909 = private unnamed_addr constant [5 x i8] c"sign\00" +@.str6910 = private unnamed_addr constant [9 x i8] c"rng_sign\00" +@.str6911 = private unnamed_addr constant [6 x i8] c"Input\00" +@.str6912 = private unnamed_addr constant [4 x i8] c"key\00" +@.str6913 = private unnamed_addr constant [4 x i8] c"key\00" +@.str6914 = private unnamed_addr constant [5 x i8] c"bind\00" +@.str6915 = private unnamed_addr constant [11 x i8] c"input_bind\00" +@.str6916 = private unnamed_addr constant [7 x i8] c"action\00" +@.str6917 = private unnamed_addr constant [4 x i8] c"key\00" +@.str6918 = private unnamed_addr constant [7 x i8] c"rebind\00" +@.str6919 = private unnamed_addr constant [13 x i8] c"input_rebind\00" +@.str6920 = private unnamed_addr constant [7 x i8] c"action\00" +@.str6921 = private unnamed_addr constant [4 x i8] c"old\00" +@.str6922 = private unnamed_addr constant [4 x i8] c"new\00" +@.str6923 = private unnamed_addr constant [5 x i8] c"poll\00" +@.str6924 = private unnamed_addr constant [11 x i8] c"input_poll\00" +@.str6925 = private unnamed_addr constant [5 x i8] c"down\00" +@.str6926 = private unnamed_addr constant [11 x i8] c"input_down\00" +@.str6927 = private unnamed_addr constant [8 x i8] c"pressed\00" +@.str6928 = private unnamed_addr constant [14 x i8] c"input_pressed\00" +@.str6929 = private unnamed_addr constant [7 x i8] c"record\00" +@.str6930 = private unnamed_addr constant [13 x i8] c"input_record\00" +@.str6931 = private unnamed_addr constant [7 x i8] c"replay\00" +@.str6932 = private unnamed_addr constant [13 x i8] c"input_replay\00" +@.str6933 = private unnamed_addr constant [7 x i8] c"action\00" +@.str6934 = private unnamed_addr constant [14 x i8] c"input_default\00" +@.str6935 = private unnamed_addr constant [7 x i8] c"action\00" +@.str6936 = private unnamed_addr constant [4 x i8] c"key\00" +@.str6937 = private unnamed_addr constant [9 x i8] c"bind_pad\00" +@.str6938 = private unnamed_addr constant [15 x i8] c"input_bind_pad\00" +@.str6939 = private unnamed_addr constant [7 x i8] c"action\00" +@.str6940 = private unnamed_addr constant [7 x i8] c"button\00" +@.str6941 = private unnamed_addr constant [7 x i8] c"active\00" +@.str6942 = private unnamed_addr constant [13 x i8] c"input_active\00" @.str6943 = private unnamed_addr constant [7 x i8] c"action\00" -@.str6944 = private unnamed_addr constant [14 x i8] c"just_released\00" -@.str6945 = private unnamed_addr constant [20 x i8] c"input_just_released\00" +@.str6944 = private unnamed_addr constant [13 x i8] c"just_pressed\00" +@.str6945 = private unnamed_addr constant [19 x i8] c"input_just_pressed\00" @.str6946 = private unnamed_addr constant [7 x i8] c"action\00" -@.str6947 = private unnamed_addr constant [9 x i8] c"key_down\00" -@.str6948 = private unnamed_addr constant [15 x i8] c"input_key_down\00" -@.str6949 = private unnamed_addr constant [4 x i8] c"key\00" -@.str6950 = private unnamed_addr constant [12 x i8] c"key_pressed\00" -@.str6951 = private unnamed_addr constant [18 x i8] c"input_key_pressed\00" +@.str6947 = private unnamed_addr constant [14 x i8] c"just_released\00" +@.str6948 = private unnamed_addr constant [20 x i8] c"input_just_released\00" +@.str6949 = private unnamed_addr constant [7 x i8] c"action\00" +@.str6950 = private unnamed_addr constant [9 x i8] c"key_down\00" +@.str6951 = private unnamed_addr constant [15 x i8] c"input_key_down\00" @.str6952 = private unnamed_addr constant [4 x i8] c"key\00" -@.str6953 = private unnamed_addr constant [13 x i8] c"key_released\00" -@.str6954 = private unnamed_addr constant [19 x i8] c"input_key_released\00" +@.str6953 = private unnamed_addr constant [12 x i8] c"key_pressed\00" +@.str6954 = private unnamed_addr constant [18 x i8] c"input_key_pressed\00" @.str6955 = private unnamed_addr constant [4 x i8] c"key\00" -@.str6956 = private unnamed_addr constant [6 x i8] c"press\00" -@.str6957 = private unnamed_addr constant [12 x i8] c"input_press\00" +@.str6956 = private unnamed_addr constant [13 x i8] c"key_released\00" +@.str6957 = private unnamed_addr constant [19 x i8] c"input_key_released\00" @.str6958 = private unnamed_addr constant [4 x i8] c"key\00" -@.str6959 = private unnamed_addr constant [8 x i8] c"release\00" -@.str6960 = private unnamed_addr constant [14 x i8] c"input_release\00" +@.str6959 = private unnamed_addr constant [6 x i8] c"press\00" +@.str6960 = private unnamed_addr constant [12 x i8] c"input_press\00" @.str6961 = private unnamed_addr constant [4 x i8] c"key\00" -@.str6962 = private unnamed_addr constant [5 x i8] c"axis\00" -@.str6963 = private unnamed_addr constant [11 x i8] c"input_axis\00" -@.str6964 = private unnamed_addr constant [4 x i8] c"neg\00" -@.str6965 = private unnamed_addr constant [4 x i8] c"pos\00" -@.str6966 = private unnamed_addr constant [7 x i8] c"axis_i\00" -@.str6967 = private unnamed_addr constant [13 x i8] c"input_axis_i\00" -@.str6968 = private unnamed_addr constant [4 x i8] c"neg\00" -@.str6969 = private unnamed_addr constant [4 x i8] c"pos\00" -@.str6970 = private unnamed_addr constant [7 x i8] c"move_i\00" -@.str6971 = private unnamed_addr constant [13 x i8] c"input_move_i\00" -@.str6972 = private unnamed_addr constant [7 x i8] c"vector\00" -@.str6973 = private unnamed_addr constant [13 x i8] c"input_vector\00" -@.str6974 = private unnamed_addr constant [5 x i8] c"left\00" -@.str6975 = private unnamed_addr constant [6 x i8] c"right\00" -@.str6976 = private unnamed_addr constant [3 x i8] c"up\00" -@.str6977 = private unnamed_addr constant [5 x i8] c"down\00" -@.str6978 = private unnamed_addr constant [9 x i8] c"strength\00" -@.str6979 = private unnamed_addr constant [15 x i8] c"input_strength\00" -@.str6980 = private unnamed_addr constant [7 x i8] c"action\00" -@.str6981 = private unnamed_addr constant [8 x i8] c"mouse_x\00" -@.str6982 = private unnamed_addr constant [14 x i8] c"input_mouse_x\00" -@.str6983 = private unnamed_addr constant [8 x i8] c"mouse_y\00" -@.str6984 = private unnamed_addr constant [14 x i8] c"input_mouse_y\00" -@.str6985 = private unnamed_addr constant [9 x i8] c"mouse_dx\00" -@.str6986 = private unnamed_addr constant [15 x i8] c"input_mouse_dx\00" -@.str6987 = private unnamed_addr constant [9 x i8] c"mouse_dy\00" -@.str6988 = private unnamed_addr constant [15 x i8] c"input_mouse_dy\00" -@.str6989 = private unnamed_addr constant [11 x i8] c"mouse_down\00" -@.str6990 = private unnamed_addr constant [17 x i8] c"input_mouse_down\00" -@.str6991 = private unnamed_addr constant [7 x i8] c"button\00" -@.str6992 = private unnamed_addr constant [6 x i8] c"wheel\00" -@.str6993 = private unnamed_addr constant [12 x i8] c"input_wheel\00" -@.str6994 = private unnamed_addr constant [10 x i8] c"set_mouse\00" -@.str6995 = private unnamed_addr constant [16 x i8] c"input_set_mouse\00" -@.str6996 = private unnamed_addr constant [2 x i8] c"x\00" -@.str6997 = private unnamed_addr constant [2 x i8] c"y\00" -@.str6998 = private unnamed_addr constant [8 x i8] c"buttons\00" -@.str6999 = private unnamed_addr constant [6 x i8] c"wheel\00" -@.str7000 = private unnamed_addr constant [14 x i8] c"pad_connected\00" -@.str7001 = private unnamed_addr constant [20 x i8] c"input_pad_connected\00" -@.str7002 = private unnamed_addr constant [4 x i8] c"pad\00" -@.str7003 = private unnamed_addr constant [11 x i8] c"pad_button\00" -@.str7004 = private unnamed_addr constant [17 x i8] c"input_pad_button\00" +@.str6962 = private unnamed_addr constant [8 x i8] c"release\00" +@.str6963 = private unnamed_addr constant [14 x i8] c"input_release\00" +@.str6964 = private unnamed_addr constant [4 x i8] c"key\00" +@.str6965 = private unnamed_addr constant [5 x i8] c"axis\00" +@.str6966 = private unnamed_addr constant [11 x i8] c"input_axis\00" +@.str6967 = private unnamed_addr constant [4 x i8] c"neg\00" +@.str6968 = private unnamed_addr constant [4 x i8] c"pos\00" +@.str6969 = private unnamed_addr constant [7 x i8] c"axis_i\00" +@.str6970 = private unnamed_addr constant [13 x i8] c"input_axis_i\00" +@.str6971 = private unnamed_addr constant [4 x i8] c"neg\00" +@.str6972 = private unnamed_addr constant [4 x i8] c"pos\00" +@.str6973 = private unnamed_addr constant [7 x i8] c"move_i\00" +@.str6974 = private unnamed_addr constant [13 x i8] c"input_move_i\00" +@.str6975 = private unnamed_addr constant [7 x i8] c"vector\00" +@.str6976 = private unnamed_addr constant [13 x i8] c"input_vector\00" +@.str6977 = private unnamed_addr constant [5 x i8] c"left\00" +@.str6978 = private unnamed_addr constant [6 x i8] c"right\00" +@.str6979 = private unnamed_addr constant [3 x i8] c"up\00" +@.str6980 = private unnamed_addr constant [5 x i8] c"down\00" +@.str6981 = private unnamed_addr constant [9 x i8] c"strength\00" +@.str6982 = private unnamed_addr constant [15 x i8] c"input_strength\00" +@.str6983 = private unnamed_addr constant [7 x i8] c"action\00" +@.str6984 = private unnamed_addr constant [8 x i8] c"mouse_x\00" +@.str6985 = private unnamed_addr constant [14 x i8] c"input_mouse_x\00" +@.str6986 = private unnamed_addr constant [8 x i8] c"mouse_y\00" +@.str6987 = private unnamed_addr constant [14 x i8] c"input_mouse_y\00" +@.str6988 = private unnamed_addr constant [9 x i8] c"mouse_dx\00" +@.str6989 = private unnamed_addr constant [15 x i8] c"input_mouse_dx\00" +@.str6990 = private unnamed_addr constant [9 x i8] c"mouse_dy\00" +@.str6991 = private unnamed_addr constant [15 x i8] c"input_mouse_dy\00" +@.str6992 = private unnamed_addr constant [11 x i8] c"mouse_down\00" +@.str6993 = private unnamed_addr constant [17 x i8] c"input_mouse_down\00" +@.str6994 = private unnamed_addr constant [7 x i8] c"button\00" +@.str6995 = private unnamed_addr constant [6 x i8] c"wheel\00" +@.str6996 = private unnamed_addr constant [12 x i8] c"input_wheel\00" +@.str6997 = private unnamed_addr constant [10 x i8] c"set_mouse\00" +@.str6998 = private unnamed_addr constant [16 x i8] c"input_set_mouse\00" +@.str6999 = private unnamed_addr constant [2 x i8] c"x\00" +@.str7000 = private unnamed_addr constant [2 x i8] c"y\00" +@.str7001 = private unnamed_addr constant [8 x i8] c"buttons\00" +@.str7002 = private unnamed_addr constant [6 x i8] c"wheel\00" +@.str7003 = private unnamed_addr constant [14 x i8] c"pad_connected\00" +@.str7004 = private unnamed_addr constant [20 x i8] c"input_pad_connected\00" @.str7005 = private unnamed_addr constant [4 x i8] c"pad\00" -@.str7006 = private unnamed_addr constant [7 x i8] c"button\00" -@.str7007 = private unnamed_addr constant [9 x i8] c"pad_axis\00" -@.str7008 = private unnamed_addr constant [15 x i8] c"input_pad_axis\00" -@.str7009 = private unnamed_addr constant [4 x i8] c"pad\00" -@.str7010 = private unnamed_addr constant [5 x i8] c"axis\00" -@.str7011 = private unnamed_addr constant [8 x i8] c"set_pad\00" -@.str7012 = private unnamed_addr constant [14 x i8] c"input_set_pad\00" -@.str7013 = private unnamed_addr constant [4 x i8] c"pad\00" -@.str7014 = private unnamed_addr constant [10 x i8] c"connected\00" -@.str7015 = private unnamed_addr constant [8 x i8] c"buttons\00" -@.str7016 = private unnamed_addr constant [3 x i8] c"lx\00" -@.str7017 = private unnamed_addr constant [3 x i8] c"ly\00" -@.str7018 = private unnamed_addr constant [3 x i8] c"rx\00" -@.str7019 = private unnamed_addr constant [3 x i8] c"ry\00" -@.str7020 = private unnamed_addr constant [12 x i8] c"touch_count\00" -@.str7021 = private unnamed_addr constant [18 x i8] c"input_touch_count\00" -@.str7022 = private unnamed_addr constant [8 x i8] c"touch_x\00" -@.str7023 = private unnamed_addr constant [14 x i8] c"input_touch_x\00" -@.str7024 = private unnamed_addr constant [6 x i8] c"index\00" -@.str7025 = private unnamed_addr constant [8 x i8] c"touch_y\00" -@.str7026 = private unnamed_addr constant [14 x i8] c"input_touch_y\00" +@.str7006 = private unnamed_addr constant [11 x i8] c"pad_button\00" +@.str7007 = private unnamed_addr constant [17 x i8] c"input_pad_button\00" +@.str7008 = private unnamed_addr constant [4 x i8] c"pad\00" +@.str7009 = private unnamed_addr constant [7 x i8] c"button\00" +@.str7010 = private unnamed_addr constant [9 x i8] c"pad_axis\00" +@.str7011 = private unnamed_addr constant [15 x i8] c"input_pad_axis\00" +@.str7012 = private unnamed_addr constant [4 x i8] c"pad\00" +@.str7013 = private unnamed_addr constant [5 x i8] c"axis\00" +@.str7014 = private unnamed_addr constant [8 x i8] c"set_pad\00" +@.str7015 = private unnamed_addr constant [14 x i8] c"input_set_pad\00" +@.str7016 = private unnamed_addr constant [4 x i8] c"pad\00" +@.str7017 = private unnamed_addr constant [10 x i8] c"connected\00" +@.str7018 = private unnamed_addr constant [8 x i8] c"buttons\00" +@.str7019 = private unnamed_addr constant [3 x i8] c"lx\00" +@.str7020 = private unnamed_addr constant [3 x i8] c"ly\00" +@.str7021 = private unnamed_addr constant [3 x i8] c"rx\00" +@.str7022 = private unnamed_addr constant [3 x i8] c"ry\00" +@.str7023 = private unnamed_addr constant [12 x i8] c"touch_count\00" +@.str7024 = private unnamed_addr constant [18 x i8] c"input_touch_count\00" +@.str7025 = private unnamed_addr constant [8 x i8] c"touch_x\00" +@.str7026 = private unnamed_addr constant [14 x i8] c"input_touch_x\00" @.str7027 = private unnamed_addr constant [6 x i8] c"index\00" -@.str7028 = private unnamed_addr constant [10 x i8] c"set_touch\00" -@.str7029 = private unnamed_addr constant [16 x i8] c"input_set_touch\00" +@.str7028 = private unnamed_addr constant [8 x i8] c"touch_y\00" +@.str7029 = private unnamed_addr constant [14 x i8] c"input_touch_y\00" @.str7030 = private unnamed_addr constant [6 x i8] c"index\00" -@.str7031 = private unnamed_addr constant [2 x i8] c"x\00" -@.str7032 = private unnamed_addr constant [2 x i8] c"y\00" -@.str7033 = private unnamed_addr constant [7 x i8] c"active\00" -@.str7034 = private unnamed_addr constant [12 x i8] c"cursor_mode\00" -@.str7035 = private unnamed_addr constant [18 x i8] c"input_cursor_mode\00" -@.str7036 = private unnamed_addr constant [5 x i8] c"mode\00" -@.str7037 = private unnamed_addr constant [6 x i8] c"Audio\00" -@.str7038 = private unnamed_addr constant [5 x i8] c"load\00" -@.str7039 = private unnamed_addr constant [11 x i8] c"audio_load\00" -@.str7040 = private unnamed_addr constant [5 x i8] c"path\00" -@.str7041 = private unnamed_addr constant [7 x i8] c"define\00" -@.str7042 = private unnamed_addr constant [13 x i8] c"audio_define\00" -@.str7043 = private unnamed_addr constant [5 x i8] c"name\00" -@.str7044 = private unnamed_addr constant [5 x i8] c"path\00" -@.str7045 = private unnamed_addr constant [6 x i8] c"named\00" -@.str7046 = private unnamed_addr constant [12 x i8] c"audio_named\00" -@.str7047 = private unnamed_addr constant [5 x i8] c"name\00" -@.str7048 = private unnamed_addr constant [5 x i8] c"play\00" -@.str7049 = private unnamed_addr constant [17 x i8] c"audio_play_named\00" +@.str7031 = private unnamed_addr constant [10 x i8] c"set_touch\00" +@.str7032 = private unnamed_addr constant [16 x i8] c"input_set_touch\00" +@.str7033 = private unnamed_addr constant [6 x i8] c"index\00" +@.str7034 = private unnamed_addr constant [2 x i8] c"x\00" +@.str7035 = private unnamed_addr constant [2 x i8] c"y\00" +@.str7036 = private unnamed_addr constant [7 x i8] c"active\00" +@.str7037 = private unnamed_addr constant [12 x i8] c"cursor_mode\00" +@.str7038 = private unnamed_addr constant [18 x i8] c"input_cursor_mode\00" +@.str7039 = private unnamed_addr constant [5 x i8] c"mode\00" +@.str7040 = private unnamed_addr constant [6 x i8] c"Audio\00" +@.str7041 = private unnamed_addr constant [5 x i8] c"load\00" +@.str7042 = private unnamed_addr constant [11 x i8] c"audio_load\00" +@.str7043 = private unnamed_addr constant [5 x i8] c"path\00" +@.str7044 = private unnamed_addr constant [7 x i8] c"define\00" +@.str7045 = private unnamed_addr constant [13 x i8] c"audio_define\00" +@.str7046 = private unnamed_addr constant [5 x i8] c"name\00" +@.str7047 = private unnamed_addr constant [5 x i8] c"path\00" +@.str7048 = private unnamed_addr constant [6 x i8] c"named\00" +@.str7049 = private unnamed_addr constant [12 x i8] c"audio_named\00" @.str7050 = private unnamed_addr constant [5 x i8] c"name\00" -@.str7051 = private unnamed_addr constant [11 x i8] c"audio_play\00" -@.str7052 = private unnamed_addr constant [3 x i8] c"id\00" -@.str7053 = private unnamed_addr constant [11 x i8] c"play_sound\00" +@.str7051 = private unnamed_addr constant [5 x i8] c"play\00" +@.str7052 = private unnamed_addr constant [17 x i8] c"audio_play_named\00" +@.str7053 = private unnamed_addr constant [5 x i8] c"name\00" @.str7054 = private unnamed_addr constant [11 x i8] c"audio_play\00" @.str7055 = private unnamed_addr constant [3 x i8] c"id\00" -@.str7056 = private unnamed_addr constant [11 x i8] c"play_music\00" -@.str7057 = private unnamed_addr constant [23 x i8] c"audio_play_music_named\00" -@.str7058 = private unnamed_addr constant [5 x i8] c"name\00" -@.str7059 = private unnamed_addr constant [17 x i8] c"audio_play_music\00" -@.str7060 = private unnamed_addr constant [3 x i8] c"id\00" -@.str7061 = private unnamed_addr constant [5 x i8] c"stop\00" -@.str7062 = private unnamed_addr constant [11 x i8] c"audio_stop\00" +@.str7056 = private unnamed_addr constant [11 x i8] c"play_sound\00" +@.str7057 = private unnamed_addr constant [11 x i8] c"audio_play\00" +@.str7058 = private unnamed_addr constant [3 x i8] c"id\00" +@.str7059 = private unnamed_addr constant [11 x i8] c"play_music\00" +@.str7060 = private unnamed_addr constant [23 x i8] c"audio_play_music_named\00" +@.str7061 = private unnamed_addr constant [5 x i8] c"name\00" +@.str7062 = private unnamed_addr constant [17 x i8] c"audio_play_music\00" @.str7063 = private unnamed_addr constant [3 x i8] c"id\00" -@.str7064 = private unnamed_addr constant [11 x i8] c"stop_music\00" -@.str7065 = private unnamed_addr constant [17 x i8] c"audio_stop_music\00" -@.str7066 = private unnamed_addr constant [9 x i8] c"stop_all\00" -@.str7067 = private unnamed_addr constant [15 x i8] c"audio_stop_all\00" -@.str7068 = private unnamed_addr constant [7 x i8] c"volume\00" -@.str7069 = private unnamed_addr constant [13 x i8] c"audio_volume\00" -@.str7070 = private unnamed_addr constant [2 x i8] c"v\00" -@.str7071 = private unnamed_addr constant [6 x i8] c"pitch\00" -@.str7072 = private unnamed_addr constant [12 x i8] c"audio_pitch\00" +@.str7064 = private unnamed_addr constant [5 x i8] c"stop\00" +@.str7065 = private unnamed_addr constant [11 x i8] c"audio_stop\00" +@.str7066 = private unnamed_addr constant [3 x i8] c"id\00" +@.str7067 = private unnamed_addr constant [11 x i8] c"stop_music\00" +@.str7068 = private unnamed_addr constant [17 x i8] c"audio_stop_music\00" +@.str7069 = private unnamed_addr constant [9 x i8] c"stop_all\00" +@.str7070 = private unnamed_addr constant [15 x i8] c"audio_stop_all\00" +@.str7071 = private unnamed_addr constant [7 x i8] c"volume\00" +@.str7072 = private unnamed_addr constant [13 x i8] c"audio_volume\00" @.str7073 = private unnamed_addr constant [2 x i8] c"v\00" -@.str7074 = private unnamed_addr constant [11 x i8] c"is_playing\00" -@.str7075 = private unnamed_addr constant [17 x i8] c"audio_is_playing\00" -@.str7076 = private unnamed_addr constant [3 x i8] c"id\00" -@.str7077 = private unnamed_addr constant [5 x i8] c"Http\00" -@.str7078 = private unnamed_addr constant [4 x i8] c"get\00" -@.str7079 = private unnamed_addr constant [9 x i8] c"http_get\00" -@.str7080 = private unnamed_addr constant [4 x i8] c"url\00" -@.str7081 = private unnamed_addr constant [5 x i8] c"post\00" -@.str7082 = private unnamed_addr constant [10 x i8] c"http_post\00" +@.str7074 = private unnamed_addr constant [6 x i8] c"pitch\00" +@.str7075 = private unnamed_addr constant [12 x i8] c"audio_pitch\00" +@.str7076 = private unnamed_addr constant [2 x i8] c"v\00" +@.str7077 = private unnamed_addr constant [11 x i8] c"is_playing\00" +@.str7078 = private unnamed_addr constant [17 x i8] c"audio_is_playing\00" +@.str7079 = private unnamed_addr constant [3 x i8] c"id\00" +@.str7080 = private unnamed_addr constant [5 x i8] c"Http\00" +@.str7081 = private unnamed_addr constant [4 x i8] c"get\00" +@.str7082 = private unnamed_addr constant [9 x i8] c"http_get\00" @.str7083 = private unnamed_addr constant [4 x i8] c"url\00" -@.str7084 = private unnamed_addr constant [5 x i8] c"body\00" -@.str7085 = private unnamed_addr constant [8 x i8] c"request\00" -@.str7086 = private unnamed_addr constant [13 x i8] c"http_request\00" -@.str7087 = private unnamed_addr constant [7 x i8] c"method\00" -@.str7088 = private unnamed_addr constant [4 x i8] c"url\00" -@.str7089 = private unnamed_addr constant [5 x i8] c"body\00" -@.str7090 = private unnamed_addr constant [5 x i8] c"open\00" -@.str7091 = private unnamed_addr constant [10 x i8] c"http_open\00" -@.str7092 = private unnamed_addr constant [7 x i8] c"method\00" -@.str7093 = private unnamed_addr constant [4 x i8] c"url\00" -@.str7094 = private unnamed_addr constant [4 x i8] c"set\00" -@.str7095 = private unnamed_addr constant [16 x i8] c"http_set_header\00" -@.str7096 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7097 = private unnamed_addr constant [5 x i8] c"name\00" -@.str7098 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7099 = private unnamed_addr constant [5 x i8] c"body\00" -@.str7100 = private unnamed_addr constant [10 x i8] c"http_body\00" -@.str7101 = private unnamed_addr constant [7 x i8] c"handle\00" +@.str7084 = private unnamed_addr constant [5 x i8] c"post\00" +@.str7085 = private unnamed_addr constant [10 x i8] c"http_post\00" +@.str7086 = private unnamed_addr constant [4 x i8] c"url\00" +@.str7087 = private unnamed_addr constant [5 x i8] c"body\00" +@.str7088 = private unnamed_addr constant [8 x i8] c"request\00" +@.str7089 = private unnamed_addr constant [13 x i8] c"http_request\00" +@.str7090 = private unnamed_addr constant [7 x i8] c"method\00" +@.str7091 = private unnamed_addr constant [4 x i8] c"url\00" +@.str7092 = private unnamed_addr constant [5 x i8] c"body\00" +@.str7093 = private unnamed_addr constant [5 x i8] c"open\00" +@.str7094 = private unnamed_addr constant [10 x i8] c"http_open\00" +@.str7095 = private unnamed_addr constant [7 x i8] c"method\00" +@.str7096 = private unnamed_addr constant [4 x i8] c"url\00" +@.str7097 = private unnamed_addr constant [4 x i8] c"set\00" +@.str7098 = private unnamed_addr constant [16 x i8] c"http_set_header\00" +@.str7099 = private unnamed_addr constant [7 x i8] c"handle\00" +@.str7100 = private unnamed_addr constant [5 x i8] c"name\00" +@.str7101 = private unnamed_addr constant [6 x i8] c"value\00" @.str7102 = private unnamed_addr constant [5 x i8] c"body\00" -@.str7103 = private unnamed_addr constant [11 x i8] c"body_bytes\00" -@.str7104 = private unnamed_addr constant [12 x i8] c"http_body_n\00" -@.str7105 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7106 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str7107 = private unnamed_addr constant [4 x i8] c"len\00" -@.str7108 = private unnamed_addr constant [5 x i8] c"send\00" -@.str7109 = private unnamed_addr constant [14 x i8] c"http_send_req\00" -@.str7110 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7111 = private unnamed_addr constant [5 x i8] c"poll\00" -@.str7112 = private unnamed_addr constant [10 x i8] c"http_poll\00" +@.str7103 = private unnamed_addr constant [10 x i8] c"http_body\00" +@.str7104 = private unnamed_addr constant [7 x i8] c"handle\00" +@.str7105 = private unnamed_addr constant [5 x i8] c"body\00" +@.str7106 = private unnamed_addr constant [11 x i8] c"body_bytes\00" +@.str7107 = private unnamed_addr constant [12 x i8] c"http_body_n\00" +@.str7108 = private unnamed_addr constant [7 x i8] c"handle\00" +@.str7109 = private unnamed_addr constant [6 x i8] c"bytes\00" +@.str7110 = private unnamed_addr constant [4 x i8] c"len\00" +@.str7111 = private unnamed_addr constant [5 x i8] c"send\00" +@.str7112 = private unnamed_addr constant [14 x i8] c"http_send_req\00" @.str7113 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7114 = private unnamed_addr constant [7 x i8] c"status\00" -@.str7115 = private unnamed_addr constant [15 x i8] c"http_status_of\00" +@.str7114 = private unnamed_addr constant [5 x i8] c"poll\00" +@.str7115 = private unnamed_addr constant [10 x i8] c"http_poll\00" @.str7116 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7117 = private unnamed_addr constant [3 x i8] c"ok\00" -@.str7118 = private unnamed_addr constant [8 x i8] c"http_ok\00" +@.str7117 = private unnamed_addr constant [7 x i8] c"status\00" +@.str7118 = private unnamed_addr constant [15 x i8] c"http_status_of\00" @.str7119 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7120 = private unnamed_addr constant [5 x i8] c"text\00" -@.str7121 = private unnamed_addr constant [10 x i8] c"http_text\00" +@.str7120 = private unnamed_addr constant [3 x i8] c"ok\00" +@.str7121 = private unnamed_addr constant [8 x i8] c"http_ok\00" @.str7122 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7123 = private unnamed_addr constant [9 x i8] c"body_len\00" -@.str7124 = private unnamed_addr constant [14 x i8] c"http_body_len\00" +@.str7123 = private unnamed_addr constant [5 x i8] c"text\00" +@.str7124 = private unnamed_addr constant [10 x i8] c"http_text\00" @.str7125 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7126 = private unnamed_addr constant [7 x i8] c"header\00" -@.str7127 = private unnamed_addr constant [15 x i8] c"http_header_of\00" +@.str7126 = private unnamed_addr constant [9 x i8] c"body_len\00" +@.str7127 = private unnamed_addr constant [14 x i8] c"http_body_len\00" @.str7128 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7129 = private unnamed_addr constant [5 x i8] c"name\00" -@.str7130 = private unnamed_addr constant [5 x i8] c"free\00" -@.str7131 = private unnamed_addr constant [11 x i8] c"http_close\00" -@.str7132 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7133 = private unnamed_addr constant [6 x i8] c"parse\00" -@.str7134 = private unnamed_addr constant [11 x i8] c"http_parse\00" -@.str7135 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str7136 = private unnamed_addr constant [4 x i8] c"len\00" -@.str7137 = private unnamed_addr constant [6 x i8] c"World\00" -@.str7138 = private unnamed_addr constant [4 x i8] c"get\00" -@.str7139 = private unnamed_addr constant [10 x i8] c"world_get\00" -@.str7140 = private unnamed_addr constant [4 x i8] c"set\00" -@.str7141 = private unnamed_addr constant [10 x i8] c"world_set\00" -@.str7142 = private unnamed_addr constant [4 x i8] c"has\00" -@.str7143 = private unnamed_addr constant [10 x i8] c"world_has\00" -@.str7144 = private unnamed_addr constant [6 x i8] c"count\00" -@.str7145 = private unnamed_addr constant [12 x i8] c"world_count\00" -@.str7146 = private unnamed_addr constant [5 x i8] c"size\00" -@.str7147 = private unnamed_addr constant [11 x i8] c"world_size\00" -@.str7148 = private unnamed_addr constant [6 x i8] c"spawn\00" -@.str7149 = private unnamed_addr constant [12 x i8] c"world_spawn\00" -@.str7150 = private unnamed_addr constant [8 x i8] c"despawn\00" -@.str7151 = private unnamed_addr constant [14 x i8] c"world_despawn\00" -@.str7152 = private unnamed_addr constant [5 x i8] c"save\00" -@.str7153 = private unnamed_addr constant [11 x i8] c"world_save\00" -@.str7154 = private unnamed_addr constant [5 x i8] c"load\00" -@.str7155 = private unnamed_addr constant [11 x i8] c"world_load\00" -@.str7156 = private unnamed_addr constant [8 x i8] c"prop_id\00" -@.str7157 = private unnamed_addr constant [14 x i8] c"world_prop_id\00" -@.str7158 = private unnamed_addr constant [9 x i8] c"field_id\00" -@.str7159 = private unnamed_addr constant [15 x i8] c"world_field_id\00" -@.str7160 = private unnamed_addr constant [9 x i8] c"model_id\00" -@.str7161 = private unnamed_addr constant [15 x i8] c"world_model_id\00" -@.str7162 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str7163 = private unnamed_addr constant [11 x i8] c"world_kind\00" -@.str7164 = private unnamed_addr constant [14 x i8] c"register_prop\00" -@.str7165 = private unnamed_addr constant [20 x i8] c"world_register_prop\00" -@.str7166 = private unnamed_addr constant [7 x i8] c"attach\00" -@.str7167 = private unnamed_addr constant [17 x i8] c"world_attach_dyn\00" -@.str7168 = private unnamed_addr constant [7 x i8] c"detach\00" -@.str7169 = private unnamed_addr constant [17 x i8] c"world_detach_dyn\00" -@.str7170 = private unnamed_addr constant [11 x i8] c"query_next\00" -@.str7171 = private unnamed_addr constant [17 x i8] c"world_query_next\00" -@.str7172 = private unnamed_addr constant [8 x i8] c"Network\00" -@.str7173 = private unnamed_addr constant [5 x i8] c"send\00" -@.str7174 = private unnamed_addr constant [9 x i8] c"net_send\00" -@.str7175 = private unnamed_addr constant [5 x i8] c"poll\00" -@.str7176 = private unnamed_addr constant [9 x i8] c"net_poll\00" -@.str7177 = private unnamed_addr constant [10 x i8] c"serialize\00" -@.str7178 = private unnamed_addr constant [10 x i8] c"serialize\00" -@.str7179 = private unnamed_addr constant [6 x i8] c"apply\00" -@.str7180 = private unnamed_addr constant [6 x i8] c"apply\00" -@.str7181 = private unnamed_addr constant [6 x i8] c"owner\00" -@.str7182 = private unnamed_addr constant [6 x i8] c"owner\00" -@.str7183 = private unnamed_addr constant [10 x i8] c"set_owner\00" -@.str7184 = private unnamed_addr constant [10 x i8] c"set_owner\00" -@.str7185 = private unnamed_addr constant [10 x i8] c"is_server\00" -@.str7186 = private unnamed_addr constant [10 x i8] c"is_server\00" -@.str7187 = private unnamed_addr constant [9 x i8] c"is_owner\00" -@.str7188 = private unnamed_addr constant [9 x i8] c"is_owner\00" -@.str7189 = private unnamed_addr constant [9 x i8] c"local_id\00" -@.str7190 = private unnamed_addr constant [9 x i8] c"local_id\00" -@.str7191 = private unnamed_addr constant [7 x i8] c"System\00" -@.str7192 = private unnamed_addr constant [4 x i8] c"run\00" -@.str7193 = private unnamed_addr constant [4 x i8] c"run\00" -@.str7194 = private unnamed_addr constant [10 x i8] c"read_char\00" -@.str7195 = private unnamed_addr constant [10 x i8] c"read_char\00" -@.str7196 = private unnamed_addr constant [10 x i8] c"file_open\00" -@.str7197 = private unnamed_addr constant [10 x i8] c"file_open\00" -@.str7198 = private unnamed_addr constant [10 x i8] c"file_read\00" -@.str7199 = private unnamed_addr constant [10 x i8] c"file_read\00" -@.str7200 = private unnamed_addr constant [11 x i8] c"file_write\00" -@.str7201 = private unnamed_addr constant [11 x i8] c"file_write\00" -@.str7202 = private unnamed_addr constant [10 x i8] c"file_seek\00" -@.str7203 = private unnamed_addr constant [10 x i8] c"file_seek\00" -@.str7204 = private unnamed_addr constant [10 x i8] c"file_tell\00" -@.str7205 = private unnamed_addr constant [10 x i8] c"file_tell\00" -@.str7206 = private unnamed_addr constant [11 x i8] c"file_close\00" -@.str7207 = private unnamed_addr constant [11 x i8] c"file_close\00" -@.str7208 = private unnamed_addr constant [5 x i8] c"Save\00" -@.str7209 = private unnamed_addr constant [6 x i8] c"write\00" -@.str7210 = private unnamed_addr constant [5 x i8] c"save\00" -@.str7211 = private unnamed_addr constant [5 x i8] c"read\00" -@.str7212 = private unnamed_addr constant [5 x i8] c"load\00" -@.str7213 = private unnamed_addr constant [6 x i8] c"Regex\00" -@.str7214 = private unnamed_addr constant [8 x i8] c"compile\00" -@.str7215 = private unnamed_addr constant [14 x i8] c"regex_compile\00" -@.str7216 = private unnamed_addr constant [8 x i8] c"pattern\00" -@.str7217 = private unnamed_addr constant [6 x i8] c"valid\00" -@.str7218 = private unnamed_addr constant [12 x i8] c"regex_valid\00" +@.str7129 = private unnamed_addr constant [7 x i8] c"header\00" +@.str7130 = private unnamed_addr constant [15 x i8] c"http_header_of\00" +@.str7131 = private unnamed_addr constant [7 x i8] c"handle\00" +@.str7132 = private unnamed_addr constant [5 x i8] c"name\00" +@.str7133 = private unnamed_addr constant [5 x i8] c"free\00" +@.str7134 = private unnamed_addr constant [11 x i8] c"http_close\00" +@.str7135 = private unnamed_addr constant [7 x i8] c"handle\00" +@.str7136 = private unnamed_addr constant [6 x i8] c"parse\00" +@.str7137 = private unnamed_addr constant [11 x i8] c"http_parse\00" +@.str7138 = private unnamed_addr constant [6 x i8] c"bytes\00" +@.str7139 = private unnamed_addr constant [4 x i8] c"len\00" +@.str7140 = private unnamed_addr constant [6 x i8] c"World\00" +@.str7141 = private unnamed_addr constant [4 x i8] c"get\00" +@.str7142 = private unnamed_addr constant [10 x i8] c"world_get\00" +@.str7143 = private unnamed_addr constant [4 x i8] c"set\00" +@.str7144 = private unnamed_addr constant [10 x i8] c"world_set\00" +@.str7145 = private unnamed_addr constant [4 x i8] c"has\00" +@.str7146 = private unnamed_addr constant [10 x i8] c"world_has\00" +@.str7147 = private unnamed_addr constant [6 x i8] c"count\00" +@.str7148 = private unnamed_addr constant [12 x i8] c"world_count\00" +@.str7149 = private unnamed_addr constant [5 x i8] c"size\00" +@.str7150 = private unnamed_addr constant [11 x i8] c"world_size\00" +@.str7151 = private unnamed_addr constant [6 x i8] c"spawn\00" +@.str7152 = private unnamed_addr constant [12 x i8] c"world_spawn\00" +@.str7153 = private unnamed_addr constant [8 x i8] c"despawn\00" +@.str7154 = private unnamed_addr constant [14 x i8] c"world_despawn\00" +@.str7155 = private unnamed_addr constant [5 x i8] c"save\00" +@.str7156 = private unnamed_addr constant [11 x i8] c"world_save\00" +@.str7157 = private unnamed_addr constant [5 x i8] c"load\00" +@.str7158 = private unnamed_addr constant [11 x i8] c"world_load\00" +@.str7159 = private unnamed_addr constant [8 x i8] c"prop_id\00" +@.str7160 = private unnamed_addr constant [14 x i8] c"world_prop_id\00" +@.str7161 = private unnamed_addr constant [9 x i8] c"field_id\00" +@.str7162 = private unnamed_addr constant [15 x i8] c"world_field_id\00" +@.str7163 = private unnamed_addr constant [9 x i8] c"model_id\00" +@.str7164 = private unnamed_addr constant [15 x i8] c"world_model_id\00" +@.str7165 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str7166 = private unnamed_addr constant [11 x i8] c"world_kind\00" +@.str7167 = private unnamed_addr constant [14 x i8] c"register_prop\00" +@.str7168 = private unnamed_addr constant [20 x i8] c"world_register_prop\00" +@.str7169 = private unnamed_addr constant [7 x i8] c"attach\00" +@.str7170 = private unnamed_addr constant [17 x i8] c"world_attach_dyn\00" +@.str7171 = private unnamed_addr constant [7 x i8] c"detach\00" +@.str7172 = private unnamed_addr constant [17 x i8] c"world_detach_dyn\00" +@.str7173 = private unnamed_addr constant [11 x i8] c"query_next\00" +@.str7174 = private unnamed_addr constant [17 x i8] c"world_query_next\00" +@.str7175 = private unnamed_addr constant [8 x i8] c"Network\00" +@.str7176 = private unnamed_addr constant [5 x i8] c"send\00" +@.str7177 = private unnamed_addr constant [9 x i8] c"net_send\00" +@.str7178 = private unnamed_addr constant [5 x i8] c"poll\00" +@.str7179 = private unnamed_addr constant [9 x i8] c"net_poll\00" +@.str7180 = private unnamed_addr constant [10 x i8] c"serialize\00" +@.str7181 = private unnamed_addr constant [10 x i8] c"serialize\00" +@.str7182 = private unnamed_addr constant [6 x i8] c"apply\00" +@.str7183 = private unnamed_addr constant [6 x i8] c"apply\00" +@.str7184 = private unnamed_addr constant [6 x i8] c"owner\00" +@.str7185 = private unnamed_addr constant [6 x i8] c"owner\00" +@.str7186 = private unnamed_addr constant [10 x i8] c"set_owner\00" +@.str7187 = private unnamed_addr constant [10 x i8] c"set_owner\00" +@.str7188 = private unnamed_addr constant [10 x i8] c"is_server\00" +@.str7189 = private unnamed_addr constant [10 x i8] c"is_server\00" +@.str7190 = private unnamed_addr constant [9 x i8] c"is_owner\00" +@.str7191 = private unnamed_addr constant [9 x i8] c"is_owner\00" +@.str7192 = private unnamed_addr constant [9 x i8] c"local_id\00" +@.str7193 = private unnamed_addr constant [9 x i8] c"local_id\00" +@.str7194 = private unnamed_addr constant [7 x i8] c"System\00" +@.str7195 = private unnamed_addr constant [4 x i8] c"run\00" +@.str7196 = private unnamed_addr constant [4 x i8] c"run\00" +@.str7197 = private unnamed_addr constant [10 x i8] c"read_char\00" +@.str7198 = private unnamed_addr constant [10 x i8] c"read_char\00" +@.str7199 = private unnamed_addr constant [10 x i8] c"file_open\00" +@.str7200 = private unnamed_addr constant [10 x i8] c"file_open\00" +@.str7201 = private unnamed_addr constant [10 x i8] c"file_read\00" +@.str7202 = private unnamed_addr constant [10 x i8] c"file_read\00" +@.str7203 = private unnamed_addr constant [11 x i8] c"file_write\00" +@.str7204 = private unnamed_addr constant [11 x i8] c"file_write\00" +@.str7205 = private unnamed_addr constant [10 x i8] c"file_seek\00" +@.str7206 = private unnamed_addr constant [10 x i8] c"file_seek\00" +@.str7207 = private unnamed_addr constant [10 x i8] c"file_tell\00" +@.str7208 = private unnamed_addr constant [10 x i8] c"file_tell\00" +@.str7209 = private unnamed_addr constant [11 x i8] c"file_close\00" +@.str7210 = private unnamed_addr constant [11 x i8] c"file_close\00" +@.str7211 = private unnamed_addr constant [5 x i8] c"Save\00" +@.str7212 = private unnamed_addr constant [6 x i8] c"write\00" +@.str7213 = private unnamed_addr constant [5 x i8] c"save\00" +@.str7214 = private unnamed_addr constant [5 x i8] c"read\00" +@.str7215 = private unnamed_addr constant [5 x i8] c"load\00" +@.str7216 = private unnamed_addr constant [6 x i8] c"Regex\00" +@.str7217 = private unnamed_addr constant [8 x i8] c"compile\00" +@.str7218 = private unnamed_addr constant [14 x i8] c"regex_compile\00" @.str7219 = private unnamed_addr constant [8 x i8] c"pattern\00" -@.str7220 = private unnamed_addr constant [8 x i8] c"matches\00" -@.str7221 = private unnamed_addr constant [14 x i8] c"regex_matches\00" -@.str7222 = private unnamed_addr constant [5 x i8] c"text\00" -@.str7223 = private unnamed_addr constant [8 x i8] c"pattern\00" -@.str7224 = private unnamed_addr constant [5 x i8] c"test\00" -@.str7225 = private unnamed_addr constant [11 x i8] c"regex_test\00" -@.str7226 = private unnamed_addr constant [5 x i8] c"text\00" -@.str7227 = private unnamed_addr constant [3 x i8] c"re\00" -@.str7228 = private unnamed_addr constant [5 x i8] c"find\00" -@.str7229 = private unnamed_addr constant [11 x i8] c"regex_find\00" -@.str7230 = private unnamed_addr constant [5 x i8] c"text\00" -@.str7231 = private unnamed_addr constant [8 x i8] c"pattern\00" -@.str7232 = private unnamed_addr constant [5 x i8] c"exec\00" -@.str7233 = private unnamed_addr constant [11 x i8] c"regex_exec\00" -@.str7234 = private unnamed_addr constant [5 x i8] c"text\00" -@.str7235 = private unnamed_addr constant [3 x i8] c"re\00" -@.str7236 = private unnamed_addr constant [5 x i8] c"next\00" -@.str7237 = private unnamed_addr constant [11 x i8] c"regex_next\00" -@.str7238 = private unnamed_addr constant [5 x i8] c"text\00" -@.str7239 = private unnamed_addr constant [3 x i8] c"re\00" -@.str7240 = private unnamed_addr constant [5 x i8] c"from\00" -@.str7241 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str7242 = private unnamed_addr constant [14 x i8] c"regex_replace\00" -@.str7243 = private unnamed_addr constant [5 x i8] c"text\00" -@.str7244 = private unnamed_addr constant [8 x i8] c"pattern\00" -@.str7245 = private unnamed_addr constant [12 x i8] c"replacement\00" -@.str7246 = private unnamed_addr constant [6 x i8] c"group\00" -@.str7247 = private unnamed_addr constant [12 x i8] c"regex_group\00" -@.str7248 = private unnamed_addr constant [6 x i8] c"match\00" -@.str7249 = private unnamed_addr constant [2 x i8] c"n\00" -@.str7250 = private unnamed_addr constant [12 x i8] c"group_count\00" -@.str7251 = private unnamed_addr constant [18 x i8] c"regex_group_count\00" -@.str7252 = private unnamed_addr constant [6 x i8] c"match\00" -@.str7253 = private unnamed_addr constant [6 x i8] c"start\00" -@.str7254 = private unnamed_addr constant [12 x i8] c"regex_start\00" +@.str7220 = private unnamed_addr constant [6 x i8] c"valid\00" +@.str7221 = private unnamed_addr constant [12 x i8] c"regex_valid\00" +@.str7222 = private unnamed_addr constant [8 x i8] c"pattern\00" +@.str7223 = private unnamed_addr constant [8 x i8] c"matches\00" +@.str7224 = private unnamed_addr constant [14 x i8] c"regex_matches\00" +@.str7225 = private unnamed_addr constant [5 x i8] c"text\00" +@.str7226 = private unnamed_addr constant [8 x i8] c"pattern\00" +@.str7227 = private unnamed_addr constant [5 x i8] c"test\00" +@.str7228 = private unnamed_addr constant [11 x i8] c"regex_test\00" +@.str7229 = private unnamed_addr constant [5 x i8] c"text\00" +@.str7230 = private unnamed_addr constant [3 x i8] c"re\00" +@.str7231 = private unnamed_addr constant [5 x i8] c"find\00" +@.str7232 = private unnamed_addr constant [11 x i8] c"regex_find\00" +@.str7233 = private unnamed_addr constant [5 x i8] c"text\00" +@.str7234 = private unnamed_addr constant [8 x i8] c"pattern\00" +@.str7235 = private unnamed_addr constant [5 x i8] c"exec\00" +@.str7236 = private unnamed_addr constant [11 x i8] c"regex_exec\00" +@.str7237 = private unnamed_addr constant [5 x i8] c"text\00" +@.str7238 = private unnamed_addr constant [3 x i8] c"re\00" +@.str7239 = private unnamed_addr constant [5 x i8] c"next\00" +@.str7240 = private unnamed_addr constant [11 x i8] c"regex_next\00" +@.str7241 = private unnamed_addr constant [5 x i8] c"text\00" +@.str7242 = private unnamed_addr constant [3 x i8] c"re\00" +@.str7243 = private unnamed_addr constant [5 x i8] c"from\00" +@.str7244 = private unnamed_addr constant [8 x i8] c"replace\00" +@.str7245 = private unnamed_addr constant [14 x i8] c"regex_replace\00" +@.str7246 = private unnamed_addr constant [5 x i8] c"text\00" +@.str7247 = private unnamed_addr constant [8 x i8] c"pattern\00" +@.str7248 = private unnamed_addr constant [12 x i8] c"replacement\00" +@.str7249 = private unnamed_addr constant [6 x i8] c"group\00" +@.str7250 = private unnamed_addr constant [12 x i8] c"regex_group\00" +@.str7251 = private unnamed_addr constant [6 x i8] c"match\00" +@.str7252 = private unnamed_addr constant [2 x i8] c"n\00" +@.str7253 = private unnamed_addr constant [12 x i8] c"group_count\00" +@.str7254 = private unnamed_addr constant [18 x i8] c"regex_group_count\00" @.str7255 = private unnamed_addr constant [6 x i8] c"match\00" -@.str7256 = private unnamed_addr constant [2 x i8] c"n\00" -@.str7257 = private unnamed_addr constant [4 x i8] c"end\00" -@.str7258 = private unnamed_addr constant [10 x i8] c"regex_end\00" -@.str7259 = private unnamed_addr constant [6 x i8] c"match\00" -@.str7260 = private unnamed_addr constant [2 x i8] c"n\00" -@.str7261 = private unnamed_addr constant [3 x i8] c"ok\00" -@.str7262 = private unnamed_addr constant [9 x i8] c"regex_ok\00" -@.str7263 = private unnamed_addr constant [6 x i8] c"match\00" -@.str7264 = private unnamed_addr constant [7 x i8] c"BigInt\00" -@.str7265 = private unnamed_addr constant [5 x i8] c"from\00" -@.str7266 = private unnamed_addr constant [12 x i8] c"bigint_from\00" -@.str7267 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7268 = private unnamed_addr constant [6 x i8] c"parse\00" -@.str7269 = private unnamed_addr constant [16 x i8] c"bigint_from_str\00" -@.str7270 = private unnamed_addr constant [5 x i8] c"text\00" -@.str7271 = private unnamed_addr constant [4 x i8] c"add\00" -@.str7272 = private unnamed_addr constant [11 x i8] c"bigint_add\00" -@.str7273 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7274 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7275 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str7276 = private unnamed_addr constant [11 x i8] c"bigint_sub\00" -@.str7277 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7278 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7279 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str7280 = private unnamed_addr constant [11 x i8] c"bigint_mul\00" -@.str7281 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7282 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7283 = private unnamed_addr constant [4 x i8] c"neg\00" -@.str7284 = private unnamed_addr constant [11 x i8] c"bigint_neg\00" -@.str7285 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7286 = private unnamed_addr constant [4 x i8] c"pow\00" -@.str7287 = private unnamed_addr constant [11 x i8] c"bigint_pow\00" +@.str7256 = private unnamed_addr constant [6 x i8] c"start\00" +@.str7257 = private unnamed_addr constant [12 x i8] c"regex_start\00" +@.str7258 = private unnamed_addr constant [6 x i8] c"match\00" +@.str7259 = private unnamed_addr constant [2 x i8] c"n\00" +@.str7260 = private unnamed_addr constant [4 x i8] c"end\00" +@.str7261 = private unnamed_addr constant [10 x i8] c"regex_end\00" +@.str7262 = private unnamed_addr constant [6 x i8] c"match\00" +@.str7263 = private unnamed_addr constant [2 x i8] c"n\00" +@.str7264 = private unnamed_addr constant [3 x i8] c"ok\00" +@.str7265 = private unnamed_addr constant [9 x i8] c"regex_ok\00" +@.str7266 = private unnamed_addr constant [6 x i8] c"match\00" +@.str7267 = private unnamed_addr constant [7 x i8] c"BigInt\00" +@.str7268 = private unnamed_addr constant [5 x i8] c"from\00" +@.str7269 = private unnamed_addr constant [12 x i8] c"bigint_from\00" +@.str7270 = private unnamed_addr constant [6 x i8] c"value\00" +@.str7271 = private unnamed_addr constant [6 x i8] c"parse\00" +@.str7272 = private unnamed_addr constant [16 x i8] c"bigint_from_str\00" +@.str7273 = private unnamed_addr constant [5 x i8] c"text\00" +@.str7274 = private unnamed_addr constant [4 x i8] c"add\00" +@.str7275 = private unnamed_addr constant [11 x i8] c"bigint_add\00" +@.str7276 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7277 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7278 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str7279 = private unnamed_addr constant [11 x i8] c"bigint_sub\00" +@.str7280 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7281 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7282 = private unnamed_addr constant [4 x i8] c"mul\00" +@.str7283 = private unnamed_addr constant [11 x i8] c"bigint_mul\00" +@.str7284 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7285 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7286 = private unnamed_addr constant [4 x i8] c"neg\00" +@.str7287 = private unnamed_addr constant [11 x i8] c"bigint_neg\00" @.str7288 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7289 = private unnamed_addr constant [4 x i8] c"exp\00" -@.str7290 = private unnamed_addr constant [4 x i8] c"div\00" -@.str7291 = private unnamed_addr constant [15 x i8] c"bigint_div_int\00" -@.str7292 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7293 = private unnamed_addr constant [2 x i8] c"d\00" -@.str7294 = private unnamed_addr constant [4 x i8] c"mod\00" -@.str7295 = private unnamed_addr constant [15 x i8] c"bigint_mod_int\00" -@.str7296 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7297 = private unnamed_addr constant [2 x i8] c"d\00" -@.str7298 = private unnamed_addr constant [4 x i8] c"cmp\00" -@.str7299 = private unnamed_addr constant [11 x i8] c"bigint_cmp\00" -@.str7300 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7301 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7302 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str7303 = private unnamed_addr constant [10 x i8] c"bigint_eq\00" -@.str7304 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7305 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7306 = private unnamed_addr constant [8 x i8] c"is_zero\00" -@.str7307 = private unnamed_addr constant [15 x i8] c"bigint_is_zero\00" -@.str7308 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7309 = private unnamed_addr constant [7 x i8] c"to_int\00" -@.str7310 = private unnamed_addr constant [14 x i8] c"bigint_to_int\00" +@.str7289 = private unnamed_addr constant [4 x i8] c"pow\00" +@.str7290 = private unnamed_addr constant [11 x i8] c"bigint_pow\00" +@.str7291 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7292 = private unnamed_addr constant [4 x i8] c"exp\00" +@.str7293 = private unnamed_addr constant [4 x i8] c"div\00" +@.str7294 = private unnamed_addr constant [15 x i8] c"bigint_div_int\00" +@.str7295 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7296 = private unnamed_addr constant [2 x i8] c"d\00" +@.str7297 = private unnamed_addr constant [4 x i8] c"mod\00" +@.str7298 = private unnamed_addr constant [15 x i8] c"bigint_mod_int\00" +@.str7299 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7300 = private unnamed_addr constant [2 x i8] c"d\00" +@.str7301 = private unnamed_addr constant [4 x i8] c"cmp\00" +@.str7302 = private unnamed_addr constant [11 x i8] c"bigint_cmp\00" +@.str7303 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7304 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7305 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str7306 = private unnamed_addr constant [10 x i8] c"bigint_eq\00" +@.str7307 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7308 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7309 = private unnamed_addr constant [8 x i8] c"is_zero\00" +@.str7310 = private unnamed_addr constant [15 x i8] c"bigint_is_zero\00" @.str7311 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7312 = private unnamed_addr constant [4 x i8] c"str\00" -@.str7313 = private unnamed_addr constant [11 x i8] c"bigint_str\00" +@.str7312 = private unnamed_addr constant [7 x i8] c"to_int\00" +@.str7313 = private unnamed_addr constant [14 x i8] c"bigint_to_int\00" @.str7314 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7315 = private unnamed_addr constant [8 x i8] c"Decimal\00" -@.str7316 = private unnamed_addr constant [5 x i8] c"from\00" -@.str7317 = private unnamed_addr constant [13 x i8] c"decimal_from\00" -@.str7318 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7319 = private unnamed_addr constant [6 x i8] c"parse\00" -@.str7320 = private unnamed_addr constant [17 x i8] c"decimal_from_str\00" -@.str7321 = private unnamed_addr constant [5 x i8] c"text\00" -@.str7322 = private unnamed_addr constant [4 x i8] c"add\00" -@.str7323 = private unnamed_addr constant [12 x i8] c"decimal_add\00" -@.str7324 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7325 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7326 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str7327 = private unnamed_addr constant [12 x i8] c"decimal_sub\00" -@.str7328 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7329 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7330 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str7331 = private unnamed_addr constant [12 x i8] c"decimal_mul\00" -@.str7332 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7333 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7334 = private unnamed_addr constant [4 x i8] c"neg\00" -@.str7335 = private unnamed_addr constant [12 x i8] c"decimal_neg\00" -@.str7336 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7337 = private unnamed_addr constant [4 x i8] c"cmp\00" -@.str7338 = private unnamed_addr constant [12 x i8] c"decimal_cmp\00" +@.str7315 = private unnamed_addr constant [4 x i8] c"str\00" +@.str7316 = private unnamed_addr constant [11 x i8] c"bigint_str\00" +@.str7317 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7318 = private unnamed_addr constant [8 x i8] c"Decimal\00" +@.str7319 = private unnamed_addr constant [5 x i8] c"from\00" +@.str7320 = private unnamed_addr constant [13 x i8] c"decimal_from\00" +@.str7321 = private unnamed_addr constant [6 x i8] c"value\00" +@.str7322 = private unnamed_addr constant [6 x i8] c"parse\00" +@.str7323 = private unnamed_addr constant [17 x i8] c"decimal_from_str\00" +@.str7324 = private unnamed_addr constant [5 x i8] c"text\00" +@.str7325 = private unnamed_addr constant [4 x i8] c"add\00" +@.str7326 = private unnamed_addr constant [12 x i8] c"decimal_add\00" +@.str7327 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7328 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7329 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str7330 = private unnamed_addr constant [12 x i8] c"decimal_sub\00" +@.str7331 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7332 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7333 = private unnamed_addr constant [4 x i8] c"mul\00" +@.str7334 = private unnamed_addr constant [12 x i8] c"decimal_mul\00" +@.str7335 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7336 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7337 = private unnamed_addr constant [4 x i8] c"neg\00" +@.str7338 = private unnamed_addr constant [12 x i8] c"decimal_neg\00" @.str7339 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7340 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7341 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str7342 = private unnamed_addr constant [11 x i8] c"decimal_eq\00" -@.str7343 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7344 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7345 = private unnamed_addr constant [6 x i8] c"scale\00" -@.str7346 = private unnamed_addr constant [14 x i8] c"decimal_scale\00" -@.str7347 = private unnamed_addr constant [2 x i8] c"d\00" -@.str7348 = private unnamed_addr constant [8 x i8] c"rescale\00" -@.str7349 = private unnamed_addr constant [16 x i8] c"decimal_rescale\00" +@.str7340 = private unnamed_addr constant [4 x i8] c"cmp\00" +@.str7341 = private unnamed_addr constant [12 x i8] c"decimal_cmp\00" +@.str7342 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7343 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7344 = private unnamed_addr constant [3 x i8] c"eq\00" +@.str7345 = private unnamed_addr constant [11 x i8] c"decimal_eq\00" +@.str7346 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7347 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7348 = private unnamed_addr constant [6 x i8] c"scale\00" +@.str7349 = private unnamed_addr constant [14 x i8] c"decimal_scale\00" @.str7350 = private unnamed_addr constant [2 x i8] c"d\00" -@.str7351 = private unnamed_addr constant [7 x i8] c"places\00" -@.str7352 = private unnamed_addr constant [4 x i8] c"str\00" -@.str7353 = private unnamed_addr constant [12 x i8] c"decimal_str\00" -@.str7354 = private unnamed_addr constant [2 x i8] c"d\00" -@.str7355 = private unnamed_addr constant [5 x i8] c"Dict\00" -@.str7356 = private unnamed_addr constant [4 x i8] c"new\00" -@.str7357 = private unnamed_addr constant [9 x i8] c"dict_new\00" -@.str7358 = private unnamed_addr constant [4 x i8] c"set\00" -@.str7359 = private unnamed_addr constant [9 x i8] c"dict_set\00" -@.str7360 = private unnamed_addr constant [2 x i8] c"d\00" -@.str7361 = private unnamed_addr constant [4 x i8] c"key\00" -@.str7362 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7363 = private unnamed_addr constant [4 x i8] c"get\00" -@.str7364 = private unnamed_addr constant [9 x i8] c"dict_get\00" -@.str7365 = private unnamed_addr constant [2 x i8] c"d\00" -@.str7366 = private unnamed_addr constant [4 x i8] c"key\00" -@.str7367 = private unnamed_addr constant [7 x i8] c"get_or\00" -@.str7368 = private unnamed_addr constant [12 x i8] c"dict_get_or\00" -@.str7369 = private unnamed_addr constant [2 x i8] c"d\00" -@.str7370 = private unnamed_addr constant [4 x i8] c"key\00" -@.str7371 = private unnamed_addr constant [9 x i8] c"fallback\00" -@.str7372 = private unnamed_addr constant [4 x i8] c"has\00" -@.str7373 = private unnamed_addr constant [9 x i8] c"dict_has\00" -@.str7374 = private unnamed_addr constant [2 x i8] c"d\00" -@.str7375 = private unnamed_addr constant [4 x i8] c"key\00" -@.str7376 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str7377 = private unnamed_addr constant [12 x i8] c"dict_remove\00" -@.str7378 = private unnamed_addr constant [2 x i8] c"d\00" -@.str7379 = private unnamed_addr constant [4 x i8] c"key\00" -@.str7380 = private unnamed_addr constant [5 x i8] c"size\00" -@.str7381 = private unnamed_addr constant [10 x i8] c"dict_size\00" -@.str7382 = private unnamed_addr constant [2 x i8] c"d\00" -@.str7383 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str7384 = private unnamed_addr constant [11 x i8] c"dict_clear\00" +@.str7351 = private unnamed_addr constant [8 x i8] c"rescale\00" +@.str7352 = private unnamed_addr constant [16 x i8] c"decimal_rescale\00" +@.str7353 = private unnamed_addr constant [2 x i8] c"d\00" +@.str7354 = private unnamed_addr constant [7 x i8] c"places\00" +@.str7355 = private unnamed_addr constant [4 x i8] c"str\00" +@.str7356 = private unnamed_addr constant [12 x i8] c"decimal_str\00" +@.str7357 = private unnamed_addr constant [2 x i8] c"d\00" +@.str7358 = private unnamed_addr constant [5 x i8] c"Dict\00" +@.str7359 = private unnamed_addr constant [4 x i8] c"new\00" +@.str7360 = private unnamed_addr constant [9 x i8] c"dict_new\00" +@.str7361 = private unnamed_addr constant [4 x i8] c"set\00" +@.str7362 = private unnamed_addr constant [9 x i8] c"dict_set\00" +@.str7363 = private unnamed_addr constant [2 x i8] c"d\00" +@.str7364 = private unnamed_addr constant [4 x i8] c"key\00" +@.str7365 = private unnamed_addr constant [6 x i8] c"value\00" +@.str7366 = private unnamed_addr constant [4 x i8] c"get\00" +@.str7367 = private unnamed_addr constant [9 x i8] c"dict_get\00" +@.str7368 = private unnamed_addr constant [2 x i8] c"d\00" +@.str7369 = private unnamed_addr constant [4 x i8] c"key\00" +@.str7370 = private unnamed_addr constant [7 x i8] c"get_or\00" +@.str7371 = private unnamed_addr constant [12 x i8] c"dict_get_or\00" +@.str7372 = private unnamed_addr constant [2 x i8] c"d\00" +@.str7373 = private unnamed_addr constant [4 x i8] c"key\00" +@.str7374 = private unnamed_addr constant [9 x i8] c"fallback\00" +@.str7375 = private unnamed_addr constant [4 x i8] c"has\00" +@.str7376 = private unnamed_addr constant [9 x i8] c"dict_has\00" +@.str7377 = private unnamed_addr constant [2 x i8] c"d\00" +@.str7378 = private unnamed_addr constant [4 x i8] c"key\00" +@.str7379 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str7380 = private unnamed_addr constant [12 x i8] c"dict_remove\00" +@.str7381 = private unnamed_addr constant [2 x i8] c"d\00" +@.str7382 = private unnamed_addr constant [4 x i8] c"key\00" +@.str7383 = private unnamed_addr constant [5 x i8] c"size\00" +@.str7384 = private unnamed_addr constant [10 x i8] c"dict_size\00" @.str7385 = private unnamed_addr constant [2 x i8] c"d\00" -@.str7386 = private unnamed_addr constant [5 x i8] c"keys\00" -@.str7387 = private unnamed_addr constant [10 x i8] c"dict_keys\00" +@.str7386 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str7387 = private unnamed_addr constant [11 x i8] c"dict_clear\00" @.str7388 = private unnamed_addr constant [2 x i8] c"d\00" -@.str7389 = private unnamed_addr constant [4 x i8] c"Set\00" -@.str7390 = private unnamed_addr constant [4 x i8] c"new\00" -@.str7391 = private unnamed_addr constant [8 x i8] c"set_new\00" -@.str7392 = private unnamed_addr constant [4 x i8] c"add\00" -@.str7393 = private unnamed_addr constant [8 x i8] c"set_add\00" -@.str7394 = private unnamed_addr constant [2 x i8] c"s\00" -@.str7395 = private unnamed_addr constant [4 x i8] c"key\00" -@.str7396 = private unnamed_addr constant [4 x i8] c"has\00" -@.str7397 = private unnamed_addr constant [8 x i8] c"set_has\00" -@.str7398 = private unnamed_addr constant [2 x i8] c"s\00" -@.str7399 = private unnamed_addr constant [4 x i8] c"key\00" -@.str7400 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str7401 = private unnamed_addr constant [11 x i8] c"set_remove\00" -@.str7402 = private unnamed_addr constant [2 x i8] c"s\00" -@.str7403 = private unnamed_addr constant [4 x i8] c"key\00" -@.str7404 = private unnamed_addr constant [5 x i8] c"size\00" -@.str7405 = private unnamed_addr constant [9 x i8] c"set_size\00" -@.str7406 = private unnamed_addr constant [2 x i8] c"s\00" -@.str7407 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str7408 = private unnamed_addr constant [10 x i8] c"set_clear\00" +@.str7389 = private unnamed_addr constant [5 x i8] c"keys\00" +@.str7390 = private unnamed_addr constant [10 x i8] c"dict_keys\00" +@.str7391 = private unnamed_addr constant [2 x i8] c"d\00" +@.str7392 = private unnamed_addr constant [4 x i8] c"Set\00" +@.str7393 = private unnamed_addr constant [4 x i8] c"new\00" +@.str7394 = private unnamed_addr constant [8 x i8] c"set_new\00" +@.str7395 = private unnamed_addr constant [4 x i8] c"add\00" +@.str7396 = private unnamed_addr constant [8 x i8] c"set_add\00" +@.str7397 = private unnamed_addr constant [2 x i8] c"s\00" +@.str7398 = private unnamed_addr constant [4 x i8] c"key\00" +@.str7399 = private unnamed_addr constant [4 x i8] c"has\00" +@.str7400 = private unnamed_addr constant [8 x i8] c"set_has\00" +@.str7401 = private unnamed_addr constant [2 x i8] c"s\00" +@.str7402 = private unnamed_addr constant [4 x i8] c"key\00" +@.str7403 = private unnamed_addr constant [7 x i8] c"remove\00" +@.str7404 = private unnamed_addr constant [11 x i8] c"set_remove\00" +@.str7405 = private unnamed_addr constant [2 x i8] c"s\00" +@.str7406 = private unnamed_addr constant [4 x i8] c"key\00" +@.str7407 = private unnamed_addr constant [5 x i8] c"size\00" +@.str7408 = private unnamed_addr constant [9 x i8] c"set_size\00" @.str7409 = private unnamed_addr constant [2 x i8] c"s\00" -@.str7410 = private unnamed_addr constant [8 x i8] c"members\00" -@.str7411 = private unnamed_addr constant [12 x i8] c"set_members\00" +@.str7410 = private unnamed_addr constant [6 x i8] c"clear\00" +@.str7411 = private unnamed_addr constant [10 x i8] c"set_clear\00" @.str7412 = private unnamed_addr constant [2 x i8] c"s\00" -@.str7413 = private unnamed_addr constant [4 x i8] c"Job\00" -@.str7414 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str7415 = private unnamed_addr constant [10 x i8] c"job_defer\00" -@.str7416 = private unnamed_addr constant [4 x i8] c"run\00" -@.str7417 = private unnamed_addr constant [8 x i8] c"job_run\00" -@.str7418 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str7419 = private unnamed_addr constant [4 x i8] c"arg\00" -@.str7420 = private unnamed_addr constant [8 x i8] c"fulfill\00" -@.str7421 = private unnamed_addr constant [12 x i8] c"job_fulfill\00" -@.str7422 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7423 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7424 = private unnamed_addr constant [5 x i8] c"fail\00" -@.str7425 = private unnamed_addr constant [9 x i8] c"job_fail\00" -@.str7426 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7427 = private unnamed_addr constant [6 x i8] c"error\00" -@.str7428 = private unnamed_addr constant [7 x i8] c"cancel\00" -@.str7429 = private unnamed_addr constant [11 x i8] c"job_cancel\00" -@.str7430 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7431 = private unnamed_addr constant [5 x i8] c"pump\00" -@.str7432 = private unnamed_addr constant [9 x i8] c"job_pump\00" -@.str7433 = private unnamed_addr constant [7 x i8] c"budget\00" -@.str7434 = private unnamed_addr constant [5 x i8] c"done\00" -@.str7435 = private unnamed_addr constant [9 x i8] c"job_done\00" -@.str7436 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7437 = private unnamed_addr constant [3 x i8] c"ok\00" -@.str7438 = private unnamed_addr constant [7 x i8] c"job_ok\00" +@.str7413 = private unnamed_addr constant [8 x i8] c"members\00" +@.str7414 = private unnamed_addr constant [12 x i8] c"set_members\00" +@.str7415 = private unnamed_addr constant [2 x i8] c"s\00" +@.str7416 = private unnamed_addr constant [4 x i8] c"Job\00" +@.str7417 = private unnamed_addr constant [6 x i8] c"defer\00" +@.str7418 = private unnamed_addr constant [10 x i8] c"job_defer\00" +@.str7419 = private unnamed_addr constant [4 x i8] c"run\00" +@.str7420 = private unnamed_addr constant [8 x i8] c"job_run\00" +@.str7421 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str7422 = private unnamed_addr constant [4 x i8] c"arg\00" +@.str7423 = private unnamed_addr constant [8 x i8] c"fulfill\00" +@.str7424 = private unnamed_addr constant [12 x i8] c"job_fulfill\00" +@.str7425 = private unnamed_addr constant [7 x i8] c"handle\00" +@.str7426 = private unnamed_addr constant [6 x i8] c"value\00" +@.str7427 = private unnamed_addr constant [5 x i8] c"fail\00" +@.str7428 = private unnamed_addr constant [9 x i8] c"job_fail\00" +@.str7429 = private unnamed_addr constant [7 x i8] c"handle\00" +@.str7430 = private unnamed_addr constant [6 x i8] c"error\00" +@.str7431 = private unnamed_addr constant [7 x i8] c"cancel\00" +@.str7432 = private unnamed_addr constant [11 x i8] c"job_cancel\00" +@.str7433 = private unnamed_addr constant [7 x i8] c"handle\00" +@.str7434 = private unnamed_addr constant [5 x i8] c"pump\00" +@.str7435 = private unnamed_addr constant [9 x i8] c"job_pump\00" +@.str7436 = private unnamed_addr constant [7 x i8] c"budget\00" +@.str7437 = private unnamed_addr constant [5 x i8] c"done\00" +@.str7438 = private unnamed_addr constant [9 x i8] c"job_done\00" @.str7439 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7440 = private unnamed_addr constant [7 x i8] c"failed\00" -@.str7441 = private unnamed_addr constant [11 x i8] c"job_failed\00" +@.str7440 = private unnamed_addr constant [3 x i8] c"ok\00" +@.str7441 = private unnamed_addr constant [7 x i8] c"job_ok\00" @.str7442 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7443 = private unnamed_addr constant [10 x i8] c"cancelled\00" -@.str7444 = private unnamed_addr constant [14 x i8] c"job_cancelled\00" +@.str7443 = private unnamed_addr constant [7 x i8] c"failed\00" +@.str7444 = private unnamed_addr constant [11 x i8] c"job_failed\00" @.str7445 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7446 = private unnamed_addr constant [7 x i8] c"result\00" -@.str7447 = private unnamed_addr constant [11 x i8] c"job_result\00" +@.str7446 = private unnamed_addr constant [10 x i8] c"cancelled\00" +@.str7447 = private unnamed_addr constant [14 x i8] c"job_cancelled\00" @.str7448 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7449 = private unnamed_addr constant [6 x i8] c"error\00" -@.str7450 = private unnamed_addr constant [10 x i8] c"job_error\00" +@.str7449 = private unnamed_addr constant [7 x i8] c"result\00" +@.str7450 = private unnamed_addr constant [11 x i8] c"job_result\00" @.str7451 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7452 = private unnamed_addr constant [8 x i8] c"pending\00" -@.str7453 = private unnamed_addr constant [12 x i8] c"job_pending\00" -@.str7454 = private unnamed_addr constant [5 x i8] c"free\00" -@.str7455 = private unnamed_addr constant [9 x i8] c"job_free\00" -@.str7456 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7457 = private unnamed_addr constant [8 x i8] c"Promise\00" -@.str7458 = private unnamed_addr constant [4 x i8] c"all\00" -@.str7459 = private unnamed_addr constant [9 x i8] c"prom_all\00" -@.str7460 = private unnamed_addr constant [8 x i8] c"handles\00" -@.str7461 = private unnamed_addr constant [5 x i8] c"race\00" -@.str7462 = private unnamed_addr constant [10 x i8] c"prom_race\00" +@.str7452 = private unnamed_addr constant [6 x i8] c"error\00" +@.str7453 = private unnamed_addr constant [10 x i8] c"job_error\00" +@.str7454 = private unnamed_addr constant [7 x i8] c"handle\00" +@.str7455 = private unnamed_addr constant [8 x i8] c"pending\00" +@.str7456 = private unnamed_addr constant [12 x i8] c"job_pending\00" +@.str7457 = private unnamed_addr constant [5 x i8] c"free\00" +@.str7458 = private unnamed_addr constant [9 x i8] c"job_free\00" +@.str7459 = private unnamed_addr constant [7 x i8] c"handle\00" +@.str7460 = private unnamed_addr constant [8 x i8] c"Promise\00" +@.str7461 = private unnamed_addr constant [4 x i8] c"all\00" +@.str7462 = private unnamed_addr constant [9 x i8] c"prom_all\00" @.str7463 = private unnamed_addr constant [8 x i8] c"handles\00" -@.str7464 = private unnamed_addr constant [11 x i8] c"count_done\00" -@.str7465 = private unnamed_addr constant [16 x i8] c"prom_count_done\00" +@.str7464 = private unnamed_addr constant [5 x i8] c"race\00" +@.str7465 = private unnamed_addr constant [10 x i8] c"prom_race\00" @.str7466 = private unnamed_addr constant [8 x i8] c"handles\00" -@.str7467 = private unnamed_addr constant [9 x i8] c"all_done\00" -@.str7468 = private unnamed_addr constant [14 x i8] c"prom_all_done\00" +@.str7467 = private unnamed_addr constant [11 x i8] c"count_done\00" +@.str7468 = private unnamed_addr constant [16 x i8] c"prom_count_done\00" @.str7469 = private unnamed_addr constant [8 x i8] c"handles\00" -@.str7470 = private unnamed_addr constant [5 x i8] c"Sync\00" -@.str7471 = private unnamed_addr constant [6 x i8] c"mutex\00" -@.str7472 = private unnamed_addr constant [11 x i8] c"sync_mutex\00" -@.str7473 = private unnamed_addr constant [5 x i8] c"lock\00" -@.str7474 = private unnamed_addr constant [10 x i8] c"sync_lock\00" -@.str7475 = private unnamed_addr constant [6 x i8] c"mutex\00" -@.str7476 = private unnamed_addr constant [7 x i8] c"unlock\00" -@.str7477 = private unnamed_addr constant [12 x i8] c"sync_unlock\00" +@.str7470 = private unnamed_addr constant [9 x i8] c"all_done\00" +@.str7471 = private unnamed_addr constant [14 x i8] c"prom_all_done\00" +@.str7472 = private unnamed_addr constant [8 x i8] c"handles\00" +@.str7473 = private unnamed_addr constant [5 x i8] c"Sync\00" +@.str7474 = private unnamed_addr constant [6 x i8] c"mutex\00" +@.str7475 = private unnamed_addr constant [11 x i8] c"sync_mutex\00" +@.str7476 = private unnamed_addr constant [5 x i8] c"lock\00" +@.str7477 = private unnamed_addr constant [10 x i8] c"sync_lock\00" @.str7478 = private unnamed_addr constant [6 x i8] c"mutex\00" -@.str7479 = private unnamed_addr constant [9 x i8] c"try_lock\00" -@.str7480 = private unnamed_addr constant [14 x i8] c"sync_try_lock\00" +@.str7479 = private unnamed_addr constant [7 x i8] c"unlock\00" +@.str7480 = private unnamed_addr constant [12 x i8] c"sync_unlock\00" @.str7481 = private unnamed_addr constant [6 x i8] c"mutex\00" -@.str7482 = private unnamed_addr constant [7 x i8] c"atomic\00" -@.str7483 = private unnamed_addr constant [12 x i8] c"sync_atomic\00" -@.str7484 = private unnamed_addr constant [4 x i8] c"get\00" -@.str7485 = private unnamed_addr constant [9 x i8] c"sync_get\00" -@.str7486 = private unnamed_addr constant [7 x i8] c"atomic\00" -@.str7487 = private unnamed_addr constant [4 x i8] c"set\00" -@.str7488 = private unnamed_addr constant [9 x i8] c"sync_set\00" +@.str7482 = private unnamed_addr constant [9 x i8] c"try_lock\00" +@.str7483 = private unnamed_addr constant [14 x i8] c"sync_try_lock\00" +@.str7484 = private unnamed_addr constant [6 x i8] c"mutex\00" +@.str7485 = private unnamed_addr constant [7 x i8] c"atomic\00" +@.str7486 = private unnamed_addr constant [12 x i8] c"sync_atomic\00" +@.str7487 = private unnamed_addr constant [4 x i8] c"get\00" +@.str7488 = private unnamed_addr constant [9 x i8] c"sync_get\00" @.str7489 = private unnamed_addr constant [7 x i8] c"atomic\00" -@.str7490 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7491 = private unnamed_addr constant [4 x i8] c"add\00" -@.str7492 = private unnamed_addr constant [9 x i8] c"sync_add\00" -@.str7493 = private unnamed_addr constant [7 x i8] c"atomic\00" -@.str7494 = private unnamed_addr constant [6 x i8] c"delta\00" -@.str7495 = private unnamed_addr constant [4 x i8] c"cas\00" -@.str7496 = private unnamed_addr constant [9 x i8] c"sync_cas\00" -@.str7497 = private unnamed_addr constant [7 x i8] c"atomic\00" -@.str7498 = private unnamed_addr constant [7 x i8] c"expect\00" -@.str7499 = private unnamed_addr constant [5 x i8] c"next\00" -@.str7500 = private unnamed_addr constant [8 x i8] c"channel\00" -@.str7501 = private unnamed_addr constant [13 x i8] c"sync_channel\00" -@.str7502 = private unnamed_addr constant [5 x i8] c"send\00" -@.str7503 = private unnamed_addr constant [10 x i8] c"sync_send\00" -@.str7504 = private unnamed_addr constant [8 x i8] c"channel\00" -@.str7505 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7506 = private unnamed_addr constant [5 x i8] c"recv\00" -@.str7507 = private unnamed_addr constant [10 x i8] c"sync_recv\00" -@.str7508 = private unnamed_addr constant [8 x i8] c"channel\00" -@.str7509 = private unnamed_addr constant [9 x i8] c"can_recv\00" -@.str7510 = private unnamed_addr constant [14 x i8] c"sync_can_recv\00" +@.str7490 = private unnamed_addr constant [4 x i8] c"set\00" +@.str7491 = private unnamed_addr constant [9 x i8] c"sync_set\00" +@.str7492 = private unnamed_addr constant [7 x i8] c"atomic\00" +@.str7493 = private unnamed_addr constant [6 x i8] c"value\00" +@.str7494 = private unnamed_addr constant [4 x i8] c"add\00" +@.str7495 = private unnamed_addr constant [9 x i8] c"sync_add\00" +@.str7496 = private unnamed_addr constant [7 x i8] c"atomic\00" +@.str7497 = private unnamed_addr constant [6 x i8] c"delta\00" +@.str7498 = private unnamed_addr constant [4 x i8] c"cas\00" +@.str7499 = private unnamed_addr constant [9 x i8] c"sync_cas\00" +@.str7500 = private unnamed_addr constant [7 x i8] c"atomic\00" +@.str7501 = private unnamed_addr constant [7 x i8] c"expect\00" +@.str7502 = private unnamed_addr constant [5 x i8] c"next\00" +@.str7503 = private unnamed_addr constant [8 x i8] c"channel\00" +@.str7504 = private unnamed_addr constant [13 x i8] c"sync_channel\00" +@.str7505 = private unnamed_addr constant [5 x i8] c"send\00" +@.str7506 = private unnamed_addr constant [10 x i8] c"sync_send\00" +@.str7507 = private unnamed_addr constant [8 x i8] c"channel\00" +@.str7508 = private unnamed_addr constant [6 x i8] c"value\00" +@.str7509 = private unnamed_addr constant [5 x i8] c"recv\00" +@.str7510 = private unnamed_addr constant [10 x i8] c"sync_recv\00" @.str7511 = private unnamed_addr constant [8 x i8] c"channel\00" -@.str7512 = private unnamed_addr constant [4 x i8] c"len\00" -@.str7513 = private unnamed_addr constant [9 x i8] c"sync_len\00" +@.str7512 = private unnamed_addr constant [9 x i8] c"can_recv\00" +@.str7513 = private unnamed_addr constant [14 x i8] c"sync_can_recv\00" @.str7514 = private unnamed_addr constant [8 x i8] c"channel\00" -@.str7515 = private unnamed_addr constant [10 x i8] c"cpu_count\00" -@.str7516 = private unnamed_addr constant [15 x i8] c"sync_cpu_count\00" -@.str7517 = private unnamed_addr constant [5 x i8] c"Huge\00" -@.str7518 = private unnamed_addr constant [5 x i8] c"from\00" -@.str7519 = private unnamed_addr constant [10 x i8] c"huge_from\00" -@.str7520 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7521 = private unnamed_addr constant [4 x i8] c"add\00" -@.str7522 = private unnamed_addr constant [9 x i8] c"huge_add\00" -@.str7523 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7524 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7525 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str7526 = private unnamed_addr constant [9 x i8] c"huge_sub\00" -@.str7527 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7528 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7529 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str7530 = private unnamed_addr constant [9 x i8] c"huge_mul\00" -@.str7531 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7532 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7533 = private unnamed_addr constant [4 x i8] c"neg\00" -@.str7534 = private unnamed_addr constant [9 x i8] c"huge_neg\00" -@.str7535 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7536 = private unnamed_addr constant [4 x i8] c"cmp\00" -@.str7537 = private unnamed_addr constant [9 x i8] c"huge_cmp\00" +@.str7515 = private unnamed_addr constant [4 x i8] c"len\00" +@.str7516 = private unnamed_addr constant [9 x i8] c"sync_len\00" +@.str7517 = private unnamed_addr constant [8 x i8] c"channel\00" +@.str7518 = private unnamed_addr constant [10 x i8] c"cpu_count\00" +@.str7519 = private unnamed_addr constant [15 x i8] c"sync_cpu_count\00" +@.str7520 = private unnamed_addr constant [5 x i8] c"Huge\00" +@.str7521 = private unnamed_addr constant [5 x i8] c"from\00" +@.str7522 = private unnamed_addr constant [10 x i8] c"huge_from\00" +@.str7523 = private unnamed_addr constant [6 x i8] c"value\00" +@.str7524 = private unnamed_addr constant [4 x i8] c"add\00" +@.str7525 = private unnamed_addr constant [9 x i8] c"huge_add\00" +@.str7526 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7527 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7528 = private unnamed_addr constant [4 x i8] c"sub\00" +@.str7529 = private unnamed_addr constant [9 x i8] c"huge_sub\00" +@.str7530 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7531 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7532 = private unnamed_addr constant [4 x i8] c"mul\00" +@.str7533 = private unnamed_addr constant [9 x i8] c"huge_mul\00" +@.str7534 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7535 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7536 = private unnamed_addr constant [4 x i8] c"neg\00" +@.str7537 = private unnamed_addr constant [9 x i8] c"huge_neg\00" @.str7538 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7539 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7540 = private unnamed_addr constant [5 x i8] c"sign\00" -@.str7541 = private unnamed_addr constant [10 x i8] c"huge_sign\00" -@.str7542 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7543 = private unnamed_addr constant [9 x i8] c"mantissa\00" -@.str7544 = private unnamed_addr constant [14 x i8] c"huge_mantissa\00" +@.str7539 = private unnamed_addr constant [4 x i8] c"cmp\00" +@.str7540 = private unnamed_addr constant [9 x i8] c"huge_cmp\00" +@.str7541 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7542 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7543 = private unnamed_addr constant [5 x i8] c"sign\00" +@.str7544 = private unnamed_addr constant [10 x i8] c"huge_sign\00" @.str7545 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7546 = private unnamed_addr constant [4 x i8] c"exp\00" -@.str7547 = private unnamed_addr constant [9 x i8] c"huge_exp\00" +@.str7546 = private unnamed_addr constant [9 x i8] c"mantissa\00" +@.str7547 = private unnamed_addr constant [14 x i8] c"huge_mantissa\00" @.str7548 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7549 = private unnamed_addr constant [4 x i8] c"str\00" -@.str7550 = private unnamed_addr constant [9 x i8] c"huge_str\00" +@.str7549 = private unnamed_addr constant [4 x i8] c"exp\00" +@.str7550 = private unnamed_addr constant [9 x i8] c"huge_exp\00" @.str7551 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7552 = private unnamed_addr constant [6 x i8] c"Angle\00" -@.str7553 = private unnamed_addr constant [13 x i8] c"from_degrees\00" -@.str7554 = private unnamed_addr constant [19 x i8] c"angle_from_degrees\00" -@.str7555 = private unnamed_addr constant [2 x i8] c"d\00" -@.str7556 = private unnamed_addr constant [11 x i8] c"to_degrees\00" -@.str7557 = private unnamed_addr constant [17 x i8] c"angle_to_degrees\00" -@.str7558 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7559 = private unnamed_addr constant [5 x i8] c"wrap\00" -@.str7560 = private unnamed_addr constant [11 x i8] c"angle_wrap\00" +@.str7552 = private unnamed_addr constant [4 x i8] c"str\00" +@.str7553 = private unnamed_addr constant [9 x i8] c"huge_str\00" +@.str7554 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7555 = private unnamed_addr constant [6 x i8] c"Angle\00" +@.str7556 = private unnamed_addr constant [13 x i8] c"from_degrees\00" +@.str7557 = private unnamed_addr constant [19 x i8] c"angle_from_degrees\00" +@.str7558 = private unnamed_addr constant [2 x i8] c"d\00" +@.str7559 = private unnamed_addr constant [11 x i8] c"to_degrees\00" +@.str7560 = private unnamed_addr constant [17 x i8] c"angle_to_degrees\00" @.str7561 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7562 = private unnamed_addr constant [4 x i8] c"sin\00" -@.str7563 = private unnamed_addr constant [10 x i8] c"angle_sin\00" +@.str7562 = private unnamed_addr constant [5 x i8] c"wrap\00" +@.str7563 = private unnamed_addr constant [11 x i8] c"angle_wrap\00" @.str7564 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7565 = private unnamed_addr constant [4 x i8] c"cos\00" -@.str7566 = private unnamed_addr constant [10 x i8] c"angle_cos\00" +@.str7565 = private unnamed_addr constant [4 x i8] c"sin\00" +@.str7566 = private unnamed_addr constant [10 x i8] c"angle_sin\00" @.str7567 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7568 = private unnamed_addr constant [4 x i8] c"add\00" -@.str7569 = private unnamed_addr constant [10 x i8] c"angle_add\00" +@.str7568 = private unnamed_addr constant [4 x i8] c"cos\00" +@.str7569 = private unnamed_addr constant [10 x i8] c"angle_cos\00" @.str7570 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7571 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7572 = private unnamed_addr constant [5 x i8] c"diff\00" -@.str7573 = private unnamed_addr constant [11 x i8] c"angle_diff\00" -@.str7574 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7575 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7576 = private unnamed_addr constant [13 x i8] c"diff_degrees\00" -@.str7577 = private unnamed_addr constant [19 x i8] c"angle_diff_degrees\00" -@.str7578 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7579 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7580 = private unnamed_addr constant [5 x i8] c"lerp\00" -@.str7581 = private unnamed_addr constant [11 x i8] c"angle_lerp\00" -@.str7582 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7583 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7584 = private unnamed_addr constant [2 x i8] c"t\00" -@.str7585 = private unnamed_addr constant [8 x i8] c"Percent\00" -@.str7586 = private unnamed_addr constant [6 x i8] c"clamp\00" -@.str7587 = private unnamed_addr constant [14 x i8] c"percent_clamp\00" -@.str7588 = private unnamed_addr constant [2 x i8] c"v\00" -@.str7589 = private unnamed_addr constant [3 x i8] c"of\00" -@.str7590 = private unnamed_addr constant [11 x i8] c"percent_of\00" -@.str7591 = private unnamed_addr constant [4 x i8] c"num\00" -@.str7592 = private unnamed_addr constant [4 x i8] c"den\00" -@.str7593 = private unnamed_addr constant [5 x i8] c"lerp\00" -@.str7594 = private unnamed_addr constant [13 x i8] c"percent_lerp\00" -@.str7595 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7596 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7597 = private unnamed_addr constant [2 x i8] c"t\00" -@.str7598 = private unnamed_addr constant [6 x i8] c"apply\00" -@.str7599 = private unnamed_addr constant [14 x i8] c"percent_apply\00" -@.str7600 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7601 = private unnamed_addr constant [2 x i8] c"p\00" -@.str7602 = private unnamed_addr constant [5 x i8] c"Grid\00" -@.str7603 = private unnamed_addr constant [5 x i8] c"line\00" -@.str7604 = private unnamed_addr constant [10 x i8] c"grid_line\00" -@.str7605 = private unnamed_addr constant [3 x i8] c"x0\00" -@.str7606 = private unnamed_addr constant [3 x i8] c"y0\00" -@.str7607 = private unnamed_addr constant [3 x i8] c"x1\00" -@.str7608 = private unnamed_addr constant [3 x i8] c"y1\00" -@.str7609 = private unnamed_addr constant [8 x i8] c"blocked\00" -@.str7610 = private unnamed_addr constant [13 x i8] c"grid_blocked\00" -@.str7611 = private unnamed_addr constant [2 x i8] c"x\00" -@.str7612 = private unnamed_addr constant [2 x i8] c"y\00" -@.str7613 = private unnamed_addr constant [5 x i8] c"wall\00" -@.str7614 = private unnamed_addr constant [14 x i8] c"line_of_sight\00" -@.str7615 = private unnamed_addr constant [19 x i8] c"grid_line_of_sight\00" -@.str7616 = private unnamed_addr constant [3 x i8] c"x0\00" -@.str7617 = private unnamed_addr constant [3 x i8] c"y0\00" -@.str7618 = private unnamed_addr constant [3 x i8] c"x1\00" -@.str7619 = private unnamed_addr constant [3 x i8] c"y1\00" -@.str7620 = private unnamed_addr constant [5 x i8] c"wall\00" -@.str7621 = private unnamed_addr constant [6 x i8] c"flood\00" -@.str7622 = private unnamed_addr constant [11 x i8] c"grid_flood\00" -@.str7623 = private unnamed_addr constant [2 x i8] c"x\00" -@.str7624 = private unnamed_addr constant [2 x i8] c"y\00" -@.str7625 = private unnamed_addr constant [5 x i8] c"wall\00" -@.str7626 = private unnamed_addr constant [7 x i8] c"a_star\00" -@.str7627 = private unnamed_addr constant [12 x i8] c"path_a_star\00" -@.str7628 = private unnamed_addr constant [3 x i8] c"x0\00" -@.str7629 = private unnamed_addr constant [3 x i8] c"y0\00" -@.str7630 = private unnamed_addr constant [3 x i8] c"x1\00" -@.str7631 = private unnamed_addr constant [3 x i8] c"y1\00" -@.str7632 = private unnamed_addr constant [5 x i8] c"wall\00" -@.str7633 = private unnamed_addr constant [6 x i8] c"Light\00" -@.str7634 = private unnamed_addr constant [8 x i8] c"ambient\00" -@.str7635 = private unnamed_addr constant [14 x i8] c"light_ambient\00" -@.str7636 = private unnamed_addr constant [6 x i8] c"color\00" -@.str7637 = private unnamed_addr constant [6 x i8] c"point\00" -@.str7638 = private unnamed_addr constant [12 x i8] c"light_point\00" -@.str7639 = private unnamed_addr constant [2 x i8] c"x\00" -@.str7640 = private unnamed_addr constant [2 x i8] c"y\00" -@.str7641 = private unnamed_addr constant [7 x i8] c"radius\00" -@.str7642 = private unnamed_addr constant [6 x i8] c"color\00" -@.str7643 = private unnamed_addr constant [7 x i8] c"energy\00" -@.str7644 = private unnamed_addr constant [5 x i8] c"spot\00" -@.str7645 = private unnamed_addr constant [11 x i8] c"light_spot\00" -@.str7646 = private unnamed_addr constant [2 x i8] c"x\00" -@.str7647 = private unnamed_addr constant [2 x i8] c"y\00" -@.str7648 = private unnamed_addr constant [7 x i8] c"radius\00" -@.str7649 = private unnamed_addr constant [6 x i8] c"color\00" -@.str7650 = private unnamed_addr constant [7 x i8] c"energy\00" -@.str7651 = private unnamed_addr constant [10 x i8] c"direction\00" -@.str7652 = private unnamed_addr constant [7 x i8] c"spread\00" -@.str7653 = private unnamed_addr constant [8 x i8] c"occlude\00" -@.str7654 = private unnamed_addr constant [14 x i8] c"light_occlude\00" -@.str7655 = private unnamed_addr constant [2 x i8] c"x\00" -@.str7656 = private unnamed_addr constant [2 x i8] c"y\00" -@.str7657 = private unnamed_addr constant [6 x i8] c"width\00" -@.str7658 = private unnamed_addr constant [7 x i8] c"height\00" -@.str7659 = private unnamed_addr constant [16 x i8] c"clear_occluders\00" -@.str7660 = private unnamed_addr constant [22 x i8] c"light_clear_occluders\00" -@.str7661 = private unnamed_addr constant [8 x i8] c"falloff\00" -@.str7662 = private unnamed_addr constant [18 x i8] c"light_set_falloff\00" -@.str7663 = private unnamed_addr constant [9 x i8] c"exponent\00" -@.str7664 = private unnamed_addr constant [5 x i8] c"soft\00" -@.str7665 = private unnamed_addr constant [15 x i8] c"light_set_soft\00" -@.str7666 = private unnamed_addr constant [7 x i8] c"radius\00" -@.str7667 = private unnamed_addr constant [4 x i8] c"gel\00" -@.str7668 = private unnamed_addr constant [14 x i8] c"light_set_gel\00" -@.str7669 = private unnamed_addr constant [6 x i8] c"color\00" -@.str7670 = private unnamed_addr constant [10 x i8] c"clear_gel\00" -@.str7671 = private unnamed_addr constant [16 x i8] c"light_clear_gel\00" -@.str7672 = private unnamed_addr constant [7 x i8] c"height\00" -@.str7673 = private unnamed_addr constant [17 x i8] c"light_set_height\00" -@.str7674 = private unnamed_addr constant [7 x i8] c"height\00" -@.str7675 = private unnamed_addr constant [7 x i8] c"normal\00" -@.str7676 = private unnamed_addr constant [18 x i8] c"light_normal_rect\00" -@.str7677 = private unnamed_addr constant [2 x i8] c"x\00" -@.str7678 = private unnamed_addr constant [2 x i8] c"y\00" -@.str7679 = private unnamed_addr constant [6 x i8] c"width\00" -@.str7680 = private unnamed_addr constant [7 x i8] c"height\00" -@.str7681 = private unnamed_addr constant [3 x i8] c"nx\00" -@.str7682 = private unnamed_addr constant [3 x i8] c"ny\00" -@.str7683 = private unnamed_addr constant [14 x i8] c"clear_normals\00" -@.str7684 = private unnamed_addr constant [20 x i8] c"light_clear_normals\00" -@.str7685 = private unnamed_addr constant [12 x i8] c"time_of_day\00" -@.str7686 = private unnamed_addr constant [18 x i8] c"light_time_of_day\00" -@.str7687 = private unnamed_addr constant [2 x i8] c"t\00" -@.str7688 = private unnamed_addr constant [5 x i8] c"Anim\00" -@.str7689 = private unnamed_addr constant [5 x i8] c"clip\00" -@.str7690 = private unnamed_addr constant [10 x i8] c"anim_clip\00" -@.str7691 = private unnamed_addr constant [5 x i8] c"name\00" -@.str7692 = private unnamed_addr constant [7 x i8] c"frames\00" -@.str7693 = private unnamed_addr constant [4 x i8] c"fps\00" -@.str7694 = private unnamed_addr constant [5 x i8] c"mode\00" -@.str7695 = private unnamed_addr constant [9 x i8] c"on_frame\00" -@.str7696 = private unnamed_addr constant [14 x i8] c"anim_on_frame\00" -@.str7697 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str7698 = private unnamed_addr constant [6 x i8] c"frame\00" -@.str7699 = private unnamed_addr constant [6 x i8] c"fired\00" -@.str7700 = private unnamed_addr constant [11 x i8] c"anim_fired\00" -@.str7701 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str7702 = private unnamed_addr constant [5 x i8] c"play\00" -@.str7703 = private unnamed_addr constant [16 x i8] c"anim_play_named\00" +@.str7571 = private unnamed_addr constant [4 x i8] c"add\00" +@.str7572 = private unnamed_addr constant [10 x i8] c"angle_add\00" +@.str7573 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7574 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7575 = private unnamed_addr constant [5 x i8] c"diff\00" +@.str7576 = private unnamed_addr constant [11 x i8] c"angle_diff\00" +@.str7577 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7578 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7579 = private unnamed_addr constant [13 x i8] c"diff_degrees\00" +@.str7580 = private unnamed_addr constant [19 x i8] c"angle_diff_degrees\00" +@.str7581 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7582 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7583 = private unnamed_addr constant [5 x i8] c"lerp\00" +@.str7584 = private unnamed_addr constant [11 x i8] c"angle_lerp\00" +@.str7585 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7586 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7587 = private unnamed_addr constant [2 x i8] c"t\00" +@.str7588 = private unnamed_addr constant [8 x i8] c"Percent\00" +@.str7589 = private unnamed_addr constant [6 x i8] c"clamp\00" +@.str7590 = private unnamed_addr constant [14 x i8] c"percent_clamp\00" +@.str7591 = private unnamed_addr constant [2 x i8] c"v\00" +@.str7592 = private unnamed_addr constant [3 x i8] c"of\00" +@.str7593 = private unnamed_addr constant [11 x i8] c"percent_of\00" +@.str7594 = private unnamed_addr constant [4 x i8] c"num\00" +@.str7595 = private unnamed_addr constant [4 x i8] c"den\00" +@.str7596 = private unnamed_addr constant [5 x i8] c"lerp\00" +@.str7597 = private unnamed_addr constant [13 x i8] c"percent_lerp\00" +@.str7598 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7599 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7600 = private unnamed_addr constant [2 x i8] c"t\00" +@.str7601 = private unnamed_addr constant [6 x i8] c"apply\00" +@.str7602 = private unnamed_addr constant [14 x i8] c"percent_apply\00" +@.str7603 = private unnamed_addr constant [6 x i8] c"value\00" +@.str7604 = private unnamed_addr constant [2 x i8] c"p\00" +@.str7605 = private unnamed_addr constant [5 x i8] c"Grid\00" +@.str7606 = private unnamed_addr constant [5 x i8] c"line\00" +@.str7607 = private unnamed_addr constant [10 x i8] c"grid_line\00" +@.str7608 = private unnamed_addr constant [3 x i8] c"x0\00" +@.str7609 = private unnamed_addr constant [3 x i8] c"y0\00" +@.str7610 = private unnamed_addr constant [3 x i8] c"x1\00" +@.str7611 = private unnamed_addr constant [3 x i8] c"y1\00" +@.str7612 = private unnamed_addr constant [8 x i8] c"blocked\00" +@.str7613 = private unnamed_addr constant [13 x i8] c"grid_blocked\00" +@.str7614 = private unnamed_addr constant [2 x i8] c"x\00" +@.str7615 = private unnamed_addr constant [2 x i8] c"y\00" +@.str7616 = private unnamed_addr constant [5 x i8] c"wall\00" +@.str7617 = private unnamed_addr constant [14 x i8] c"line_of_sight\00" +@.str7618 = private unnamed_addr constant [19 x i8] c"grid_line_of_sight\00" +@.str7619 = private unnamed_addr constant [3 x i8] c"x0\00" +@.str7620 = private unnamed_addr constant [3 x i8] c"y0\00" +@.str7621 = private unnamed_addr constant [3 x i8] c"x1\00" +@.str7622 = private unnamed_addr constant [3 x i8] c"y1\00" +@.str7623 = private unnamed_addr constant [5 x i8] c"wall\00" +@.str7624 = private unnamed_addr constant [6 x i8] c"flood\00" +@.str7625 = private unnamed_addr constant [11 x i8] c"grid_flood\00" +@.str7626 = private unnamed_addr constant [2 x i8] c"x\00" +@.str7627 = private unnamed_addr constant [2 x i8] c"y\00" +@.str7628 = private unnamed_addr constant [5 x i8] c"wall\00" +@.str7629 = private unnamed_addr constant [7 x i8] c"a_star\00" +@.str7630 = private unnamed_addr constant [12 x i8] c"path_a_star\00" +@.str7631 = private unnamed_addr constant [3 x i8] c"x0\00" +@.str7632 = private unnamed_addr constant [3 x i8] c"y0\00" +@.str7633 = private unnamed_addr constant [3 x i8] c"x1\00" +@.str7634 = private unnamed_addr constant [3 x i8] c"y1\00" +@.str7635 = private unnamed_addr constant [5 x i8] c"wall\00" +@.str7636 = private unnamed_addr constant [6 x i8] c"Light\00" +@.str7637 = private unnamed_addr constant [8 x i8] c"ambient\00" +@.str7638 = private unnamed_addr constant [14 x i8] c"light_ambient\00" +@.str7639 = private unnamed_addr constant [6 x i8] c"color\00" +@.str7640 = private unnamed_addr constant [6 x i8] c"point\00" +@.str7641 = private unnamed_addr constant [12 x i8] c"light_point\00" +@.str7642 = private unnamed_addr constant [2 x i8] c"x\00" +@.str7643 = private unnamed_addr constant [2 x i8] c"y\00" +@.str7644 = private unnamed_addr constant [7 x i8] c"radius\00" +@.str7645 = private unnamed_addr constant [6 x i8] c"color\00" +@.str7646 = private unnamed_addr constant [7 x i8] c"energy\00" +@.str7647 = private unnamed_addr constant [5 x i8] c"spot\00" +@.str7648 = private unnamed_addr constant [11 x i8] c"light_spot\00" +@.str7649 = private unnamed_addr constant [2 x i8] c"x\00" +@.str7650 = private unnamed_addr constant [2 x i8] c"y\00" +@.str7651 = private unnamed_addr constant [7 x i8] c"radius\00" +@.str7652 = private unnamed_addr constant [6 x i8] c"color\00" +@.str7653 = private unnamed_addr constant [7 x i8] c"energy\00" +@.str7654 = private unnamed_addr constant [10 x i8] c"direction\00" +@.str7655 = private unnamed_addr constant [7 x i8] c"spread\00" +@.str7656 = private unnamed_addr constant [8 x i8] c"occlude\00" +@.str7657 = private unnamed_addr constant [14 x i8] c"light_occlude\00" +@.str7658 = private unnamed_addr constant [2 x i8] c"x\00" +@.str7659 = private unnamed_addr constant [2 x i8] c"y\00" +@.str7660 = private unnamed_addr constant [6 x i8] c"width\00" +@.str7661 = private unnamed_addr constant [7 x i8] c"height\00" +@.str7662 = private unnamed_addr constant [16 x i8] c"clear_occluders\00" +@.str7663 = private unnamed_addr constant [22 x i8] c"light_clear_occluders\00" +@.str7664 = private unnamed_addr constant [8 x i8] c"falloff\00" +@.str7665 = private unnamed_addr constant [18 x i8] c"light_set_falloff\00" +@.str7666 = private unnamed_addr constant [9 x i8] c"exponent\00" +@.str7667 = private unnamed_addr constant [5 x i8] c"soft\00" +@.str7668 = private unnamed_addr constant [15 x i8] c"light_set_soft\00" +@.str7669 = private unnamed_addr constant [7 x i8] c"radius\00" +@.str7670 = private unnamed_addr constant [4 x i8] c"gel\00" +@.str7671 = private unnamed_addr constant [14 x i8] c"light_set_gel\00" +@.str7672 = private unnamed_addr constant [6 x i8] c"color\00" +@.str7673 = private unnamed_addr constant [10 x i8] c"clear_gel\00" +@.str7674 = private unnamed_addr constant [16 x i8] c"light_clear_gel\00" +@.str7675 = private unnamed_addr constant [7 x i8] c"height\00" +@.str7676 = private unnamed_addr constant [17 x i8] c"light_set_height\00" +@.str7677 = private unnamed_addr constant [7 x i8] c"height\00" +@.str7678 = private unnamed_addr constant [7 x i8] c"normal\00" +@.str7679 = private unnamed_addr constant [18 x i8] c"light_normal_rect\00" +@.str7680 = private unnamed_addr constant [2 x i8] c"x\00" +@.str7681 = private unnamed_addr constant [2 x i8] c"y\00" +@.str7682 = private unnamed_addr constant [6 x i8] c"width\00" +@.str7683 = private unnamed_addr constant [7 x i8] c"height\00" +@.str7684 = private unnamed_addr constant [3 x i8] c"nx\00" +@.str7685 = private unnamed_addr constant [3 x i8] c"ny\00" +@.str7686 = private unnamed_addr constant [14 x i8] c"clear_normals\00" +@.str7687 = private unnamed_addr constant [20 x i8] c"light_clear_normals\00" +@.str7688 = private unnamed_addr constant [12 x i8] c"time_of_day\00" +@.str7689 = private unnamed_addr constant [18 x i8] c"light_time_of_day\00" +@.str7690 = private unnamed_addr constant [2 x i8] c"t\00" +@.str7691 = private unnamed_addr constant [5 x i8] c"Anim\00" +@.str7692 = private unnamed_addr constant [5 x i8] c"clip\00" +@.str7693 = private unnamed_addr constant [10 x i8] c"anim_clip\00" +@.str7694 = private unnamed_addr constant [5 x i8] c"name\00" +@.str7695 = private unnamed_addr constant [7 x i8] c"frames\00" +@.str7696 = private unnamed_addr constant [4 x i8] c"fps\00" +@.str7697 = private unnamed_addr constant [5 x i8] c"mode\00" +@.str7698 = private unnamed_addr constant [9 x i8] c"on_frame\00" +@.str7699 = private unnamed_addr constant [14 x i8] c"anim_on_frame\00" +@.str7700 = private unnamed_addr constant [7 x i8] c"entity\00" +@.str7701 = private unnamed_addr constant [6 x i8] c"frame\00" +@.str7702 = private unnamed_addr constant [6 x i8] c"fired\00" +@.str7703 = private unnamed_addr constant [11 x i8] c"anim_fired\00" @.str7704 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str7705 = private unnamed_addr constant [5 x i8] c"clip\00" -@.str7706 = private unnamed_addr constant [10 x i8] c"anim_play\00" +@.str7705 = private unnamed_addr constant [5 x i8] c"play\00" +@.str7706 = private unnamed_addr constant [16 x i8] c"anim_play_named\00" @.str7707 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str7708 = private unnamed_addr constant [4 x i8] c"fps\00" -@.str7709 = private unnamed_addr constant [7 x i8] c"frames\00" -@.str7710 = private unnamed_addr constant [5 x i8] c"mode\00" -@.str7711 = private unnamed_addr constant [7 x i8] c"Motion\00" -@.str7712 = private unnamed_addr constant [3 x i8] c"to\00" -@.str7713 = private unnamed_addr constant [10 x i8] c"motion_to\00" -@.str7714 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str7715 = private unnamed_addr constant [5 x i8] c"from\00" -@.str7716 = private unnamed_addr constant [3 x i8] c"to\00" -@.str7717 = private unnamed_addr constant [4 x i8] c"dur\00" -@.str7718 = private unnamed_addr constant [5 x i8] c"ease\00" -@.str7719 = private unnamed_addr constant [6 x i8] c"Tween\00" -@.str7720 = private unnamed_addr constant [3 x i8] c"to\00" -@.str7721 = private unnamed_addr constant [9 x i8] c"tween_to\00" -@.str7722 = private unnamed_addr constant [5 x i8] c"from\00" +@.str7708 = private unnamed_addr constant [5 x i8] c"clip\00" +@.str7709 = private unnamed_addr constant [10 x i8] c"anim_play\00" +@.str7710 = private unnamed_addr constant [7 x i8] c"entity\00" +@.str7711 = private unnamed_addr constant [4 x i8] c"fps\00" +@.str7712 = private unnamed_addr constant [7 x i8] c"frames\00" +@.str7713 = private unnamed_addr constant [5 x i8] c"mode\00" +@.str7714 = private unnamed_addr constant [7 x i8] c"Motion\00" +@.str7715 = private unnamed_addr constant [3 x i8] c"to\00" +@.str7716 = private unnamed_addr constant [10 x i8] c"motion_to\00" +@.str7717 = private unnamed_addr constant [7 x i8] c"entity\00" +@.str7718 = private unnamed_addr constant [5 x i8] c"from\00" +@.str7719 = private unnamed_addr constant [3 x i8] c"to\00" +@.str7720 = private unnamed_addr constant [4 x i8] c"dur\00" +@.str7721 = private unnamed_addr constant [5 x i8] c"ease\00" +@.str7722 = private unnamed_addr constant [6 x i8] c"Tween\00" @.str7723 = private unnamed_addr constant [3 x i8] c"to\00" -@.str7724 = private unnamed_addr constant [4 x i8] c"dur\00" -@.str7725 = private unnamed_addr constant [5 x i8] c"ease\00" -@.str7726 = private unnamed_addr constant [6 x i8] c"chain\00" -@.str7727 = private unnamed_addr constant [12 x i8] c"tween_chain\00" -@.str7728 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7729 = private unnamed_addr constant [3 x i8] c"to\00" -@.str7730 = private unnamed_addr constant [4 x i8] c"dur\00" -@.str7731 = private unnamed_addr constant [5 x i8] c"ease\00" -@.str7732 = private unnamed_addr constant [6 x i8] c"delay\00" -@.str7733 = private unnamed_addr constant [12 x i8] c"tween_delay\00" -@.str7734 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7735 = private unnamed_addr constant [6 x i8] c"ticks\00" -@.str7736 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7737 = private unnamed_addr constant [12 x i8] c"tween_value\00" -@.str7738 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7739 = private unnamed_addr constant [5 x i8] c"stop\00" -@.str7740 = private unnamed_addr constant [11 x i8] c"tween_stop\00" +@.str7724 = private unnamed_addr constant [9 x i8] c"tween_to\00" +@.str7725 = private unnamed_addr constant [5 x i8] c"from\00" +@.str7726 = private unnamed_addr constant [3 x i8] c"to\00" +@.str7727 = private unnamed_addr constant [4 x i8] c"dur\00" +@.str7728 = private unnamed_addr constant [5 x i8] c"ease\00" +@.str7729 = private unnamed_addr constant [6 x i8] c"chain\00" +@.str7730 = private unnamed_addr constant [12 x i8] c"tween_chain\00" +@.str7731 = private unnamed_addr constant [7 x i8] c"handle\00" +@.str7732 = private unnamed_addr constant [3 x i8] c"to\00" +@.str7733 = private unnamed_addr constant [4 x i8] c"dur\00" +@.str7734 = private unnamed_addr constant [5 x i8] c"ease\00" +@.str7735 = private unnamed_addr constant [6 x i8] c"delay\00" +@.str7736 = private unnamed_addr constant [12 x i8] c"tween_delay\00" +@.str7737 = private unnamed_addr constant [7 x i8] c"handle\00" +@.str7738 = private unnamed_addr constant [6 x i8] c"ticks\00" +@.str7739 = private unnamed_addr constant [6 x i8] c"value\00" +@.str7740 = private unnamed_addr constant [12 x i8] c"tween_value\00" @.str7741 = private unnamed_addr constant [7 x i8] c"handle\00" -@.str7742 = private unnamed_addr constant [9 x i8] c"parallel\00" -@.str7743 = private unnamed_addr constant [15 x i8] c"tween_parallel\00" -@.str7744 = private unnamed_addr constant [2 x i8] c"a\00" -@.str7745 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7746 = private unnamed_addr constant [6 x i8] c"Query\00" -@.str7747 = private unnamed_addr constant [6 x i8] c"count\00" -@.str7748 = private unnamed_addr constant [12 x i8] c"query_count\00" -@.str7749 = private unnamed_addr constant [5 x i8] c"prop\00" -@.str7750 = private unnamed_addr constant [6 x i8] c"first\00" -@.str7751 = private unnamed_addr constant [12 x i8] c"query_first\00" +@.str7742 = private unnamed_addr constant [5 x i8] c"stop\00" +@.str7743 = private unnamed_addr constant [11 x i8] c"tween_stop\00" +@.str7744 = private unnamed_addr constant [7 x i8] c"handle\00" +@.str7745 = private unnamed_addr constant [9 x i8] c"parallel\00" +@.str7746 = private unnamed_addr constant [15 x i8] c"tween_parallel\00" +@.str7747 = private unnamed_addr constant [2 x i8] c"a\00" +@.str7748 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7749 = private unnamed_addr constant [6 x i8] c"Query\00" +@.str7750 = private unnamed_addr constant [6 x i8] c"count\00" +@.str7751 = private unnamed_addr constant [12 x i8] c"query_count\00" @.str7752 = private unnamed_addr constant [5 x i8] c"prop\00" -@.str7753 = private unnamed_addr constant [8 x i8] c"nearest\00" -@.str7754 = private unnamed_addr constant [14 x i8] c"query_nearest\00" +@.str7753 = private unnamed_addr constant [6 x i8] c"first\00" +@.str7754 = private unnamed_addr constant [12 x i8] c"query_first\00" @.str7755 = private unnamed_addr constant [5 x i8] c"prop\00" -@.str7756 = private unnamed_addr constant [4 x i8] c"pos\00" -@.str7757 = private unnamed_addr constant [8 x i8] c"x_field\00" -@.str7758 = private unnamed_addr constant [8 x i8] c"y_field\00" -@.str7759 = private unnamed_addr constant [2 x i8] c"x\00" -@.str7760 = private unnamed_addr constant [2 x i8] c"y\00" -@.str7761 = private unnamed_addr constant [7 x i8] c"within\00" -@.str7762 = private unnamed_addr constant [13 x i8] c"query_within\00" -@.str7763 = private unnamed_addr constant [5 x i8] c"prop\00" -@.str7764 = private unnamed_addr constant [4 x i8] c"pos\00" -@.str7765 = private unnamed_addr constant [2 x i8] c"x\00" -@.str7766 = private unnamed_addr constant [2 x i8] c"y\00" -@.str7767 = private unnamed_addr constant [7 x i8] c"radius\00" -@.str7768 = private unnamed_addr constant [8 x i8] c"x_field\00" -@.str7769 = private unnamed_addr constant [8 x i8] c"y_field\00" -@.str7770 = private unnamed_addr constant [8 x i8] c"Reflect\00" -@.str7771 = private unnamed_addr constant [5 x i8] c"prop\00" -@.str7772 = private unnamed_addr constant [14 x i8] c"world_prop_id\00" -@.str7773 = private unnamed_addr constant [5 x i8] c"name\00" -@.str7774 = private unnamed_addr constant [6 x i8] c"field\00" -@.str7775 = private unnamed_addr constant [15 x i8] c"world_field_id\00" -@.str7776 = private unnamed_addr constant [5 x i8] c"prop\00" -@.str7777 = private unnamed_addr constant [5 x i8] c"name\00" -@.str7778 = private unnamed_addr constant [11 x i8] c"prop_count\00" -@.str7779 = private unnamed_addr constant [17 x i8] c"world_prop_count\00" -@.str7780 = private unnamed_addr constant [10 x i8] c"prop_name\00" -@.str7781 = private unnamed_addr constant [16 x i8] c"world_prop_name\00" -@.str7782 = private unnamed_addr constant [6 x i8] c"index\00" -@.str7783 = private unnamed_addr constant [12 x i8] c"field_count\00" -@.str7784 = private unnamed_addr constant [18 x i8] c"world_field_count\00" -@.str7785 = private unnamed_addr constant [5 x i8] c"prop\00" -@.str7786 = private unnamed_addr constant [11 x i8] c"field_name\00" -@.str7787 = private unnamed_addr constant [17 x i8] c"world_field_name\00" +@.str7756 = private unnamed_addr constant [8 x i8] c"nearest\00" +@.str7757 = private unnamed_addr constant [14 x i8] c"query_nearest\00" +@.str7758 = private unnamed_addr constant [5 x i8] c"prop\00" +@.str7759 = private unnamed_addr constant [4 x i8] c"pos\00" +@.str7760 = private unnamed_addr constant [8 x i8] c"x_field\00" +@.str7761 = private unnamed_addr constant [8 x i8] c"y_field\00" +@.str7762 = private unnamed_addr constant [2 x i8] c"x\00" +@.str7763 = private unnamed_addr constant [2 x i8] c"y\00" +@.str7764 = private unnamed_addr constant [7 x i8] c"within\00" +@.str7765 = private unnamed_addr constant [13 x i8] c"query_within\00" +@.str7766 = private unnamed_addr constant [5 x i8] c"prop\00" +@.str7767 = private unnamed_addr constant [4 x i8] c"pos\00" +@.str7768 = private unnamed_addr constant [2 x i8] c"x\00" +@.str7769 = private unnamed_addr constant [2 x i8] c"y\00" +@.str7770 = private unnamed_addr constant [7 x i8] c"radius\00" +@.str7771 = private unnamed_addr constant [8 x i8] c"x_field\00" +@.str7772 = private unnamed_addr constant [8 x i8] c"y_field\00" +@.str7773 = private unnamed_addr constant [8 x i8] c"Reflect\00" +@.str7774 = private unnamed_addr constant [5 x i8] c"prop\00" +@.str7775 = private unnamed_addr constant [14 x i8] c"world_prop_id\00" +@.str7776 = private unnamed_addr constant [5 x i8] c"name\00" +@.str7777 = private unnamed_addr constant [6 x i8] c"field\00" +@.str7778 = private unnamed_addr constant [15 x i8] c"world_field_id\00" +@.str7779 = private unnamed_addr constant [5 x i8] c"prop\00" +@.str7780 = private unnamed_addr constant [5 x i8] c"name\00" +@.str7781 = private unnamed_addr constant [11 x i8] c"prop_count\00" +@.str7782 = private unnamed_addr constant [17 x i8] c"world_prop_count\00" +@.str7783 = private unnamed_addr constant [10 x i8] c"prop_name\00" +@.str7784 = private unnamed_addr constant [16 x i8] c"world_prop_name\00" +@.str7785 = private unnamed_addr constant [6 x i8] c"index\00" +@.str7786 = private unnamed_addr constant [12 x i8] c"field_count\00" +@.str7787 = private unnamed_addr constant [18 x i8] c"world_field_count\00" @.str7788 = private unnamed_addr constant [5 x i8] c"prop\00" -@.str7789 = private unnamed_addr constant [6 x i8] c"index\00" -@.str7790 = private unnamed_addr constant [11 x i8] c"field_type\00" -@.str7791 = private unnamed_addr constant [17 x i8] c"world_field_type\00" -@.str7792 = private unnamed_addr constant [5 x i8] c"prop\00" -@.str7793 = private unnamed_addr constant [6 x i8] c"index\00" -@.str7794 = private unnamed_addr constant [4 x i8] c"get\00" -@.str7795 = private unnamed_addr constant [10 x i8] c"world_get\00" -@.str7796 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str7797 = private unnamed_addr constant [5 x i8] c"prop\00" -@.str7798 = private unnamed_addr constant [6 x i8] c"field\00" -@.str7799 = private unnamed_addr constant [4 x i8] c"set\00" -@.str7800 = private unnamed_addr constant [10 x i8] c"world_set\00" -@.str7801 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str7802 = private unnamed_addr constant [5 x i8] c"prop\00" -@.str7803 = private unnamed_addr constant [6 x i8] c"field\00" -@.str7804 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7805 = private unnamed_addr constant [4 x i8] c"has\00" -@.str7806 = private unnamed_addr constant [10 x i8] c"world_has\00" -@.str7807 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str7808 = private unnamed_addr constant [5 x i8] c"prop\00" -@.str7809 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str7810 = private unnamed_addr constant [11 x i8] c"world_kind\00" -@.str7811 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str7812 = private unnamed_addr constant [6 x i8] c"model\00" -@.str7813 = private unnamed_addr constant [15 x i8] c"world_model_id\00" -@.str7814 = private unnamed_addr constant [5 x i8] c"name\00" -@.str7815 = private unnamed_addr constant [10 x i8] c"serialize\00" -@.str7816 = private unnamed_addr constant [18 x i8] c"reflect_serialize\00" -@.str7817 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str7818 = private unnamed_addr constant [6 x i8] c"apply\00" -@.str7819 = private unnamed_addr constant [14 x i8] c"reflect_apply\00" +@.str7789 = private unnamed_addr constant [11 x i8] c"field_name\00" +@.str7790 = private unnamed_addr constant [17 x i8] c"world_field_name\00" +@.str7791 = private unnamed_addr constant [5 x i8] c"prop\00" +@.str7792 = private unnamed_addr constant [6 x i8] c"index\00" +@.str7793 = private unnamed_addr constant [11 x i8] c"field_type\00" +@.str7794 = private unnamed_addr constant [17 x i8] c"world_field_type\00" +@.str7795 = private unnamed_addr constant [5 x i8] c"prop\00" +@.str7796 = private unnamed_addr constant [6 x i8] c"index\00" +@.str7797 = private unnamed_addr constant [4 x i8] c"get\00" +@.str7798 = private unnamed_addr constant [10 x i8] c"world_get\00" +@.str7799 = private unnamed_addr constant [7 x i8] c"entity\00" +@.str7800 = private unnamed_addr constant [5 x i8] c"prop\00" +@.str7801 = private unnamed_addr constant [6 x i8] c"field\00" +@.str7802 = private unnamed_addr constant [4 x i8] c"set\00" +@.str7803 = private unnamed_addr constant [10 x i8] c"world_set\00" +@.str7804 = private unnamed_addr constant [7 x i8] c"entity\00" +@.str7805 = private unnamed_addr constant [5 x i8] c"prop\00" +@.str7806 = private unnamed_addr constant [6 x i8] c"field\00" +@.str7807 = private unnamed_addr constant [6 x i8] c"value\00" +@.str7808 = private unnamed_addr constant [4 x i8] c"has\00" +@.str7809 = private unnamed_addr constant [10 x i8] c"world_has\00" +@.str7810 = private unnamed_addr constant [7 x i8] c"entity\00" +@.str7811 = private unnamed_addr constant [5 x i8] c"prop\00" +@.str7812 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str7813 = private unnamed_addr constant [11 x i8] c"world_kind\00" +@.str7814 = private unnamed_addr constant [7 x i8] c"entity\00" +@.str7815 = private unnamed_addr constant [6 x i8] c"model\00" +@.str7816 = private unnamed_addr constant [15 x i8] c"world_model_id\00" +@.str7817 = private unnamed_addr constant [5 x i8] c"name\00" +@.str7818 = private unnamed_addr constant [10 x i8] c"serialize\00" +@.str7819 = private unnamed_addr constant [18 x i8] c"reflect_serialize\00" @.str7820 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str7821 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7822 = private unnamed_addr constant [6 x i8] c"Value\00" -@.str7823 = private unnamed_addr constant [5 x i8] c"null\00" -@.str7824 = private unnamed_addr constant [11 x i8] c"value_null\00" -@.str7825 = private unnamed_addr constant [4 x i8] c"int\00" -@.str7826 = private unnamed_addr constant [10 x i8] c"value_int\00" -@.str7827 = private unnamed_addr constant [2 x i8] c"n\00" -@.str7828 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str7829 = private unnamed_addr constant [12 x i8] c"value_fixed\00" -@.str7830 = private unnamed_addr constant [2 x i8] c"f\00" -@.str7831 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str7832 = private unnamed_addr constant [11 x i8] c"value_bool\00" -@.str7833 = private unnamed_addr constant [2 x i8] c"b\00" -@.str7834 = private unnamed_addr constant [4 x i8] c"str\00" -@.str7835 = private unnamed_addr constant [10 x i8] c"value_str\00" -@.str7836 = private unnamed_addr constant [2 x i8] c"s\00" -@.str7837 = private unnamed_addr constant [5 x i8] c"list\00" -@.str7838 = private unnamed_addr constant [11 x i8] c"value_list\00" -@.str7839 = private unnamed_addr constant [7 x i8] c"object\00" -@.str7840 = private unnamed_addr constant [13 x i8] c"value_object\00" -@.str7841 = private unnamed_addr constant [4 x i8] c"add\00" -@.str7842 = private unnamed_addr constant [10 x i8] c"value_add\00" -@.str7843 = private unnamed_addr constant [5 x i8] c"list\00" -@.str7844 = private unnamed_addr constant [5 x i8] c"item\00" -@.str7845 = private unnamed_addr constant [4 x i8] c"put\00" -@.str7846 = private unnamed_addr constant [10 x i8] c"value_put\00" -@.str7847 = private unnamed_addr constant [4 x i8] c"obj\00" -@.str7848 = private unnamed_addr constant [4 x i8] c"key\00" -@.str7849 = private unnamed_addr constant [5 x i8] c"item\00" -@.str7850 = private unnamed_addr constant [4 x i8] c"get\00" -@.str7851 = private unnamed_addr constant [10 x i8] c"value_get\00" -@.str7852 = private unnamed_addr constant [4 x i8] c"obj\00" -@.str7853 = private unnamed_addr constant [4 x i8] c"key\00" -@.str7854 = private unnamed_addr constant [4 x i8] c"has\00" -@.str7855 = private unnamed_addr constant [10 x i8] c"value_has\00" -@.str7856 = private unnamed_addr constant [4 x i8] c"obj\00" -@.str7857 = private unnamed_addr constant [4 x i8] c"key\00" -@.str7858 = private unnamed_addr constant [3 x i8] c"at\00" -@.str7859 = private unnamed_addr constant [9 x i8] c"value_at\00" -@.str7860 = private unnamed_addr constant [5 x i8] c"list\00" -@.str7861 = private unnamed_addr constant [6 x i8] c"index\00" -@.str7862 = private unnamed_addr constant [7 x i8] c"key_at\00" -@.str7863 = private unnamed_addr constant [13 x i8] c"value_key_at\00" -@.str7864 = private unnamed_addr constant [4 x i8] c"obj\00" -@.str7865 = private unnamed_addr constant [6 x i8] c"index\00" -@.str7866 = private unnamed_addr constant [6 x i8] c"count\00" -@.str7867 = private unnamed_addr constant [12 x i8] c"value_count\00" -@.str7868 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7869 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str7870 = private unnamed_addr constant [11 x i8] c"value_kind\00" +@.str7821 = private unnamed_addr constant [6 x i8] c"apply\00" +@.str7822 = private unnamed_addr constant [14 x i8] c"reflect_apply\00" +@.str7823 = private unnamed_addr constant [7 x i8] c"entity\00" +@.str7824 = private unnamed_addr constant [6 x i8] c"value\00" +@.str7825 = private unnamed_addr constant [6 x i8] c"Value\00" +@.str7826 = private unnamed_addr constant [5 x i8] c"null\00" +@.str7827 = private unnamed_addr constant [11 x i8] c"value_null\00" +@.str7828 = private unnamed_addr constant [4 x i8] c"int\00" +@.str7829 = private unnamed_addr constant [10 x i8] c"value_int\00" +@.str7830 = private unnamed_addr constant [2 x i8] c"n\00" +@.str7831 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str7832 = private unnamed_addr constant [12 x i8] c"value_fixed\00" +@.str7833 = private unnamed_addr constant [2 x i8] c"f\00" +@.str7834 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str7835 = private unnamed_addr constant [11 x i8] c"value_bool\00" +@.str7836 = private unnamed_addr constant [2 x i8] c"b\00" +@.str7837 = private unnamed_addr constant [4 x i8] c"str\00" +@.str7838 = private unnamed_addr constant [10 x i8] c"value_str\00" +@.str7839 = private unnamed_addr constant [2 x i8] c"s\00" +@.str7840 = private unnamed_addr constant [5 x i8] c"list\00" +@.str7841 = private unnamed_addr constant [11 x i8] c"value_list\00" +@.str7842 = private unnamed_addr constant [7 x i8] c"object\00" +@.str7843 = private unnamed_addr constant [13 x i8] c"value_object\00" +@.str7844 = private unnamed_addr constant [4 x i8] c"add\00" +@.str7845 = private unnamed_addr constant [10 x i8] c"value_add\00" +@.str7846 = private unnamed_addr constant [5 x i8] c"list\00" +@.str7847 = private unnamed_addr constant [5 x i8] c"item\00" +@.str7848 = private unnamed_addr constant [4 x i8] c"put\00" +@.str7849 = private unnamed_addr constant [10 x i8] c"value_put\00" +@.str7850 = private unnamed_addr constant [4 x i8] c"obj\00" +@.str7851 = private unnamed_addr constant [4 x i8] c"key\00" +@.str7852 = private unnamed_addr constant [5 x i8] c"item\00" +@.str7853 = private unnamed_addr constant [4 x i8] c"get\00" +@.str7854 = private unnamed_addr constant [10 x i8] c"value_get\00" +@.str7855 = private unnamed_addr constant [4 x i8] c"obj\00" +@.str7856 = private unnamed_addr constant [4 x i8] c"key\00" +@.str7857 = private unnamed_addr constant [4 x i8] c"has\00" +@.str7858 = private unnamed_addr constant [10 x i8] c"value_has\00" +@.str7859 = private unnamed_addr constant [4 x i8] c"obj\00" +@.str7860 = private unnamed_addr constant [4 x i8] c"key\00" +@.str7861 = private unnamed_addr constant [3 x i8] c"at\00" +@.str7862 = private unnamed_addr constant [9 x i8] c"value_at\00" +@.str7863 = private unnamed_addr constant [5 x i8] c"list\00" +@.str7864 = private unnamed_addr constant [6 x i8] c"index\00" +@.str7865 = private unnamed_addr constant [7 x i8] c"key_at\00" +@.str7866 = private unnamed_addr constant [13 x i8] c"value_key_at\00" +@.str7867 = private unnamed_addr constant [4 x i8] c"obj\00" +@.str7868 = private unnamed_addr constant [6 x i8] c"index\00" +@.str7869 = private unnamed_addr constant [6 x i8] c"count\00" +@.str7870 = private unnamed_addr constant [12 x i8] c"value_count\00" @.str7871 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7872 = private unnamed_addr constant [7 x i8] c"as_int\00" -@.str7873 = private unnamed_addr constant [13 x i8] c"value_as_int\00" +@.str7872 = private unnamed_addr constant [5 x i8] c"kind\00" +@.str7873 = private unnamed_addr constant [11 x i8] c"value_kind\00" @.str7874 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7875 = private unnamed_addr constant [7 x i8] c"as_str\00" -@.str7876 = private unnamed_addr constant [13 x i8] c"value_as_str\00" +@.str7875 = private unnamed_addr constant [7 x i8] c"as_int\00" +@.str7876 = private unnamed_addr constant [13 x i8] c"value_as_int\00" @.str7877 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7878 = private unnamed_addr constant [5 x i8] c"Json\00" -@.str7879 = private unnamed_addr constant [7 x i8] c"encode\00" -@.str7880 = private unnamed_addr constant [12 x i8] c"json_encode\00" -@.str7881 = private unnamed_addr constant [6 x i8] c"value\00" -@.str7882 = private unnamed_addr constant [6 x i8] c"parse\00" -@.str7883 = private unnamed_addr constant [11 x i8] c"json_parse\00" -@.str7884 = private unnamed_addr constant [5 x i8] c"text\00" -@.str7885 = private unnamed_addr constant [4 x i8] c"Xml\00" -@.str7886 = private unnamed_addr constant [6 x i8] c"parse\00" -@.str7887 = private unnamed_addr constant [10 x i8] c"xml_parse\00" -@.str7888 = private unnamed_addr constant [5 x i8] c"text\00" -@.str7889 = private unnamed_addr constant [4 x i8] c"tag\00" -@.str7890 = private unnamed_addr constant [8 x i8] c"xml_tag\00" -@.str7891 = private unnamed_addr constant [5 x i8] c"node\00" -@.str7892 = private unnamed_addr constant [5 x i8] c"text\00" -@.str7893 = private unnamed_addr constant [9 x i8] c"xml_text\00" +@.str7878 = private unnamed_addr constant [7 x i8] c"as_str\00" +@.str7879 = private unnamed_addr constant [13 x i8] c"value_as_str\00" +@.str7880 = private unnamed_addr constant [6 x i8] c"value\00" +@.str7881 = private unnamed_addr constant [5 x i8] c"Json\00" +@.str7882 = private unnamed_addr constant [7 x i8] c"encode\00" +@.str7883 = private unnamed_addr constant [12 x i8] c"json_encode\00" +@.str7884 = private unnamed_addr constant [6 x i8] c"value\00" +@.str7885 = private unnamed_addr constant [6 x i8] c"parse\00" +@.str7886 = private unnamed_addr constant [11 x i8] c"json_parse\00" +@.str7887 = private unnamed_addr constant [5 x i8] c"text\00" +@.str7888 = private unnamed_addr constant [4 x i8] c"Xml\00" +@.str7889 = private unnamed_addr constant [6 x i8] c"parse\00" +@.str7890 = private unnamed_addr constant [10 x i8] c"xml_parse\00" +@.str7891 = private unnamed_addr constant [5 x i8] c"text\00" +@.str7892 = private unnamed_addr constant [4 x i8] c"tag\00" +@.str7893 = private unnamed_addr constant [8 x i8] c"xml_tag\00" @.str7894 = private unnamed_addr constant [5 x i8] c"node\00" -@.str7895 = private unnamed_addr constant [5 x i8] c"attr\00" -@.str7896 = private unnamed_addr constant [9 x i8] c"xml_attr\00" +@.str7895 = private unnamed_addr constant [5 x i8] c"text\00" +@.str7896 = private unnamed_addr constant [9 x i8] c"xml_text\00" @.str7897 = private unnamed_addr constant [5 x i8] c"node\00" -@.str7898 = private unnamed_addr constant [4 x i8] c"key\00" -@.str7899 = private unnamed_addr constant [9 x i8] c"attr_int\00" -@.str7900 = private unnamed_addr constant [13 x i8] c"xml_attr_int\00" -@.str7901 = private unnamed_addr constant [5 x i8] c"node\00" -@.str7902 = private unnamed_addr constant [4 x i8] c"key\00" -@.str7903 = private unnamed_addr constant [5 x i8] c"dflt\00" -@.str7904 = private unnamed_addr constant [4 x i8] c"has\00" -@.str7905 = private unnamed_addr constant [8 x i8] c"xml_has\00" -@.str7906 = private unnamed_addr constant [5 x i8] c"node\00" -@.str7907 = private unnamed_addr constant [4 x i8] c"key\00" -@.str7908 = private unnamed_addr constant [11 x i8] c"attr_count\00" -@.str7909 = private unnamed_addr constant [15 x i8] c"xml_attr_count\00" -@.str7910 = private unnamed_addr constant [5 x i8] c"node\00" -@.str7911 = private unnamed_addr constant [12 x i8] c"child_count\00" -@.str7912 = private unnamed_addr constant [16 x i8] c"xml_child_count\00" +@.str7898 = private unnamed_addr constant [5 x i8] c"attr\00" +@.str7899 = private unnamed_addr constant [9 x i8] c"xml_attr\00" +@.str7900 = private unnamed_addr constant [5 x i8] c"node\00" +@.str7901 = private unnamed_addr constant [4 x i8] c"key\00" +@.str7902 = private unnamed_addr constant [9 x i8] c"attr_int\00" +@.str7903 = private unnamed_addr constant [13 x i8] c"xml_attr_int\00" +@.str7904 = private unnamed_addr constant [5 x i8] c"node\00" +@.str7905 = private unnamed_addr constant [4 x i8] c"key\00" +@.str7906 = private unnamed_addr constant [5 x i8] c"dflt\00" +@.str7907 = private unnamed_addr constant [4 x i8] c"has\00" +@.str7908 = private unnamed_addr constant [8 x i8] c"xml_has\00" +@.str7909 = private unnamed_addr constant [5 x i8] c"node\00" +@.str7910 = private unnamed_addr constant [4 x i8] c"key\00" +@.str7911 = private unnamed_addr constant [11 x i8] c"attr_count\00" +@.str7912 = private unnamed_addr constant [15 x i8] c"xml_attr_count\00" @.str7913 = private unnamed_addr constant [5 x i8] c"node\00" -@.str7914 = private unnamed_addr constant [6 x i8] c"child\00" -@.str7915 = private unnamed_addr constant [10 x i8] c"xml_child\00" +@.str7914 = private unnamed_addr constant [12 x i8] c"child_count\00" +@.str7915 = private unnamed_addr constant [16 x i8] c"xml_child_count\00" @.str7916 = private unnamed_addr constant [5 x i8] c"node\00" -@.str7917 = private unnamed_addr constant [6 x i8] c"index\00" -@.str7918 = private unnamed_addr constant [5 x i8] c"find\00" -@.str7919 = private unnamed_addr constant [9 x i8] c"xml_find\00" -@.str7920 = private unnamed_addr constant [5 x i8] c"node\00" -@.str7921 = private unnamed_addr constant [4 x i8] c"tag\00" -@.str7922 = private unnamed_addr constant [6 x i8] c"count\00" -@.str7923 = private unnamed_addr constant [10 x i8] c"xml_count\00" -@.str7924 = private unnamed_addr constant [5 x i8] c"node\00" -@.str7925 = private unnamed_addr constant [4 x i8] c"tag\00" -@.str7926 = private unnamed_addr constant [7 x i8] c"Base64\00" -@.str7927 = private unnamed_addr constant [7 x i8] c"decode\00" -@.str7928 = private unnamed_addr constant [14 x i8] c"base64_decode\00" -@.str7929 = private unnamed_addr constant [4 x i8] c"src\00" -@.str7930 = private unnamed_addr constant [7 x i8] c"encode\00" -@.str7931 = private unnamed_addr constant [14 x i8] c"base64_encode\00" +@.str7917 = private unnamed_addr constant [6 x i8] c"child\00" +@.str7918 = private unnamed_addr constant [10 x i8] c"xml_child\00" +@.str7919 = private unnamed_addr constant [5 x i8] c"node\00" +@.str7920 = private unnamed_addr constant [6 x i8] c"index\00" +@.str7921 = private unnamed_addr constant [5 x i8] c"find\00" +@.str7922 = private unnamed_addr constant [9 x i8] c"xml_find\00" +@.str7923 = private unnamed_addr constant [5 x i8] c"node\00" +@.str7924 = private unnamed_addr constant [4 x i8] c"tag\00" +@.str7925 = private unnamed_addr constant [6 x i8] c"count\00" +@.str7926 = private unnamed_addr constant [10 x i8] c"xml_count\00" +@.str7927 = private unnamed_addr constant [5 x i8] c"node\00" +@.str7928 = private unnamed_addr constant [4 x i8] c"tag\00" +@.str7929 = private unnamed_addr constant [7 x i8] c"Base64\00" +@.str7930 = private unnamed_addr constant [7 x i8] c"decode\00" +@.str7931 = private unnamed_addr constant [14 x i8] c"base64_decode\00" @.str7932 = private unnamed_addr constant [4 x i8] c"src\00" -@.str7933 = private unnamed_addr constant [6 x i8] c"Tiled\00" -@.str7934 = private unnamed_addr constant [5 x i8] c"read\00" -@.str7935 = private unnamed_addr constant [11 x i8] c"tiled_read\00" -@.str7936 = private unnamed_addr constant [5 x i8] c"path\00" -@.str7937 = private unnamed_addr constant [9 x i8] c"read_tsx\00" -@.str7938 = private unnamed_addr constant [15 x i8] c"tiled_read_tsx\00" +@.str7933 = private unnamed_addr constant [7 x i8] c"encode\00" +@.str7934 = private unnamed_addr constant [14 x i8] c"base64_encode\00" +@.str7935 = private unnamed_addr constant [4 x i8] c"src\00" +@.str7936 = private unnamed_addr constant [6 x i8] c"Tiled\00" +@.str7937 = private unnamed_addr constant [5 x i8] c"read\00" +@.str7938 = private unnamed_addr constant [11 x i8] c"tiled_read\00" @.str7939 = private unnamed_addr constant [5 x i8] c"path\00" -@.str7940 = private unnamed_addr constant [5 x i8] c"load\00" -@.str7941 = private unnamed_addr constant [11 x i8] c"tiled_load\00" +@.str7940 = private unnamed_addr constant [9 x i8] c"read_tsx\00" +@.str7941 = private unnamed_addr constant [15 x i8] c"tiled_read_tsx\00" @.str7942 = private unnamed_addr constant [5 x i8] c"path\00" -@.str7943 = private unnamed_addr constant [4 x i8] c"gid\00" -@.str7944 = private unnamed_addr constant [9 x i8] c"tmap_gid\00" -@.str7945 = private unnamed_addr constant [4 x i8] c"map\00" -@.str7946 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str7947 = private unnamed_addr constant [2 x i8] c"x\00" -@.str7948 = private unnamed_addr constant [2 x i8] c"y\00" -@.str7949 = private unnamed_addr constant [8 x i8] c"resolve\00" -@.str7950 = private unnamed_addr constant [13 x i8] c"tmap_resolve\00" -@.str7951 = private unnamed_addr constant [4 x i8] c"map\00" -@.str7952 = private unnamed_addr constant [4 x i8] c"gid\00" -@.str7953 = private unnamed_addr constant [6 x i8] c"width\00" -@.str7954 = private unnamed_addr constant [11 x i8] c"tmap_width\00" -@.str7955 = private unnamed_addr constant [4 x i8] c"map\00" -@.str7956 = private unnamed_addr constant [7 x i8] c"height\00" -@.str7957 = private unnamed_addr constant [12 x i8] c"tmap_height\00" +@.str7943 = private unnamed_addr constant [5 x i8] c"load\00" +@.str7944 = private unnamed_addr constant [11 x i8] c"tiled_load\00" +@.str7945 = private unnamed_addr constant [5 x i8] c"path\00" +@.str7946 = private unnamed_addr constant [4 x i8] c"gid\00" +@.str7947 = private unnamed_addr constant [9 x i8] c"tmap_gid\00" +@.str7948 = private unnamed_addr constant [4 x i8] c"map\00" +@.str7949 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str7950 = private unnamed_addr constant [2 x i8] c"x\00" +@.str7951 = private unnamed_addr constant [2 x i8] c"y\00" +@.str7952 = private unnamed_addr constant [8 x i8] c"resolve\00" +@.str7953 = private unnamed_addr constant [13 x i8] c"tmap_resolve\00" +@.str7954 = private unnamed_addr constant [4 x i8] c"map\00" +@.str7955 = private unnamed_addr constant [4 x i8] c"gid\00" +@.str7956 = private unnamed_addr constant [6 x i8] c"width\00" +@.str7957 = private unnamed_addr constant [11 x i8] c"tmap_width\00" @.str7958 = private unnamed_addr constant [4 x i8] c"map\00" -@.str7959 = private unnamed_addr constant [12 x i8] c"layer_count\00" -@.str7960 = private unnamed_addr constant [17 x i8] c"tmap_layer_count\00" +@.str7959 = private unnamed_addr constant [7 x i8] c"height\00" +@.str7960 = private unnamed_addr constant [12 x i8] c"tmap_height\00" @.str7961 = private unnamed_addr constant [4 x i8] c"map\00" -@.str7962 = private unnamed_addr constant [11 x i8] c"layer_name\00" -@.str7963 = private unnamed_addr constant [16 x i8] c"tmap_layer_name\00" +@.str7962 = private unnamed_addr constant [12 x i8] c"layer_count\00" +@.str7963 = private unnamed_addr constant [17 x i8] c"tmap_layer_count\00" @.str7964 = private unnamed_addr constant [4 x i8] c"map\00" -@.str7965 = private unnamed_addr constant [6 x i8] c"index\00" -@.str7966 = private unnamed_addr constant [5 x i8] c"draw\00" -@.str7967 = private unnamed_addr constant [10 x i8] c"tmap_draw\00" -@.str7968 = private unnamed_addr constant [4 x i8] c"map\00" -@.str7969 = private unnamed_addr constant [5 x i8] c"camx\00" -@.str7970 = private unnamed_addr constant [5 x i8] c"camy\00" -@.str7971 = private unnamed_addr constant [10 x i8] c"draw_anim\00" -@.str7972 = private unnamed_addr constant [15 x i8] c"tmap_draw_anim\00" -@.str7973 = private unnamed_addr constant [4 x i8] c"map\00" -@.str7974 = private unnamed_addr constant [5 x i8] c"camx\00" -@.str7975 = private unnamed_addr constant [5 x i8] c"camy\00" -@.str7976 = private unnamed_addr constant [6 x i8] c"frame\00" -@.str7977 = private unnamed_addr constant [10 x i8] c"frame_gid\00" -@.str7978 = private unnamed_addr constant [15 x i8] c"tmap_frame_gid\00" -@.str7979 = private unnamed_addr constant [4 x i8] c"map\00" -@.str7980 = private unnamed_addr constant [4 x i8] c"gid\00" -@.str7981 = private unnamed_addr constant [6 x i8] c"frame\00" -@.str7982 = private unnamed_addr constant [9 x i8] c"animated\00" -@.str7983 = private unnamed_addr constant [17 x i8] c"tmap_is_animated\00" -@.str7984 = private unnamed_addr constant [4 x i8] c"map\00" -@.str7985 = private unnamed_addr constant [4 x i8] c"gid\00" -@.str7986 = private unnamed_addr constant [8 x i8] c"project\00" -@.str7987 = private unnamed_addr constant [13 x i8] c"tmap_project\00" -@.str7988 = private unnamed_addr constant [4 x i8] c"map\00" -@.str7989 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str7990 = private unnamed_addr constant [8 x i8] c"collide\00" -@.str7991 = private unnamed_addr constant [13 x i8] c"tmap_collide\00" -@.str7992 = private unnamed_addr constant [4 x i8] c"map\00" -@.str7993 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str7994 = private unnamed_addr constant [15 x i8] c"collision_kind\00" -@.str7995 = private unnamed_addr constant [20 x i8] c"tmap_collision_kind\00" -@.str7996 = private unnamed_addr constant [4 x i8] c"map\00" -@.str7997 = private unnamed_addr constant [4 x i8] c"gid\00" -@.str7998 = private unnamed_addr constant [5 x i8] c"tree\00" -@.str7999 = private unnamed_addr constant [10 x i8] c"tmap_tree\00" -@.str8000 = private unnamed_addr constant [4 x i8] c"map\00" -@.str8001 = private unnamed_addr constant [10 x i8] c"tile_prop\00" -@.str8002 = private unnamed_addr constant [15 x i8] c"tmap_tile_prop\00" +@.str7965 = private unnamed_addr constant [11 x i8] c"layer_name\00" +@.str7966 = private unnamed_addr constant [16 x i8] c"tmap_layer_name\00" +@.str7967 = private unnamed_addr constant [4 x i8] c"map\00" +@.str7968 = private unnamed_addr constant [6 x i8] c"index\00" +@.str7969 = private unnamed_addr constant [5 x i8] c"draw\00" +@.str7970 = private unnamed_addr constant [10 x i8] c"tmap_draw\00" +@.str7971 = private unnamed_addr constant [4 x i8] c"map\00" +@.str7972 = private unnamed_addr constant [5 x i8] c"camx\00" +@.str7973 = private unnamed_addr constant [5 x i8] c"camy\00" +@.str7974 = private unnamed_addr constant [10 x i8] c"draw_anim\00" +@.str7975 = private unnamed_addr constant [15 x i8] c"tmap_draw_anim\00" +@.str7976 = private unnamed_addr constant [4 x i8] c"map\00" +@.str7977 = private unnamed_addr constant [5 x i8] c"camx\00" +@.str7978 = private unnamed_addr constant [5 x i8] c"camy\00" +@.str7979 = private unnamed_addr constant [6 x i8] c"frame\00" +@.str7980 = private unnamed_addr constant [10 x i8] c"frame_gid\00" +@.str7981 = private unnamed_addr constant [15 x i8] c"tmap_frame_gid\00" +@.str7982 = private unnamed_addr constant [4 x i8] c"map\00" +@.str7983 = private unnamed_addr constant [4 x i8] c"gid\00" +@.str7984 = private unnamed_addr constant [6 x i8] c"frame\00" +@.str7985 = private unnamed_addr constant [9 x i8] c"animated\00" +@.str7986 = private unnamed_addr constant [17 x i8] c"tmap_is_animated\00" +@.str7987 = private unnamed_addr constant [4 x i8] c"map\00" +@.str7988 = private unnamed_addr constant [4 x i8] c"gid\00" +@.str7989 = private unnamed_addr constant [8 x i8] c"project\00" +@.str7990 = private unnamed_addr constant [13 x i8] c"tmap_project\00" +@.str7991 = private unnamed_addr constant [4 x i8] c"map\00" +@.str7992 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str7993 = private unnamed_addr constant [8 x i8] c"collide\00" +@.str7994 = private unnamed_addr constant [13 x i8] c"tmap_collide\00" +@.str7995 = private unnamed_addr constant [4 x i8] c"map\00" +@.str7996 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str7997 = private unnamed_addr constant [15 x i8] c"collision_kind\00" +@.str7998 = private unnamed_addr constant [20 x i8] c"tmap_collision_kind\00" +@.str7999 = private unnamed_addr constant [4 x i8] c"map\00" +@.str8000 = private unnamed_addr constant [4 x i8] c"gid\00" +@.str8001 = private unnamed_addr constant [5 x i8] c"tree\00" +@.str8002 = private unnamed_addr constant [10 x i8] c"tmap_tree\00" @.str8003 = private unnamed_addr constant [4 x i8] c"map\00" -@.str8004 = private unnamed_addr constant [4 x i8] c"gid\00" -@.str8005 = private unnamed_addr constant [5 x i8] c"name\00" -@.str8006 = private unnamed_addr constant [12 x i8] c"tile_shapes\00" -@.str8007 = private unnamed_addr constant [21 x i8] c"tmap_tile_has_shapes\00" -@.str8008 = private unnamed_addr constant [4 x i8] c"map\00" -@.str8009 = private unnamed_addr constant [4 x i8] c"gid\00" -@.str8010 = private unnamed_addr constant [13 x i8] c"object_count\00" -@.str8011 = private unnamed_addr constant [18 x i8] c"tmap_object_count\00" -@.str8012 = private unnamed_addr constant [4 x i8] c"map\00" -@.str8013 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str8014 = private unnamed_addr constant [7 x i8] c"object\00" -@.str8015 = private unnamed_addr constant [12 x i8] c"tmap_object\00" -@.str8016 = private unnamed_addr constant [4 x i8] c"map\00" -@.str8017 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str8018 = private unnamed_addr constant [6 x i8] c"index\00" -@.str8019 = private unnamed_addr constant [13 x i8] c"object_shape\00" -@.str8020 = private unnamed_addr constant [19 x i8] c"tiled_object_shape\00" -@.str8021 = private unnamed_addr constant [7 x i8] c"object\00" -@.str8022 = private unnamed_addr constant [5 x i8] c"prop\00" -@.str8023 = private unnamed_addr constant [15 x i8] c"tiled_prop_str\00" -@.str8024 = private unnamed_addr constant [10 x i8] c"container\00" -@.str8025 = private unnamed_addr constant [5 x i8] c"name\00" -@.str8026 = private unnamed_addr constant [9 x i8] c"prop_int\00" -@.str8027 = private unnamed_addr constant [15 x i8] c"tiled_prop_int\00" -@.str8028 = private unnamed_addr constant [10 x i8] c"container\00" -@.str8029 = private unnamed_addr constant [5 x i8] c"name\00" -@.str8030 = private unnamed_addr constant [10 x i8] c"prop_type\00" -@.str8031 = private unnamed_addr constant [16 x i8] c"tiled_prop_type\00" -@.str8032 = private unnamed_addr constant [10 x i8] c"container\00" -@.str8033 = private unnamed_addr constant [5 x i8] c"name\00" -@.str8034 = private unnamed_addr constant [11 x i8] c"load_types\00" -@.str8035 = private unnamed_addr constant [17 x i8] c"tiled_load_types\00" -@.str8036 = private unnamed_addr constant [5 x i8] c"path\00" -@.str8037 = private unnamed_addr constant [9 x i8] c"template\00" -@.str8038 = private unnamed_addr constant [20 x i8] c"tiled_read_template\00" +@.str8004 = private unnamed_addr constant [10 x i8] c"tile_prop\00" +@.str8005 = private unnamed_addr constant [15 x i8] c"tmap_tile_prop\00" +@.str8006 = private unnamed_addr constant [4 x i8] c"map\00" +@.str8007 = private unnamed_addr constant [4 x i8] c"gid\00" +@.str8008 = private unnamed_addr constant [5 x i8] c"name\00" +@.str8009 = private unnamed_addr constant [12 x i8] c"tile_shapes\00" +@.str8010 = private unnamed_addr constant [21 x i8] c"tmap_tile_has_shapes\00" +@.str8011 = private unnamed_addr constant [4 x i8] c"map\00" +@.str8012 = private unnamed_addr constant [4 x i8] c"gid\00" +@.str8013 = private unnamed_addr constant [13 x i8] c"object_count\00" +@.str8014 = private unnamed_addr constant [18 x i8] c"tmap_object_count\00" +@.str8015 = private unnamed_addr constant [4 x i8] c"map\00" +@.str8016 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str8017 = private unnamed_addr constant [7 x i8] c"object\00" +@.str8018 = private unnamed_addr constant [12 x i8] c"tmap_object\00" +@.str8019 = private unnamed_addr constant [4 x i8] c"map\00" +@.str8020 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str8021 = private unnamed_addr constant [6 x i8] c"index\00" +@.str8022 = private unnamed_addr constant [13 x i8] c"object_shape\00" +@.str8023 = private unnamed_addr constant [19 x i8] c"tiled_object_shape\00" +@.str8024 = private unnamed_addr constant [7 x i8] c"object\00" +@.str8025 = private unnamed_addr constant [5 x i8] c"prop\00" +@.str8026 = private unnamed_addr constant [15 x i8] c"tiled_prop_str\00" +@.str8027 = private unnamed_addr constant [10 x i8] c"container\00" +@.str8028 = private unnamed_addr constant [5 x i8] c"name\00" +@.str8029 = private unnamed_addr constant [9 x i8] c"prop_int\00" +@.str8030 = private unnamed_addr constant [15 x i8] c"tiled_prop_int\00" +@.str8031 = private unnamed_addr constant [10 x i8] c"container\00" +@.str8032 = private unnamed_addr constant [5 x i8] c"name\00" +@.str8033 = private unnamed_addr constant [10 x i8] c"prop_type\00" +@.str8034 = private unnamed_addr constant [16 x i8] c"tiled_prop_type\00" +@.str8035 = private unnamed_addr constant [10 x i8] c"container\00" +@.str8036 = private unnamed_addr constant [5 x i8] c"name\00" +@.str8037 = private unnamed_addr constant [11 x i8] c"load_types\00" +@.str8038 = private unnamed_addr constant [17 x i8] c"tiled_load_types\00" @.str8039 = private unnamed_addr constant [5 x i8] c"path\00" -@.str8040 = private unnamed_addr constant [6 x i8] c"spawn\00" -@.str8041 = private unnamed_addr constant [19 x i8] c"tiled_spawn_object\00" -@.str8042 = private unnamed_addr constant [4 x i8] c"map\00" -@.str8043 = private unnamed_addr constant [7 x i8] c"object\00" -@.str8044 = private unnamed_addr constant [6 x i8] c"model\00" -@.str8045 = private unnamed_addr constant [12 x i8] c"spawn_layer\00" -@.str8046 = private unnamed_addr constant [18 x i8] c"tiled_spawn_layer\00" -@.str8047 = private unnamed_addr constant [4 x i8] c"map\00" -@.str8048 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str8049 = private unnamed_addr constant [6 x i8] c"model\00" -@.str8050 = private unnamed_addr constant [7 x i8] c"cell_x\00" -@.str8051 = private unnamed_addr constant [13 x i8] c"tmap_cell_sx\00" -@.str8052 = private unnamed_addr constant [4 x i8] c"map\00" -@.str8053 = private unnamed_addr constant [2 x i8] c"x\00" -@.str8054 = private unnamed_addr constant [2 x i8] c"y\00" -@.str8055 = private unnamed_addr constant [7 x i8] c"cell_y\00" -@.str8056 = private unnamed_addr constant [13 x i8] c"tmap_cell_sy\00" -@.str8057 = private unnamed_addr constant [4 x i8] c"map\00" -@.str8058 = private unnamed_addr constant [2 x i8] c"x\00" -@.str8059 = private unnamed_addr constant [2 x i8] c"y\00" -@.str8060 = private unnamed_addr constant [11 x i8] c"layer_kind\00" -@.str8061 = private unnamed_addr constant [16 x i8] c"tmap_layer_kind\00" -@.str8062 = private unnamed_addr constant [4 x i8] c"map\00" -@.str8063 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str8064 = private unnamed_addr constant [14 x i8] c"layer_opacity\00" -@.str8065 = private unnamed_addr constant [19 x i8] c"tmap_layer_opacity\00" -@.str8066 = private unnamed_addr constant [4 x i8] c"map\00" -@.str8067 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str8068 = private unnamed_addr constant [11 x i8] c"layer_tint\00" -@.str8069 = private unnamed_addr constant [16 x i8] c"tmap_layer_tint\00" -@.str8070 = private unnamed_addr constant [4 x i8] c"map\00" -@.str8071 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str8072 = private unnamed_addr constant [14 x i8] c"layer_offsetx\00" -@.str8073 = private unnamed_addr constant [19 x i8] c"tmap_layer_offsetx\00" -@.str8074 = private unnamed_addr constant [4 x i8] c"map\00" -@.str8075 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str8076 = private unnamed_addr constant [14 x i8] c"layer_offsety\00" -@.str8077 = private unnamed_addr constant [19 x i8] c"tmap_layer_offsety\00" -@.str8078 = private unnamed_addr constant [4 x i8] c"map\00" -@.str8079 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str8080 = private unnamed_addr constant [6 x i8] c"world\00" -@.str8081 = private unnamed_addr constant [17 x i8] c"tiled_read_world\00" -@.str8082 = private unnamed_addr constant [5 x i8] c"path\00" -@.str8083 = private unnamed_addr constant [12 x i8] c"world_count\00" -@.str8084 = private unnamed_addr constant [18 x i8] c"tiled_world_count\00" -@.str8085 = private unnamed_addr constant [6 x i8] c"world\00" -@.str8086 = private unnamed_addr constant [10 x i8] c"world_map\00" -@.str8087 = private unnamed_addr constant [16 x i8] c"tiled_world_map\00" +@.str8040 = private unnamed_addr constant [9 x i8] c"template\00" +@.str8041 = private unnamed_addr constant [20 x i8] c"tiled_read_template\00" +@.str8042 = private unnamed_addr constant [5 x i8] c"path\00" +@.str8043 = private unnamed_addr constant [6 x i8] c"spawn\00" +@.str8044 = private unnamed_addr constant [19 x i8] c"tiled_spawn_object\00" +@.str8045 = private unnamed_addr constant [4 x i8] c"map\00" +@.str8046 = private unnamed_addr constant [7 x i8] c"object\00" +@.str8047 = private unnamed_addr constant [6 x i8] c"model\00" +@.str8048 = private unnamed_addr constant [12 x i8] c"spawn_layer\00" +@.str8049 = private unnamed_addr constant [18 x i8] c"tiled_spawn_layer\00" +@.str8050 = private unnamed_addr constant [4 x i8] c"map\00" +@.str8051 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str8052 = private unnamed_addr constant [6 x i8] c"model\00" +@.str8053 = private unnamed_addr constant [7 x i8] c"cell_x\00" +@.str8054 = private unnamed_addr constant [13 x i8] c"tmap_cell_sx\00" +@.str8055 = private unnamed_addr constant [4 x i8] c"map\00" +@.str8056 = private unnamed_addr constant [2 x i8] c"x\00" +@.str8057 = private unnamed_addr constant [2 x i8] c"y\00" +@.str8058 = private unnamed_addr constant [7 x i8] c"cell_y\00" +@.str8059 = private unnamed_addr constant [13 x i8] c"tmap_cell_sy\00" +@.str8060 = private unnamed_addr constant [4 x i8] c"map\00" +@.str8061 = private unnamed_addr constant [2 x i8] c"x\00" +@.str8062 = private unnamed_addr constant [2 x i8] c"y\00" +@.str8063 = private unnamed_addr constant [11 x i8] c"layer_kind\00" +@.str8064 = private unnamed_addr constant [16 x i8] c"tmap_layer_kind\00" +@.str8065 = private unnamed_addr constant [4 x i8] c"map\00" +@.str8066 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str8067 = private unnamed_addr constant [14 x i8] c"layer_opacity\00" +@.str8068 = private unnamed_addr constant [19 x i8] c"tmap_layer_opacity\00" +@.str8069 = private unnamed_addr constant [4 x i8] c"map\00" +@.str8070 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str8071 = private unnamed_addr constant [11 x i8] c"layer_tint\00" +@.str8072 = private unnamed_addr constant [16 x i8] c"tmap_layer_tint\00" +@.str8073 = private unnamed_addr constant [4 x i8] c"map\00" +@.str8074 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str8075 = private unnamed_addr constant [14 x i8] c"layer_offsetx\00" +@.str8076 = private unnamed_addr constant [19 x i8] c"tmap_layer_offsetx\00" +@.str8077 = private unnamed_addr constant [4 x i8] c"map\00" +@.str8078 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str8079 = private unnamed_addr constant [14 x i8] c"layer_offsety\00" +@.str8080 = private unnamed_addr constant [19 x i8] c"tmap_layer_offsety\00" +@.str8081 = private unnamed_addr constant [4 x i8] c"map\00" +@.str8082 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str8083 = private unnamed_addr constant [6 x i8] c"world\00" +@.str8084 = private unnamed_addr constant [17 x i8] c"tiled_read_world\00" +@.str8085 = private unnamed_addr constant [5 x i8] c"path\00" +@.str8086 = private unnamed_addr constant [12 x i8] c"world_count\00" +@.str8087 = private unnamed_addr constant [18 x i8] c"tiled_world_count\00" @.str8088 = private unnamed_addr constant [6 x i8] c"world\00" -@.str8089 = private unnamed_addr constant [6 x i8] c"index\00" -@.str8090 = private unnamed_addr constant [2 x i8] c"_\00" -@.str8091 = private unnamed_addr constant [2 x i8] c".\00" -@.str8092 = private unnamed_addr constant [27 x i8] c" is internal to namespace \00" -@.str8093 = private unnamed_addr constant [17 x i8] c"unknown builtin \00" -@.str8094 = private unnamed_addr constant [2 x i8] c".\00" -@.str8095 = private unnamed_addr constant [14 x i8] c"enum variant \00" -@.str8096 = private unnamed_addr constant [8 x i8] c" takes \00" -@.str8097 = private unnamed_addr constant [18 x i8] c" payload(s), got \00" -@.str8098 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" -@.str8099 = private unnamed_addr constant [2 x i8] c")\00" -@.str8100 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str8101 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8102 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8103 = private unnamed_addr constant [3 x i8] c" \00" -@.str8104 = private unnamed_addr constant [35 x i8] c" = getelementptr inbounds i8, ptr \00" -@.str8105 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8106 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8107 = private unnamed_addr constant [9 x i8] c" store \00" -@.str8108 = private unnamed_addr constant [2 x i8] c" \00" -@.str8109 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8110 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8111 = private unnamed_addr constant [30 x i8] c"call target is not a function\00" -@.str8112 = private unnamed_addr constant [5 x i8] c"self\00" -@.str8113 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8114 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str8115 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8116 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str8117 = private unnamed_addr constant [4 x i8] c"key\00" -@.str8118 = private unnamed_addr constant [21 x i8] c"load i32, ptr @L_key\00" -@.str8119 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8120 = private unnamed_addr constant [5 x i8] c"save\00" -@.str8121 = private unnamed_addr constant [23 x i8] c" call void @L_save()\0A\00" -@.str8122 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8123 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8124 = private unnamed_addr constant [9 x i8] c"ui_build\00" -@.str8125 = private unnamed_addr constant [25 x i8] c" call void @ui_build()\0A\00" -@.str8126 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8127 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8128 = private unnamed_addr constant [5 x i8] c"load\00" -@.str8129 = private unnamed_addr constant [19 x i8] c"call i32 @L_load()\00" -@.str8130 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str8131 = private unnamed_addr constant [11 x i8] c"world_size\00" -@.str8132 = private unnamed_addr constant [25 x i8] c"call i32 @L_world_size()\00" -@.str8133 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8134 = private unnamed_addr constant [11 x i8] c"world_save\00" -@.str8135 = private unnamed_addr constant [28 x i8] c"call i32 @L_world_save(ptr \00" -@.str8136 = private unnamed_addr constant [2 x i8] c")\00" -@.str8137 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8138 = private unnamed_addr constant [11 x i8] c"world_load\00" -@.str8139 = private unnamed_addr constant [31 x i8] c" call void @L_world_load(ptr \00" -@.str8140 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8141 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8142 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8143 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8144 = private unnamed_addr constant [5 x i8] c"quit\00" -@.str8145 = private unnamed_addr constant [31 x i8] c" store i32 0, ptr @L_running\0A\00" -@.str8146 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8147 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8148 = private unnamed_addr constant [10 x i8] c"serialize\00" -@.str8149 = private unnamed_addr constant [31 x i8] c"call i32 @ludic_serialize(i32 \00" -@.str8150 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8151 = private unnamed_addr constant [2 x i8] c")\00" -@.str8152 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8153 = private unnamed_addr constant [6 x i8] c"apply\00" -@.str8154 = private unnamed_addr constant [30 x i8] c" call void @ludic_apply(i32 \00" +@.str8089 = private unnamed_addr constant [10 x i8] c"world_map\00" +@.str8090 = private unnamed_addr constant [16 x i8] c"tiled_world_map\00" +@.str8091 = private unnamed_addr constant [6 x i8] c"world\00" +@.str8092 = private unnamed_addr constant [6 x i8] c"index\00" +@.str8093 = private unnamed_addr constant [3 x i8] c"Gl\00" +@.str8094 = private unnamed_addr constant [4 x i8] c"gl_\00" +@.str8095 = private unnamed_addr constant [2 x i8] c"_\00" +@.str8096 = private unnamed_addr constant [2 x i8] c".\00" +@.str8097 = private unnamed_addr constant [27 x i8] c" is internal to namespace \00" +@.str8098 = private unnamed_addr constant [17 x i8] c"unknown builtin \00" +@.str8099 = private unnamed_addr constant [2 x i8] c".\00" +@.str8100 = private unnamed_addr constant [14 x i8] c"enum variant \00" +@.str8101 = private unnamed_addr constant [8 x i8] c" takes \00" +@.str8102 = private unnamed_addr constant [18 x i8] c" payload(s), got \00" +@.str8103 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" +@.str8104 = private unnamed_addr constant [2 x i8] c")\00" +@.str8105 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str8106 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8107 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8108 = private unnamed_addr constant [3 x i8] c" \00" +@.str8109 = private unnamed_addr constant [35 x i8] c" = getelementptr inbounds i8, ptr \00" +@.str8110 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8111 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8112 = private unnamed_addr constant [9 x i8] c" store \00" +@.str8113 = private unnamed_addr constant [2 x i8] c" \00" +@.str8114 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8115 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8116 = private unnamed_addr constant [30 x i8] c"call target is not a function\00" +@.str8117 = private unnamed_addr constant [5 x i8] c"self\00" +@.str8118 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8119 = private unnamed_addr constant [7 x i8] c"entity\00" +@.str8120 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str8121 = private unnamed_addr constant [7 x i8] c"entity\00" +@.str8122 = private unnamed_addr constant [4 x i8] c"key\00" +@.str8123 = private unnamed_addr constant [21 x i8] c"load i32, ptr @L_key\00" +@.str8124 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8125 = private unnamed_addr constant [5 x i8] c"save\00" +@.str8126 = private unnamed_addr constant [23 x i8] c" call void @L_save()\0A\00" +@.str8127 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8128 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8129 = private unnamed_addr constant [9 x i8] c"ui_build\00" +@.str8130 = private unnamed_addr constant [25 x i8] c" call void @ui_build()\0A\00" +@.str8131 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8132 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8133 = private unnamed_addr constant [5 x i8] c"load\00" +@.str8134 = private unnamed_addr constant [19 x i8] c"call i32 @L_load()\00" +@.str8135 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str8136 = private unnamed_addr constant [11 x i8] c"world_size\00" +@.str8137 = private unnamed_addr constant [25 x i8] c"call i32 @L_world_size()\00" +@.str8138 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8139 = private unnamed_addr constant [11 x i8] c"world_save\00" +@.str8140 = private unnamed_addr constant [28 x i8] c"call i32 @L_world_save(ptr \00" +@.str8141 = private unnamed_addr constant [2 x i8] c")\00" +@.str8142 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8143 = private unnamed_addr constant [11 x i8] c"world_load\00" +@.str8144 = private unnamed_addr constant [31 x i8] c" call void @L_world_load(ptr \00" +@.str8145 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8146 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8147 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8148 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8149 = private unnamed_addr constant [5 x i8] c"quit\00" +@.str8150 = private unnamed_addr constant [31 x i8] c" store i32 0, ptr @L_running\0A\00" +@.str8151 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8152 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8153 = private unnamed_addr constant [10 x i8] c"serialize\00" +@.str8154 = private unnamed_addr constant [31 x i8] c"call i32 @ludic_serialize(i32 \00" @.str8155 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8156 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8157 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8158 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8159 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8160 = private unnamed_addr constant [10 x i8] c"sync_size\00" -@.str8161 = private unnamed_addr constant [31 x i8] c"call i32 @ludic_sync_size(i32 \00" -@.str8162 = private unnamed_addr constant [2 x i8] c")\00" -@.str8163 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8164 = private unnamed_addr constant [6 x i8] c"owner\00" -@.str8165 = private unnamed_addr constant [23 x i8] c"call i32 @L_owner(i32 \00" -@.str8166 = private unnamed_addr constant [2 x i8] c")\00" -@.str8167 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8168 = private unnamed_addr constant [10 x i8] c"set_owner\00" -@.str8169 = private unnamed_addr constant [30 x i8] c" call void @L_set_owner(i32 \00" -@.str8170 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8171 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8172 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8173 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8174 = private unnamed_addr constant [9 x i8] c"is_owner\00" -@.str8175 = private unnamed_addr constant [26 x i8] c"call i32 @L_is_owner(i32 \00" -@.str8176 = private unnamed_addr constant [2 x i8] c")\00" -@.str8177 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str8178 = private unnamed_addr constant [10 x i8] c"is_server\00" -@.str8179 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_role\00" -@.str8180 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str8181 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str8182 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str8183 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str8184 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str8185 = private unnamed_addr constant [9 x i8] c"local_id\00" -@.str8186 = private unnamed_addr constant [25 x i8] c"load i32, ptr @L_localid\00" -@.str8187 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8188 = private unnamed_addr constant [9 x i8] c"net_pump\00" -@.str8189 = private unnamed_addr constant [27 x i8] c" call void @L_net_pump()\0A\00" -@.str8190 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8191 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8192 = private unnamed_addr constant [11 x i8] c"tick_fixed\00" -@.str8193 = private unnamed_addr constant [29 x i8] c" call void @L_tick_fixed()\0A\00" -@.str8194 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8195 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8196 = private unnamed_addr constant [12 x i8] c"tick_render\00" -@.str8197 = private unnamed_addr constant [30 x i8] c" call void @L_tick_render()\0A\00" -@.str8198 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8199 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8200 = private unnamed_addr constant [9 x i8] c"set_role\00" -@.str8201 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str8202 = private unnamed_addr constant [15 x i8] c", ptr @L_role\0A\00" +@.str8156 = private unnamed_addr constant [2 x i8] c")\00" +@.str8157 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8158 = private unnamed_addr constant [6 x i8] c"apply\00" +@.str8159 = private unnamed_addr constant [30 x i8] c" call void @ludic_apply(i32 \00" +@.str8160 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8161 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8162 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8163 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8164 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8165 = private unnamed_addr constant [10 x i8] c"sync_size\00" +@.str8166 = private unnamed_addr constant [31 x i8] c"call i32 @ludic_sync_size(i32 \00" +@.str8167 = private unnamed_addr constant [2 x i8] c")\00" +@.str8168 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8169 = private unnamed_addr constant [6 x i8] c"owner\00" +@.str8170 = private unnamed_addr constant [23 x i8] c"call i32 @L_owner(i32 \00" +@.str8171 = private unnamed_addr constant [2 x i8] c")\00" +@.str8172 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8173 = private unnamed_addr constant [10 x i8] c"set_owner\00" +@.str8174 = private unnamed_addr constant [30 x i8] c" call void @L_set_owner(i32 \00" +@.str8175 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8176 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8177 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8178 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8179 = private unnamed_addr constant [9 x i8] c"is_owner\00" +@.str8180 = private unnamed_addr constant [26 x i8] c"call i32 @L_is_owner(i32 \00" +@.str8181 = private unnamed_addr constant [2 x i8] c")\00" +@.str8182 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str8183 = private unnamed_addr constant [10 x i8] c"is_server\00" +@.str8184 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_role\00" +@.str8185 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str8186 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str8187 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str8188 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str8189 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str8190 = private unnamed_addr constant [9 x i8] c"local_id\00" +@.str8191 = private unnamed_addr constant [25 x i8] c"load i32, ptr @L_localid\00" +@.str8192 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8193 = private unnamed_addr constant [9 x i8] c"net_pump\00" +@.str8194 = private unnamed_addr constant [27 x i8] c" call void @L_net_pump()\0A\00" +@.str8195 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8196 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8197 = private unnamed_addr constant [11 x i8] c"tick_fixed\00" +@.str8198 = private unnamed_addr constant [29 x i8] c" call void @L_tick_fixed()\0A\00" +@.str8199 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8200 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8201 = private unnamed_addr constant [12 x i8] c"tick_render\00" +@.str8202 = private unnamed_addr constant [30 x i8] c" call void @L_tick_render()\0A\00" @.str8203 = private unnamed_addr constant [2 x i8] c"0\00" @.str8204 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8205 = private unnamed_addr constant [13 x i8] c"set_local_id\00" +@.str8205 = private unnamed_addr constant [9 x i8] c"set_role\00" @.str8206 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str8207 = private unnamed_addr constant [18 x i8] c", ptr @L_localid\0A\00" +@.str8207 = private unnamed_addr constant [15 x i8] c", ptr @L_role\0A\00" @.str8208 = private unnamed_addr constant [2 x i8] c"0\00" @.str8209 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8210 = private unnamed_addr constant [9 x i8] c"net_send\00" -@.str8211 = private unnamed_addr constant [9 x i8] c"net_send\00" -@.str8212 = private unnamed_addr constant [29 x i8] c" call void @L_net_send(i32 \00" -@.str8213 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8214 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8215 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8216 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8217 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8218 = private unnamed_addr constant [9 x i8] c"net_poll\00" -@.str8219 = private unnamed_addr constant [9 x i8] c"net_poll\00" -@.str8220 = private unnamed_addr constant [26 x i8] c"call i32 @L_net_poll(ptr \00" -@.str8221 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8222 = private unnamed_addr constant [2 x i8] c")\00" -@.str8223 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8224 = private unnamed_addr constant [4 x i8] c"len\00" -@.str8225 = private unnamed_addr constant [5 x i8] c"push\00" -@.str8226 = private unnamed_addr constant [7 x i8] c"string\00" -@.str8227 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str8228 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str8229 = private unnamed_addr constant [27 x i8] c"call ptr @lp_long_str(i64 \00" -@.str8230 = private unnamed_addr constant [2 x i8] c")\00" +@.str8210 = private unnamed_addr constant [13 x i8] c"set_local_id\00" +@.str8211 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str8212 = private unnamed_addr constant [18 x i8] c", ptr @L_localid\0A\00" +@.str8213 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8214 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8215 = private unnamed_addr constant [9 x i8] c"net_send\00" +@.str8216 = private unnamed_addr constant [9 x i8] c"net_send\00" +@.str8217 = private unnamed_addr constant [29 x i8] c" call void @L_net_send(i32 \00" +@.str8218 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8219 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8220 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8221 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8222 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8223 = private unnamed_addr constant [9 x i8] c"net_poll\00" +@.str8224 = private unnamed_addr constant [9 x i8] c"net_poll\00" +@.str8225 = private unnamed_addr constant [26 x i8] c"call i32 @L_net_poll(ptr \00" +@.str8226 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8227 = private unnamed_addr constant [2 x i8] c")\00" +@.str8228 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8229 = private unnamed_addr constant [4 x i8] c"len\00" +@.str8230 = private unnamed_addr constant [5 x i8] c"push\00" @.str8231 = private unnamed_addr constant [7 x i8] c"string\00" -@.str8232 = private unnamed_addr constant [26 x i8] c"call ptr @lp_int_str(i32 \00" -@.str8233 = private unnamed_addr constant [2 x i8] c")\00" -@.str8234 = private unnamed_addr constant [7 x i8] c"string\00" -@.str8235 = private unnamed_addr constant [6 x i8] c"print\00" -@.str8236 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str8237 = private unnamed_addr constant [51 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_line, ptr \00" -@.str8238 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8239 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str8240 = private unnamed_addr constant [51 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_long, i64 \00" -@.str8241 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8242 = private unnamed_addr constant [50 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_int, i32 \00" +@.str8232 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str8233 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str8234 = private unnamed_addr constant [27 x i8] c"call ptr @lp_long_str(i64 \00" +@.str8235 = private unnamed_addr constant [2 x i8] c")\00" +@.str8236 = private unnamed_addr constant [7 x i8] c"string\00" +@.str8237 = private unnamed_addr constant [26 x i8] c"call ptr @lp_int_str(i32 \00" +@.str8238 = private unnamed_addr constant [2 x i8] c")\00" +@.str8239 = private unnamed_addr constant [7 x i8] c"string\00" +@.str8240 = private unnamed_addr constant [6 x i8] c"print\00" +@.str8241 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str8242 = private unnamed_addr constant [51 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_line, ptr \00" @.str8243 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8244 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8245 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8246 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str8247 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str8248 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str8249 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" -@.str8250 = private unnamed_addr constant [2 x i8] c")\00" -@.str8251 = private unnamed_addr constant [8 x i8] c"pointer\00" -@.str8252 = private unnamed_addr constant [6 x i8] c"words\00" -@.str8253 = private unnamed_addr constant [9 x i8] c"mul i32 \00" -@.str8254 = private unnamed_addr constant [4 x i8] c", 4\00" -@.str8255 = private unnamed_addr constant [10 x i8] c"zext i32 \00" -@.str8256 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str8257 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" -@.str8258 = private unnamed_addr constant [2 x i8] c")\00" -@.str8259 = private unnamed_addr constant [6 x i8] c"words\00" -@.str8260 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str8261 = private unnamed_addr constant [9 x i8] c"shl i32 \00" -@.str8262 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str8263 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str8264 = private unnamed_addr constant [6 x i8] c"floor\00" -@.str8265 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" -@.str8266 = private unnamed_addr constant [5 x i8] c", 16\00" -@.str8267 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8268 = private unnamed_addr constant [7 x i8] c"expect\00" -@.str8269 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str8270 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8271 = private unnamed_addr constant [2 x i8] c":\00" -@.str8272 = private unnamed_addr constant [16 x i8] c": expect failed\00" -@.str8273 = private unnamed_addr constant [1 x i8] c"\00" -@.str8274 = private unnamed_addr constant [1 x i8] c"\00" -@.str8275 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8276 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8277 = private unnamed_addr constant [10 x i8] c"expect_eq\00" -@.str8278 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str8279 = private unnamed_addr constant [3 x i8] c", \00" -@.str8280 = private unnamed_addr constant [2 x i8] c":\00" -@.str8281 = private unnamed_addr constant [19 x i8] c": expect_eq failed\00" -@.str8282 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8283 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8284 = private unnamed_addr constant [12 x i8] c"expect_near\00" -@.str8285 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str8286 = private unnamed_addr constant [3 x i8] c", \00" -@.str8287 = private unnamed_addr constant [12 x i8] c"sub i32 0, \00" -@.str8288 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str8289 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8290 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str8291 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8292 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8293 = private unnamed_addr constant [14 x i8] c"icmp sle i32 \00" -@.str8294 = private unnamed_addr constant [3 x i8] c", \00" -@.str8295 = private unnamed_addr constant [2 x i8] c":\00" -@.str8296 = private unnamed_addr constant [21 x i8] c": expect_near failed\00" -@.str8297 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8298 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8299 = private unnamed_addr constant [6 x i8] c"panic\00" +@.str8244 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str8245 = private unnamed_addr constant [51 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_long, i64 \00" +@.str8246 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8247 = private unnamed_addr constant [50 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_int, i32 \00" +@.str8248 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8249 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8250 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8251 = private unnamed_addr constant [6 x i8] c"bytes\00" +@.str8252 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str8253 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str8254 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" +@.str8255 = private unnamed_addr constant [2 x i8] c")\00" +@.str8256 = private unnamed_addr constant [8 x i8] c"pointer\00" +@.str8257 = private unnamed_addr constant [6 x i8] c"words\00" +@.str8258 = private unnamed_addr constant [9 x i8] c"mul i32 \00" +@.str8259 = private unnamed_addr constant [4 x i8] c", 4\00" +@.str8260 = private unnamed_addr constant [10 x i8] c"zext i32 \00" +@.str8261 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str8262 = private unnamed_addr constant [22 x i8] c"call ptr @malloc(i64 \00" +@.str8263 = private unnamed_addr constant [2 x i8] c")\00" +@.str8264 = private unnamed_addr constant [6 x i8] c"words\00" +@.str8265 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str8266 = private unnamed_addr constant [9 x i8] c"shl i32 \00" +@.str8267 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str8268 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str8269 = private unnamed_addr constant [6 x i8] c"floor\00" +@.str8270 = private unnamed_addr constant [10 x i8] c"ashr i32 \00" +@.str8271 = private unnamed_addr constant [5 x i8] c", 16\00" +@.str8272 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8273 = private unnamed_addr constant [7 x i8] c"expect\00" +@.str8274 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str8275 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8276 = private unnamed_addr constant [2 x i8] c":\00" +@.str8277 = private unnamed_addr constant [16 x i8] c": expect failed\00" +@.str8278 = private unnamed_addr constant [1 x i8] c"\00" +@.str8279 = private unnamed_addr constant [1 x i8] c"\00" +@.str8280 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8281 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8282 = private unnamed_addr constant [10 x i8] c"expect_eq\00" +@.str8283 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str8284 = private unnamed_addr constant [3 x i8] c", \00" +@.str8285 = private unnamed_addr constant [2 x i8] c":\00" +@.str8286 = private unnamed_addr constant [19 x i8] c": expect_eq failed\00" +@.str8287 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8288 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8289 = private unnamed_addr constant [12 x i8] c"expect_near\00" +@.str8290 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str8291 = private unnamed_addr constant [3 x i8] c", \00" +@.str8292 = private unnamed_addr constant [12 x i8] c"sub i32 0, \00" +@.str8293 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str8294 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8295 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str8296 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8297 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8298 = private unnamed_addr constant [14 x i8] c"icmp sle i32 \00" +@.str8299 = private unnamed_addr constant [3 x i8] c", \00" @.str8300 = private unnamed_addr constant [2 x i8] c":\00" -@.str8301 = private unnamed_addr constant [10 x i8] c": panic: \00" -@.str8302 = private unnamed_addr constant [25 x i8] c"load ptr, ptr @__stderrp\00" -@.str8303 = private unnamed_addr constant [41 x i8] c" call i32 (ptr, ptr, ...) @fprintf(ptr \00" -@.str8304 = private unnamed_addr constant [24 x i8] c", ptr @.fmt_panic, ptr \00" -@.str8305 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8306 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8307 = private unnamed_addr constant [40 x i8] c" call void @exit(i32 1)\0A unreachable\0A\00" -@.str8308 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8309 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8310 = private unnamed_addr constant [7 x i8] c"assert\00" -@.str8311 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str8312 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8313 = private unnamed_addr constant [5 x i8] c"asok\00" -@.str8314 = private unnamed_addr constant [6 x i8] c"asbad\00" -@.str8315 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str8316 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8317 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8318 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8319 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8320 = private unnamed_addr constant [2 x i8] c":\00" -@.str8321 = private unnamed_addr constant [21 x i8] c": assertion failed: \00" -@.str8322 = private unnamed_addr constant [25 x i8] c"load ptr, ptr @__stderrp\00" -@.str8323 = private unnamed_addr constant [41 x i8] c" call i32 (ptr, ptr, ...) @fprintf(ptr \00" -@.str8324 = private unnamed_addr constant [24 x i8] c", ptr @.fmt_panic, ptr \00" -@.str8325 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8326 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8327 = private unnamed_addr constant [40 x i8] c" call void @exit(i32 1)\0A unreachable\0A\00" -@.str8328 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8329 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8330 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8331 = private unnamed_addr constant [3 x i8] c"ok\00" -@.str8332 = private unnamed_addr constant [3 x i8] c"ok\00" -@.str8333 = private unnamed_addr constant [25 x i8] c"call ptr @malloc(i64 16)\00" -@.str8334 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" -@.str8335 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str8336 = private unnamed_addr constant [20 x i8] c" store i32 1, ptr \00" -@.str8337 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8338 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" -@.str8339 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str8340 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str8341 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8342 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8343 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8344 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" -@.str8345 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str8346 = private unnamed_addr constant [23 x i8] c" store ptr null, ptr \00" -@.str8347 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8348 = private unnamed_addr constant [7 x i8] c"result\00" -@.str8349 = private unnamed_addr constant [4 x i8] c"err\00" -@.str8350 = private unnamed_addr constant [4 x i8] c"err\00" -@.str8351 = private unnamed_addr constant [25 x i8] c"call ptr @malloc(i64 16)\00" -@.str8352 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" -@.str8353 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str8354 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" -@.str8355 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8356 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" -@.str8357 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str8358 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" -@.str8359 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8360 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" -@.str8361 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str8362 = private unnamed_addr constant [13 x i8] c" store ptr \00" -@.str8363 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8301 = private unnamed_addr constant [21 x i8] c": expect_near failed\00" +@.str8302 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8303 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8304 = private unnamed_addr constant [6 x i8] c"panic\00" +@.str8305 = private unnamed_addr constant [2 x i8] c":\00" +@.str8306 = private unnamed_addr constant [10 x i8] c": panic: \00" +@.str8307 = private unnamed_addr constant [25 x i8] c"load ptr, ptr @__stderrp\00" +@.str8308 = private unnamed_addr constant [41 x i8] c" call i32 (ptr, ptr, ...) @fprintf(ptr \00" +@.str8309 = private unnamed_addr constant [24 x i8] c", ptr @.fmt_panic, ptr \00" +@.str8310 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8311 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8312 = private unnamed_addr constant [40 x i8] c" call void @exit(i32 1)\0A unreachable\0A\00" +@.str8313 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8314 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8315 = private unnamed_addr constant [7 x i8] c"assert\00" +@.str8316 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str8317 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8318 = private unnamed_addr constant [5 x i8] c"asok\00" +@.str8319 = private unnamed_addr constant [6 x i8] c"asbad\00" +@.str8320 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str8321 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8322 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8323 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8324 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8325 = private unnamed_addr constant [2 x i8] c":\00" +@.str8326 = private unnamed_addr constant [21 x i8] c": assertion failed: \00" +@.str8327 = private unnamed_addr constant [25 x i8] c"load ptr, ptr @__stderrp\00" +@.str8328 = private unnamed_addr constant [41 x i8] c" call i32 (ptr, ptr, ...) @fprintf(ptr \00" +@.str8329 = private unnamed_addr constant [24 x i8] c", ptr @.fmt_panic, ptr \00" +@.str8330 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8331 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8332 = private unnamed_addr constant [40 x i8] c" call void @exit(i32 1)\0A unreachable\0A\00" +@.str8333 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8334 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8335 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8336 = private unnamed_addr constant [3 x i8] c"ok\00" +@.str8337 = private unnamed_addr constant [3 x i8] c"ok\00" +@.str8338 = private unnamed_addr constant [25 x i8] c"call ptr @malloc(i64 16)\00" +@.str8339 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" +@.str8340 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str8341 = private unnamed_addr constant [20 x i8] c" store i32 1, ptr \00" +@.str8342 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8343 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" +@.str8344 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str8345 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str8346 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8347 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8348 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8349 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" +@.str8350 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" +@.str8351 = private unnamed_addr constant [23 x i8] c" store ptr null, ptr \00" +@.str8352 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8353 = private unnamed_addr constant [7 x i8] c"result\00" +@.str8354 = private unnamed_addr constant [4 x i8] c"err\00" +@.str8355 = private unnamed_addr constant [4 x i8] c"err\00" +@.str8356 = private unnamed_addr constant [25 x i8] c"call ptr @malloc(i64 16)\00" +@.str8357 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" +@.str8358 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str8359 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" +@.str8360 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8361 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" +@.str8362 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str8363 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" @.str8364 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8365 = private unnamed_addr constant [7 x i8] c"result\00" -@.str8366 = private unnamed_addr constant [6 x i8] c"is_ok\00" -@.str8367 = private unnamed_addr constant [6 x i8] c"is_ok\00" -@.str8368 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" -@.str8369 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str8370 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8371 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str8372 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8373 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str8374 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str8375 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str8376 = private unnamed_addr constant [7 x i8] c"is_err\00" -@.str8377 = private unnamed_addr constant [7 x i8] c"is_err\00" -@.str8378 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" -@.str8379 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str8380 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8381 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str8382 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8383 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str8384 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str8385 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str8386 = private unnamed_addr constant [5 x i8] c"some\00" -@.str8387 = private unnamed_addr constant [5 x i8] c"some\00" -@.str8388 = private unnamed_addr constant [24 x i8] c"call ptr @malloc(i64 8)\00" -@.str8389 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" -@.str8390 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str8391 = private unnamed_addr constant [20 x i8] c" store i32 1, ptr \00" -@.str8392 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8393 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" -@.str8394 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str8395 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str8396 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8397 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8398 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8399 = private unnamed_addr constant [7 x i8] c"option\00" -@.str8400 = private unnamed_addr constant [5 x i8] c"none\00" -@.str8401 = private unnamed_addr constant [5 x i8] c"none\00" -@.str8402 = private unnamed_addr constant [24 x i8] c"call ptr @malloc(i64 8)\00" -@.str8403 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" -@.str8404 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str8405 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" -@.str8406 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8407 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" -@.str8408 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str8409 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" -@.str8410 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8411 = private unnamed_addr constant [7 x i8] c"option\00" -@.str8412 = private unnamed_addr constant [8 x i8] c"is_some\00" -@.str8413 = private unnamed_addr constant [8 x i8] c"is_some\00" -@.str8414 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" -@.str8415 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str8416 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8417 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str8418 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8419 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str8420 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str8421 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str8422 = private unnamed_addr constant [8 x i8] c"is_none\00" -@.str8423 = private unnamed_addr constant [8 x i8] c"is_none\00" -@.str8424 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" -@.str8425 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str8426 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8427 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str8428 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8429 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str8430 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str8431 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str8432 = private unnamed_addr constant [10 x i8] c"unwrap_or\00" -@.str8433 = private unnamed_addr constant [10 x i8] c"unwrap_or\00" -@.str8434 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" -@.str8435 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str8436 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8437 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" -@.str8438 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str8439 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8440 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str8441 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8442 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str8443 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8444 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8445 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8446 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8447 = private unnamed_addr constant [14 x i8] c"world_prop_id\00" -@.str8448 = private unnamed_addr constant [29 x i8] c"call i32 @ludic_prop_id(ptr \00" -@.str8449 = private unnamed_addr constant [2 x i8] c")\00" +@.str8365 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" +@.str8366 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" +@.str8367 = private unnamed_addr constant [13 x i8] c" store ptr \00" +@.str8368 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8369 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8370 = private unnamed_addr constant [7 x i8] c"result\00" +@.str8371 = private unnamed_addr constant [6 x i8] c"is_ok\00" +@.str8372 = private unnamed_addr constant [6 x i8] c"is_ok\00" +@.str8373 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" +@.str8374 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str8375 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str8376 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str8377 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8378 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str8379 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str8380 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str8381 = private unnamed_addr constant [7 x i8] c"is_err\00" +@.str8382 = private unnamed_addr constant [7 x i8] c"is_err\00" +@.str8383 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Result, ptr \00" +@.str8384 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str8385 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str8386 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str8387 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8388 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str8389 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str8390 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str8391 = private unnamed_addr constant [5 x i8] c"some\00" +@.str8392 = private unnamed_addr constant [5 x i8] c"some\00" +@.str8393 = private unnamed_addr constant [24 x i8] c"call ptr @malloc(i64 8)\00" +@.str8394 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" +@.str8395 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str8396 = private unnamed_addr constant [20 x i8] c" store i32 1, ptr \00" +@.str8397 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8398 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" +@.str8399 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str8400 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str8401 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8402 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8403 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8404 = private unnamed_addr constant [7 x i8] c"option\00" +@.str8405 = private unnamed_addr constant [5 x i8] c"none\00" +@.str8406 = private unnamed_addr constant [5 x i8] c"none\00" +@.str8407 = private unnamed_addr constant [24 x i8] c"call ptr @malloc(i64 8)\00" +@.str8408 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" +@.str8409 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str8410 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" +@.str8411 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8412 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" +@.str8413 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str8414 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" +@.str8415 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8416 = private unnamed_addr constant [7 x i8] c"option\00" +@.str8417 = private unnamed_addr constant [8 x i8] c"is_some\00" +@.str8418 = private unnamed_addr constant [8 x i8] c"is_some\00" +@.str8419 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" +@.str8420 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str8421 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str8422 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str8423 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8424 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str8425 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str8426 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str8427 = private unnamed_addr constant [8 x i8] c"is_none\00" +@.str8428 = private unnamed_addr constant [8 x i8] c"is_none\00" +@.str8429 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" +@.str8430 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str8431 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str8432 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str8433 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8434 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str8435 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str8436 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str8437 = private unnamed_addr constant [10 x i8] c"unwrap_or\00" +@.str8438 = private unnamed_addr constant [10 x i8] c"unwrap_or\00" +@.str8439 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" +@.str8440 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" +@.str8441 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str8442 = private unnamed_addr constant [37 x i8] c"getelementptr inbounds %Option, ptr \00" +@.str8443 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str8444 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str8445 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str8446 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8447 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str8448 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8449 = private unnamed_addr constant [7 x i8] c", i32 \00" @.str8450 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8451 = private unnamed_addr constant [15 x i8] c"world_field_id\00" -@.str8452 = private unnamed_addr constant [30 x i8] c"call i32 @ludic_field_id(i32 \00" -@.str8453 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8451 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8452 = private unnamed_addr constant [14 x i8] c"world_prop_id\00" +@.str8453 = private unnamed_addr constant [29 x i8] c"call i32 @ludic_prop_id(ptr \00" @.str8454 = private unnamed_addr constant [2 x i8] c")\00" @.str8455 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8456 = private unnamed_addr constant [10 x i8] c"world_get\00" -@.str8457 = private unnamed_addr constant [25 x i8] c"call i64 @ludic_get(i32 \00" -@.str8458 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8459 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8460 = private unnamed_addr constant [2 x i8] c")\00" -@.str8461 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str8462 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str8463 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8464 = private unnamed_addr constant [10 x i8] c"world_set\00" -@.str8465 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str8466 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str8467 = private unnamed_addr constant [28 x i8] c" call void @ludic_set(i32 \00" -@.str8468 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8469 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8470 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str8471 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8472 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8473 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8474 = private unnamed_addr constant [10 x i8] c"world_has\00" -@.str8475 = private unnamed_addr constant [25 x i8] c"call i32 @ludic_has(i32 \00" -@.str8476 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8477 = private unnamed_addr constant [2 x i8] c")\00" -@.str8478 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8479 = private unnamed_addr constant [12 x i8] c"world_count\00" -@.str8480 = private unnamed_addr constant [31 x i8] c"call i32 @ludic_entity_count()\00" -@.str8481 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8482 = private unnamed_addr constant [11 x i8] c"world_kind\00" -@.str8483 = private unnamed_addr constant [26 x i8] c"call i32 @ludic_kind(i32 \00" -@.str8484 = private unnamed_addr constant [2 x i8] c")\00" -@.str8485 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8486 = private unnamed_addr constant [15 x i8] c"world_model_id\00" -@.str8487 = private unnamed_addr constant [30 x i8] c"call i32 @ludic_model_id(ptr \00" -@.str8488 = private unnamed_addr constant [2 x i8] c")\00" -@.str8489 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8490 = private unnamed_addr constant [17 x i8] c"world_query_next\00" -@.str8491 = private unnamed_addr constant [32 x i8] c"call i32 @ludic_query_next(i32 \00" -@.str8492 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8456 = private unnamed_addr constant [15 x i8] c"world_field_id\00" +@.str8457 = private unnamed_addr constant [30 x i8] c"call i32 @ludic_field_id(i32 \00" +@.str8458 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8459 = private unnamed_addr constant [2 x i8] c")\00" +@.str8460 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8461 = private unnamed_addr constant [10 x i8] c"world_get\00" +@.str8462 = private unnamed_addr constant [25 x i8] c"call i64 @ludic_get(i32 \00" +@.str8463 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8464 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8465 = private unnamed_addr constant [2 x i8] c")\00" +@.str8466 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" +@.str8467 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str8468 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8469 = private unnamed_addr constant [10 x i8] c"world_set\00" +@.str8470 = private unnamed_addr constant [10 x i8] c"sext i32 \00" +@.str8471 = private unnamed_addr constant [8 x i8] c" to i64\00" +@.str8472 = private unnamed_addr constant [28 x i8] c" call void @ludic_set(i32 \00" +@.str8473 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8474 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8475 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str8476 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8477 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8478 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8479 = private unnamed_addr constant [10 x i8] c"world_has\00" +@.str8480 = private unnamed_addr constant [25 x i8] c"call i32 @ludic_has(i32 \00" +@.str8481 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8482 = private unnamed_addr constant [2 x i8] c")\00" +@.str8483 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8484 = private unnamed_addr constant [12 x i8] c"world_count\00" +@.str8485 = private unnamed_addr constant [31 x i8] c"call i32 @ludic_entity_count()\00" +@.str8486 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8487 = private unnamed_addr constant [11 x i8] c"world_kind\00" +@.str8488 = private unnamed_addr constant [26 x i8] c"call i32 @ludic_kind(i32 \00" +@.str8489 = private unnamed_addr constant [2 x i8] c")\00" +@.str8490 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8491 = private unnamed_addr constant [15 x i8] c"world_model_id\00" +@.str8492 = private unnamed_addr constant [30 x i8] c"call i32 @ludic_model_id(ptr \00" @.str8493 = private unnamed_addr constant [2 x i8] c")\00" @.str8494 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8495 = private unnamed_addr constant [20 x i8] c"world_register_prop\00" -@.str8496 = private unnamed_addr constant [35 x i8] c"call i32 @ludic_register_prop(ptr \00" +@.str8495 = private unnamed_addr constant [17 x i8] c"world_query_next\00" +@.str8496 = private unnamed_addr constant [32 x i8] c"call i32 @ludic_query_next(i32 \00" @.str8497 = private unnamed_addr constant [7 x i8] c", i32 \00" @.str8498 = private unnamed_addr constant [2 x i8] c")\00" @.str8499 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8500 = private unnamed_addr constant [17 x i8] c"world_attach_dyn\00" -@.str8501 = private unnamed_addr constant [35 x i8] c" call void @ludic_attach_dyn(i32 \00" +@.str8500 = private unnamed_addr constant [20 x i8] c"world_register_prop\00" +@.str8501 = private unnamed_addr constant [35 x i8] c"call i32 @ludic_register_prop(ptr \00" @.str8502 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8503 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8504 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8505 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8506 = private unnamed_addr constant [17 x i8] c"world_detach_dyn\00" -@.str8507 = private unnamed_addr constant [35 x i8] c" call void @ludic_detach_dyn(i32 \00" -@.str8508 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8509 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8510 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8511 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8512 = private unnamed_addr constant [12 x i8] c"world_spawn\00" -@.str8513 = private unnamed_addr constant [27 x i8] c"call i32 @ludic_spawn(i32 \00" -@.str8514 = private unnamed_addr constant [2 x i8] c")\00" -@.str8515 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8516 = private unnamed_addr constant [17 x i8] c"world_prop_count\00" -@.str8517 = private unnamed_addr constant [29 x i8] c"call i32 @ludic_prop_count()\00" -@.str8518 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8519 = private unnamed_addr constant [16 x i8] c"world_prop_name\00" -@.str8520 = private unnamed_addr constant [31 x i8] c"call ptr @ludic_prop_name(i32 \00" -@.str8521 = private unnamed_addr constant [2 x i8] c")\00" -@.str8522 = private unnamed_addr constant [7 x i8] c"string\00" -@.str8523 = private unnamed_addr constant [18 x i8] c"world_field_count\00" -@.str8524 = private unnamed_addr constant [33 x i8] c"call i32 @ludic_field_count(i32 \00" -@.str8525 = private unnamed_addr constant [2 x i8] c")\00" -@.str8526 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8527 = private unnamed_addr constant [17 x i8] c"world_field_name\00" -@.str8528 = private unnamed_addr constant [32 x i8] c"call ptr @ludic_field_name(i32 \00" -@.str8529 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8503 = private unnamed_addr constant [2 x i8] c")\00" +@.str8504 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8505 = private unnamed_addr constant [17 x i8] c"world_attach_dyn\00" +@.str8506 = private unnamed_addr constant [35 x i8] c" call void @ludic_attach_dyn(i32 \00" +@.str8507 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8508 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8509 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8510 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8511 = private unnamed_addr constant [17 x i8] c"world_detach_dyn\00" +@.str8512 = private unnamed_addr constant [35 x i8] c" call void @ludic_detach_dyn(i32 \00" +@.str8513 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8514 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8515 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8516 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8517 = private unnamed_addr constant [12 x i8] c"world_spawn\00" +@.str8518 = private unnamed_addr constant [27 x i8] c"call i32 @ludic_spawn(i32 \00" +@.str8519 = private unnamed_addr constant [2 x i8] c")\00" +@.str8520 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8521 = private unnamed_addr constant [17 x i8] c"world_prop_count\00" +@.str8522 = private unnamed_addr constant [29 x i8] c"call i32 @ludic_prop_count()\00" +@.str8523 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8524 = private unnamed_addr constant [16 x i8] c"world_prop_name\00" +@.str8525 = private unnamed_addr constant [31 x i8] c"call ptr @ludic_prop_name(i32 \00" +@.str8526 = private unnamed_addr constant [2 x i8] c")\00" +@.str8527 = private unnamed_addr constant [7 x i8] c"string\00" +@.str8528 = private unnamed_addr constant [18 x i8] c"world_field_count\00" +@.str8529 = private unnamed_addr constant [33 x i8] c"call i32 @ludic_field_count(i32 \00" @.str8530 = private unnamed_addr constant [2 x i8] c")\00" -@.str8531 = private unnamed_addr constant [7 x i8] c"string\00" -@.str8532 = private unnamed_addr constant [17 x i8] c"world_field_type\00" -@.str8533 = private unnamed_addr constant [32 x i8] c"call ptr @ludic_field_type(i32 \00" +@.str8531 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8532 = private unnamed_addr constant [17 x i8] c"world_field_name\00" +@.str8533 = private unnamed_addr constant [32 x i8] c"call ptr @ludic_field_name(i32 \00" @.str8534 = private unnamed_addr constant [7 x i8] c", i32 \00" @.str8535 = private unnamed_addr constant [2 x i8] c")\00" @.str8536 = private unnamed_addr constant [7 x i8] c"string\00" -@.str8537 = private unnamed_addr constant [3 x i8] c" \00" -@.str8538 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8539 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8540 = private unnamed_addr constant [4 x i8] c" = \00" -@.str8541 = private unnamed_addr constant [6 x i8] c"call \00" -@.str8542 = private unnamed_addr constant [3 x i8] c" @\00" -@.str8543 = private unnamed_addr constant [2 x i8] c"(\00" -@.str8544 = private unnamed_addr constant [3 x i8] c", \00" -@.str8545 = private unnamed_addr constant [2 x i8] c" \00" -@.str8546 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8547 = private unnamed_addr constant [4 x i8] c"rt_\00" -@.str8548 = private unnamed_addr constant [18 x i8] c"unknown function \00" -@.str8549 = private unnamed_addr constant [3 x i8] c" \00" -@.str8550 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8551 = private unnamed_addr constant [5 x i8] c"void\00" -@.str8552 = private unnamed_addr constant [4 x i8] c" = \00" -@.str8553 = private unnamed_addr constant [6 x i8] c"call \00" -@.str8554 = private unnamed_addr constant [6 x i8] c" @fn_\00" -@.str8555 = private unnamed_addr constant [2 x i8] c"(\00" -@.str8556 = private unnamed_addr constant [3 x i8] c", \00" -@.str8557 = private unnamed_addr constant [2 x i8] c" \00" -@.str8558 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8559 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8560 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8561 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8562 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str8563 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str8564 = private unnamed_addr constant [5 x i8] c"null\00" -@.str8565 = private unnamed_addr constant [8 x i8] c"pointer\00" -@.str8566 = private unnamed_addr constant [7 x i8] c"entity\00" -@.str8567 = private unnamed_addr constant [28 x i8] c"call ptr @lp_str_slice(ptr \00" -@.str8568 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8569 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8570 = private unnamed_addr constant [2 x i8] c")\00" -@.str8571 = private unnamed_addr constant [7 x i8] c"string\00" -@.str8572 = private unnamed_addr constant [7 x i8] c"string\00" -@.str8573 = private unnamed_addr constant [6 x i8] c"load \00" -@.str8574 = private unnamed_addr constant [10 x i8] c", ptr @g_\00" -@.str8575 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8576 = private unnamed_addr constant [20 x i8] c"unknown identifier \00" -@.str8577 = private unnamed_addr constant [6 x i8] c"Color\00" -@.str8578 = private unnamed_addr constant [21 x i8] c"unknown color Color.\00" -@.str8579 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8580 = private unnamed_addr constant [4 x i8] c"Key\00" -@.str8581 = private unnamed_addr constant [17 x i8] c"unknown key Key.\00" -@.str8582 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8583 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8584 = private unnamed_addr constant [6 x i8] c"IVec2\00" -@.str8585 = private unnamed_addr constant [2 x i8] c"x\00" -@.str8586 = private unnamed_addr constant [2 x i8] c"y\00" -@.str8587 = private unnamed_addr constant [2 x i8] c"x\00" +@.str8537 = private unnamed_addr constant [17 x i8] c"world_field_type\00" +@.str8538 = private unnamed_addr constant [32 x i8] c"call ptr @ludic_field_type(i32 \00" +@.str8539 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8540 = private unnamed_addr constant [2 x i8] c")\00" +@.str8541 = private unnamed_addr constant [7 x i8] c"string\00" +@.str8542 = private unnamed_addr constant [3 x i8] c" \00" +@.str8543 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8544 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8545 = private unnamed_addr constant [4 x i8] c" = \00" +@.str8546 = private unnamed_addr constant [6 x i8] c"call \00" +@.str8547 = private unnamed_addr constant [3 x i8] c" @\00" +@.str8548 = private unnamed_addr constant [2 x i8] c"(\00" +@.str8549 = private unnamed_addr constant [3 x i8] c", \00" +@.str8550 = private unnamed_addr constant [2 x i8] c" \00" +@.str8551 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8552 = private unnamed_addr constant [4 x i8] c"rt_\00" +@.str8553 = private unnamed_addr constant [18 x i8] c"unknown function \00" +@.str8554 = private unnamed_addr constant [3 x i8] c" \00" +@.str8555 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8556 = private unnamed_addr constant [5 x i8] c"void\00" +@.str8557 = private unnamed_addr constant [4 x i8] c" = \00" +@.str8558 = private unnamed_addr constant [6 x i8] c"call \00" +@.str8559 = private unnamed_addr constant [6 x i8] c" @fn_\00" +@.str8560 = private unnamed_addr constant [2 x i8] c"(\00" +@.str8561 = private unnamed_addr constant [3 x i8] c", \00" +@.str8562 = private unnamed_addr constant [2 x i8] c" \00" +@.str8563 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8564 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8565 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8566 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8567 = private unnamed_addr constant [6 x i8] c"fixed\00" +@.str8568 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str8569 = private unnamed_addr constant [5 x i8] c"null\00" +@.str8570 = private unnamed_addr constant [8 x i8] c"pointer\00" +@.str8571 = private unnamed_addr constant [7 x i8] c"entity\00" +@.str8572 = private unnamed_addr constant [28 x i8] c"call ptr @lp_str_slice(ptr \00" +@.str8573 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8574 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8575 = private unnamed_addr constant [2 x i8] c")\00" +@.str8576 = private unnamed_addr constant [7 x i8] c"string\00" +@.str8577 = private unnamed_addr constant [7 x i8] c"string\00" +@.str8578 = private unnamed_addr constant [6 x i8] c"load \00" +@.str8579 = private unnamed_addr constant [10 x i8] c", ptr @g_\00" +@.str8580 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8581 = private unnamed_addr constant [20 x i8] c"unknown identifier \00" +@.str8582 = private unnamed_addr constant [6 x i8] c"Color\00" +@.str8583 = private unnamed_addr constant [21 x i8] c"unknown color Color.\00" +@.str8584 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8585 = private unnamed_addr constant [4 x i8] c"Key\00" +@.str8586 = private unnamed_addr constant [17 x i8] c"unknown key Key.\00" +@.str8587 = private unnamed_addr constant [4 x i8] c"int\00" @.str8588 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8589 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8590 = private unnamed_addr constant [5 x i8] c"byte\00" -@.str8591 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" -@.str8592 = private unnamed_addr constant [9 x i8] c"zext i8 \00" -@.str8593 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str8589 = private unnamed_addr constant [6 x i8] c"IVec2\00" +@.str8590 = private unnamed_addr constant [2 x i8] c"x\00" +@.str8591 = private unnamed_addr constant [2 x i8] c"y\00" +@.str8592 = private unnamed_addr constant [2 x i8] c"x\00" +@.str8593 = private unnamed_addr constant [4 x i8] c"int\00" @.str8594 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8595 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str8596 = private unnamed_addr constant [2 x i8] c"-\00" -@.str8597 = private unnamed_addr constant [12 x i8] c"sub i64 0, \00" -@.str8598 = private unnamed_addr constant [5 x i8] c"long\00" -@.str8599 = private unnamed_addr constant [2 x i8] c"~\00" -@.str8600 = private unnamed_addr constant [9 x i8] c"xor i64 \00" -@.str8601 = private unnamed_addr constant [5 x i8] c", -1\00" -@.str8602 = private unnamed_addr constant [5 x i8] c"long\00" -@.str8603 = private unnamed_addr constant [2 x i8] c"-\00" -@.str8604 = private unnamed_addr constant [12 x i8] c"sub i32 0, \00" -@.str8605 = private unnamed_addr constant [2 x i8] c"~\00" -@.str8606 = private unnamed_addr constant [9 x i8] c"xor i32 \00" -@.str8607 = private unnamed_addr constant [5 x i8] c", -1\00" -@.str8608 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str8609 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8610 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str8611 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str8612 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str8613 = private unnamed_addr constant [23 x i8] c"cannot emit expression\00" -@.str8614 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8615 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8616 = private unnamed_addr constant [9 x i8] c" store \00" -@.str8617 = private unnamed_addr constant [2 x i8] c" \00" -@.str8618 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8619 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8620 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8621 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8622 = private unnamed_addr constant [29 x i8] c"cannot assign to immutable '\00" -@.str8623 = private unnamed_addr constant [41 x i8] c"' (declared with let; use var) \E2\80\94 line \00" -@.str8624 = private unnamed_addr constant [19 x i8] c"assign to unknown \00" -@.str8625 = private unnamed_addr constant [4 x i8] c"@g_\00" -@.str8626 = private unnamed_addr constant [22 x i8] c"bad assignment target\00" -@.str8627 = private unnamed_addr constant [2 x i8] c"=\00" -@.str8628 = private unnamed_addr constant [6 x i8] c"load \00" -@.str8629 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8630 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str8631 = private unnamed_addr constant [11 x i8] c"trunc i32 \00" -@.str8632 = private unnamed_addr constant [7 x i8] c" to i8\00" -@.str8633 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str8634 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8635 = private unnamed_addr constant [5 x i8] c"then\00" -@.str8636 = private unnamed_addr constant [5 x i8] c"else\00" -@.str8637 = private unnamed_addr constant [6 x i8] c"ifend\00" -@.str8638 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str8639 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8640 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8641 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8642 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str8643 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8595 = private unnamed_addr constant [5 x i8] c"byte\00" +@.str8596 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" +@.str8597 = private unnamed_addr constant [9 x i8] c"zext i8 \00" +@.str8598 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str8599 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8600 = private unnamed_addr constant [4 x i8] c"i64\00" +@.str8601 = private unnamed_addr constant [2 x i8] c"-\00" +@.str8602 = private unnamed_addr constant [12 x i8] c"sub i64 0, \00" +@.str8603 = private unnamed_addr constant [5 x i8] c"long\00" +@.str8604 = private unnamed_addr constant [2 x i8] c"~\00" +@.str8605 = private unnamed_addr constant [9 x i8] c"xor i64 \00" +@.str8606 = private unnamed_addr constant [5 x i8] c", -1\00" +@.str8607 = private unnamed_addr constant [5 x i8] c"long\00" +@.str8608 = private unnamed_addr constant [2 x i8] c"-\00" +@.str8609 = private unnamed_addr constant [12 x i8] c"sub i32 0, \00" +@.str8610 = private unnamed_addr constant [2 x i8] c"~\00" +@.str8611 = private unnamed_addr constant [9 x i8] c"xor i32 \00" +@.str8612 = private unnamed_addr constant [5 x i8] c", -1\00" +@.str8613 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str8614 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8615 = private unnamed_addr constant [9 x i8] c"zext i1 \00" +@.str8616 = private unnamed_addr constant [8 x i8] c" to i32\00" +@.str8617 = private unnamed_addr constant [5 x i8] c"bool\00" +@.str8618 = private unnamed_addr constant [23 x i8] c"cannot emit expression\00" +@.str8619 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8620 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8621 = private unnamed_addr constant [9 x i8] c" store \00" +@.str8622 = private unnamed_addr constant [2 x i8] c" \00" +@.str8623 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8624 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8625 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8626 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8627 = private unnamed_addr constant [29 x i8] c"cannot assign to immutable '\00" +@.str8628 = private unnamed_addr constant [41 x i8] c"' (declared with let; use var) \E2\80\94 line \00" +@.str8629 = private unnamed_addr constant [19 x i8] c"assign to unknown \00" +@.str8630 = private unnamed_addr constant [4 x i8] c"@g_\00" +@.str8631 = private unnamed_addr constant [22 x i8] c"bad assignment target\00" +@.str8632 = private unnamed_addr constant [2 x i8] c"=\00" +@.str8633 = private unnamed_addr constant [6 x i8] c"load \00" +@.str8634 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8635 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str8636 = private unnamed_addr constant [11 x i8] c"trunc i32 \00" +@.str8637 = private unnamed_addr constant [7 x i8] c" to i8\00" +@.str8638 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str8639 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8640 = private unnamed_addr constant [5 x i8] c"then\00" +@.str8641 = private unnamed_addr constant [5 x i8] c"else\00" +@.str8642 = private unnamed_addr constant [6 x i8] c"ifend\00" +@.str8643 = private unnamed_addr constant [9 x i8] c" br i1 \00" @.str8644 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8645 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8646 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8647 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8648 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8649 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8650 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8651 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8652 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8653 = private unnamed_addr constant [6 x i8] c"wcond\00" -@.str8654 = private unnamed_addr constant [6 x i8] c"wbody\00" -@.str8655 = private unnamed_addr constant [5 x i8] c"wend\00" -@.str8656 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8657 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8658 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8659 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str8660 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8661 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str8662 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8663 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8664 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8665 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8666 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8667 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8668 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8669 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str8670 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str8671 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8672 = private unnamed_addr constant [6 x i8] c"fcond\00" -@.str8673 = private unnamed_addr constant [6 x i8] c"fbody\00" -@.str8674 = private unnamed_addr constant [6 x i8] c"fcont\00" -@.str8675 = private unnamed_addr constant [5 x i8] c"fend\00" -@.str8676 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8677 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8678 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8679 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8680 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str8681 = private unnamed_addr constant [3 x i8] c", \00" -@.str8682 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str8683 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8684 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8685 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8686 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8687 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8688 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8689 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8690 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8691 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str8692 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str8693 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str8694 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8695 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8696 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8697 = private unnamed_addr constant [8 x i8] c"%retval\00" -@.str8698 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" -@.str8699 = private unnamed_addr constant [2 x i8] c"_\00" -@.str8700 = private unnamed_addr constant [8 x i8] c"match: \00" -@.str8701 = private unnamed_addr constant [8 x i8] c" binds \00" -@.str8702 = private unnamed_addr constant [22 x i8] c" name(s) but carries \00" -@.str8703 = private unnamed_addr constant [8 x i8] c"match: \00" -@.str8704 = private unnamed_addr constant [10 x i8] c" payload \00" -@.str8705 = private unnamed_addr constant [24 x i8] c" must be a binding name\00" -@.str8706 = private unnamed_addr constant [3 x i8] c" \00" -@.str8707 = private unnamed_addr constant [35 x i8] c" = getelementptr inbounds i8, ptr \00" -@.str8708 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str8709 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8710 = private unnamed_addr constant [6 x i8] c"load \00" -@.str8711 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8712 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8713 = private unnamed_addr constant [5 x i8] c"mend\00" -@.str8714 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8715 = private unnamed_addr constant [8 x i8] c"match: \00" -@.str8716 = private unnamed_addr constant [27 x i8] c" is not a variant of enum \00" -@.str8717 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str8718 = private unnamed_addr constant [3 x i8] c", \00" -@.str8719 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str8720 = private unnamed_addr constant [3 x i8] c", \00" -@.str8721 = private unnamed_addr constant [6 x i8] c"mbody\00" -@.str8722 = private unnamed_addr constant [5 x i8] c"marm\00" -@.str8723 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str8724 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8725 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8726 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8727 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8728 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8729 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8730 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8731 = private unnamed_addr constant [10 x i8] c"match on \00" -@.str8732 = private unnamed_addr constant [29 x i8] c" is not exhaustive: variant \00" -@.str8733 = private unnamed_addr constant [34 x i8] c" is unhandled (add it or a _ arm)\00" -@.str8734 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8735 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8736 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8737 = private unnamed_addr constant [5 x i8] c"mend\00" -@.str8738 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8739 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str8740 = private unnamed_addr constant [3 x i8] c", \00" -@.str8741 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str8742 = private unnamed_addr constant [3 x i8] c", \00" -@.str8743 = private unnamed_addr constant [6 x i8] c"mbody\00" -@.str8744 = private unnamed_addr constant [5 x i8] c"marm\00" -@.str8745 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str8746 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8747 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8748 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8749 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8750 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8751 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8752 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8753 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8754 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8755 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8756 = private unnamed_addr constant [21 x i8] c"emit: unknown event \00" -@.str8757 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8758 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str8759 = private unnamed_addr constant [5 x i8] c"null\00" -@.str8760 = private unnamed_addr constant [3 x i8] c" \00" -@.str8761 = private unnamed_addr constant [53 x i8] c" = getelementptr inbounds i8, ptr @L_sendbuf, i32 0\0A\00" -@.str8762 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str8763 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8764 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8645 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8646 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8647 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str8648 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8649 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8650 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8651 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8652 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str8653 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8654 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8655 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str8656 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8657 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8658 = private unnamed_addr constant [6 x i8] c"wcond\00" +@.str8659 = private unnamed_addr constant [6 x i8] c"wbody\00" +@.str8660 = private unnamed_addr constant [5 x i8] c"wend\00" +@.str8661 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str8662 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8663 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8664 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str8665 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8666 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str8667 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8668 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8669 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8670 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8671 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str8672 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8673 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8674 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str8675 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str8676 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8677 = private unnamed_addr constant [6 x i8] c"fcond\00" +@.str8678 = private unnamed_addr constant [6 x i8] c"fbody\00" +@.str8679 = private unnamed_addr constant [6 x i8] c"fcont\00" +@.str8680 = private unnamed_addr constant [5 x i8] c"fend\00" +@.str8681 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str8682 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8683 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8684 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str8685 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str8686 = private unnamed_addr constant [3 x i8] c", \00" +@.str8687 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str8688 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8689 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8690 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8691 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8692 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str8693 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8694 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8695 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str8696 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str8697 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str8698 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str8699 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str8700 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8701 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8702 = private unnamed_addr constant [8 x i8] c"%retval\00" +@.str8703 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" +@.str8704 = private unnamed_addr constant [2 x i8] c"_\00" +@.str8705 = private unnamed_addr constant [8 x i8] c"match: \00" +@.str8706 = private unnamed_addr constant [8 x i8] c" binds \00" +@.str8707 = private unnamed_addr constant [22 x i8] c" name(s) but carries \00" +@.str8708 = private unnamed_addr constant [8 x i8] c"match: \00" +@.str8709 = private unnamed_addr constant [10 x i8] c" payload \00" +@.str8710 = private unnamed_addr constant [24 x i8] c" must be a binding name\00" +@.str8711 = private unnamed_addr constant [3 x i8] c" \00" +@.str8712 = private unnamed_addr constant [35 x i8] c" = getelementptr inbounds i8, ptr \00" +@.str8713 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str8714 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8715 = private unnamed_addr constant [6 x i8] c"load \00" +@.str8716 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8717 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str8718 = private unnamed_addr constant [5 x i8] c"mend\00" +@.str8719 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8720 = private unnamed_addr constant [8 x i8] c"match: \00" +@.str8721 = private unnamed_addr constant [27 x i8] c" is not a variant of enum \00" +@.str8722 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str8723 = private unnamed_addr constant [3 x i8] c", \00" +@.str8724 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str8725 = private unnamed_addr constant [3 x i8] c", \00" +@.str8726 = private unnamed_addr constant [6 x i8] c"mbody\00" +@.str8727 = private unnamed_addr constant [5 x i8] c"marm\00" +@.str8728 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str8729 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8730 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8731 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8732 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8733 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str8734 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8735 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8736 = private unnamed_addr constant [10 x i8] c"match on \00" +@.str8737 = private unnamed_addr constant [29 x i8] c" is not exhaustive: variant \00" +@.str8738 = private unnamed_addr constant [34 x i8] c" is unhandled (add it or a _ arm)\00" +@.str8739 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str8740 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8741 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8742 = private unnamed_addr constant [5 x i8] c"mend\00" +@.str8743 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8744 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str8745 = private unnamed_addr constant [3 x i8] c", \00" +@.str8746 = private unnamed_addr constant [7 x i8] c"or i1 \00" +@.str8747 = private unnamed_addr constant [3 x i8] c", \00" +@.str8748 = private unnamed_addr constant [6 x i8] c"mbody\00" +@.str8749 = private unnamed_addr constant [5 x i8] c"marm\00" +@.str8750 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str8751 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8752 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8753 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8754 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8755 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str8756 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8757 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8758 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str8759 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8760 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8761 = private unnamed_addr constant [21 x i8] c"emit: unknown event \00" +@.str8762 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8763 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str8764 = private unnamed_addr constant [5 x i8] c"null\00" @.str8765 = private unnamed_addr constant [3 x i8] c" \00" -@.str8766 = private unnamed_addr constant [51 x i8] c" = getelementptr inbounds i8, ptr @L_sendbuf, i32 \00" -@.str8767 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8768 = private unnamed_addr constant [9 x i8] c" store \00" -@.str8769 = private unnamed_addr constant [2 x i8] c" \00" -@.str8770 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8771 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8772 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8773 = private unnamed_addr constant [10 x i8] c"toclients\00" -@.str8774 = private unnamed_addr constant [3 x i8] c"-1\00" -@.str8775 = private unnamed_addr constant [9 x i8] c"net_send\00" -@.str8776 = private unnamed_addr constant [14 x i8] c" call void @\00" -@.str8777 = private unnamed_addr constant [6 x i8] c"(i32 \00" -@.str8778 = private unnamed_addr constant [23 x i8] c", ptr @L_sendbuf, i32 \00" -@.str8779 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8780 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8781 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8782 = private unnamed_addr constant [3 x i8] c", \00" -@.str8783 = private unnamed_addr constant [2 x i8] c" \00" -@.str8784 = private unnamed_addr constant [3 x i8] c" \00" -@.str8785 = private unnamed_addr constant [17 x i8] c" = call i32 @ev_\00" -@.str8786 = private unnamed_addr constant [2 x i8] c"(\00" -@.str8787 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8788 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8789 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" -@.str8790 = private unnamed_addr constant [2 x i8] c"(\00" -@.str8791 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str8792 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8766 = private unnamed_addr constant [53 x i8] c" = getelementptr inbounds i8, ptr @L_sendbuf, i32 0\0A\00" +@.str8767 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str8768 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8769 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8770 = private unnamed_addr constant [3 x i8] c" \00" +@.str8771 = private unnamed_addr constant [51 x i8] c" = getelementptr inbounds i8, ptr @L_sendbuf, i32 \00" +@.str8772 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8773 = private unnamed_addr constant [9 x i8] c" store \00" +@.str8774 = private unnamed_addr constant [2 x i8] c" \00" +@.str8775 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8776 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8777 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8778 = private unnamed_addr constant [10 x i8] c"toclients\00" +@.str8779 = private unnamed_addr constant [3 x i8] c"-1\00" +@.str8780 = private unnamed_addr constant [9 x i8] c"net_send\00" +@.str8781 = private unnamed_addr constant [14 x i8] c" call void @\00" +@.str8782 = private unnamed_addr constant [6 x i8] c"(i32 \00" +@.str8783 = private unnamed_addr constant [23 x i8] c", ptr @L_sendbuf, i32 \00" +@.str8784 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8785 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8786 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8787 = private unnamed_addr constant [3 x i8] c", \00" +@.str8788 = private unnamed_addr constant [2 x i8] c" \00" +@.str8789 = private unnamed_addr constant [3 x i8] c" \00" +@.str8790 = private unnamed_addr constant [17 x i8] c" = call i32 @ev_\00" +@.str8791 = private unnamed_addr constant [2 x i8] c"(\00" +@.str8792 = private unnamed_addr constant [3 x i8] c")\0A\00" @.str8793 = private unnamed_addr constant [4 x i8] c"int\00" -@.str8794 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8795 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str8796 = private unnamed_addr constant [5 x i8] c"null\00" -@.str8797 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8798 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8799 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8800 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8801 = private unnamed_addr constant [44 x i8] c"cancel outside a cancellable event listener\00" -@.str8802 = private unnamed_addr constant [20 x i8] c" store i32 1, ptr \00" +@.str8794 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" +@.str8795 = private unnamed_addr constant [2 x i8] c"(\00" +@.str8796 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str8797 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8798 = private unnamed_addr constant [4 x i8] c"int\00" +@.str8799 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8800 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str8801 = private unnamed_addr constant [5 x i8] c"null\00" +@.str8802 = private unnamed_addr constant [13 x i8] c" br label %\00" @.str8803 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8804 = private unnamed_addr constant [22 x i8] c"cannot emit statement\00" -@.str8805 = private unnamed_addr constant [9 x i8] c"Occluder\00" -@.str8806 = private unnamed_addr constant [36 x i8] c"@L_running = internal global i32 1\0A\00" -@.str8807 = private unnamed_addr constant [32 x i8] c"@L_key = internal global i32 0\0A\00" -@.str8808 = private unnamed_addr constant [34 x i8] c"@L_frame = internal global i32 0\0A\00" -@.str8809 = private unnamed_addr constant [34 x i8] c"@L_scene = internal global i32 0\0A\00" -@.str8810 = private unnamed_addr constant [33 x i8] c"@L_entc = internal global i32 0\0A\00" -@.str8811 = private unnamed_addr constant [29 x i8] c"@L_alive = internal global [\00" -@.str8812 = private unnamed_addr constant [25 x i8] c" x i32] zeroinitializer\0A\00" -@.str8813 = private unnamed_addr constant [28 x i8] c"@L_kind = internal global [\00" -@.str8814 = private unnamed_addr constant [25 x i8] c" x i32] zeroinitializer\0A\00" -@.str8815 = private unnamed_addr constant [32 x i8] c"@L_freelist = internal global [\00" -@.str8816 = private unnamed_addr constant [25 x i8] c" x i32] zeroinitializer\0A\00" -@.str8817 = private unnamed_addr constant [34 x i8] c"@L_freen = internal global i32 0\0A\00" -@.str8818 = private unnamed_addr constant [33 x i8] c"@L_role = internal global i32 1\0A\00" -@.str8819 = private unnamed_addr constant [36 x i8] c"@L_localid = internal global i32 0\0A\00" -@.str8820 = private unnamed_addr constant [33 x i8] c"@L_owner_arr = internal global [\00" +@.str8804 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str8805 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8806 = private unnamed_addr constant [44 x i8] c"cancel outside a cancellable event listener\00" +@.str8807 = private unnamed_addr constant [20 x i8] c" store i32 1, ptr \00" +@.str8808 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8809 = private unnamed_addr constant [22 x i8] c"cannot emit statement\00" +@.str8810 = private unnamed_addr constant [9 x i8] c"Occluder\00" +@.str8811 = private unnamed_addr constant [36 x i8] c"@L_running = internal global i32 1\0A\00" +@.str8812 = private unnamed_addr constant [32 x i8] c"@L_key = internal global i32 0\0A\00" +@.str8813 = private unnamed_addr constant [34 x i8] c"@L_frame = internal global i32 0\0A\00" +@.str8814 = private unnamed_addr constant [34 x i8] c"@L_scene = internal global i32 0\0A\00" +@.str8815 = private unnamed_addr constant [33 x i8] c"@L_entc = internal global i32 0\0A\00" +@.str8816 = private unnamed_addr constant [29 x i8] c"@L_alive = internal global [\00" +@.str8817 = private unnamed_addr constant [25 x i8] c" x i32] zeroinitializer\0A\00" +@.str8818 = private unnamed_addr constant [28 x i8] c"@L_kind = internal global [\00" +@.str8819 = private unnamed_addr constant [25 x i8] c" x i32] zeroinitializer\0A\00" +@.str8820 = private unnamed_addr constant [32 x i8] c"@L_freelist = internal global [\00" @.str8821 = private unnamed_addr constant [25 x i8] c" x i32] zeroinitializer\0A\00" -@.str8822 = private unnamed_addr constant [4 x i8] c"@S_\00" -@.str8823 = private unnamed_addr constant [21 x i8] c" = internal global [\00" -@.str8824 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" -@.str8825 = private unnamed_addr constant [19 x i8] c"] zeroinitializer\0A\00" -@.str8826 = private unnamed_addr constant [4 x i8] c"@H_\00" -@.str8827 = private unnamed_addr constant [21 x i8] c" = internal global [\00" -@.str8828 = private unnamed_addr constant [24 x i8] c" x i8] zeroinitializer\0A\00" -@.str8829 = private unnamed_addr constant [5 x i8] c"@ME_\00" -@.str8830 = private unnamed_addr constant [26 x i8] c" = internal global i32 1\0A\00" -@.str8831 = private unnamed_addr constant [5 x i8] c"@HE_\00" -@.str8832 = private unnamed_addr constant [26 x i8] c" = internal global i32 1\0A\00" -@.str8833 = private unnamed_addr constant [5 x i8] c"@LE_\00" -@.str8834 = private unnamed_addr constant [26 x i8] c" = internal global i32 1\0A\00" -@.str8835 = private unnamed_addr constant [39 x i8] c"define void @L_reset(i32 %e) {\0Aentry:\0A\00" -@.str8836 = private unnamed_addr constant [3 x i8] c"%h\00" -@.str8837 = private unnamed_addr constant [3 x i8] c" \00" -@.str8838 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str8839 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" -@.str8840 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %e\0A\00" -@.str8841 = private unnamed_addr constant [19 x i8] c" store i8 0, ptr \00" -@.str8842 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8843 = private unnamed_addr constant [32 x i8] c" %k = getelementptr inbounds [\00" -@.str8844 = private unnamed_addr constant [37 x i8] c" x i32], ptr @L_kind, i32 0, i32 %e\0A\00" -@.str8845 = private unnamed_addr constant [23 x i8] c" store i32 0, ptr %k\0A\00" -@.str8846 = private unnamed_addr constant [33 x i8] c" %ow = getelementptr inbounds [\00" -@.str8847 = private unnamed_addr constant [42 x i8] c" x i32], ptr @L_owner_arr, i32 0, i32 %e\0A\00" -@.str8848 = private unnamed_addr constant [25 x i8] c" store i32 -1, ptr %ow\0A\00" -@.str8849 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" -@.str8850 = private unnamed_addr constant [32 x i8] c"define i32 @L_alloc() {\0Aentry:\0A\00" -@.str8851 = private unnamed_addr constant [32 x i8] c" %fn = load i32, ptr @L_freen\0A\00" -@.str8852 = private unnamed_addr constant [30 x i8] c" %has = icmp sgt i32 %fn, 0\0A\00" -@.str8853 = private unnamed_addr constant [42 x i8] c" br i1 %has, label %reuse, label %fresh\0A\00" -@.str8854 = private unnamed_addr constant [8 x i8] c"reuse:\0A\00" -@.str8855 = private unnamed_addr constant [25 x i8] c" %fn1 = sub i32 %fn, 1\0A\00" -@.str8856 = private unnamed_addr constant [32 x i8] c" store i32 %fn1, ptr @L_freen\0A\00" -@.str8857 = private unnamed_addr constant [33 x i8] c" %fp = getelementptr inbounds [\00" -@.str8858 = private unnamed_addr constant [43 x i8] c" x i32], ptr @L_freelist, i32 0, i32 %fn1\0A\00" -@.str8859 = private unnamed_addr constant [27 x i8] c" %re = load i32, ptr %fp\0A\00" -@.str8860 = private unnamed_addr constant [18 x i8] c" br label %done\0A\00" -@.str8861 = private unnamed_addr constant [8 x i8] c"fresh:\0A\00" -@.str8862 = private unnamed_addr constant [31 x i8] c" %ec = load i32, ptr @L_entc\0A\00" -@.str8863 = private unnamed_addr constant [25 x i8] c" %ec1 = add i32 %ec, 1\0A\00" -@.str8864 = private unnamed_addr constant [31 x i8] c" store i32 %ec1, ptr @L_entc\0A\00" +@.str8822 = private unnamed_addr constant [34 x i8] c"@L_freen = internal global i32 0\0A\00" +@.str8823 = private unnamed_addr constant [33 x i8] c"@L_role = internal global i32 1\0A\00" +@.str8824 = private unnamed_addr constant [36 x i8] c"@L_localid = internal global i32 0\0A\00" +@.str8825 = private unnamed_addr constant [33 x i8] c"@L_owner_arr = internal global [\00" +@.str8826 = private unnamed_addr constant [25 x i8] c" x i32] zeroinitializer\0A\00" +@.str8827 = private unnamed_addr constant [4 x i8] c"@S_\00" +@.str8828 = private unnamed_addr constant [21 x i8] c" = internal global [\00" +@.str8829 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" +@.str8830 = private unnamed_addr constant [19 x i8] c"] zeroinitializer\0A\00" +@.str8831 = private unnamed_addr constant [4 x i8] c"@H_\00" +@.str8832 = private unnamed_addr constant [21 x i8] c" = internal global [\00" +@.str8833 = private unnamed_addr constant [24 x i8] c" x i8] zeroinitializer\0A\00" +@.str8834 = private unnamed_addr constant [5 x i8] c"@ME_\00" +@.str8835 = private unnamed_addr constant [26 x i8] c" = internal global i32 1\0A\00" +@.str8836 = private unnamed_addr constant [5 x i8] c"@HE_\00" +@.str8837 = private unnamed_addr constant [26 x i8] c" = internal global i32 1\0A\00" +@.str8838 = private unnamed_addr constant [5 x i8] c"@LE_\00" +@.str8839 = private unnamed_addr constant [26 x i8] c" = internal global i32 1\0A\00" +@.str8840 = private unnamed_addr constant [39 x i8] c"define void @L_reset(i32 %e) {\0Aentry:\0A\00" +@.str8841 = private unnamed_addr constant [3 x i8] c"%h\00" +@.str8842 = private unnamed_addr constant [3 x i8] c" \00" +@.str8843 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str8844 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" +@.str8845 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %e\0A\00" +@.str8846 = private unnamed_addr constant [19 x i8] c" store i8 0, ptr \00" +@.str8847 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8848 = private unnamed_addr constant [32 x i8] c" %k = getelementptr inbounds [\00" +@.str8849 = private unnamed_addr constant [37 x i8] c" x i32], ptr @L_kind, i32 0, i32 %e\0A\00" +@.str8850 = private unnamed_addr constant [23 x i8] c" store i32 0, ptr %k\0A\00" +@.str8851 = private unnamed_addr constant [33 x i8] c" %ow = getelementptr inbounds [\00" +@.str8852 = private unnamed_addr constant [42 x i8] c" x i32], ptr @L_owner_arr, i32 0, i32 %e\0A\00" +@.str8853 = private unnamed_addr constant [25 x i8] c" store i32 -1, ptr %ow\0A\00" +@.str8854 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" +@.str8855 = private unnamed_addr constant [32 x i8] c"define i32 @L_alloc() {\0Aentry:\0A\00" +@.str8856 = private unnamed_addr constant [32 x i8] c" %fn = load i32, ptr @L_freen\0A\00" +@.str8857 = private unnamed_addr constant [30 x i8] c" %has = icmp sgt i32 %fn, 0\0A\00" +@.str8858 = private unnamed_addr constant [42 x i8] c" br i1 %has, label %reuse, label %fresh\0A\00" +@.str8859 = private unnamed_addr constant [8 x i8] c"reuse:\0A\00" +@.str8860 = private unnamed_addr constant [25 x i8] c" %fn1 = sub i32 %fn, 1\0A\00" +@.str8861 = private unnamed_addr constant [32 x i8] c" store i32 %fn1, ptr @L_freen\0A\00" +@.str8862 = private unnamed_addr constant [33 x i8] c" %fp = getelementptr inbounds [\00" +@.str8863 = private unnamed_addr constant [43 x i8] c" x i32], ptr @L_freelist, i32 0, i32 %fn1\0A\00" +@.str8864 = private unnamed_addr constant [27 x i8] c" %re = load i32, ptr %fp\0A\00" @.str8865 = private unnamed_addr constant [18 x i8] c" br label %done\0A\00" -@.str8866 = private unnamed_addr constant [7 x i8] c"done:\0A\00" -@.str8867 = private unnamed_addr constant [49 x i8] c" %e = phi i32 [ %re, %reuse ], [ %ec, %fresh ]\0A\00" -@.str8868 = private unnamed_addr constant [30 x i8] c" call void @L_reset(i32 %e)\0A\00" -@.str8869 = private unnamed_addr constant [33 x i8] c" %ap = getelementptr inbounds [\00" -@.str8870 = private unnamed_addr constant [38 x i8] c" x i32], ptr @L_alive, i32 0, i32 %e\0A\00" -@.str8871 = private unnamed_addr constant [24 x i8] c" store i32 1, ptr %ap\0A\00" -@.str8872 = private unnamed_addr constant [17 x i8] c" ret i32 %e\0A}\0A\0A\00" -@.str8873 = private unnamed_addr constant [45 x i8] c"define void @L_free_entity(i32 %e) {\0Aentry:\0A\00" +@.str8866 = private unnamed_addr constant [8 x i8] c"fresh:\0A\00" +@.str8867 = private unnamed_addr constant [31 x i8] c" %ec = load i32, ptr @L_entc\0A\00" +@.str8868 = private unnamed_addr constant [25 x i8] c" %ec1 = add i32 %ec, 1\0A\00" +@.str8869 = private unnamed_addr constant [31 x i8] c" store i32 %ec1, ptr @L_entc\0A\00" +@.str8870 = private unnamed_addr constant [18 x i8] c" br label %done\0A\00" +@.str8871 = private unnamed_addr constant [7 x i8] c"done:\0A\00" +@.str8872 = private unnamed_addr constant [49 x i8] c" %e = phi i32 [ %re, %reuse ], [ %ec, %fresh ]\0A\00" +@.str8873 = private unnamed_addr constant [30 x i8] c" call void @L_reset(i32 %e)\0A\00" @.str8874 = private unnamed_addr constant [33 x i8] c" %ap = getelementptr inbounds [\00" @.str8875 = private unnamed_addr constant [38 x i8] c" x i32], ptr @L_alive, i32 0, i32 %e\0A\00" -@.str8876 = private unnamed_addr constant [24 x i8] c" store i32 0, ptr %ap\0A\00" -@.str8877 = private unnamed_addr constant [30 x i8] c" call void @L_reset(i32 %e)\0A\00" -@.str8878 = private unnamed_addr constant [32 x i8] c" %fn = load i32, ptr @L_freen\0A\00" -@.str8879 = private unnamed_addr constant [33 x i8] c" %fp = getelementptr inbounds [\00" -@.str8880 = private unnamed_addr constant [42 x i8] c" x i32], ptr @L_freelist, i32 0, i32 %fn\0A\00" -@.str8881 = private unnamed_addr constant [25 x i8] c" store i32 %e, ptr %fp\0A\00" -@.str8882 = private unnamed_addr constant [25 x i8] c" %fn1 = add i32 %fn, 1\0A\00" -@.str8883 = private unnamed_addr constant [32 x i8] c" store i32 %fn1, ptr @L_freen\0A\00" -@.str8884 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" -@.str8885 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str8886 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str8887 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8888 = private unnamed_addr constant [6 x i8] c"qcond\00" -@.str8889 = private unnamed_addr constant [6 x i8] c"qbody\00" -@.str8890 = private unnamed_addr constant [6 x i8] c"qnext\00" -@.str8891 = private unnamed_addr constant [5 x i8] c"qend\00" -@.str8892 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8893 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8894 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8895 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8896 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_entc\00" -@.str8897 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str8898 = private unnamed_addr constant [3 x i8] c", \00" -@.str8899 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str8900 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8901 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8902 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8903 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8904 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8905 = private unnamed_addr constant [3 x i8] c" \00" -@.str8906 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str8907 = private unnamed_addr constant [35 x i8] c" x i32], ptr @L_alive, i32 0, i32 \00" -@.str8908 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8876 = private unnamed_addr constant [24 x i8] c" store i32 1, ptr %ap\0A\00" +@.str8877 = private unnamed_addr constant [17 x i8] c" ret i32 %e\0A}\0A\0A\00" +@.str8878 = private unnamed_addr constant [45 x i8] c"define void @L_free_entity(i32 %e) {\0Aentry:\0A\00" +@.str8879 = private unnamed_addr constant [33 x i8] c" %ap = getelementptr inbounds [\00" +@.str8880 = private unnamed_addr constant [38 x i8] c" x i32], ptr @L_alive, i32 0, i32 %e\0A\00" +@.str8881 = private unnamed_addr constant [24 x i8] c" store i32 0, ptr %ap\0A\00" +@.str8882 = private unnamed_addr constant [30 x i8] c" call void @L_reset(i32 %e)\0A\00" +@.str8883 = private unnamed_addr constant [32 x i8] c" %fn = load i32, ptr @L_freen\0A\00" +@.str8884 = private unnamed_addr constant [33 x i8] c" %fp = getelementptr inbounds [\00" +@.str8885 = private unnamed_addr constant [42 x i8] c" x i32], ptr @L_freelist, i32 0, i32 %fn\0A\00" +@.str8886 = private unnamed_addr constant [25 x i8] c" store i32 %e, ptr %fp\0A\00" +@.str8887 = private unnamed_addr constant [25 x i8] c" %fn1 = add i32 %fn, 1\0A\00" +@.str8888 = private unnamed_addr constant [32 x i8] c" store i32 %fn1, ptr @L_freen\0A\00" +@.str8889 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" +@.str8890 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str8891 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str8892 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8893 = private unnamed_addr constant [6 x i8] c"qcond\00" +@.str8894 = private unnamed_addr constant [6 x i8] c"qbody\00" +@.str8895 = private unnamed_addr constant [6 x i8] c"qnext\00" +@.str8896 = private unnamed_addr constant [5 x i8] c"qend\00" +@.str8897 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str8898 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8899 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8900 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str8901 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_entc\00" +@.str8902 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str8903 = private unnamed_addr constant [3 x i8] c", \00" +@.str8904 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str8905 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8906 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8907 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8908 = private unnamed_addr constant [3 x i8] c":\0A\00" @.str8909 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8910 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str8911 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8912 = private unnamed_addr constant [3 x i8] c"qa\00" -@.str8913 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str8914 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8915 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8916 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8917 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8918 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8919 = private unnamed_addr constant [3 x i8] c" \00" -@.str8920 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str8921 = private unnamed_addr constant [34 x i8] c" x i32], ptr @L_kind, i32 0, i32 \00" -@.str8922 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8923 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8924 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str8925 = private unnamed_addr constant [3 x i8] c", \00" -@.str8926 = private unnamed_addr constant [19 x i8] c"load i32, ptr @ME_\00" -@.str8927 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str8928 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8929 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str8910 = private unnamed_addr constant [3 x i8] c" \00" +@.str8911 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str8912 = private unnamed_addr constant [35 x i8] c" x i32], ptr @L_alive, i32 0, i32 \00" +@.str8913 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8914 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str8915 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str8916 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8917 = private unnamed_addr constant [3 x i8] c"qa\00" +@.str8918 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str8919 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8920 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8921 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8922 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8923 = private unnamed_addr constant [2 x i8] c"0\00" +@.str8924 = private unnamed_addr constant [3 x i8] c" \00" +@.str8925 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str8926 = private unnamed_addr constant [34 x i8] c" x i32], ptr @L_kind, i32 0, i32 \00" +@.str8927 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8928 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str8929 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" @.str8930 = private unnamed_addr constant [3 x i8] c", \00" -@.str8931 = private unnamed_addr constant [3 x i8] c" \00" -@.str8932 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str8933 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" -@.str8934 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str8935 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8936 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" -@.str8937 = private unnamed_addr constant [12 x i8] c"icmp ne i8 \00" -@.str8938 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8939 = private unnamed_addr constant [3 x i8] c"qt\00" -@.str8940 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str8941 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8942 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8943 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8944 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8945 = private unnamed_addr constant [3 x i8] c" \00" -@.str8946 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str8947 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" -@.str8948 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" -@.str8949 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str8950 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8951 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str8952 = private unnamed_addr constant [13 x i8] c" store ptr \00" -@.str8953 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str8954 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8955 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str8956 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str8957 = private unnamed_addr constant [3 x i8] c"qw\00" -@.str8958 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str8959 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8960 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str8961 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8962 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8963 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8964 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8965 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8966 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str8967 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str8968 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str8969 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str8970 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str8971 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8972 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str8973 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str8974 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str8975 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8931 = private unnamed_addr constant [19 x i8] c"load i32, ptr @ME_\00" +@.str8932 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str8933 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8934 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str8935 = private unnamed_addr constant [3 x i8] c", \00" +@.str8936 = private unnamed_addr constant [3 x i8] c" \00" +@.str8937 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str8938 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" +@.str8939 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str8940 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8941 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" +@.str8942 = private unnamed_addr constant [12 x i8] c"icmp ne i8 \00" +@.str8943 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8944 = private unnamed_addr constant [3 x i8] c"qt\00" +@.str8945 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str8946 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8947 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8948 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8949 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8950 = private unnamed_addr constant [3 x i8] c" \00" +@.str8951 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str8952 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" +@.str8953 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" +@.str8954 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str8955 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8956 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str8957 = private unnamed_addr constant [13 x i8] c" store ptr \00" +@.str8958 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8959 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8960 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str8961 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str8962 = private unnamed_addr constant [3 x i8] c"qw\00" +@.str8963 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str8964 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8965 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str8966 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8967 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8968 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str8969 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8970 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8971 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str8972 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str8973 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str8974 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str8975 = private unnamed_addr constant [13 x i8] c" br label %\00" @.str8976 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8977 = private unnamed_addr constant [25 x i8] c"spawn: unknown property \00" -@.str8978 = private unnamed_addr constant [3 x i8] c" \00" -@.str8979 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str8980 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" -@.str8981 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str8982 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8983 = private unnamed_addr constant [19 x i8] c" store i8 1, ptr \00" -@.str8984 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8985 = private unnamed_addr constant [3 x i8] c" \00" -@.str8986 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str8987 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" -@.str8988 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" -@.str8989 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str8990 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8991 = private unnamed_addr constant [3 x i8] c" \00" -@.str8992 = private unnamed_addr constant [32 x i8] c" = getelementptr inbounds %Cmp_\00" -@.str8993 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8977 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str8978 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str8979 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str8980 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8981 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8982 = private unnamed_addr constant [25 x i8] c"spawn: unknown property \00" +@.str8983 = private unnamed_addr constant [3 x i8] c" \00" +@.str8984 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str8985 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" +@.str8986 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str8987 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8988 = private unnamed_addr constant [19 x i8] c" store i8 1, ptr \00" +@.str8989 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str8990 = private unnamed_addr constant [3 x i8] c" \00" +@.str8991 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str8992 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" +@.str8993 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" @.str8994 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" @.str8995 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str8996 = private unnamed_addr constant [2 x i8] c"0\00" -@.str8997 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str8998 = private unnamed_addr constant [5 x i8] c"null\00" -@.str8999 = private unnamed_addr constant [9 x i8] c" store \00" -@.str9000 = private unnamed_addr constant [2 x i8] c" \00" -@.str9001 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9002 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9003 = private unnamed_addr constant [3 x i8] c" \00" -@.str9004 = private unnamed_addr constant [32 x i8] c" = getelementptr inbounds %Cmp_\00" -@.str9005 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9006 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str8996 = private unnamed_addr constant [3 x i8] c" \00" +@.str8997 = private unnamed_addr constant [32 x i8] c" = getelementptr inbounds %Cmp_\00" +@.str8998 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str8999 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str9000 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9001 = private unnamed_addr constant [2 x i8] c"0\00" +@.str9002 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str9003 = private unnamed_addr constant [5 x i8] c"null\00" +@.str9004 = private unnamed_addr constant [9 x i8] c" store \00" +@.str9005 = private unnamed_addr constant [2 x i8] c" \00" +@.str9006 = private unnamed_addr constant [7 x i8] c", ptr \00" @.str9007 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9008 = private unnamed_addr constant [9 x i8] c" store \00" -@.str9009 = private unnamed_addr constant [2 x i8] c" \00" +@.str9008 = private unnamed_addr constant [3 x i8] c" \00" +@.str9009 = private unnamed_addr constant [32 x i8] c" = getelementptr inbounds %Cmp_\00" @.str9010 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9011 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9012 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str9013 = private unnamed_addr constant [13 x i8] c" store ptr \00" -@.str9014 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9015 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9016 = private unnamed_addr constant [6 x i8] c"prop_\00" -@.str9017 = private unnamed_addr constant [8 x i8] c"_attach\00" -@.str9018 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" -@.str9019 = private unnamed_addr constant [6 x i8] c"(i32 \00" -@.str9020 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str9021 = private unnamed_addr constant [3 x i8] c" \00" -@.str9022 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9023 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" -@.str9024 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" -@.str9025 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str9026 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9027 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str9028 = private unnamed_addr constant [13 x i8] c" store ptr \00" -@.str9029 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9030 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9031 = private unnamed_addr constant [8 x i8] c"prefab \00" -@.str9032 = private unnamed_addr constant [45 x i8] c": the chain of prefabs never reaches a model\00" -@.str9033 = private unnamed_addr constant [20 x i8] c"call i32 @L_alloc()\00" -@.str9034 = private unnamed_addr constant [8 x i8] c"prefab \00" -@.str9035 = private unnamed_addr constant [17 x i8] c": unknown model \00" -@.str9036 = private unnamed_addr constant [3 x i8] c" \00" -@.str9037 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9038 = private unnamed_addr constant [34 x i8] c" x i32], ptr @L_kind, i32 0, i32 \00" -@.str9039 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9040 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str9041 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9042 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9043 = private unnamed_addr constant [7 x i8] c"model_\00" -@.str9044 = private unnamed_addr constant [7 x i8] c"_spawn\00" -@.str9045 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" -@.str9046 = private unnamed_addr constant [6 x i8] c"(i32 \00" -@.str9047 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str9048 = private unnamed_addr constant [3 x i8] c" \00" -@.str9049 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9050 = private unnamed_addr constant [34 x i8] c" x i32], ptr @L_kind, i32 0, i32 \00" -@.str9051 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9052 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str9053 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str9054 = private unnamed_addr constant [3 x i8] c", \00" -@.str9055 = private unnamed_addr constant [3 x i8] c"dh\00" -@.str9056 = private unnamed_addr constant [4 x i8] c"dhn\00" -@.str9057 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str9058 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9059 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9060 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9061 = private unnamed_addr constant [27 x i8] c":\0A call void @on_despawn_\00" -@.str9062 = private unnamed_addr constant [6 x i8] c"(i32 \00" -@.str9063 = private unnamed_addr constant [10 x i8] c", i32 0)\0A\00" -@.str9064 = private unnamed_addr constant [7 x i8] c"model_\00" -@.str9065 = private unnamed_addr constant [9 x i8] c"_despawn\00" -@.str9066 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" +@.str9011 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str9012 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9013 = private unnamed_addr constant [9 x i8] c" store \00" +@.str9014 = private unnamed_addr constant [2 x i8] c" \00" +@.str9015 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str9016 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9017 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str9018 = private unnamed_addr constant [13 x i8] c" store ptr \00" +@.str9019 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str9020 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9021 = private unnamed_addr constant [6 x i8] c"prop_\00" +@.str9022 = private unnamed_addr constant [8 x i8] c"_attach\00" +@.str9023 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" +@.str9024 = private unnamed_addr constant [6 x i8] c"(i32 \00" +@.str9025 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str9026 = private unnamed_addr constant [3 x i8] c" \00" +@.str9027 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9028 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" +@.str9029 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" +@.str9030 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str9031 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9032 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str9033 = private unnamed_addr constant [13 x i8] c" store ptr \00" +@.str9034 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str9035 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9036 = private unnamed_addr constant [8 x i8] c"prefab \00" +@.str9037 = private unnamed_addr constant [45 x i8] c": the chain of prefabs never reaches a model\00" +@.str9038 = private unnamed_addr constant [20 x i8] c"call i32 @L_alloc()\00" +@.str9039 = private unnamed_addr constant [8 x i8] c"prefab \00" +@.str9040 = private unnamed_addr constant [17 x i8] c": unknown model \00" +@.str9041 = private unnamed_addr constant [3 x i8] c" \00" +@.str9042 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9043 = private unnamed_addr constant [34 x i8] c" x i32], ptr @L_kind, i32 0, i32 \00" +@.str9044 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9045 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str9046 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str9047 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9048 = private unnamed_addr constant [7 x i8] c"model_\00" +@.str9049 = private unnamed_addr constant [7 x i8] c"_spawn\00" +@.str9050 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" +@.str9051 = private unnamed_addr constant [6 x i8] c"(i32 \00" +@.str9052 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str9053 = private unnamed_addr constant [3 x i8] c" \00" +@.str9054 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9055 = private unnamed_addr constant [34 x i8] c" x i32], ptr @L_kind, i32 0, i32 \00" +@.str9056 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9057 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str9058 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str9059 = private unnamed_addr constant [3 x i8] c", \00" +@.str9060 = private unnamed_addr constant [3 x i8] c"dh\00" +@.str9061 = private unnamed_addr constant [4 x i8] c"dhn\00" +@.str9062 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str9063 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9064 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9065 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9066 = private unnamed_addr constant [27 x i8] c":\0A call void @on_despawn_\00" @.str9067 = private unnamed_addr constant [6 x i8] c"(i32 \00" @.str9068 = private unnamed_addr constant [10 x i8] c", i32 0)\0A\00" -@.str9069 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str9070 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9071 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9072 = private unnamed_addr constant [37 x i8] c" call void @ludic_sweep_entity(i32 \00" -@.str9073 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str9074 = private unnamed_addr constant [32 x i8] c" call void @L_free_entity(i32 \00" -@.str9075 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str9076 = private unnamed_addr constant [3 x i8] c" \00" -@.str9077 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9078 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" -@.str9079 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str9080 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9081 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" -@.str9082 = private unnamed_addr constant [12 x i8] c"icmp eq i8 \00" -@.str9083 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str9084 = private unnamed_addr constant [7 x i8] c"attach\00" -@.str9085 = private unnamed_addr constant [8 x i8] c"attdone\00" -@.str9086 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str9087 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9088 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9089 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9090 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9091 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str9092 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9093 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9094 = private unnamed_addr constant [3 x i8] c" \00" -@.str9095 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9096 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" -@.str9097 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str9098 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9099 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" -@.str9100 = private unnamed_addr constant [12 x i8] c"icmp ne i8 \00" -@.str9101 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str9102 = private unnamed_addr constant [7 x i8] c"detach\00" -@.str9103 = private unnamed_addr constant [8 x i8] c"detdone\00" -@.str9104 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str9105 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9106 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9107 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9108 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9109 = private unnamed_addr constant [19 x i8] c" store i8 0, ptr \00" -@.str9110 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9111 = private unnamed_addr constant [3 x i8] c" \00" -@.str9112 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9113 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" -@.str9114 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" -@.str9115 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str9116 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9117 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str9118 = private unnamed_addr constant [13 x i8] c" store ptr \00" -@.str9119 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9120 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9121 = private unnamed_addr constant [6 x i8] c"prop_\00" -@.str9122 = private unnamed_addr constant [8 x i8] c"_detach\00" -@.str9123 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" -@.str9124 = private unnamed_addr constant [6 x i8] c"(i32 \00" -@.str9125 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str9126 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str9127 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9128 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9129 = private unnamed_addr constant [2 x i8] c"0\00" -@.str9130 = private unnamed_addr constant [2 x i8] c"1\00" -@.str9131 = private unnamed_addr constant [7 x i8] c"system\00" -@.str9132 = private unnamed_addr constant [6 x i8] c"layer\00" -@.str9133 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str9134 = private unnamed_addr constant [11 x i8] c", ptr @LE_\00" -@.str9135 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9136 = private unnamed_addr constant [7 x i8] c"layer_\00" -@.str9137 = private unnamed_addr constant [6 x i8] c"_hide\00" -@.str9138 = private unnamed_addr constant [7 x i8] c"layer_\00" -@.str9139 = private unnamed_addr constant [6 x i8] c"_show\00" -@.str9140 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" -@.str9141 = private unnamed_addr constant [4 x i8] c"()\0A\00" -@.str9142 = private unnamed_addr constant [3 x i8] c" \00" -@.str9143 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9144 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" -@.str9145 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str9146 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9147 = private unnamed_addr constant [12 x i8] c" store i8 \00" -@.str9148 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9149 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9150 = private unnamed_addr constant [3 x i8] c" \00" -@.str9151 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9152 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" -@.str9153 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" -@.str9154 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str9155 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9156 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str9157 = private unnamed_addr constant [13 x i8] c" store ptr \00" -@.str9158 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9159 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9160 = private unnamed_addr constant [6 x i8] c"prop_\00" -@.str9161 = private unnamed_addr constant [9 x i8] c"_disable\00" -@.str9162 = private unnamed_addr constant [6 x i8] c"prop_\00" -@.str9163 = private unnamed_addr constant [8 x i8] c"_enable\00" -@.str9164 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" -@.str9165 = private unnamed_addr constant [6 x i8] c"(i32 \00" -@.str9166 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str9167 = private unnamed_addr constant [5 x i8] c"@HE_\00" -@.str9168 = private unnamed_addr constant [5 x i8] c"@ME_\00" -@.str9169 = private unnamed_addr constant [5 x i8] c"@HE_\00" -@.str9170 = private unnamed_addr constant [2 x i8] c"_\00" -@.str9171 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str9172 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9173 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9174 = private unnamed_addr constant [5 x i8] c"void\00" -@.str9175 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" -@.str9176 = private unnamed_addr constant [17 x i8] c"ret:\0A ret void\0A\00" -@.str9177 = private unnamed_addr constant [18 x i8] c"define void @sys_\00" -@.str9178 = private unnamed_addr constant [13 x i8] c"() {\0Aentry:\0A\00" -@.str9179 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" -@.str9180 = private unnamed_addr constant [19 x i8] c"load i32, ptr @HE_\00" -@.str9181 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str9182 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str9183 = private unnamed_addr constant [19 x i8] c"load i32, ptr @LE_\00" -@.str9184 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str9185 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str9186 = private unnamed_addr constant [8 x i8] c"and i1 \00" -@.str9187 = private unnamed_addr constant [3 x i8] c", \00" -@.str9188 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_role\00" -@.str9189 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str9190 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str9069 = private unnamed_addr constant [7 x i8] c"model_\00" +@.str9070 = private unnamed_addr constant [9 x i8] c"_despawn\00" +@.str9071 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" +@.str9072 = private unnamed_addr constant [6 x i8] c"(i32 \00" +@.str9073 = private unnamed_addr constant [10 x i8] c", i32 0)\0A\00" +@.str9074 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str9075 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9076 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9077 = private unnamed_addr constant [37 x i8] c" call void @ludic_sweep_entity(i32 \00" +@.str9078 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str9079 = private unnamed_addr constant [32 x i8] c" call void @L_free_entity(i32 \00" +@.str9080 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str9081 = private unnamed_addr constant [3 x i8] c" \00" +@.str9082 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9083 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" +@.str9084 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str9085 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9086 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" +@.str9087 = private unnamed_addr constant [12 x i8] c"icmp eq i8 \00" +@.str9088 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str9089 = private unnamed_addr constant [7 x i8] c"attach\00" +@.str9090 = private unnamed_addr constant [8 x i8] c"attdone\00" +@.str9091 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str9092 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9093 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9094 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9095 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9096 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str9097 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9098 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9099 = private unnamed_addr constant [3 x i8] c" \00" +@.str9100 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9101 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" +@.str9102 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str9103 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9104 = private unnamed_addr constant [14 x i8] c"load i8, ptr \00" +@.str9105 = private unnamed_addr constant [12 x i8] c"icmp ne i8 \00" +@.str9106 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str9107 = private unnamed_addr constant [7 x i8] c"detach\00" +@.str9108 = private unnamed_addr constant [8 x i8] c"detdone\00" +@.str9109 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str9110 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9111 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9112 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9113 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9114 = private unnamed_addr constant [19 x i8] c" store i8 0, ptr \00" +@.str9115 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9116 = private unnamed_addr constant [3 x i8] c" \00" +@.str9117 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9118 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" +@.str9119 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" +@.str9120 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str9121 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9122 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str9123 = private unnamed_addr constant [13 x i8] c" store ptr \00" +@.str9124 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str9125 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9126 = private unnamed_addr constant [6 x i8] c"prop_\00" +@.str9127 = private unnamed_addr constant [8 x i8] c"_detach\00" +@.str9128 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" +@.str9129 = private unnamed_addr constant [6 x i8] c"(i32 \00" +@.str9130 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str9131 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str9132 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9133 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9134 = private unnamed_addr constant [2 x i8] c"0\00" +@.str9135 = private unnamed_addr constant [2 x i8] c"1\00" +@.str9136 = private unnamed_addr constant [7 x i8] c"system\00" +@.str9137 = private unnamed_addr constant [6 x i8] c"layer\00" +@.str9138 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str9139 = private unnamed_addr constant [11 x i8] c", ptr @LE_\00" +@.str9140 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9141 = private unnamed_addr constant [7 x i8] c"layer_\00" +@.str9142 = private unnamed_addr constant [6 x i8] c"_hide\00" +@.str9143 = private unnamed_addr constant [7 x i8] c"layer_\00" +@.str9144 = private unnamed_addr constant [6 x i8] c"_show\00" +@.str9145 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" +@.str9146 = private unnamed_addr constant [4 x i8] c"()\0A\00" +@.str9147 = private unnamed_addr constant [3 x i8] c" \00" +@.str9148 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9149 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" +@.str9150 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str9151 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9152 = private unnamed_addr constant [12 x i8] c" store i8 \00" +@.str9153 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str9154 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9155 = private unnamed_addr constant [3 x i8] c" \00" +@.str9156 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9157 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" +@.str9158 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" +@.str9159 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str9160 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9161 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str9162 = private unnamed_addr constant [13 x i8] c" store ptr \00" +@.str9163 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str9164 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9165 = private unnamed_addr constant [6 x i8] c"prop_\00" +@.str9166 = private unnamed_addr constant [9 x i8] c"_disable\00" +@.str9167 = private unnamed_addr constant [6 x i8] c"prop_\00" +@.str9168 = private unnamed_addr constant [8 x i8] c"_enable\00" +@.str9169 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" +@.str9170 = private unnamed_addr constant [6 x i8] c"(i32 \00" +@.str9171 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str9172 = private unnamed_addr constant [5 x i8] c"@HE_\00" +@.str9173 = private unnamed_addr constant [5 x i8] c"@ME_\00" +@.str9174 = private unnamed_addr constant [5 x i8] c"@HE_\00" +@.str9175 = private unnamed_addr constant [2 x i8] c"_\00" +@.str9176 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str9177 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str9178 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9179 = private unnamed_addr constant [5 x i8] c"void\00" +@.str9180 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" +@.str9181 = private unnamed_addr constant [17 x i8] c"ret:\0A ret void\0A\00" +@.str9182 = private unnamed_addr constant [18 x i8] c"define void @sys_\00" +@.str9183 = private unnamed_addr constant [13 x i8] c"() {\0Aentry:\0A\00" +@.str9184 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" +@.str9185 = private unnamed_addr constant [19 x i8] c"load i32, ptr @HE_\00" +@.str9186 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str9187 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str9188 = private unnamed_addr constant [19 x i8] c"load i32, ptr @LE_\00" +@.str9189 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str9190 = private unnamed_addr constant [4 x i8] c", 0\00" @.str9191 = private unnamed_addr constant [8 x i8] c"and i1 \00" @.str9192 = private unnamed_addr constant [3 x i8] c", \00" -@.str9193 = private unnamed_addr constant [5 x i8] c"hrun\00" -@.str9194 = private unnamed_addr constant [6 x i8] c"hskip\00" -@.str9195 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str9196 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9197 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9198 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9199 = private unnamed_addr constant [20 x i8] c":\0A call void @sys_\00" -@.str9200 = private unnamed_addr constant [4 x i8] c"()\0A\00" -@.str9201 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str9202 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9203 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9204 = private unnamed_addr constant [17 x i8] c" call void @fn_\00" +@.str9193 = private unnamed_addr constant [22 x i8] c"load i32, ptr @L_role\00" +@.str9194 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str9195 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str9196 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str9197 = private unnamed_addr constant [3 x i8] c", \00" +@.str9198 = private unnamed_addr constant [5 x i8] c"hrun\00" +@.str9199 = private unnamed_addr constant [6 x i8] c"hskip\00" +@.str9200 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str9201 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9202 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9203 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9204 = private unnamed_addr constant [20 x i8] c":\0A call void @sys_\00" @.str9205 = private unnamed_addr constant [4 x i8] c"()\0A\00" -@.str9206 = private unnamed_addr constant [7 x i8] c"Update\00" -@.str9207 = private unnamed_addr constant [11 x i8] c"esys_tween\00" -@.str9208 = private unnamed_addr constant [30 x i8] c" call void @fn_esys_tween()\0A\00" -@.str9209 = private unnamed_addr constant [29 x i8] c" call void @L_countdowns()\0A\00" -@.str9210 = private unnamed_addr constant [8 x i8] c"fx_tick\00" -@.str9211 = private unnamed_addr constant [27 x i8] c" call void @fn_fx_tick()\0A\00" -@.str9212 = private unnamed_addr constant [7 x i8] c"Render\00" -@.str9213 = private unnamed_addr constant [8 x i8] c"fx_draw\00" -@.str9214 = private unnamed_addr constant [27 x i8] c" call void @fn_fx_draw()\0A\00" -@.str9215 = private unnamed_addr constant [38 x i8] c"define void @L_countdowns() {\0Aentry:\0A\00" -@.str9216 = private unnamed_addr constant [53 x i8] c" %n = load i32, ptr @L_entc\0A br label %loop\0Aloop:\0A\00" -@.str9217 = private unnamed_addr constant [46 x i8] c" %i = phi i32 [ 0, %entry ], [ %i1, %next ]\0A\00" -@.str9218 = private unnamed_addr constant [73 x i8] c" %go = icmp slt i32 %i, %n\0A br i1 %go, label %body, label %done\0Abody:\0A\00" -@.str9219 = private unnamed_addr constant [33 x i8] c" %ap = getelementptr inbounds [\00" -@.str9220 = private unnamed_addr constant [38 x i8] c" x i32], ptr @L_alive, i32 0, i32 %i\0A\00" -@.str9221 = private unnamed_addr constant [96 x i8] c" %al = load i32, ptr %ap\0A %alive = icmp ne i32 %al, 0\0A br i1 %alive, label %c0, label %next\0A\00" -@.str9222 = private unnamed_addr constant [10 x i8] c"countdown\00" -@.str9223 = private unnamed_addr constant [2 x i8] c"c\00" -@.str9224 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9225 = private unnamed_addr constant [5 x i8] c" %h\00" -@.str9226 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9227 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" -@.str9228 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %i\0A\00" -@.str9229 = private unnamed_addr constant [6 x i8] c" %hv\00" -@.str9230 = private unnamed_addr constant [19 x i8] c" = load i8, ptr %h\00" -@.str9231 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9232 = private unnamed_addr constant [7 x i8] c" %has\00" -@.str9233 = private unnamed_addr constant [18 x i8] c" = icmp ne i8 %hv\00" -@.str9234 = private unnamed_addr constant [5 x i8] c", 0\0A\00" -@.str9235 = private unnamed_addr constant [13 x i8] c" br i1 %has\00" -@.str9236 = private unnamed_addr constant [11 x i8] c", label %t\00" -@.str9237 = private unnamed_addr constant [11 x i8] c", label %c\00" -@.str9238 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9239 = private unnamed_addr constant [2 x i8] c"t\00" -@.str9240 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9241 = private unnamed_addr constant [5 x i8] c" %s\00" -@.str9242 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9243 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" -@.str9244 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" -@.str9245 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %i\0A\00" -@.str9246 = private unnamed_addr constant [10 x i8] c"countdown\00" -@.str9247 = private unnamed_addr constant [2 x i8] c"_\00" -@.str9248 = private unnamed_addr constant [6 x i8] c" %fa\00" -@.str9249 = private unnamed_addr constant [32 x i8] c" = getelementptr inbounds %Cmp_\00" -@.str9250 = private unnamed_addr constant [9 x i8] c", ptr %s\00" -@.str9251 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str9252 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9253 = private unnamed_addr constant [6 x i8] c" %fv\00" -@.str9254 = private unnamed_addr constant [21 x i8] c" = load i32, ptr %fa\00" -@.str9255 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9256 = private unnamed_addr constant [6 x i8] c" %fp\00" -@.str9257 = private unnamed_addr constant [20 x i8] c" = icmp sgt i32 %fv\00" -@.str9258 = private unnamed_addr constant [5 x i8] c", 0\0A\00" -@.str9259 = private unnamed_addr constant [6 x i8] c" %fd\00" -@.str9260 = private unnamed_addr constant [15 x i8] c" = sub i32 %fv\00" -@.str9261 = private unnamed_addr constant [5 x i8] c", 1\0A\00" -@.str9262 = private unnamed_addr constant [6 x i8] c" %fn\00" -@.str9263 = private unnamed_addr constant [17 x i8] c" = select i1 %fp\00" -@.str9264 = private unnamed_addr constant [10 x i8] c", i32 %fd\00" -@.str9265 = private unnamed_addr constant [10 x i8] c", i32 %fv\00" -@.str9266 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9267 = private unnamed_addr constant [16 x i8] c" store i32 %fn\00" -@.str9268 = private unnamed_addr constant [10 x i8] c", ptr %fa\00" -@.str9269 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9270 = private unnamed_addr constant [14 x i8] c" br label %c\00" +@.str9206 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str9207 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9208 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9209 = private unnamed_addr constant [17 x i8] c" call void @fn_\00" +@.str9210 = private unnamed_addr constant [4 x i8] c"()\0A\00" +@.str9211 = private unnamed_addr constant [7 x i8] c"Update\00" +@.str9212 = private unnamed_addr constant [11 x i8] c"esys_tween\00" +@.str9213 = private unnamed_addr constant [30 x i8] c" call void @fn_esys_tween()\0A\00" +@.str9214 = private unnamed_addr constant [29 x i8] c" call void @L_countdowns()\0A\00" +@.str9215 = private unnamed_addr constant [8 x i8] c"fx_tick\00" +@.str9216 = private unnamed_addr constant [27 x i8] c" call void @fn_fx_tick()\0A\00" +@.str9217 = private unnamed_addr constant [7 x i8] c"Render\00" +@.str9218 = private unnamed_addr constant [8 x i8] c"fx_draw\00" +@.str9219 = private unnamed_addr constant [27 x i8] c" call void @fn_fx_draw()\0A\00" +@.str9220 = private unnamed_addr constant [38 x i8] c"define void @L_countdowns() {\0Aentry:\0A\00" +@.str9221 = private unnamed_addr constant [53 x i8] c" %n = load i32, ptr @L_entc\0A br label %loop\0Aloop:\0A\00" +@.str9222 = private unnamed_addr constant [46 x i8] c" %i = phi i32 [ 0, %entry ], [ %i1, %next ]\0A\00" +@.str9223 = private unnamed_addr constant [73 x i8] c" %go = icmp slt i32 %i, %n\0A br i1 %go, label %body, label %done\0Abody:\0A\00" +@.str9224 = private unnamed_addr constant [33 x i8] c" %ap = getelementptr inbounds [\00" +@.str9225 = private unnamed_addr constant [38 x i8] c" x i32], ptr @L_alive, i32 0, i32 %i\0A\00" +@.str9226 = private unnamed_addr constant [96 x i8] c" %al = load i32, ptr %ap\0A %alive = icmp ne i32 %al, 0\0A br i1 %alive, label %c0, label %next\0A\00" +@.str9227 = private unnamed_addr constant [10 x i8] c"countdown\00" +@.str9228 = private unnamed_addr constant [2 x i8] c"c\00" +@.str9229 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9230 = private unnamed_addr constant [5 x i8] c" %h\00" +@.str9231 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9232 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" +@.str9233 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %i\0A\00" +@.str9234 = private unnamed_addr constant [6 x i8] c" %hv\00" +@.str9235 = private unnamed_addr constant [19 x i8] c" = load i8, ptr %h\00" +@.str9236 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9237 = private unnamed_addr constant [7 x i8] c" %has\00" +@.str9238 = private unnamed_addr constant [18 x i8] c" = icmp ne i8 %hv\00" +@.str9239 = private unnamed_addr constant [5 x i8] c", 0\0A\00" +@.str9240 = private unnamed_addr constant [13 x i8] c" br i1 %has\00" +@.str9241 = private unnamed_addr constant [11 x i8] c", label %t\00" +@.str9242 = private unnamed_addr constant [11 x i8] c", label %c\00" +@.str9243 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9244 = private unnamed_addr constant [2 x i8] c"t\00" +@.str9245 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9246 = private unnamed_addr constant [5 x i8] c" %s\00" +@.str9247 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9248 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" +@.str9249 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" +@.str9250 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %i\0A\00" +@.str9251 = private unnamed_addr constant [10 x i8] c"countdown\00" +@.str9252 = private unnamed_addr constant [2 x i8] c"_\00" +@.str9253 = private unnamed_addr constant [6 x i8] c" %fa\00" +@.str9254 = private unnamed_addr constant [32 x i8] c" = getelementptr inbounds %Cmp_\00" +@.str9255 = private unnamed_addr constant [9 x i8] c", ptr %s\00" +@.str9256 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str9257 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9258 = private unnamed_addr constant [6 x i8] c" %fv\00" +@.str9259 = private unnamed_addr constant [21 x i8] c" = load i32, ptr %fa\00" +@.str9260 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9261 = private unnamed_addr constant [6 x i8] c" %fp\00" +@.str9262 = private unnamed_addr constant [20 x i8] c" = icmp sgt i32 %fv\00" +@.str9263 = private unnamed_addr constant [5 x i8] c", 0\0A\00" +@.str9264 = private unnamed_addr constant [6 x i8] c" %fd\00" +@.str9265 = private unnamed_addr constant [15 x i8] c" = sub i32 %fv\00" +@.str9266 = private unnamed_addr constant [5 x i8] c", 1\0A\00" +@.str9267 = private unnamed_addr constant [6 x i8] c" %fn\00" +@.str9268 = private unnamed_addr constant [17 x i8] c" = select i1 %fp\00" +@.str9269 = private unnamed_addr constant [10 x i8] c", i32 %fd\00" +@.str9270 = private unnamed_addr constant [10 x i8] c", i32 %fv\00" @.str9271 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9272 = private unnamed_addr constant [2 x i8] c"c\00" -@.str9273 = private unnamed_addr constant [20 x i8] c":\0A br label %next\0A\00" -@.str9274 = private unnamed_addr constant [66 x i8] c"next:\0A %i1 = add i32 %i, 1\0A br label %loop\0Adone:\0A ret void\0A}\0A\0A\00" -@.str9275 = private unnamed_addr constant [4 x i8] c"int\00" -@.str9276 = private unnamed_addr constant [11 x i8] c" ret i32 \00" -@.str9277 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9278 = private unnamed_addr constant [22 x i8] c"define i32 @L_prefab_\00" -@.str9279 = private unnamed_addr constant [13 x i8] c"() {\0Aentry:\0A\00" -@.str9280 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" -@.str9281 = private unnamed_addr constant [36 x i8] c"call i32 @lp_str_eq(ptr %name, ptr \00" -@.str9282 = private unnamed_addr constant [2 x i8] c")\00" -@.str9283 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str9284 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str9285 = private unnamed_addr constant [3 x i8] c"pf\00" -@.str9286 = private unnamed_addr constant [4 x i8] c"pfn\00" -@.str9287 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str9288 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9289 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9290 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9291 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9292 = private unnamed_addr constant [20 x i8] c"call i32 @L_prefab_\00" -@.str9293 = private unnamed_addr constant [3 x i8] c"()\00" -@.str9294 = private unnamed_addr constant [11 x i8] c" ret i32 \00" +@.str9272 = private unnamed_addr constant [16 x i8] c" store i32 %fn\00" +@.str9273 = private unnamed_addr constant [10 x i8] c", ptr %fa\00" +@.str9274 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9275 = private unnamed_addr constant [14 x i8] c" br label %c\00" +@.str9276 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9277 = private unnamed_addr constant [2 x i8] c"c\00" +@.str9278 = private unnamed_addr constant [20 x i8] c":\0A br label %next\0A\00" +@.str9279 = private unnamed_addr constant [66 x i8] c"next:\0A %i1 = add i32 %i, 1\0A br label %loop\0Adone:\0A ret void\0A}\0A\0A\00" +@.str9280 = private unnamed_addr constant [4 x i8] c"int\00" +@.str9281 = private unnamed_addr constant [11 x i8] c" ret i32 \00" +@.str9282 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9283 = private unnamed_addr constant [22 x i8] c"define i32 @L_prefab_\00" +@.str9284 = private unnamed_addr constant [13 x i8] c"() {\0Aentry:\0A\00" +@.str9285 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" +@.str9286 = private unnamed_addr constant [36 x i8] c"call i32 @lp_str_eq(ptr %name, ptr \00" +@.str9287 = private unnamed_addr constant [2 x i8] c")\00" +@.str9288 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str9289 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str9290 = private unnamed_addr constant [3 x i8] c"pf\00" +@.str9291 = private unnamed_addr constant [4 x i8] c"pfn\00" +@.str9292 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str9293 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9294 = private unnamed_addr constant [10 x i8] c", label %\00" @.str9295 = private unnamed_addr constant [2 x i8] c"\0A\00" @.str9296 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9297 = private unnamed_addr constant [14 x i8] c" ret i32 -1\0A\00" -@.str9298 = private unnamed_addr constant [48 x i8] c"define i32 @L_spawn_prefab(ptr %name) {\0Aentry:\0A\00" -@.str9299 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" -@.str9300 = private unnamed_addr constant [6 x i8] c"Input\00" -@.str9301 = private unnamed_addr constant [12 x i8] c"FixedUpdate\00" -@.str9302 = private unnamed_addr constant [7 x i8] c"Update\00" -@.str9303 = private unnamed_addr constant [11 x i8] c"LateUpdate\00" -@.str9304 = private unnamed_addr constant [7 x i8] c"Render\00" -@.str9305 = private unnamed_addr constant [6 x i8] c"Start\00" -@.str9306 = private unnamed_addr constant [7 x i8] c"OnQuit\00" -@.str9307 = private unnamed_addr constant [8 x i8] c"Overlay\00" -@.str9308 = private unnamed_addr constant [16 x i8] c"unknown phase '\00" -@.str9309 = private unnamed_addr constant [2 x i8] c"'\00" +@.str9297 = private unnamed_addr constant [20 x i8] c"call i32 @L_prefab_\00" +@.str9298 = private unnamed_addr constant [3 x i8] c"()\00" +@.str9299 = private unnamed_addr constant [11 x i8] c" ret i32 \00" +@.str9300 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9301 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9302 = private unnamed_addr constant [14 x i8] c" ret i32 -1\0A\00" +@.str9303 = private unnamed_addr constant [48 x i8] c"define i32 @L_spawn_prefab(ptr %name) {\0Aentry:\0A\00" +@.str9304 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" +@.str9305 = private unnamed_addr constant [6 x i8] c"Input\00" +@.str9306 = private unnamed_addr constant [12 x i8] c"FixedUpdate\00" +@.str9307 = private unnamed_addr constant [7 x i8] c"Update\00" +@.str9308 = private unnamed_addr constant [11 x i8] c"LateUpdate\00" +@.str9309 = private unnamed_addr constant [7 x i8] c"Render\00" @.str9310 = private unnamed_addr constant [6 x i8] c"Start\00" -@.str9311 = private unnamed_addr constant [6 x i8] c"Input\00" -@.str9312 = private unnamed_addr constant [12 x i8] c"FixedUpdate\00" -@.str9313 = private unnamed_addr constant [7 x i8] c"Update\00" -@.str9314 = private unnamed_addr constant [11 x i8] c"LateUpdate\00" -@.str9315 = private unnamed_addr constant [7 x i8] c"Render\00" -@.str9316 = private unnamed_addr constant [8 x i8] c"Overlay\00" -@.str9317 = private unnamed_addr constant [44 x i8] c"declare i32 @ludic_register_prop(ptr, i32)\0A\00" -@.str9318 = private unnamed_addr constant [46 x i8] c"declare i32 @ludic_register_system(ptr, i32)\0A\00" -@.str9319 = private unnamed_addr constant [39 x i8] c"declare i64 @ludic_get(i32, i32, i32)\0A\00" -@.str9320 = private unnamed_addr constant [45 x i8] c"declare void @ludic_set(i32, i32, i32, i64)\0A\00" -@.str9321 = private unnamed_addr constant [34 x i8] c"declare i32 @ludic_has(i32, i32)\0A\00" -@.str9322 = private unnamed_addr constant [42 x i8] c"declare void @ludic_attach_dyn(i32, i32)\0A\00" -@.str9323 = private unnamed_addr constant [42 x i8] c"declare void @ludic_detach_dyn(i32, i32)\0A\00" -@.str9324 = private unnamed_addr constant [33 x i8] c"declare i32 @ludic_prop_id(ptr)\0A\00" -@.str9325 = private unnamed_addr constant [39 x i8] c"declare i32 @ludic_field_id(i32, ptr)\0A\00" -@.str9326 = private unnamed_addr constant [35 x i8] c"declare i32 @ludic_entity_count()\0A\00" -@.str9327 = private unnamed_addr constant [30 x i8] c"declare i32 @ludic_kind(i32)\0A\00" -@.str9328 = private unnamed_addr constant [34 x i8] c"declare i32 @ludic_model_id(ptr)\0A\00" -@.str9329 = private unnamed_addr constant [31 x i8] c"declare i32 @ludic_spawn(i32)\0A\00" -@.str9330 = private unnamed_addr constant [41 x i8] c"declare i32 @ludic_query_next(i32, i32)\0A\00" -@.str9331 = private unnamed_addr constant [33 x i8] c"declare i32 @ludic_prop_count()\0A\00" -@.str9332 = private unnamed_addr constant [35 x i8] c"declare ptr @ludic_prop_name(i32)\0A\00" -@.str9333 = private unnamed_addr constant [37 x i8] c"declare i32 @ludic_field_count(i32)\0A\00" -@.str9334 = private unnamed_addr constant [41 x i8] c"declare ptr @ludic_field_name(i32, i32)\0A\00" -@.str9335 = private unnamed_addr constant [41 x i8] c"declare ptr @ludic_field_type(i32, i32)\0A\00" -@.str9336 = private unnamed_addr constant [42 x i8] c"define void @__ludic_mod_init() {\0Aentry:\0A\00" -@.str9337 = private unnamed_addr constant [12 x i8] c"module_init\00" -@.str9338 = private unnamed_addr constant [31 x i8] c" call void @fn_module_init()\0A\00" -@.str9339 = private unnamed_addr constant [43 x i8] c" call i32 @ludic_register_system(ptr @fn_\00" -@.str9340 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str9341 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str9342 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" -@.str9343 = private unnamed_addr constant [130 x i8] c"@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__ludic_mod_init, ptr null }]\0A\00" -@.str9344 = private unnamed_addr constant [22 x i8] c"@sysreg_fn = global [\00" -@.str9345 = private unnamed_addr constant [25 x i8] c" x ptr] zeroinitializer\0A\00" -@.str9346 = private unnamed_addr constant [25 x i8] c"@sysreg_phase = global [\00" -@.str9347 = private unnamed_addr constant [25 x i8] c" x i32] zeroinitializer\0A\00" -@.str9348 = private unnamed_addr constant [30 x i8] c"@sysreg_count = global i32 0\0A\00" -@.str9349 = private unnamed_addr constant [65 x i8] c"define i32 @ludic_register_system(ptr %fn, i32 %phase) {\0Aentry:\0A\00" -@.str9350 = private unnamed_addr constant [36 x i8] c" %n = load i32, ptr @sysreg_count\0A\00" -@.str9351 = private unnamed_addr constant [26 x i8] c" %ok = icmp slt i32 %n, \00" -@.str9352 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9353 = private unnamed_addr constant [38 x i8] c" br i1 %ok, label %add, label %drop\0A\00" -@.str9354 = private unnamed_addr constant [6 x i8] c"add:\0A\00" -@.str9355 = private unnamed_addr constant [33 x i8] c" %fp = getelementptr inbounds [\00" -@.str9356 = private unnamed_addr constant [40 x i8] c" x ptr], ptr @sysreg_fn, i32 0, i32 %n\0A\00" -@.str9357 = private unnamed_addr constant [26 x i8] c" store ptr %fn, ptr %fp\0A\00" -@.str9358 = private unnamed_addr constant [33 x i8] c" %pp = getelementptr inbounds [\00" -@.str9359 = private unnamed_addr constant [43 x i8] c" x i32], ptr @sysreg_phase, i32 0, i32 %n\0A\00" -@.str9360 = private unnamed_addr constant [29 x i8] c" store i32 %phase, ptr %pp\0A\00" -@.str9361 = private unnamed_addr constant [71 x i8] c" %n1 = add i32 %n, 1\0A store i32 %n1, ptr @sysreg_count\0A ret i32 %n\0A\00" -@.str9362 = private unnamed_addr constant [23 x i8] c"drop:\0A ret i32 -1\0A}\0A\0A\00" -@.str9363 = private unnamed_addr constant [4 x i8] c"dsp\00" -@.str9364 = private unnamed_addr constant [4 x i8] c"dsh\00" -@.str9365 = private unnamed_addr constant [4 x i8] c"dsb\00" -@.str9366 = private unnamed_addr constant [5 x i8] c"dsdo\00" -@.str9367 = private unnamed_addr constant [4 x i8] c"dsc\00" -@.str9368 = private unnamed_addr constant [4 x i8] c"dsn\00" -@.str9369 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str9370 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9371 = private unnamed_addr constant [15 x i8] c":\0A br label %\00" -@.str9372 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9373 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9374 = private unnamed_addr constant [3 x i8] c" \00" -@.str9375 = private unnamed_addr constant [18 x i8] c" = phi i32 [ 0, %\00" -@.str9376 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str9377 = private unnamed_addr constant [4 x i8] c", %\00" -@.str9378 = private unnamed_addr constant [4 x i8] c" ]\0A\00" -@.str9379 = private unnamed_addr constant [28 x i8] c"load i32, ptr @sysreg_count\00" -@.str9380 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str9381 = private unnamed_addr constant [3 x i8] c", \00" -@.str9382 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str9383 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9384 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9385 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9386 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9387 = private unnamed_addr constant [3 x i8] c" \00" -@.str9388 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9389 = private unnamed_addr constant [40 x i8] c" x i32], ptr @sysreg_phase, i32 0, i32 \00" +@.str9311 = private unnamed_addr constant [7 x i8] c"OnQuit\00" +@.str9312 = private unnamed_addr constant [8 x i8] c"Overlay\00" +@.str9313 = private unnamed_addr constant [16 x i8] c"unknown phase '\00" +@.str9314 = private unnamed_addr constant [2 x i8] c"'\00" +@.str9315 = private unnamed_addr constant [6 x i8] c"Start\00" +@.str9316 = private unnamed_addr constant [6 x i8] c"Input\00" +@.str9317 = private unnamed_addr constant [12 x i8] c"FixedUpdate\00" +@.str9318 = private unnamed_addr constant [7 x i8] c"Update\00" +@.str9319 = private unnamed_addr constant [11 x i8] c"LateUpdate\00" +@.str9320 = private unnamed_addr constant [7 x i8] c"Render\00" +@.str9321 = private unnamed_addr constant [8 x i8] c"Overlay\00" +@.str9322 = private unnamed_addr constant [44 x i8] c"declare i32 @ludic_register_prop(ptr, i32)\0A\00" +@.str9323 = private unnamed_addr constant [46 x i8] c"declare i32 @ludic_register_system(ptr, i32)\0A\00" +@.str9324 = private unnamed_addr constant [39 x i8] c"declare i64 @ludic_get(i32, i32, i32)\0A\00" +@.str9325 = private unnamed_addr constant [45 x i8] c"declare void @ludic_set(i32, i32, i32, i64)\0A\00" +@.str9326 = private unnamed_addr constant [34 x i8] c"declare i32 @ludic_has(i32, i32)\0A\00" +@.str9327 = private unnamed_addr constant [42 x i8] c"declare void @ludic_attach_dyn(i32, i32)\0A\00" +@.str9328 = private unnamed_addr constant [42 x i8] c"declare void @ludic_detach_dyn(i32, i32)\0A\00" +@.str9329 = private unnamed_addr constant [33 x i8] c"declare i32 @ludic_prop_id(ptr)\0A\00" +@.str9330 = private unnamed_addr constant [39 x i8] c"declare i32 @ludic_field_id(i32, ptr)\0A\00" +@.str9331 = private unnamed_addr constant [35 x i8] c"declare i32 @ludic_entity_count()\0A\00" +@.str9332 = private unnamed_addr constant [30 x i8] c"declare i32 @ludic_kind(i32)\0A\00" +@.str9333 = private unnamed_addr constant [34 x i8] c"declare i32 @ludic_model_id(ptr)\0A\00" +@.str9334 = private unnamed_addr constant [31 x i8] c"declare i32 @ludic_spawn(i32)\0A\00" +@.str9335 = private unnamed_addr constant [41 x i8] c"declare i32 @ludic_query_next(i32, i32)\0A\00" +@.str9336 = private unnamed_addr constant [33 x i8] c"declare i32 @ludic_prop_count()\0A\00" +@.str9337 = private unnamed_addr constant [35 x i8] c"declare ptr @ludic_prop_name(i32)\0A\00" +@.str9338 = private unnamed_addr constant [37 x i8] c"declare i32 @ludic_field_count(i32)\0A\00" +@.str9339 = private unnamed_addr constant [41 x i8] c"declare ptr @ludic_field_name(i32, i32)\0A\00" +@.str9340 = private unnamed_addr constant [41 x i8] c"declare ptr @ludic_field_type(i32, i32)\0A\00" +@.str9341 = private unnamed_addr constant [42 x i8] c"define void @__ludic_mod_init() {\0Aentry:\0A\00" +@.str9342 = private unnamed_addr constant [12 x i8] c"module_init\00" +@.str9343 = private unnamed_addr constant [31 x i8] c" call void @fn_module_init()\0A\00" +@.str9344 = private unnamed_addr constant [43 x i8] c" call i32 @ludic_register_system(ptr @fn_\00" +@.str9345 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str9346 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str9347 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" +@.str9348 = private unnamed_addr constant [130 x i8] c"@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__ludic_mod_init, ptr null }]\0A\00" +@.str9349 = private unnamed_addr constant [22 x i8] c"@sysreg_fn = global [\00" +@.str9350 = private unnamed_addr constant [25 x i8] c" x ptr] zeroinitializer\0A\00" +@.str9351 = private unnamed_addr constant [25 x i8] c"@sysreg_phase = global [\00" +@.str9352 = private unnamed_addr constant [25 x i8] c" x i32] zeroinitializer\0A\00" +@.str9353 = private unnamed_addr constant [30 x i8] c"@sysreg_count = global i32 0\0A\00" +@.str9354 = private unnamed_addr constant [65 x i8] c"define i32 @ludic_register_system(ptr %fn, i32 %phase) {\0Aentry:\0A\00" +@.str9355 = private unnamed_addr constant [36 x i8] c" %n = load i32, ptr @sysreg_count\0A\00" +@.str9356 = private unnamed_addr constant [26 x i8] c" %ok = icmp slt i32 %n, \00" +@.str9357 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9358 = private unnamed_addr constant [38 x i8] c" br i1 %ok, label %add, label %drop\0A\00" +@.str9359 = private unnamed_addr constant [6 x i8] c"add:\0A\00" +@.str9360 = private unnamed_addr constant [33 x i8] c" %fp = getelementptr inbounds [\00" +@.str9361 = private unnamed_addr constant [40 x i8] c" x ptr], ptr @sysreg_fn, i32 0, i32 %n\0A\00" +@.str9362 = private unnamed_addr constant [26 x i8] c" store ptr %fn, ptr %fp\0A\00" +@.str9363 = private unnamed_addr constant [33 x i8] c" %pp = getelementptr inbounds [\00" +@.str9364 = private unnamed_addr constant [43 x i8] c" x i32], ptr @sysreg_phase, i32 0, i32 %n\0A\00" +@.str9365 = private unnamed_addr constant [29 x i8] c" store i32 %phase, ptr %pp\0A\00" +@.str9366 = private unnamed_addr constant [71 x i8] c" %n1 = add i32 %n, 1\0A store i32 %n1, ptr @sysreg_count\0A ret i32 %n\0A\00" +@.str9367 = private unnamed_addr constant [23 x i8] c"drop:\0A ret i32 -1\0A}\0A\0A\00" +@.str9368 = private unnamed_addr constant [4 x i8] c"dsp\00" +@.str9369 = private unnamed_addr constant [4 x i8] c"dsh\00" +@.str9370 = private unnamed_addr constant [4 x i8] c"dsb\00" +@.str9371 = private unnamed_addr constant [5 x i8] c"dsdo\00" +@.str9372 = private unnamed_addr constant [4 x i8] c"dsc\00" +@.str9373 = private unnamed_addr constant [4 x i8] c"dsn\00" +@.str9374 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str9375 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9376 = private unnamed_addr constant [15 x i8] c":\0A br label %\00" +@.str9377 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9378 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9379 = private unnamed_addr constant [3 x i8] c" \00" +@.str9380 = private unnamed_addr constant [18 x i8] c" = phi i32 [ 0, %\00" +@.str9381 = private unnamed_addr constant [7 x i8] c" ], [ \00" +@.str9382 = private unnamed_addr constant [4 x i8] c", %\00" +@.str9383 = private unnamed_addr constant [4 x i8] c" ]\0A\00" +@.str9384 = private unnamed_addr constant [28 x i8] c"load i32, ptr @sysreg_count\00" +@.str9385 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str9386 = private unnamed_addr constant [3 x i8] c", \00" +@.str9387 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str9388 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9389 = private unnamed_addr constant [10 x i8] c", label %\00" @.str9390 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9391 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str9392 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str9393 = private unnamed_addr constant [3 x i8] c", \00" -@.str9394 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str9395 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9396 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9397 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9398 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9399 = private unnamed_addr constant [3 x i8] c" \00" -@.str9400 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9401 = private unnamed_addr constant [37 x i8] c" x ptr], ptr @sysreg_fn, i32 0, i32 \00" +@.str9391 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9392 = private unnamed_addr constant [3 x i8] c" \00" +@.str9393 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9394 = private unnamed_addr constant [40 x i8] c" x i32], ptr @sysreg_phase, i32 0, i32 \00" +@.str9395 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9396 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str9397 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str9398 = private unnamed_addr constant [3 x i8] c", \00" +@.str9399 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str9400 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9401 = private unnamed_addr constant [10 x i8] c", label %\00" @.str9402 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9403 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" -@.str9404 = private unnamed_addr constant [13 x i8] c" call void \00" -@.str9405 = private unnamed_addr constant [4 x i8] c"()\0A\00" -@.str9406 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str9403 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9404 = private unnamed_addr constant [3 x i8] c" \00" +@.str9405 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9406 = private unnamed_addr constant [37 x i8] c" x ptr], ptr @sysreg_fn, i32 0, i32 \00" @.str9407 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9408 = private unnamed_addr constant [5 x i8] c":\0A \00" -@.str9409 = private unnamed_addr constant [12 x i8] c" = add i32 \00" -@.str9410 = private unnamed_addr constant [17 x i8] c", 1\0A br label %\00" -@.str9411 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9412 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9413 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_scene\00" -@.str9414 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str9415 = private unnamed_addr constant [3 x i8] c", \00" -@.str9416 = private unnamed_addr constant [6 x i8] c"scrun\00" -@.str9417 = private unnamed_addr constant [7 x i8] c"scskip\00" -@.str9418 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str9419 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9420 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9421 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9422 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9423 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str9424 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9425 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9426 = private unnamed_addr constant [8 x i8] c"Overlay\00" -@.str9427 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_scene\00" -@.str9428 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str9429 = private unnamed_addr constant [3 x i8] c", \00" -@.str9430 = private unnamed_addr constant [5 x i8] c"mrun\00" -@.str9431 = private unnamed_addr constant [6 x i8] c"mskip\00" -@.str9432 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str9433 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9434 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9435 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9436 = private unnamed_addr constant [34 x i8] c":\0A call void @fn_rt_ui_render()\0A\00" -@.str9437 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str9438 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9439 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9440 = private unnamed_addr constant [5 x i8] c"void\00" -@.str9441 = private unnamed_addr constant [6 x i8] c"enter\00" -@.str9442 = private unnamed_addr constant [18 x i8] c"input_cursor_mode\00" -@.str9443 = private unnamed_addr constant [42 x i8] c" call void @fn_input_cursor_mode(i32 0)\0A\00" -@.str9444 = private unnamed_addr constant [32 x i8] c" call void @fn_rt_ui_open(i32 \00" -@.str9445 = private unnamed_addr constant [4 x i8] c"UI_\00" -@.str9446 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str9447 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str9448 = private unnamed_addr constant [31 x i8] c" call void @fn_rt_ui_close()\0A\00" -@.str9449 = private unnamed_addr constant [7 x i8] c"scene_\00" -@.str9450 = private unnamed_addr constant [2 x i8] c"_\00" -@.str9451 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" -@.str9452 = private unnamed_addr constant [4 x i8] c"()\0A\00" -@.str9453 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" -@.str9454 = private unnamed_addr constant [17 x i8] c"ret:\0A ret void\0A\00" -@.str9455 = private unnamed_addr constant [20 x i8] c"define void @scene_\00" -@.str9456 = private unnamed_addr constant [2 x i8] c"_\00" -@.str9457 = private unnamed_addr constant [13 x i8] c"() {\0Aentry:\0A\00" -@.str9458 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" -@.str9459 = private unnamed_addr constant [6 x i8] c"enter\00" -@.str9460 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str9461 = private unnamed_addr constant [39 x i8] c"define void @L_scene_leave() {\0Aentry:\0A\00" -@.str9462 = private unnamed_addr constant [31 x i8] c" %s = load i32, ptr @L_scene\0A\00" -@.str9463 = private unnamed_addr constant [6 x i8] c" %is\00" -@.str9464 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %s, \00" -@.str9465 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9466 = private unnamed_addr constant [12 x i8] c" br i1 %is\00" -@.str9467 = private unnamed_addr constant [15 x i8] c", label %leave\00" -@.str9468 = private unnamed_addr constant [14 x i8] c", label %next\00" -@.str9469 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9470 = private unnamed_addr constant [6 x i8] c"leave\00" -@.str9471 = private unnamed_addr constant [27 x i8] c":\0A call void @scene_exit_\00" -@.str9472 = private unnamed_addr constant [15 x i8] c"()\0A ret void\0A\00" -@.str9473 = private unnamed_addr constant [5 x i8] c"next\00" -@.str9474 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9475 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" -@.str9476 = private unnamed_addr constant [5 x i8] c"void\00" -@.str9477 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str9478 = private unnamed_addr constant [26 x i8] c" store i32 %reason, ptr \00" -@.str9479 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9480 = private unnamed_addr constant [4 x i8] c"int\00" -@.str9481 = private unnamed_addr constant [3 x i8] c"%e\00" -@.str9482 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" -@.str9483 = private unnamed_addr constant [17 x i8] c"ret:\0A ret void\0A\00" -@.str9484 = private unnamed_addr constant [25 x i8] c"define void @on_despawn_\00" -@.str9485 = private unnamed_addr constant [32 x i8] c"(i32 %e, i32 %reason) {\0Aentry:\0A\00" -@.str9486 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" -@.str9487 = private unnamed_addr constant [48 x i8] c"define void @fn_world_despawn(i32 %e) {\0Aentry:\0A\00" -@.str9488 = private unnamed_addr constant [33 x i8] c" %kp = getelementptr inbounds [\00" -@.str9489 = private unnamed_addr constant [37 x i8] c" x i32], ptr @L_kind, i32 0, i32 %e\0A\00" -@.str9490 = private unnamed_addr constant [26 x i8] c" %k = load i32, ptr %kp\0A\00" -@.str9491 = private unnamed_addr constant [5 x i8] c" %c\00" -@.str9492 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %k, \00" -@.str9493 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9494 = private unnamed_addr constant [11 x i8] c" br i1 %c\00" -@.str9495 = private unnamed_addr constant [13 x i8] c", label %hit\00" -@.str9496 = private unnamed_addr constant [14 x i8] c", label %next\00" -@.str9497 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9498 = private unnamed_addr constant [4 x i8] c"hit\00" -@.str9499 = private unnamed_addr constant [27 x i8] c":\0A call void @on_despawn_\00" -@.str9500 = private unnamed_addr constant [17 x i8] c"(i32 %e, i32 0)\0A\00" -@.str9501 = private unnamed_addr constant [7 x i8] c"model_\00" -@.str9502 = private unnamed_addr constant [9 x i8] c"_despawn\00" -@.str9503 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" -@.str9504 = private unnamed_addr constant [17 x i8] c"(i32 %e, i32 0)\0A\00" -@.str9505 = private unnamed_addr constant [17 x i8] c" br label %next\00" -@.str9506 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9507 = private unnamed_addr constant [5 x i8] c"next\00" -@.str9508 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9509 = private unnamed_addr constant [41 x i8] c" call void @ludic_sweep_entity(i32 %e)\0A\00" -@.str9510 = private unnamed_addr constant [36 x i8] c" call void @L_free_entity(i32 %e)\0A\00" -@.str9511 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" -@.str9512 = private unnamed_addr constant [67 x i8] c"define void @L_despawn_all(i32 %reason) {\0Aentry:\0A br label %loop\0A\00" -@.str9513 = private unnamed_addr constant [52 x i8] c"loop:\0A %i = phi i32 [ 0, %entry ], [ %i1, %cont ]\0A\00" -@.str9514 = private unnamed_addr constant [58 x i8] c" %n = load i32, ptr @L_entc\0A %go = icmp slt i32 %i, %n\0A\00" -@.str9515 = private unnamed_addr constant [38 x i8] c" br i1 %go, label %body, label %fin\0A\00" -@.str9516 = private unnamed_addr constant [39 x i8] c"body:\0A %ap = getelementptr inbounds [\00" -@.str9517 = private unnamed_addr constant [38 x i8] c" x i32], ptr @L_alive, i32 0, i32 %i\0A\00" -@.str9518 = private unnamed_addr constant [55 x i8] c" %al = load i32, ptr %ap\0A %isa = icmp ne i32 %al, 0\0A\00" -@.str9519 = private unnamed_addr constant [38 x i8] c" br i1 %isa, label %do, label %cont\0A\00" -@.str9520 = private unnamed_addr constant [37 x i8] c"do:\0A %kp = getelementptr inbounds [\00" -@.str9521 = private unnamed_addr constant [37 x i8] c" x i32], ptr @L_kind, i32 0, i32 %i\0A\00" -@.str9522 = private unnamed_addr constant [26 x i8] c" %k = load i32, ptr %kp\0A\00" -@.str9523 = private unnamed_addr constant [5 x i8] c" %c\00" -@.str9524 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %k, \00" -@.str9525 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9526 = private unnamed_addr constant [11 x i8] c" br i1 %c\00" -@.str9527 = private unnamed_addr constant [13 x i8] c", label %hit\00" -@.str9528 = private unnamed_addr constant [14 x i8] c", label %next\00" -@.str9529 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9530 = private unnamed_addr constant [4 x i8] c"hit\00" -@.str9531 = private unnamed_addr constant [27 x i8] c":\0A call void @on_despawn_\00" -@.str9532 = private unnamed_addr constant [23 x i8] c"(i32 %i, i32 %reason)\0A\00" -@.str9533 = private unnamed_addr constant [7 x i8] c"model_\00" -@.str9534 = private unnamed_addr constant [9 x i8] c"_despawn\00" -@.str9535 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" -@.str9536 = private unnamed_addr constant [23 x i8] c"(i32 %i, i32 %reason)\0A\00" -@.str9537 = private unnamed_addr constant [17 x i8] c" br label %next\00" -@.str9538 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9539 = private unnamed_addr constant [5 x i8] c"next\00" -@.str9540 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9541 = private unnamed_addr constant [18 x i8] c" br label %cont\0A\00" -@.str9542 = private unnamed_addr constant [46 x i8] c"cont:\0A %i1 = add i32 %i, 1\0A br label %loop\0A\00" -@.str9543 = private unnamed_addr constant [20 x i8] c"fin:\0A ret void\0A}\0A\0A\00" -@.str9544 = private unnamed_addr constant [26 x i8] c"@ev_depth = global i32 0\0A\00" -@.str9545 = private unnamed_addr constant [5 x i8] c"%Ev_\00" -@.str9546 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str9547 = private unnamed_addr constant [3 x i8] c", \00" -@.str9548 = private unnamed_addr constant [3 x i8] c", \00" -@.str9549 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str9550 = private unnamed_addr constant [4 x i8] c" }\0A\00" -@.str9551 = private unnamed_addr constant [6 x i8] c"@evL_\00" -@.str9552 = private unnamed_addr constant [12 x i8] c" = global [\00" -@.str9553 = private unnamed_addr constant [25 x i8] c" x ptr] zeroinitializer\0A\00" -@.str9554 = private unnamed_addr constant [6 x i8] c"@evN_\00" -@.str9555 = private unnamed_addr constant [17 x i8] c" = global i32 0\0A\00" -@.str9556 = private unnamed_addr constant [6 x i8] c"@evO_\00" +@.str9408 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" +@.str9409 = private unnamed_addr constant [13 x i8] c" call void \00" +@.str9410 = private unnamed_addr constant [4 x i8] c"()\0A\00" +@.str9411 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str9412 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9413 = private unnamed_addr constant [5 x i8] c":\0A \00" +@.str9414 = private unnamed_addr constant [12 x i8] c" = add i32 \00" +@.str9415 = private unnamed_addr constant [17 x i8] c", 1\0A br label %\00" +@.str9416 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9417 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9418 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_scene\00" +@.str9419 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str9420 = private unnamed_addr constant [3 x i8] c", \00" +@.str9421 = private unnamed_addr constant [6 x i8] c"scrun\00" +@.str9422 = private unnamed_addr constant [7 x i8] c"scskip\00" +@.str9423 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str9424 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9425 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9426 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9427 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9428 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str9429 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9430 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9431 = private unnamed_addr constant [8 x i8] c"Overlay\00" +@.str9432 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_scene\00" +@.str9433 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str9434 = private unnamed_addr constant [3 x i8] c", \00" +@.str9435 = private unnamed_addr constant [5 x i8] c"mrun\00" +@.str9436 = private unnamed_addr constant [6 x i8] c"mskip\00" +@.str9437 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str9438 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9439 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9440 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9441 = private unnamed_addr constant [34 x i8] c":\0A call void @fn_rt_ui_render()\0A\00" +@.str9442 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str9443 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9444 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9445 = private unnamed_addr constant [5 x i8] c"void\00" +@.str9446 = private unnamed_addr constant [6 x i8] c"enter\00" +@.str9447 = private unnamed_addr constant [18 x i8] c"input_cursor_mode\00" +@.str9448 = private unnamed_addr constant [42 x i8] c" call void @fn_input_cursor_mode(i32 0)\0A\00" +@.str9449 = private unnamed_addr constant [32 x i8] c" call void @fn_rt_ui_open(i32 \00" +@.str9450 = private unnamed_addr constant [4 x i8] c"UI_\00" +@.str9451 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str9452 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str9453 = private unnamed_addr constant [31 x i8] c" call void @fn_rt_ui_close()\0A\00" +@.str9454 = private unnamed_addr constant [7 x i8] c"scene_\00" +@.str9455 = private unnamed_addr constant [2 x i8] c"_\00" +@.str9456 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" +@.str9457 = private unnamed_addr constant [4 x i8] c"()\0A\00" +@.str9458 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" +@.str9459 = private unnamed_addr constant [17 x i8] c"ret:\0A ret void\0A\00" +@.str9460 = private unnamed_addr constant [20 x i8] c"define void @scene_\00" +@.str9461 = private unnamed_addr constant [2 x i8] c"_\00" +@.str9462 = private unnamed_addr constant [13 x i8] c"() {\0Aentry:\0A\00" +@.str9463 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" +@.str9464 = private unnamed_addr constant [6 x i8] c"enter\00" +@.str9465 = private unnamed_addr constant [5 x i8] c"exit\00" +@.str9466 = private unnamed_addr constant [39 x i8] c"define void @L_scene_leave() {\0Aentry:\0A\00" +@.str9467 = private unnamed_addr constant [31 x i8] c" %s = load i32, ptr @L_scene\0A\00" +@.str9468 = private unnamed_addr constant [6 x i8] c" %is\00" +@.str9469 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %s, \00" +@.str9470 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9471 = private unnamed_addr constant [12 x i8] c" br i1 %is\00" +@.str9472 = private unnamed_addr constant [15 x i8] c", label %leave\00" +@.str9473 = private unnamed_addr constant [14 x i8] c", label %next\00" +@.str9474 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9475 = private unnamed_addr constant [6 x i8] c"leave\00" +@.str9476 = private unnamed_addr constant [27 x i8] c":\0A call void @scene_exit_\00" +@.str9477 = private unnamed_addr constant [15 x i8] c"()\0A ret void\0A\00" +@.str9478 = private unnamed_addr constant [5 x i8] c"next\00" +@.str9479 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9480 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" +@.str9481 = private unnamed_addr constant [5 x i8] c"void\00" +@.str9482 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str9483 = private unnamed_addr constant [26 x i8] c" store i32 %reason, ptr \00" +@.str9484 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9485 = private unnamed_addr constant [4 x i8] c"int\00" +@.str9486 = private unnamed_addr constant [3 x i8] c"%e\00" +@.str9487 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" +@.str9488 = private unnamed_addr constant [17 x i8] c"ret:\0A ret void\0A\00" +@.str9489 = private unnamed_addr constant [25 x i8] c"define void @on_despawn_\00" +@.str9490 = private unnamed_addr constant [32 x i8] c"(i32 %e, i32 %reason) {\0Aentry:\0A\00" +@.str9491 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" +@.str9492 = private unnamed_addr constant [48 x i8] c"define void @fn_world_despawn(i32 %e) {\0Aentry:\0A\00" +@.str9493 = private unnamed_addr constant [33 x i8] c" %kp = getelementptr inbounds [\00" +@.str9494 = private unnamed_addr constant [37 x i8] c" x i32], ptr @L_kind, i32 0, i32 %e\0A\00" +@.str9495 = private unnamed_addr constant [26 x i8] c" %k = load i32, ptr %kp\0A\00" +@.str9496 = private unnamed_addr constant [5 x i8] c" %c\00" +@.str9497 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %k, \00" +@.str9498 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9499 = private unnamed_addr constant [11 x i8] c" br i1 %c\00" +@.str9500 = private unnamed_addr constant [13 x i8] c", label %hit\00" +@.str9501 = private unnamed_addr constant [14 x i8] c", label %next\00" +@.str9502 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9503 = private unnamed_addr constant [4 x i8] c"hit\00" +@.str9504 = private unnamed_addr constant [27 x i8] c":\0A call void @on_despawn_\00" +@.str9505 = private unnamed_addr constant [17 x i8] c"(i32 %e, i32 0)\0A\00" +@.str9506 = private unnamed_addr constant [7 x i8] c"model_\00" +@.str9507 = private unnamed_addr constant [9 x i8] c"_despawn\00" +@.str9508 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" +@.str9509 = private unnamed_addr constant [17 x i8] c"(i32 %e, i32 0)\0A\00" +@.str9510 = private unnamed_addr constant [17 x i8] c" br label %next\00" +@.str9511 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9512 = private unnamed_addr constant [5 x i8] c"next\00" +@.str9513 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9514 = private unnamed_addr constant [41 x i8] c" call void @ludic_sweep_entity(i32 %e)\0A\00" +@.str9515 = private unnamed_addr constant [36 x i8] c" call void @L_free_entity(i32 %e)\0A\00" +@.str9516 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" +@.str9517 = private unnamed_addr constant [67 x i8] c"define void @L_despawn_all(i32 %reason) {\0Aentry:\0A br label %loop\0A\00" +@.str9518 = private unnamed_addr constant [52 x i8] c"loop:\0A %i = phi i32 [ 0, %entry ], [ %i1, %cont ]\0A\00" +@.str9519 = private unnamed_addr constant [58 x i8] c" %n = load i32, ptr @L_entc\0A %go = icmp slt i32 %i, %n\0A\00" +@.str9520 = private unnamed_addr constant [38 x i8] c" br i1 %go, label %body, label %fin\0A\00" +@.str9521 = private unnamed_addr constant [39 x i8] c"body:\0A %ap = getelementptr inbounds [\00" +@.str9522 = private unnamed_addr constant [38 x i8] c" x i32], ptr @L_alive, i32 0, i32 %i\0A\00" +@.str9523 = private unnamed_addr constant [55 x i8] c" %al = load i32, ptr %ap\0A %isa = icmp ne i32 %al, 0\0A\00" +@.str9524 = private unnamed_addr constant [38 x i8] c" br i1 %isa, label %do, label %cont\0A\00" +@.str9525 = private unnamed_addr constant [37 x i8] c"do:\0A %kp = getelementptr inbounds [\00" +@.str9526 = private unnamed_addr constant [37 x i8] c" x i32], ptr @L_kind, i32 0, i32 %i\0A\00" +@.str9527 = private unnamed_addr constant [26 x i8] c" %k = load i32, ptr %kp\0A\00" +@.str9528 = private unnamed_addr constant [5 x i8] c" %c\00" +@.str9529 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %k, \00" +@.str9530 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9531 = private unnamed_addr constant [11 x i8] c" br i1 %c\00" +@.str9532 = private unnamed_addr constant [13 x i8] c", label %hit\00" +@.str9533 = private unnamed_addr constant [14 x i8] c", label %next\00" +@.str9534 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9535 = private unnamed_addr constant [4 x i8] c"hit\00" +@.str9536 = private unnamed_addr constant [27 x i8] c":\0A call void @on_despawn_\00" +@.str9537 = private unnamed_addr constant [23 x i8] c"(i32 %i, i32 %reason)\0A\00" +@.str9538 = private unnamed_addr constant [7 x i8] c"model_\00" +@.str9539 = private unnamed_addr constant [9 x i8] c"_despawn\00" +@.str9540 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" +@.str9541 = private unnamed_addr constant [23 x i8] c"(i32 %i, i32 %reason)\0A\00" +@.str9542 = private unnamed_addr constant [17 x i8] c" br label %next\00" +@.str9543 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9544 = private unnamed_addr constant [5 x i8] c"next\00" +@.str9545 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9546 = private unnamed_addr constant [18 x i8] c" br label %cont\0A\00" +@.str9547 = private unnamed_addr constant [46 x i8] c"cont:\0A %i1 = add i32 %i, 1\0A br label %loop\0A\00" +@.str9548 = private unnamed_addr constant [20 x i8] c"fin:\0A ret void\0A}\0A\0A\00" +@.str9549 = private unnamed_addr constant [26 x i8] c"@ev_depth = global i32 0\0A\00" +@.str9550 = private unnamed_addr constant [5 x i8] c"%Ev_\00" +@.str9551 = private unnamed_addr constant [11 x i8] c" = type { \00" +@.str9552 = private unnamed_addr constant [3 x i8] c", \00" +@.str9553 = private unnamed_addr constant [3 x i8] c", \00" +@.str9554 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str9555 = private unnamed_addr constant [4 x i8] c" }\0A\00" +@.str9556 = private unnamed_addr constant [6 x i8] c"@evL_\00" @.str9557 = private unnamed_addr constant [12 x i8] c" = global [\00" -@.str9558 = private unnamed_addr constant [25 x i8] c" x i32] zeroinitializer\0A\00" -@.str9559 = private unnamed_addr constant [22 x i8] c"define i32 @ludic_on_\00" -@.str9560 = private unnamed_addr constant [20 x i8] c"(ptr %cb) {\0Aentry:\0A\00" -@.str9561 = private unnamed_addr constant [27 x i8] c" %n = load i32, ptr @evN_\00" -@.str9562 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9563 = private unnamed_addr constant [28 x i8] c" %full = icmp slt i32 %n, \00" -@.str9564 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9565 = private unnamed_addr constant [40 x i8] c" br i1 %full, label %add, label %drop\0A\00" -@.str9566 = private unnamed_addr constant [40 x i8] c"add:\0A %slot = getelementptr inbounds [\00" -@.str9567 = private unnamed_addr constant [19 x i8] c" x ptr], ptr @evL_\00" -@.str9568 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %n\0A\00" -@.str9569 = private unnamed_addr constant [28 x i8] c" store ptr %cb, ptr %slot\0A\00" -@.str9570 = private unnamed_addr constant [36 x i8] c" %oslot = getelementptr inbounds [\00" -@.str9571 = private unnamed_addr constant [19 x i8] c" x i32], ptr @evO_\00" -@.str9572 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %n\0A\00" -@.str9573 = private unnamed_addr constant [28 x i8] c" store i32 -1, ptr %oslot\0A\00" -@.str9574 = private unnamed_addr constant [49 x i8] c" %n1 = add i32 %n, 1\0A store i32 %n1, ptr @evN_\00" -@.str9575 = private unnamed_addr constant [15 x i8] c"\0A ret i32 %n\0A\00" -@.str9576 = private unnamed_addr constant [23 x i8] c"drop:\0A ret i32 -1\0A}\0A\0A\00" -@.str9577 = private unnamed_addr constant [29 x i8] c"define i32 @ludic_on_entity_\00" -@.str9578 = private unnamed_addr constant [32 x i8] c"(i32 %owner, ptr %cb) {\0Aentry:\0A\00" -@.str9579 = private unnamed_addr constant [27 x i8] c" %n = load i32, ptr @evN_\00" -@.str9580 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9581 = private unnamed_addr constant [28 x i8] c" %full = icmp slt i32 %n, \00" -@.str9582 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9583 = private unnamed_addr constant [40 x i8] c" br i1 %full, label %add, label %drop\0A\00" -@.str9584 = private unnamed_addr constant [40 x i8] c"add:\0A %slot = getelementptr inbounds [\00" -@.str9585 = private unnamed_addr constant [19 x i8] c" x ptr], ptr @evL_\00" -@.str9586 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %n\0A\00" -@.str9587 = private unnamed_addr constant [28 x i8] c" store ptr %cb, ptr %slot\0A\00" -@.str9588 = private unnamed_addr constant [36 x i8] c" %oslot = getelementptr inbounds [\00" -@.str9589 = private unnamed_addr constant [19 x i8] c" x i32], ptr @evO_\00" -@.str9590 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %n\0A\00" -@.str9591 = private unnamed_addr constant [32 x i8] c" store i32 %owner, ptr %oslot\0A\00" -@.str9592 = private unnamed_addr constant [49 x i8] c" %n1 = add i32 %n, 1\0A store i32 %n1, ptr @evN_\00" -@.str9593 = private unnamed_addr constant [15 x i8] c"\0A ret i32 %n\0A\00" -@.str9594 = private unnamed_addr constant [23 x i8] c"drop:\0A ret i32 -1\0A}\0A\0A\00" -@.str9595 = private unnamed_addr constant [24 x i8] c"define void @ludic_off_\00" -@.str9596 = private unnamed_addr constant [21 x i8] c"(i32 %tok) {\0Aentry:\0A\00" -@.str9597 = private unnamed_addr constant [27 x i8] c" %n = load i32, ptr @evN_\00" -@.str9598 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9599 = private unnamed_addr constant [84 x i8] c" %lo = icmp sge i32 %tok, 0\0A %hi = icmp slt i32 %tok, %n\0A %ok = and i1 %lo, %hi\0A\00" -@.str9600 = private unnamed_addr constant [37 x i8] c" br i1 %ok, label %do, label %skip\0A\00" -@.str9601 = private unnamed_addr constant [39 x i8] c"do:\0A %slot = getelementptr inbounds [\00" -@.str9602 = private unnamed_addr constant [19 x i8] c" x ptr], ptr @evL_\00" -@.str9603 = private unnamed_addr constant [19 x i8] c", i32 0, i32 %tok\0A\00" -@.str9604 = private unnamed_addr constant [46 x i8] c" store ptr null, ptr %slot\0A br label %skip\0A\00" -@.str9605 = private unnamed_addr constant [21 x i8] c"skip:\0A ret void\0A}\0A\0A\00" -@.str9606 = private unnamed_addr constant [5 x i8] c"void\00" -@.str9607 = private unnamed_addr constant [34 x i8] c" %evd = load i32, ptr @ev_depth\0A\00" -@.str9608 = private unnamed_addr constant [32 x i8] c" %evover = icmp sge i32 %evd, \00" -@.str9609 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9610 = private unnamed_addr constant [44 x i8] c" br i1 %evover, label %evcap, label %evgo\0A\00" -@.str9611 = private unnamed_addr constant [8 x i8] c"evcap:\0A\00" -@.str9612 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" -@.str9613 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" -@.str9614 = private unnamed_addr constant [7 x i8] c"evgo:\0A\00" -@.str9615 = private unnamed_addr constant [60 x i8] c" %evd1 = add i32 %evd, 1\0A store i32 %evd1, ptr @ev_depth\0A\00" -@.str9616 = private unnamed_addr constant [5 x i8] c"%Ev_\00" -@.str9617 = private unnamed_addr constant [3 x i8] c" \00" -@.str9618 = private unnamed_addr constant [31 x i8] c" = getelementptr inbounds %Ev_\00" -@.str9619 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9620 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str9621 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9622 = private unnamed_addr constant [9 x i8] c" store \00" -@.str9623 = private unnamed_addr constant [4 x i8] c" %p\00" +@.str9558 = private unnamed_addr constant [25 x i8] c" x ptr] zeroinitializer\0A\00" +@.str9559 = private unnamed_addr constant [6 x i8] c"@evN_\00" +@.str9560 = private unnamed_addr constant [17 x i8] c" = global i32 0\0A\00" +@.str9561 = private unnamed_addr constant [6 x i8] c"@evO_\00" +@.str9562 = private unnamed_addr constant [12 x i8] c" = global [\00" +@.str9563 = private unnamed_addr constant [25 x i8] c" x i32] zeroinitializer\0A\00" +@.str9564 = private unnamed_addr constant [22 x i8] c"define i32 @ludic_on_\00" +@.str9565 = private unnamed_addr constant [20 x i8] c"(ptr %cb) {\0Aentry:\0A\00" +@.str9566 = private unnamed_addr constant [27 x i8] c" %n = load i32, ptr @evN_\00" +@.str9567 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9568 = private unnamed_addr constant [28 x i8] c" %full = icmp slt i32 %n, \00" +@.str9569 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9570 = private unnamed_addr constant [40 x i8] c" br i1 %full, label %add, label %drop\0A\00" +@.str9571 = private unnamed_addr constant [40 x i8] c"add:\0A %slot = getelementptr inbounds [\00" +@.str9572 = private unnamed_addr constant [19 x i8] c" x ptr], ptr @evL_\00" +@.str9573 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %n\0A\00" +@.str9574 = private unnamed_addr constant [28 x i8] c" store ptr %cb, ptr %slot\0A\00" +@.str9575 = private unnamed_addr constant [36 x i8] c" %oslot = getelementptr inbounds [\00" +@.str9576 = private unnamed_addr constant [19 x i8] c" x i32], ptr @evO_\00" +@.str9577 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %n\0A\00" +@.str9578 = private unnamed_addr constant [28 x i8] c" store i32 -1, ptr %oslot\0A\00" +@.str9579 = private unnamed_addr constant [49 x i8] c" %n1 = add i32 %n, 1\0A store i32 %n1, ptr @evN_\00" +@.str9580 = private unnamed_addr constant [15 x i8] c"\0A ret i32 %n\0A\00" +@.str9581 = private unnamed_addr constant [23 x i8] c"drop:\0A ret i32 -1\0A}\0A\0A\00" +@.str9582 = private unnamed_addr constant [29 x i8] c"define i32 @ludic_on_entity_\00" +@.str9583 = private unnamed_addr constant [32 x i8] c"(i32 %owner, ptr %cb) {\0Aentry:\0A\00" +@.str9584 = private unnamed_addr constant [27 x i8] c" %n = load i32, ptr @evN_\00" +@.str9585 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9586 = private unnamed_addr constant [28 x i8] c" %full = icmp slt i32 %n, \00" +@.str9587 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9588 = private unnamed_addr constant [40 x i8] c" br i1 %full, label %add, label %drop\0A\00" +@.str9589 = private unnamed_addr constant [40 x i8] c"add:\0A %slot = getelementptr inbounds [\00" +@.str9590 = private unnamed_addr constant [19 x i8] c" x ptr], ptr @evL_\00" +@.str9591 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %n\0A\00" +@.str9592 = private unnamed_addr constant [28 x i8] c" store ptr %cb, ptr %slot\0A\00" +@.str9593 = private unnamed_addr constant [36 x i8] c" %oslot = getelementptr inbounds [\00" +@.str9594 = private unnamed_addr constant [19 x i8] c" x i32], ptr @evO_\00" +@.str9595 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %n\0A\00" +@.str9596 = private unnamed_addr constant [32 x i8] c" store i32 %owner, ptr %oslot\0A\00" +@.str9597 = private unnamed_addr constant [49 x i8] c" %n1 = add i32 %n, 1\0A store i32 %n1, ptr @evN_\00" +@.str9598 = private unnamed_addr constant [15 x i8] c"\0A ret i32 %n\0A\00" +@.str9599 = private unnamed_addr constant [23 x i8] c"drop:\0A ret i32 -1\0A}\0A\0A\00" +@.str9600 = private unnamed_addr constant [24 x i8] c"define void @ludic_off_\00" +@.str9601 = private unnamed_addr constant [21 x i8] c"(i32 %tok) {\0Aentry:\0A\00" +@.str9602 = private unnamed_addr constant [27 x i8] c" %n = load i32, ptr @evN_\00" +@.str9603 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9604 = private unnamed_addr constant [84 x i8] c" %lo = icmp sge i32 %tok, 0\0A %hi = icmp slt i32 %tok, %n\0A %ok = and i1 %lo, %hi\0A\00" +@.str9605 = private unnamed_addr constant [37 x i8] c" br i1 %ok, label %do, label %skip\0A\00" +@.str9606 = private unnamed_addr constant [39 x i8] c"do:\0A %slot = getelementptr inbounds [\00" +@.str9607 = private unnamed_addr constant [19 x i8] c" x ptr], ptr @evL_\00" +@.str9608 = private unnamed_addr constant [19 x i8] c", i32 0, i32 %tok\0A\00" +@.str9609 = private unnamed_addr constant [46 x i8] c" store ptr null, ptr %slot\0A br label %skip\0A\00" +@.str9610 = private unnamed_addr constant [21 x i8] c"skip:\0A ret void\0A}\0A\0A\00" +@.str9611 = private unnamed_addr constant [5 x i8] c"void\00" +@.str9612 = private unnamed_addr constant [34 x i8] c" %evd = load i32, ptr @ev_depth\0A\00" +@.str9613 = private unnamed_addr constant [32 x i8] c" %evover = icmp sge i32 %evd, \00" +@.str9614 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9615 = private unnamed_addr constant [44 x i8] c" br i1 %evover, label %evcap, label %evgo\0A\00" +@.str9616 = private unnamed_addr constant [8 x i8] c"evcap:\0A\00" +@.str9617 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" +@.str9618 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" +@.str9619 = private unnamed_addr constant [7 x i8] c"evgo:\0A\00" +@.str9620 = private unnamed_addr constant [60 x i8] c" %evd1 = add i32 %evd, 1\0A store i32 %evd1, ptr @ev_depth\0A\00" +@.str9621 = private unnamed_addr constant [5 x i8] c"%Ev_\00" +@.str9622 = private unnamed_addr constant [3 x i8] c" \00" +@.str9623 = private unnamed_addr constant [31 x i8] c" = getelementptr inbounds %Ev_\00" @.str9624 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9625 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9626 = private unnamed_addr constant [9 x i8] c" store \00" -@.str9627 = private unnamed_addr constant [4 x i8] c" %p\00" -@.str9628 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9629 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9630 = private unnamed_addr constant [3 x i8] c" \00" -@.str9631 = private unnamed_addr constant [31 x i8] c" = getelementptr inbounds %Ev_\00" -@.str9632 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9633 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str9625 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str9626 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9627 = private unnamed_addr constant [9 x i8] c" store \00" +@.str9628 = private unnamed_addr constant [4 x i8] c" %p\00" +@.str9629 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str9630 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9631 = private unnamed_addr constant [9 x i8] c" store \00" +@.str9632 = private unnamed_addr constant [4 x i8] c" %p\00" +@.str9633 = private unnamed_addr constant [7 x i8] c", ptr \00" @.str9634 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9635 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" -@.str9636 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9637 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str9638 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" +@.str9635 = private unnamed_addr constant [3 x i8] c" \00" +@.str9636 = private unnamed_addr constant [31 x i8] c" = getelementptr inbounds %Ev_\00" +@.str9637 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str9638 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" @.str9639 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9640 = private unnamed_addr constant [4 x i8] c"evl\00" -@.str9641 = private unnamed_addr constant [4 x i8] c"evb\00" -@.str9642 = private unnamed_addr constant [4 x i8] c"evd\00" -@.str9643 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str9640 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" +@.str9641 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9642 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str9643 = private unnamed_addr constant [20 x i8] c" store i32 0, ptr \00" @.str9644 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9645 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9646 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str9647 = private unnamed_addr constant [20 x i8] c"load i32, ptr @evN_\00" -@.str9648 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" -@.str9649 = private unnamed_addr constant [3 x i8] c", \00" -@.str9650 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str9651 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9652 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9653 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9654 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9655 = private unnamed_addr constant [3 x i8] c" \00" -@.str9656 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9657 = private unnamed_addr constant [19 x i8] c" x ptr], ptr @evL_\00" -@.str9658 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str9659 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9660 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" -@.str9661 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str9662 = private unnamed_addr constant [7 x i8] c", null\00" -@.str9663 = private unnamed_addr constant [5 x i8] c"evdo\00" -@.str9664 = private unnamed_addr constant [5 x i8] c"evsk\00" -@.str9665 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str9666 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9667 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str9668 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9669 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9670 = private unnamed_addr constant [13 x i8] c" call void \00" -@.str9671 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str9672 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str9673 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str9674 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9675 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9676 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str9677 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str9678 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str9679 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str9680 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9681 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str9682 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9683 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9684 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" -@.str9685 = private unnamed_addr constant [6 x i8] c"ret:\0A\00" -@.str9686 = private unnamed_addr constant [97 x i8] c" %evdd = load i32, ptr @ev_depth\0A %evdd1 = sub i32 %evdd, 1\0A store i32 %evdd1, ptr @ev_depth\0A\00" -@.str9687 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" -@.str9688 = private unnamed_addr constant [11 x i8] c" ret i32 \00" -@.str9689 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9690 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" -@.str9691 = private unnamed_addr constant [5 x i8] c"void\00" -@.str9692 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str9693 = private unnamed_addr constant [8 x i8] c"define \00" -@.str9694 = private unnamed_addr constant [6 x i8] c" @ev_\00" -@.str9695 = private unnamed_addr constant [2 x i8] c"(\00" -@.str9696 = private unnamed_addr constant [3 x i8] c", \00" -@.str9697 = private unnamed_addr constant [4 x i8] c" %p\00" -@.str9698 = private unnamed_addr constant [12 x i8] c") {\0Aentry:\0A\00" -@.str9699 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" -@.str9700 = private unnamed_addr constant [112 x i8] c"define void @ludic_sweep_entity(i32 %owner) {\0Aentry:\0A %ci = alloca i32\0A store i32 0, ptr %ci\0A br label %sw0\0A\00" -@.str9701 = private unnamed_addr constant [3 x i8] c"sw\00" -@.str9702 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9703 = private unnamed_addr constant [7 x i8] c" %swi\00" -@.str9704 = private unnamed_addr constant [22 x i8] c" = load i32, ptr %ci\0A\00" -@.str9705 = private unnamed_addr constant [7 x i8] c" %swn\00" -@.str9706 = private unnamed_addr constant [23 x i8] c" = load i32, ptr @evN_\00" -@.str9707 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9708 = private unnamed_addr constant [7 x i8] c" %swg\00" -@.str9709 = private unnamed_addr constant [21 x i8] c" = icmp slt i32 %swi\00" -@.str9710 = private unnamed_addr constant [7 x i8] c", %swn\00" -@.str9711 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9712 = private unnamed_addr constant [13 x i8] c" br i1 %swg\00" -@.str9713 = private unnamed_addr constant [13 x i8] c", label %swb\00" -@.str9714 = private unnamed_addr constant [13 x i8] c", label %swd\00" -@.str9715 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9716 = private unnamed_addr constant [4 x i8] c"swb\00" -@.str9717 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9718 = private unnamed_addr constant [8 x i8] c" %swop\00" -@.str9719 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9720 = private unnamed_addr constant [19 x i8] c" x i32], ptr @evO_\00" -@.str9721 = private unnamed_addr constant [18 x i8] c", i32 0, i32 %swi\00" -@.str9722 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9723 = private unnamed_addr constant [8 x i8] c" %swov\00" -@.str9724 = private unnamed_addr constant [23 x i8] c" = load i32, ptr %swop\00" -@.str9725 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9726 = private unnamed_addr constant [7 x i8] c" %swm\00" -@.str9727 = private unnamed_addr constant [21 x i8] c" = icmp eq i32 %swov\00" -@.str9728 = private unnamed_addr constant [10 x i8] c", %owner\0A\00" -@.str9729 = private unnamed_addr constant [13 x i8] c" br i1 %swm\00" -@.str9730 = private unnamed_addr constant [13 x i8] c", label %swh\00" -@.str9731 = private unnamed_addr constant [13 x i8] c", label %swx\00" -@.str9732 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9733 = private unnamed_addr constant [4 x i8] c"swh\00" -@.str9734 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9735 = private unnamed_addr constant [8 x i8] c" %swlp\00" -@.str9736 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9737 = private unnamed_addr constant [19 x i8] c" x ptr], ptr @evL_\00" -@.str9738 = private unnamed_addr constant [18 x i8] c", i32 0, i32 %swi\00" -@.str9739 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9740 = private unnamed_addr constant [28 x i8] c" store ptr null, ptr %swlp\00" -@.str9741 = private unnamed_addr constant [17 x i8] c"\0A br label %swx\00" -@.str9742 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9743 = private unnamed_addr constant [4 x i8] c"swx\00" -@.str9744 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9745 = private unnamed_addr constant [9 x i8] c" %swinc\00" -@.str9746 = private unnamed_addr constant [16 x i8] c" = add i32 %swi\00" -@.str9747 = private unnamed_addr constant [23 x i8] c", 1\0A store i32 %swinc\00" -@.str9748 = private unnamed_addr constant [25 x i8] c", ptr %ci\0A br label %sw\00" -@.str9749 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9750 = private unnamed_addr constant [4 x i8] c"swd\00" -@.str9751 = private unnamed_addr constant [26 x i8] c":\0A store i32 0, ptr %ci\0A\00" -@.str9752 = private unnamed_addr constant [15 x i8] c" br label %sw\00" -@.str9753 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9754 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" -@.str9755 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" -@.str9756 = private unnamed_addr constant [27 x i8] c"@dyn_count = global i32 0\0A\00" -@.str9757 = private unnamed_addr constant [43 x i8] c"@dynS = global [32 x ptr] zeroinitializer\0A\00" -@.str9758 = private unnamed_addr constant [43 x i8] c"@dynH = global [32 x ptr] zeroinitializer\0A\00" -@.str9759 = private unnamed_addr constant [43 x i8] c"@dynF = global [32 x i32] zeroinitializer\0A\00" -@.str9760 = private unnamed_addr constant [46 x i8] c"@dynName = global [32 x ptr] zeroinitializer\0A\00" -@.str9761 = private unnamed_addr constant [47 x i8] c"define i32 @ludic_prop_id(ptr %name) {\0Aentry:\0A\00" -@.str9762 = private unnamed_addr constant [5 x i8] c" %c\00" -@.str9763 = private unnamed_addr constant [36 x i8] c" = call i32 @strcmp(ptr %name, ptr \00" -@.str9764 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str9765 = private unnamed_addr constant [5 x i8] c" %e\00" -@.str9766 = private unnamed_addr constant [18 x i8] c" = icmp eq i32 %c\00" -@.str9767 = private unnamed_addr constant [5 x i8] c", 0\0A\00" -@.str9768 = private unnamed_addr constant [11 x i8] c" br i1 %e\00" -@.str9769 = private unnamed_addr constant [11 x i8] c", label %h\00" -@.str9770 = private unnamed_addr constant [11 x i8] c", label %n\00" -@.str9771 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9772 = private unnamed_addr constant [2 x i8] c"h\00" -@.str9773 = private unnamed_addr constant [13 x i8] c":\0A ret i32 \00" -@.str9774 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9775 = private unnamed_addr constant [2 x i8] c"n\00" -@.str9776 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9777 = private unnamed_addr constant [61 x i8] c" %dpi = alloca i32\0A store i32 0, ptr %dpi\0A br label %dpl\0A\00" -@.str9778 = private unnamed_addr constant [135 x i8] c"dpl:\0A %di = load i32, ptr %dpi\0A %dn = load i32, ptr @dyn_count\0A %dg = icmp slt i32 %di, %dn\0A br i1 %dg, label %dpb, label %dpnone\0A\00" -@.str9779 = private unnamed_addr constant [231 x i8] c"dpb:\0A %dnp = getelementptr inbounds [32 x ptr], ptr @dynName, i32 0, i32 %di\0A %dname = load ptr, ptr %dnp\0A %dcmp = call i32 @strcmp(ptr %name, ptr %dname)\0A %deq = icmp eq i32 %dcmp, 0\0A br i1 %deq, label %dphit, label %dpnext\0A\00" -@.str9780 = private unnamed_addr constant [31 x i8] c"dphit:\0A %drid = add i32 %di, \00" -@.str9781 = private unnamed_addr constant [18 x i8] c"\0A ret i32 %drid\0A\00" -@.str9782 = private unnamed_addr constant [76 x i8] c"dpnext:\0A %di1 = add i32 %di, 1\0A store i32 %di1, ptr %dpi\0A br label %dpl\0A\00" -@.str9783 = private unnamed_addr constant [25 x i8] c"dpnone:\0A ret i32 -1\0A}\0A\0A\00" -@.str9784 = private unnamed_addr constant [56 x i8] c"define i32 @ludic_field_id(i32 %p, ptr %name) {\0Aentry:\0A\00" -@.str9785 = private unnamed_addr constant [6 x i8] c" %pm\00" -@.str9786 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %p, \00" -@.str9787 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9788 = private unnamed_addr constant [12 x i8] c" br i1 %pm\00" -@.str9789 = private unnamed_addr constant [12 x i8] c", label %pk\00" -@.str9790 = private unnamed_addr constant [12 x i8] c", label %pn\00" -@.str9791 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9792 = private unnamed_addr constant [3 x i8] c"pk\00" -@.str9793 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9794 = private unnamed_addr constant [2 x i8] c"_\00" -@.str9795 = private unnamed_addr constant [6 x i8] c" %fc\00" -@.str9796 = private unnamed_addr constant [36 x i8] c" = call i32 @strcmp(ptr %name, ptr \00" -@.str9797 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str9798 = private unnamed_addr constant [6 x i8] c" %fe\00" -@.str9799 = private unnamed_addr constant [19 x i8] c" = icmp eq i32 %fc\00" -@.str9800 = private unnamed_addr constant [5 x i8] c", 0\0A\00" -@.str9801 = private unnamed_addr constant [12 x i8] c" br i1 %fe\00" -@.str9802 = private unnamed_addr constant [12 x i8] c", label %fh\00" -@.str9803 = private unnamed_addr constant [12 x i8] c", label %fn\00" -@.str9804 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9805 = private unnamed_addr constant [3 x i8] c"fh\00" -@.str9806 = private unnamed_addr constant [13 x i8] c":\0A ret i32 \00" -@.str9807 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9808 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str9809 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9810 = private unnamed_addr constant [14 x i8] c" ret i32 -1\0A\00" -@.str9811 = private unnamed_addr constant [3 x i8] c"pn\00" -@.str9812 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9813 = private unnamed_addr constant [17 x i8] c" ret i32 -1\0A}\0A\0A\00" -@.str9814 = private unnamed_addr constant [56 x i8] c"define i64 @ludic_get(i32 %e, i32 %p, i32 %f) {\0Aentry:\0A\00" -@.str9815 = private unnamed_addr constant [5 x i8] c" %m\00" -@.str9816 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %p, \00" -@.str9817 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9818 = private unnamed_addr constant [11 x i8] c" br i1 %m\00" -@.str9819 = private unnamed_addr constant [11 x i8] c", label %g\00" -@.str9820 = private unnamed_addr constant [12 x i8] c", label %gn\00" -@.str9821 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9822 = private unnamed_addr constant [2 x i8] c"g\00" -@.str9823 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9824 = private unnamed_addr constant [5 x i8] c" %s\00" -@.str9825 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9826 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" -@.str9827 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" -@.str9828 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %e\0A\00" -@.str9829 = private unnamed_addr constant [2 x i8] c"_\00" -@.str9830 = private unnamed_addr constant [6 x i8] c" %gm\00" -@.str9831 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %f, \00" -@.str9832 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9833 = private unnamed_addr constant [12 x i8] c" br i1 %gm\00" -@.str9834 = private unnamed_addr constant [12 x i8] c", label %gf\00" -@.str9835 = private unnamed_addr constant [12 x i8] c", label %gk\00" -@.str9836 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9837 = private unnamed_addr constant [3 x i8] c"gf\00" -@.str9838 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9839 = private unnamed_addr constant [6 x i8] c" %ga\00" -@.str9840 = private unnamed_addr constant [32 x i8] c" = getelementptr inbounds %Cmp_\00" -@.str9841 = private unnamed_addr constant [9 x i8] c", ptr %s\00" -@.str9842 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str9843 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9844 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str9845 = private unnamed_addr constant [6 x i8] c" %gl\00" -@.str9846 = private unnamed_addr constant [21 x i8] c" = load ptr, ptr %ga\00" -@.str9847 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9848 = private unnamed_addr constant [6 x i8] c" %gr\00" -@.str9849 = private unnamed_addr constant [20 x i8] c" = ptrtoint ptr %gl\00" -@.str9850 = private unnamed_addr constant [22 x i8] c" to i64\0A ret i64 %gr\00" -@.str9851 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9852 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str9853 = private unnamed_addr constant [6 x i8] c" %gl\00" -@.str9854 = private unnamed_addr constant [20 x i8] c" = load i8, ptr %ga\00" -@.str9855 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9856 = private unnamed_addr constant [6 x i8] c" %gr\00" -@.str9857 = private unnamed_addr constant [15 x i8] c" = zext i8 %gl\00" -@.str9858 = private unnamed_addr constant [22 x i8] c" to i64\0A ret i64 %gr\00" -@.str9859 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9860 = private unnamed_addr constant [6 x i8] c" %gl\00" -@.str9861 = private unnamed_addr constant [21 x i8] c" = load i32, ptr %ga\00" -@.str9862 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9863 = private unnamed_addr constant [6 x i8] c" %gr\00" -@.str9864 = private unnamed_addr constant [16 x i8] c" = sext i32 %gl\00" -@.str9865 = private unnamed_addr constant [22 x i8] c" to i64\0A ret i64 %gr\00" -@.str9866 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9867 = private unnamed_addr constant [3 x i8] c"gk\00" -@.str9868 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9869 = private unnamed_addr constant [13 x i8] c" ret i64 0\0A\00" -@.str9870 = private unnamed_addr constant [3 x i8] c"gn\00" -@.str9871 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9872 = private unnamed_addr constant [23 x i8] c" %gdyn = sub i32 %p, \00" -@.str9873 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9874 = private unnamed_addr constant [175 x i8] c" %gdlo = icmp sge i32 %gdyn, 0\0A %gdc = load i32, ptr @dyn_count\0A %gdhi = icmp slt i32 %gdyn, %gdc\0A %gdok = and i1 %gdlo, %gdhi\0A br i1 %gdok, label %gdyng, label %gdnone\0A\00" -@.str9875 = private unnamed_addr constant [110 x i8] c"gdyng:\0A %gsp = getelementptr inbounds [32 x ptr], ptr @dynS, i32 0, i32 %gdyn\0A %gbase = load ptr, ptr %gsp\0A\00" -@.str9876 = private unnamed_addr constant [156 x i8] c" %gfp = getelementptr inbounds [32 x i32], ptr @dynF, i32 0, i32 %gdyn\0A %gnf = load i32, ptr %gfp\0A %grow = mul i32 %e, %gnf\0A %gidx = add i32 %grow, %f\0A\00" -@.str9877 = private unnamed_addr constant [133 x i8] c" %gaddr = getelementptr inbounds i32, ptr %gbase, i32 %gidx\0A %gv = load i32, ptr %gaddr\0A %gr = sext i32 %gv to i64\0A ret i64 %gr\0A\00" -@.str9878 = private unnamed_addr constant [24 x i8] c"gdnone:\0A ret i64 0\0A}\0A\0A\00" -@.str9879 = private unnamed_addr constant [67 x i8] c"define void @ludic_set(i32 %e, i32 %p, i32 %f, i64 %val) {\0Aentry:\0A\00" -@.str9880 = private unnamed_addr constant [5 x i8] c" %m\00" -@.str9881 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %p, \00" -@.str9882 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9883 = private unnamed_addr constant [11 x i8] c" br i1 %m\00" -@.str9884 = private unnamed_addr constant [11 x i8] c", label %g\00" -@.str9885 = private unnamed_addr constant [12 x i8] c", label %gn\00" -@.str9886 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9887 = private unnamed_addr constant [2 x i8] c"g\00" -@.str9888 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9889 = private unnamed_addr constant [5 x i8] c" %s\00" -@.str9890 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9891 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" -@.str9892 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" -@.str9893 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %e\0A\00" -@.str9894 = private unnamed_addr constant [2 x i8] c"_\00" -@.str9895 = private unnamed_addr constant [6 x i8] c" %sm\00" -@.str9896 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %f, \00" -@.str9897 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9898 = private unnamed_addr constant [12 x i8] c" br i1 %sm\00" -@.str9899 = private unnamed_addr constant [12 x i8] c", label %sf\00" -@.str9900 = private unnamed_addr constant [12 x i8] c", label %sk\00" -@.str9901 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9902 = private unnamed_addr constant [3 x i8] c"sf\00" -@.str9903 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9904 = private unnamed_addr constant [6 x i8] c" %sa\00" -@.str9905 = private unnamed_addr constant [32 x i8] c" = getelementptr inbounds %Cmp_\00" -@.str9906 = private unnamed_addr constant [9 x i8] c", ptr %s\00" -@.str9907 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str9908 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9909 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str9910 = private unnamed_addr constant [6 x i8] c" %sp\00" -@.str9911 = private unnamed_addr constant [29 x i8] c" = inttoptr i64 %val to ptr\0A\00" -@.str9912 = private unnamed_addr constant [16 x i8] c" store ptr %sp\00" -@.str9913 = private unnamed_addr constant [10 x i8] c", ptr %sa\00" -@.str9914 = private unnamed_addr constant [13 x i8] c"\0A ret void\0A\00" -@.str9915 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str9916 = private unnamed_addr constant [6 x i8] c" %sb\00" -@.str9917 = private unnamed_addr constant [25 x i8] c" = trunc i64 %val to i8\0A\00" -@.str9918 = private unnamed_addr constant [15 x i8] c" store i8 %sb\00" -@.str9919 = private unnamed_addr constant [10 x i8] c", ptr %sa\00" -@.str9920 = private unnamed_addr constant [13 x i8] c"\0A ret void\0A\00" -@.str9921 = private unnamed_addr constant [6 x i8] c" %sw\00" -@.str9922 = private unnamed_addr constant [26 x i8] c" = trunc i64 %val to i32\0A\00" -@.str9923 = private unnamed_addr constant [16 x i8] c" store i32 %sw\00" +@.str9645 = private unnamed_addr constant [4 x i8] c"evl\00" +@.str9646 = private unnamed_addr constant [4 x i8] c"evb\00" +@.str9647 = private unnamed_addr constant [4 x i8] c"evd\00" +@.str9648 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str9649 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9650 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9651 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str9652 = private unnamed_addr constant [20 x i8] c"load i32, ptr @evN_\00" +@.str9653 = private unnamed_addr constant [14 x i8] c"icmp slt i32 \00" +@.str9654 = private unnamed_addr constant [3 x i8] c", \00" +@.str9655 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str9656 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9657 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9658 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9659 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9660 = private unnamed_addr constant [3 x i8] c" \00" +@.str9661 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9662 = private unnamed_addr constant [19 x i8] c" x ptr], ptr @evL_\00" +@.str9663 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str9664 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9665 = private unnamed_addr constant [15 x i8] c"load ptr, ptr \00" +@.str9666 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" +@.str9667 = private unnamed_addr constant [7 x i8] c", null\00" +@.str9668 = private unnamed_addr constant [5 x i8] c"evdo\00" +@.str9669 = private unnamed_addr constant [5 x i8] c"evsk\00" +@.str9670 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str9671 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9672 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str9673 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9674 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9675 = private unnamed_addr constant [13 x i8] c" call void \00" +@.str9676 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str9677 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str9678 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str9679 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9680 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9681 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str9682 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str9683 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str9684 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str9685 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9686 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str9687 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9688 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9689 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" +@.str9690 = private unnamed_addr constant [6 x i8] c"ret:\0A\00" +@.str9691 = private unnamed_addr constant [97 x i8] c" %evdd = load i32, ptr @ev_depth\0A %evdd1 = sub i32 %evdd, 1\0A store i32 %evdd1, ptr @ev_depth\0A\00" +@.str9692 = private unnamed_addr constant [15 x i8] c"load i32, ptr \00" +@.str9693 = private unnamed_addr constant [11 x i8] c" ret i32 \00" +@.str9694 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9695 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" +@.str9696 = private unnamed_addr constant [5 x i8] c"void\00" +@.str9697 = private unnamed_addr constant [4 x i8] c"i32\00" +@.str9698 = private unnamed_addr constant [8 x i8] c"define \00" +@.str9699 = private unnamed_addr constant [6 x i8] c" @ev_\00" +@.str9700 = private unnamed_addr constant [2 x i8] c"(\00" +@.str9701 = private unnamed_addr constant [3 x i8] c", \00" +@.str9702 = private unnamed_addr constant [4 x i8] c" %p\00" +@.str9703 = private unnamed_addr constant [12 x i8] c") {\0Aentry:\0A\00" +@.str9704 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" +@.str9705 = private unnamed_addr constant [112 x i8] c"define void @ludic_sweep_entity(i32 %owner) {\0Aentry:\0A %ci = alloca i32\0A store i32 0, ptr %ci\0A br label %sw0\0A\00" +@.str9706 = private unnamed_addr constant [3 x i8] c"sw\00" +@.str9707 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9708 = private unnamed_addr constant [7 x i8] c" %swi\00" +@.str9709 = private unnamed_addr constant [22 x i8] c" = load i32, ptr %ci\0A\00" +@.str9710 = private unnamed_addr constant [7 x i8] c" %swn\00" +@.str9711 = private unnamed_addr constant [23 x i8] c" = load i32, ptr @evN_\00" +@.str9712 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9713 = private unnamed_addr constant [7 x i8] c" %swg\00" +@.str9714 = private unnamed_addr constant [21 x i8] c" = icmp slt i32 %swi\00" +@.str9715 = private unnamed_addr constant [7 x i8] c", %swn\00" +@.str9716 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9717 = private unnamed_addr constant [13 x i8] c" br i1 %swg\00" +@.str9718 = private unnamed_addr constant [13 x i8] c", label %swb\00" +@.str9719 = private unnamed_addr constant [13 x i8] c", label %swd\00" +@.str9720 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9721 = private unnamed_addr constant [4 x i8] c"swb\00" +@.str9722 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9723 = private unnamed_addr constant [8 x i8] c" %swop\00" +@.str9724 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9725 = private unnamed_addr constant [19 x i8] c" x i32], ptr @evO_\00" +@.str9726 = private unnamed_addr constant [18 x i8] c", i32 0, i32 %swi\00" +@.str9727 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9728 = private unnamed_addr constant [8 x i8] c" %swov\00" +@.str9729 = private unnamed_addr constant [23 x i8] c" = load i32, ptr %swop\00" +@.str9730 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9731 = private unnamed_addr constant [7 x i8] c" %swm\00" +@.str9732 = private unnamed_addr constant [21 x i8] c" = icmp eq i32 %swov\00" +@.str9733 = private unnamed_addr constant [10 x i8] c", %owner\0A\00" +@.str9734 = private unnamed_addr constant [13 x i8] c" br i1 %swm\00" +@.str9735 = private unnamed_addr constant [13 x i8] c", label %swh\00" +@.str9736 = private unnamed_addr constant [13 x i8] c", label %swx\00" +@.str9737 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9738 = private unnamed_addr constant [4 x i8] c"swh\00" +@.str9739 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9740 = private unnamed_addr constant [8 x i8] c" %swlp\00" +@.str9741 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9742 = private unnamed_addr constant [19 x i8] c" x ptr], ptr @evL_\00" +@.str9743 = private unnamed_addr constant [18 x i8] c", i32 0, i32 %swi\00" +@.str9744 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9745 = private unnamed_addr constant [28 x i8] c" store ptr null, ptr %swlp\00" +@.str9746 = private unnamed_addr constant [17 x i8] c"\0A br label %swx\00" +@.str9747 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9748 = private unnamed_addr constant [4 x i8] c"swx\00" +@.str9749 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9750 = private unnamed_addr constant [9 x i8] c" %swinc\00" +@.str9751 = private unnamed_addr constant [16 x i8] c" = add i32 %swi\00" +@.str9752 = private unnamed_addr constant [23 x i8] c", 1\0A store i32 %swinc\00" +@.str9753 = private unnamed_addr constant [25 x i8] c", ptr %ci\0A br label %sw\00" +@.str9754 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9755 = private unnamed_addr constant [4 x i8] c"swd\00" +@.str9756 = private unnamed_addr constant [26 x i8] c":\0A store i32 0, ptr %ci\0A\00" +@.str9757 = private unnamed_addr constant [15 x i8] c" br label %sw\00" +@.str9758 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9759 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" +@.str9760 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" +@.str9761 = private unnamed_addr constant [27 x i8] c"@dyn_count = global i32 0\0A\00" +@.str9762 = private unnamed_addr constant [43 x i8] c"@dynS = global [32 x ptr] zeroinitializer\0A\00" +@.str9763 = private unnamed_addr constant [43 x i8] c"@dynH = global [32 x ptr] zeroinitializer\0A\00" +@.str9764 = private unnamed_addr constant [43 x i8] c"@dynF = global [32 x i32] zeroinitializer\0A\00" +@.str9765 = private unnamed_addr constant [46 x i8] c"@dynName = global [32 x ptr] zeroinitializer\0A\00" +@.str9766 = private unnamed_addr constant [47 x i8] c"define i32 @ludic_prop_id(ptr %name) {\0Aentry:\0A\00" +@.str9767 = private unnamed_addr constant [5 x i8] c" %c\00" +@.str9768 = private unnamed_addr constant [36 x i8] c" = call i32 @strcmp(ptr %name, ptr \00" +@.str9769 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str9770 = private unnamed_addr constant [5 x i8] c" %e\00" +@.str9771 = private unnamed_addr constant [18 x i8] c" = icmp eq i32 %c\00" +@.str9772 = private unnamed_addr constant [5 x i8] c", 0\0A\00" +@.str9773 = private unnamed_addr constant [11 x i8] c" br i1 %e\00" +@.str9774 = private unnamed_addr constant [11 x i8] c", label %h\00" +@.str9775 = private unnamed_addr constant [11 x i8] c", label %n\00" +@.str9776 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9777 = private unnamed_addr constant [2 x i8] c"h\00" +@.str9778 = private unnamed_addr constant [13 x i8] c":\0A ret i32 \00" +@.str9779 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9780 = private unnamed_addr constant [2 x i8] c"n\00" +@.str9781 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9782 = private unnamed_addr constant [61 x i8] c" %dpi = alloca i32\0A store i32 0, ptr %dpi\0A br label %dpl\0A\00" +@.str9783 = private unnamed_addr constant [135 x i8] c"dpl:\0A %di = load i32, ptr %dpi\0A %dn = load i32, ptr @dyn_count\0A %dg = icmp slt i32 %di, %dn\0A br i1 %dg, label %dpb, label %dpnone\0A\00" +@.str9784 = private unnamed_addr constant [231 x i8] c"dpb:\0A %dnp = getelementptr inbounds [32 x ptr], ptr @dynName, i32 0, i32 %di\0A %dname = load ptr, ptr %dnp\0A %dcmp = call i32 @strcmp(ptr %name, ptr %dname)\0A %deq = icmp eq i32 %dcmp, 0\0A br i1 %deq, label %dphit, label %dpnext\0A\00" +@.str9785 = private unnamed_addr constant [31 x i8] c"dphit:\0A %drid = add i32 %di, \00" +@.str9786 = private unnamed_addr constant [18 x i8] c"\0A ret i32 %drid\0A\00" +@.str9787 = private unnamed_addr constant [76 x i8] c"dpnext:\0A %di1 = add i32 %di, 1\0A store i32 %di1, ptr %dpi\0A br label %dpl\0A\00" +@.str9788 = private unnamed_addr constant [25 x i8] c"dpnone:\0A ret i32 -1\0A}\0A\0A\00" +@.str9789 = private unnamed_addr constant [56 x i8] c"define i32 @ludic_field_id(i32 %p, ptr %name) {\0Aentry:\0A\00" +@.str9790 = private unnamed_addr constant [6 x i8] c" %pm\00" +@.str9791 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %p, \00" +@.str9792 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9793 = private unnamed_addr constant [12 x i8] c" br i1 %pm\00" +@.str9794 = private unnamed_addr constant [12 x i8] c", label %pk\00" +@.str9795 = private unnamed_addr constant [12 x i8] c", label %pn\00" +@.str9796 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9797 = private unnamed_addr constant [3 x i8] c"pk\00" +@.str9798 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9799 = private unnamed_addr constant [2 x i8] c"_\00" +@.str9800 = private unnamed_addr constant [6 x i8] c" %fc\00" +@.str9801 = private unnamed_addr constant [36 x i8] c" = call i32 @strcmp(ptr %name, ptr \00" +@.str9802 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str9803 = private unnamed_addr constant [6 x i8] c" %fe\00" +@.str9804 = private unnamed_addr constant [19 x i8] c" = icmp eq i32 %fc\00" +@.str9805 = private unnamed_addr constant [5 x i8] c", 0\0A\00" +@.str9806 = private unnamed_addr constant [12 x i8] c" br i1 %fe\00" +@.str9807 = private unnamed_addr constant [12 x i8] c", label %fh\00" +@.str9808 = private unnamed_addr constant [12 x i8] c", label %fn\00" +@.str9809 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9810 = private unnamed_addr constant [3 x i8] c"fh\00" +@.str9811 = private unnamed_addr constant [13 x i8] c":\0A ret i32 \00" +@.str9812 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9813 = private unnamed_addr constant [3 x i8] c"fn\00" +@.str9814 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9815 = private unnamed_addr constant [14 x i8] c" ret i32 -1\0A\00" +@.str9816 = private unnamed_addr constant [3 x i8] c"pn\00" +@.str9817 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9818 = private unnamed_addr constant [17 x i8] c" ret i32 -1\0A}\0A\0A\00" +@.str9819 = private unnamed_addr constant [56 x i8] c"define i64 @ludic_get(i32 %e, i32 %p, i32 %f) {\0Aentry:\0A\00" +@.str9820 = private unnamed_addr constant [5 x i8] c" %m\00" +@.str9821 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %p, \00" +@.str9822 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9823 = private unnamed_addr constant [11 x i8] c" br i1 %m\00" +@.str9824 = private unnamed_addr constant [11 x i8] c", label %g\00" +@.str9825 = private unnamed_addr constant [12 x i8] c", label %gn\00" +@.str9826 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9827 = private unnamed_addr constant [2 x i8] c"g\00" +@.str9828 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9829 = private unnamed_addr constant [5 x i8] c" %s\00" +@.str9830 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9831 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" +@.str9832 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" +@.str9833 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %e\0A\00" +@.str9834 = private unnamed_addr constant [2 x i8] c"_\00" +@.str9835 = private unnamed_addr constant [6 x i8] c" %gm\00" +@.str9836 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %f, \00" +@.str9837 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9838 = private unnamed_addr constant [12 x i8] c" br i1 %gm\00" +@.str9839 = private unnamed_addr constant [12 x i8] c", label %gf\00" +@.str9840 = private unnamed_addr constant [12 x i8] c", label %gk\00" +@.str9841 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9842 = private unnamed_addr constant [3 x i8] c"gf\00" +@.str9843 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9844 = private unnamed_addr constant [6 x i8] c" %ga\00" +@.str9845 = private unnamed_addr constant [32 x i8] c" = getelementptr inbounds %Cmp_\00" +@.str9846 = private unnamed_addr constant [9 x i8] c", ptr %s\00" +@.str9847 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str9848 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9849 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str9850 = private unnamed_addr constant [6 x i8] c" %gl\00" +@.str9851 = private unnamed_addr constant [21 x i8] c" = load ptr, ptr %ga\00" +@.str9852 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9853 = private unnamed_addr constant [6 x i8] c" %gr\00" +@.str9854 = private unnamed_addr constant [20 x i8] c" = ptrtoint ptr %gl\00" +@.str9855 = private unnamed_addr constant [22 x i8] c" to i64\0A ret i64 %gr\00" +@.str9856 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9857 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str9858 = private unnamed_addr constant [6 x i8] c" %gl\00" +@.str9859 = private unnamed_addr constant [20 x i8] c" = load i8, ptr %ga\00" +@.str9860 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9861 = private unnamed_addr constant [6 x i8] c" %gr\00" +@.str9862 = private unnamed_addr constant [15 x i8] c" = zext i8 %gl\00" +@.str9863 = private unnamed_addr constant [22 x i8] c" to i64\0A ret i64 %gr\00" +@.str9864 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9865 = private unnamed_addr constant [6 x i8] c" %gl\00" +@.str9866 = private unnamed_addr constant [21 x i8] c" = load i32, ptr %ga\00" +@.str9867 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9868 = private unnamed_addr constant [6 x i8] c" %gr\00" +@.str9869 = private unnamed_addr constant [16 x i8] c" = sext i32 %gl\00" +@.str9870 = private unnamed_addr constant [22 x i8] c" to i64\0A ret i64 %gr\00" +@.str9871 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9872 = private unnamed_addr constant [3 x i8] c"gk\00" +@.str9873 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9874 = private unnamed_addr constant [13 x i8] c" ret i64 0\0A\00" +@.str9875 = private unnamed_addr constant [3 x i8] c"gn\00" +@.str9876 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9877 = private unnamed_addr constant [23 x i8] c" %gdyn = sub i32 %p, \00" +@.str9878 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9879 = private unnamed_addr constant [175 x i8] c" %gdlo = icmp sge i32 %gdyn, 0\0A %gdc = load i32, ptr @dyn_count\0A %gdhi = icmp slt i32 %gdyn, %gdc\0A %gdok = and i1 %gdlo, %gdhi\0A br i1 %gdok, label %gdyng, label %gdnone\0A\00" +@.str9880 = private unnamed_addr constant [110 x i8] c"gdyng:\0A %gsp = getelementptr inbounds [32 x ptr], ptr @dynS, i32 0, i32 %gdyn\0A %gbase = load ptr, ptr %gsp\0A\00" +@.str9881 = private unnamed_addr constant [156 x i8] c" %gfp = getelementptr inbounds [32 x i32], ptr @dynF, i32 0, i32 %gdyn\0A %gnf = load i32, ptr %gfp\0A %grow = mul i32 %e, %gnf\0A %gidx = add i32 %grow, %f\0A\00" +@.str9882 = private unnamed_addr constant [133 x i8] c" %gaddr = getelementptr inbounds i32, ptr %gbase, i32 %gidx\0A %gv = load i32, ptr %gaddr\0A %gr = sext i32 %gv to i64\0A ret i64 %gr\0A\00" +@.str9883 = private unnamed_addr constant [24 x i8] c"gdnone:\0A ret i64 0\0A}\0A\0A\00" +@.str9884 = private unnamed_addr constant [67 x i8] c"define void @ludic_set(i32 %e, i32 %p, i32 %f, i64 %val) {\0Aentry:\0A\00" +@.str9885 = private unnamed_addr constant [5 x i8] c" %m\00" +@.str9886 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %p, \00" +@.str9887 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9888 = private unnamed_addr constant [11 x i8] c" br i1 %m\00" +@.str9889 = private unnamed_addr constant [11 x i8] c", label %g\00" +@.str9890 = private unnamed_addr constant [12 x i8] c", label %gn\00" +@.str9891 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9892 = private unnamed_addr constant [2 x i8] c"g\00" +@.str9893 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9894 = private unnamed_addr constant [5 x i8] c" %s\00" +@.str9895 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9896 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" +@.str9897 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" +@.str9898 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %e\0A\00" +@.str9899 = private unnamed_addr constant [2 x i8] c"_\00" +@.str9900 = private unnamed_addr constant [6 x i8] c" %sm\00" +@.str9901 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %f, \00" +@.str9902 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9903 = private unnamed_addr constant [12 x i8] c" br i1 %sm\00" +@.str9904 = private unnamed_addr constant [12 x i8] c", label %sf\00" +@.str9905 = private unnamed_addr constant [12 x i8] c", label %sk\00" +@.str9906 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9907 = private unnamed_addr constant [3 x i8] c"sf\00" +@.str9908 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9909 = private unnamed_addr constant [6 x i8] c" %sa\00" +@.str9910 = private unnamed_addr constant [32 x i8] c" = getelementptr inbounds %Cmp_\00" +@.str9911 = private unnamed_addr constant [9 x i8] c", ptr %s\00" +@.str9912 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str9913 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9914 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str9915 = private unnamed_addr constant [6 x i8] c" %sp\00" +@.str9916 = private unnamed_addr constant [29 x i8] c" = inttoptr i64 %val to ptr\0A\00" +@.str9917 = private unnamed_addr constant [16 x i8] c" store ptr %sp\00" +@.str9918 = private unnamed_addr constant [10 x i8] c", ptr %sa\00" +@.str9919 = private unnamed_addr constant [13 x i8] c"\0A ret void\0A\00" +@.str9920 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str9921 = private unnamed_addr constant [6 x i8] c" %sb\00" +@.str9922 = private unnamed_addr constant [25 x i8] c" = trunc i64 %val to i8\0A\00" +@.str9923 = private unnamed_addr constant [15 x i8] c" store i8 %sb\00" @.str9924 = private unnamed_addr constant [10 x i8] c", ptr %sa\00" @.str9925 = private unnamed_addr constant [13 x i8] c"\0A ret void\0A\00" -@.str9926 = private unnamed_addr constant [3 x i8] c"sk\00" -@.str9927 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9928 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" -@.str9929 = private unnamed_addr constant [3 x i8] c"gn\00" -@.str9930 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9931 = private unnamed_addr constant [23 x i8] c" %sdyn = sub i32 %p, \00" -@.str9932 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9933 = private unnamed_addr constant [175 x i8] c" %sdlo = icmp sge i32 %sdyn, 0\0A %sdc = load i32, ptr @dyn_count\0A %sdhi = icmp slt i32 %sdyn, %sdc\0A %sdok = and i1 %sdlo, %sdhi\0A br i1 %sdok, label %sdyng, label %sdnone\0A\00" -@.str9934 = private unnamed_addr constant [110 x i8] c"sdyng:\0A %ssp = getelementptr inbounds [32 x ptr], ptr @dynS, i32 0, i32 %sdyn\0A %sbase = load ptr, ptr %ssp\0A\00" -@.str9935 = private unnamed_addr constant [156 x i8] c" %sfp = getelementptr inbounds [32 x i32], ptr @dynF, i32 0, i32 %sdyn\0A %snf = load i32, ptr %sfp\0A %srow = mul i32 %e, %snf\0A %sidx = add i32 %srow, %f\0A\00" -@.str9936 = private unnamed_addr constant [131 x i8] c" %saddr = getelementptr inbounds i32, ptr %sbase, i32 %sidx\0A %sv = trunc i64 %val to i32\0A store i32 %sv, ptr %saddr\0A ret void\0A\00" -@.str9937 = private unnamed_addr constant [23 x i8] c"sdnone:\0A ret void\0A}\0A\0A\00" -@.str9938 = private unnamed_addr constant [48 x i8] c"define i32 @ludic_has(i32 %e, i32 %p) {\0Aentry:\0A\00" -@.str9939 = private unnamed_addr constant [5 x i8] c" %m\00" -@.str9940 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %p, \00" -@.str9941 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9942 = private unnamed_addr constant [11 x i8] c" br i1 %m\00" -@.str9943 = private unnamed_addr constant [11 x i8] c", label %g\00" -@.str9944 = private unnamed_addr constant [12 x i8] c", label %gn\00" -@.str9945 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9946 = private unnamed_addr constant [2 x i8] c"g\00" -@.str9947 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9948 = private unnamed_addr constant [6 x i8] c" %hp\00" -@.str9949 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str9950 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" -@.str9951 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %e\0A\00" -@.str9952 = private unnamed_addr constant [6 x i8] c" %hv\00" -@.str9953 = private unnamed_addr constant [20 x i8] c" = load i8, ptr %hp\00" -@.str9954 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9955 = private unnamed_addr constant [6 x i8] c" %hr\00" -@.str9956 = private unnamed_addr constant [15 x i8] c" = zext i8 %hv\00" -@.str9957 = private unnamed_addr constant [22 x i8] c" to i32\0A ret i32 %hr\00" -@.str9958 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9959 = private unnamed_addr constant [3 x i8] c"gn\00" -@.str9960 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str9961 = private unnamed_addr constant [23 x i8] c" %hdyn = sub i32 %p, \00" -@.str9962 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str9963 = private unnamed_addr constant [175 x i8] c" %hdlo = icmp sge i32 %hdyn, 0\0A %hdc = load i32, ptr @dyn_count\0A %hdhi = icmp slt i32 %hdyn, %hdc\0A %hdok = and i1 %hdlo, %hdhi\0A br i1 %hdok, label %hdyng, label %hdnone\0A\00" -@.str9964 = private unnamed_addr constant [238 x i8] c"hdyng:\0A %hhp = getelementptr inbounds [32 x ptr], ptr @dynH, i32 0, i32 %hdyn\0A %hh = load ptr, ptr %hhp\0A %hslot = getelementptr inbounds i8, ptr %hh, i32 %e\0A %hval = load i8, ptr %hslot\0A %hres = zext i8 %hval to i32\0A ret i32 %hres\0A\00" -@.str9965 = private unnamed_addr constant [24 x i8] c"hdnone:\0A ret i32 0\0A}\0A\0A\00" -@.str9966 = private unnamed_addr constant [67 x i8] c"define i32 @ludic_register_prop(ptr %name, i32 %nfields) {\0Aentry:\0A\00" -@.str9967 = private unnamed_addr constant [102 x i8] c" %dc = load i32, ptr @dyn_count\0A %full = icmp slt i32 %dc, 32\0A br i1 %full, label %do, label %rej\0A\00" -@.str9968 = private unnamed_addr constant [56 x i8] c"do:\0A %nf4 = mul i32 %nfields, 4\0A %sz = mul i32 %nf4, \00" -@.str9969 = private unnamed_addr constant [31 x i8] c"\0A %szl = sext i32 %sz to i64\0A\00" -@.str9970 = private unnamed_addr constant [83 x i8] c" %buf = call ptr @malloc(i64 %szl)\0A call ptr @memset(ptr %buf, i32 0, i64 %szl)\0A\00" -@.str9971 = private unnamed_addr constant [96 x i8] c" %sp = getelementptr inbounds [32 x ptr], ptr @dynS, i32 0, i32 %dc\0A store ptr %buf, ptr %sp\0A\00" -@.str9972 = private unnamed_addr constant [32 x i8] c" %hbuf = call ptr @malloc(i64 \00" -@.str9973 = private unnamed_addr constant [44 x i8] c")\0A call ptr @memset(ptr %hbuf, i32 0, i64 \00" -@.str9974 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str9975 = private unnamed_addr constant [97 x i8] c" %hp = getelementptr inbounds [32 x ptr], ptr @dynH, i32 0, i32 %dc\0A store ptr %hbuf, ptr %hp\0A\00" -@.str9976 = private unnamed_addr constant [100 x i8] c" %fp = getelementptr inbounds [32 x i32], ptr @dynF, i32 0, i32 %dc\0A store i32 %nfields, ptr %fp\0A\00" -@.str9977 = private unnamed_addr constant [100 x i8] c" %np = getelementptr inbounds [32 x ptr], ptr @dynName, i32 0, i32 %dc\0A store ptr %name, ptr %np\0A\00" -@.str9978 = private unnamed_addr constant [22 x i8] c" %id = add i32 %dc, \00" -@.str9979 = private unnamed_addr constant [73 x i8] c"\0A %dc1 = add i32 %dc, 1\0A store i32 %dc1, ptr @dyn_count\0A ret i32 %id\0A\00" -@.str9980 = private unnamed_addr constant [22 x i8] c"rej:\0A ret i32 -1\0A}\0A\0A\00" -@.str9981 = private unnamed_addr constant [56 x i8] c"define void @ludic_attach_dyn(i32 %e, i32 %p) {\0Aentry:\0A\00" -@.str9982 = private unnamed_addr constant [22 x i8] c" %dyn = sub i32 %p, \00" -@.str9983 = private unnamed_addr constant [187 x i8] c"\0A %hp = getelementptr inbounds [32 x ptr], ptr @dynH, i32 0, i32 %dyn\0A %h = load ptr, ptr %hp\0A %slot = getelementptr inbounds i8, ptr %h, i32 %e\0A store i8 1, ptr %slot\0A ret void\0A}\0A\0A\00" -@.str9984 = private unnamed_addr constant [56 x i8] c"define void @ludic_detach_dyn(i32 %e, i32 %p) {\0Aentry:\0A\00" -@.str9985 = private unnamed_addr constant [22 x i8] c" %dyn = sub i32 %p, \00" -@.str9986 = private unnamed_addr constant [187 x i8] c"\0A %hp = getelementptr inbounds [32 x ptr], ptr @dynH, i32 0, i32 %dyn\0A %h = load ptr, ptr %hp\0A %slot = getelementptr inbounds i8, ptr %h, i32 %e\0A store i8 0, ptr %slot\0A ret void\0A}\0A\0A\00" -@.str9987 = private unnamed_addr constant [88 x i8] c"define i32 @ludic_entity_count() {\0Aentry:\0A %n = load i32, ptr @L_entc\0A ret i32 %n\0A}\0A\0A\00" -@.str9988 = private unnamed_addr constant [41 x i8] c"define i32 @ludic_kind(i32 %e) {\0Aentry:\0A\00" -@.str9989 = private unnamed_addr constant [33 x i8] c" %kp = getelementptr inbounds [\00" -@.str9990 = private unnamed_addr constant [37 x i8] c" x i32], ptr @L_kind, i32 0, i32 %e\0A\00" -@.str9991 = private unnamed_addr constant [42 x i8] c" %k = load i32, ptr %kp\0A ret i32 %k\0A}\0A\0A\00" -@.str9992 = private unnamed_addr constant [48 x i8] c"define i32 @ludic_model_id(ptr %name) {\0Aentry:\0A\00" -@.str9993 = private unnamed_addr constant [7 x i8] c" %mdc\00" -@.str9994 = private unnamed_addr constant [36 x i8] c" = call i32 @strcmp(ptr %name, ptr \00" -@.str9995 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str9996 = private unnamed_addr constant [7 x i8] c" %mde\00" -@.str9997 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %mdc\00" -@.str9998 = private unnamed_addr constant [5 x i8] c", 0\0A\00" -@.str9999 = private unnamed_addr constant [13 x i8] c" br i1 %mde\00" -@.str10000 = private unnamed_addr constant [13 x i8] c", label %mdh\00" -@.str10001 = private unnamed_addr constant [13 x i8] c", label %mdn\00" -@.str10002 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10003 = private unnamed_addr constant [4 x i8] c"mdh\00" -@.str10004 = private unnamed_addr constant [13 x i8] c":\0A ret i32 \00" -@.str10005 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10006 = private unnamed_addr constant [4 x i8] c"mdn\00" -@.str10007 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10008 = private unnamed_addr constant [17 x i8] c" ret i32 -1\0A}\0A\0A\00" -@.str10009 = private unnamed_addr constant [4 x i8] c"int\00" -@.str10010 = private unnamed_addr constant [11 x i8] c" ret i32 \00" -@.str10011 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10012 = private unnamed_addr constant [25 x i8] c"define i32 @ludic_spawn_\00" -@.str10013 = private unnamed_addr constant [13 x i8] c"() {\0Aentry:\0A\00" -@.str10014 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" -@.str10015 = private unnamed_addr constant [42 x i8] c"define i32 @ludic_spawn(i32 %m) {\0Aentry:\0A\00" -@.str10016 = private unnamed_addr constant [6 x i8] c" %sm\00" -@.str10017 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %m, \00" -@.str10018 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10019 = private unnamed_addr constant [12 x i8] c" br i1 %sm\00" -@.str10020 = private unnamed_addr constant [12 x i8] c", label %sh\00" -@.str10021 = private unnamed_addr constant [12 x i8] c", label %sn\00" -@.str10022 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10023 = private unnamed_addr constant [3 x i8] c"sh\00" -@.str10024 = private unnamed_addr constant [8 x i8] c":\0A %sr\00" -@.str10025 = private unnamed_addr constant [26 x i8] c" = call i32 @ludic_spawn_\00" -@.str10026 = private unnamed_addr constant [17 x i8] c"()\0A ret i32 %sr\00" +@.str9926 = private unnamed_addr constant [6 x i8] c" %sw\00" +@.str9927 = private unnamed_addr constant [26 x i8] c" = trunc i64 %val to i32\0A\00" +@.str9928 = private unnamed_addr constant [16 x i8] c" store i32 %sw\00" +@.str9929 = private unnamed_addr constant [10 x i8] c", ptr %sa\00" +@.str9930 = private unnamed_addr constant [13 x i8] c"\0A ret void\0A\00" +@.str9931 = private unnamed_addr constant [3 x i8] c"sk\00" +@.str9932 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9933 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" +@.str9934 = private unnamed_addr constant [3 x i8] c"gn\00" +@.str9935 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9936 = private unnamed_addr constant [23 x i8] c" %sdyn = sub i32 %p, \00" +@.str9937 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9938 = private unnamed_addr constant [175 x i8] c" %sdlo = icmp sge i32 %sdyn, 0\0A %sdc = load i32, ptr @dyn_count\0A %sdhi = icmp slt i32 %sdyn, %sdc\0A %sdok = and i1 %sdlo, %sdhi\0A br i1 %sdok, label %sdyng, label %sdnone\0A\00" +@.str9939 = private unnamed_addr constant [110 x i8] c"sdyng:\0A %ssp = getelementptr inbounds [32 x ptr], ptr @dynS, i32 0, i32 %sdyn\0A %sbase = load ptr, ptr %ssp\0A\00" +@.str9940 = private unnamed_addr constant [156 x i8] c" %sfp = getelementptr inbounds [32 x i32], ptr @dynF, i32 0, i32 %sdyn\0A %snf = load i32, ptr %sfp\0A %srow = mul i32 %e, %snf\0A %sidx = add i32 %srow, %f\0A\00" +@.str9941 = private unnamed_addr constant [131 x i8] c" %saddr = getelementptr inbounds i32, ptr %sbase, i32 %sidx\0A %sv = trunc i64 %val to i32\0A store i32 %sv, ptr %saddr\0A ret void\0A\00" +@.str9942 = private unnamed_addr constant [23 x i8] c"sdnone:\0A ret void\0A}\0A\0A\00" +@.str9943 = private unnamed_addr constant [48 x i8] c"define i32 @ludic_has(i32 %e, i32 %p) {\0Aentry:\0A\00" +@.str9944 = private unnamed_addr constant [5 x i8] c" %m\00" +@.str9945 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %p, \00" +@.str9946 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9947 = private unnamed_addr constant [11 x i8] c" br i1 %m\00" +@.str9948 = private unnamed_addr constant [11 x i8] c", label %g\00" +@.str9949 = private unnamed_addr constant [12 x i8] c", label %gn\00" +@.str9950 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9951 = private unnamed_addr constant [2 x i8] c"g\00" +@.str9952 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9953 = private unnamed_addr constant [6 x i8] c" %hp\00" +@.str9954 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str9955 = private unnamed_addr constant [16 x i8] c" x i8], ptr @H_\00" +@.str9956 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %e\0A\00" +@.str9957 = private unnamed_addr constant [6 x i8] c" %hv\00" +@.str9958 = private unnamed_addr constant [20 x i8] c" = load i8, ptr %hp\00" +@.str9959 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9960 = private unnamed_addr constant [6 x i8] c" %hr\00" +@.str9961 = private unnamed_addr constant [15 x i8] c" = zext i8 %hv\00" +@.str9962 = private unnamed_addr constant [22 x i8] c" to i32\0A ret i32 %hr\00" +@.str9963 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9964 = private unnamed_addr constant [3 x i8] c"gn\00" +@.str9965 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str9966 = private unnamed_addr constant [23 x i8] c" %hdyn = sub i32 %p, \00" +@.str9967 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str9968 = private unnamed_addr constant [175 x i8] c" %hdlo = icmp sge i32 %hdyn, 0\0A %hdc = load i32, ptr @dyn_count\0A %hdhi = icmp slt i32 %hdyn, %hdc\0A %hdok = and i1 %hdlo, %hdhi\0A br i1 %hdok, label %hdyng, label %hdnone\0A\00" +@.str9969 = private unnamed_addr constant [238 x i8] c"hdyng:\0A %hhp = getelementptr inbounds [32 x ptr], ptr @dynH, i32 0, i32 %hdyn\0A %hh = load ptr, ptr %hhp\0A %hslot = getelementptr inbounds i8, ptr %hh, i32 %e\0A %hval = load i8, ptr %hslot\0A %hres = zext i8 %hval to i32\0A ret i32 %hres\0A\00" +@.str9970 = private unnamed_addr constant [24 x i8] c"hdnone:\0A ret i32 0\0A}\0A\0A\00" +@.str9971 = private unnamed_addr constant [67 x i8] c"define i32 @ludic_register_prop(ptr %name, i32 %nfields) {\0Aentry:\0A\00" +@.str9972 = private unnamed_addr constant [102 x i8] c" %dc = load i32, ptr @dyn_count\0A %full = icmp slt i32 %dc, 32\0A br i1 %full, label %do, label %rej\0A\00" +@.str9973 = private unnamed_addr constant [56 x i8] c"do:\0A %nf4 = mul i32 %nfields, 4\0A %sz = mul i32 %nf4, \00" +@.str9974 = private unnamed_addr constant [31 x i8] c"\0A %szl = sext i32 %sz to i64\0A\00" +@.str9975 = private unnamed_addr constant [83 x i8] c" %buf = call ptr @malloc(i64 %szl)\0A call ptr @memset(ptr %buf, i32 0, i64 %szl)\0A\00" +@.str9976 = private unnamed_addr constant [96 x i8] c" %sp = getelementptr inbounds [32 x ptr], ptr @dynS, i32 0, i32 %dc\0A store ptr %buf, ptr %sp\0A\00" +@.str9977 = private unnamed_addr constant [32 x i8] c" %hbuf = call ptr @malloc(i64 \00" +@.str9978 = private unnamed_addr constant [44 x i8] c")\0A call ptr @memset(ptr %hbuf, i32 0, i64 \00" +@.str9979 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str9980 = private unnamed_addr constant [97 x i8] c" %hp = getelementptr inbounds [32 x ptr], ptr @dynH, i32 0, i32 %dc\0A store ptr %hbuf, ptr %hp\0A\00" +@.str9981 = private unnamed_addr constant [100 x i8] c" %fp = getelementptr inbounds [32 x i32], ptr @dynF, i32 0, i32 %dc\0A store i32 %nfields, ptr %fp\0A\00" +@.str9982 = private unnamed_addr constant [100 x i8] c" %np = getelementptr inbounds [32 x ptr], ptr @dynName, i32 0, i32 %dc\0A store ptr %name, ptr %np\0A\00" +@.str9983 = private unnamed_addr constant [22 x i8] c" %id = add i32 %dc, \00" +@.str9984 = private unnamed_addr constant [73 x i8] c"\0A %dc1 = add i32 %dc, 1\0A store i32 %dc1, ptr @dyn_count\0A ret i32 %id\0A\00" +@.str9985 = private unnamed_addr constant [22 x i8] c"rej:\0A ret i32 -1\0A}\0A\0A\00" +@.str9986 = private unnamed_addr constant [56 x i8] c"define void @ludic_attach_dyn(i32 %e, i32 %p) {\0Aentry:\0A\00" +@.str9987 = private unnamed_addr constant [22 x i8] c" %dyn = sub i32 %p, \00" +@.str9988 = private unnamed_addr constant [187 x i8] c"\0A %hp = getelementptr inbounds [32 x ptr], ptr @dynH, i32 0, i32 %dyn\0A %h = load ptr, ptr %hp\0A %slot = getelementptr inbounds i8, ptr %h, i32 %e\0A store i8 1, ptr %slot\0A ret void\0A}\0A\0A\00" +@.str9989 = private unnamed_addr constant [56 x i8] c"define void @ludic_detach_dyn(i32 %e, i32 %p) {\0Aentry:\0A\00" +@.str9990 = private unnamed_addr constant [22 x i8] c" %dyn = sub i32 %p, \00" +@.str9991 = private unnamed_addr constant [187 x i8] c"\0A %hp = getelementptr inbounds [32 x ptr], ptr @dynH, i32 0, i32 %dyn\0A %h = load ptr, ptr %hp\0A %slot = getelementptr inbounds i8, ptr %h, i32 %e\0A store i8 0, ptr %slot\0A ret void\0A}\0A\0A\00" +@.str9992 = private unnamed_addr constant [88 x i8] c"define i32 @ludic_entity_count() {\0Aentry:\0A %n = load i32, ptr @L_entc\0A ret i32 %n\0A}\0A\0A\00" +@.str9993 = private unnamed_addr constant [41 x i8] c"define i32 @ludic_kind(i32 %e) {\0Aentry:\0A\00" +@.str9994 = private unnamed_addr constant [33 x i8] c" %kp = getelementptr inbounds [\00" +@.str9995 = private unnamed_addr constant [37 x i8] c" x i32], ptr @L_kind, i32 0, i32 %e\0A\00" +@.str9996 = private unnamed_addr constant [42 x i8] c" %k = load i32, ptr %kp\0A ret i32 %k\0A}\0A\0A\00" +@.str9997 = private unnamed_addr constant [48 x i8] c"define i32 @ludic_model_id(ptr %name) {\0Aentry:\0A\00" +@.str9998 = private unnamed_addr constant [7 x i8] c" %mdc\00" +@.str9999 = private unnamed_addr constant [36 x i8] c" = call i32 @strcmp(ptr %name, ptr \00" +@.str10000 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10001 = private unnamed_addr constant [7 x i8] c" %mde\00" +@.str10002 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %mdc\00" +@.str10003 = private unnamed_addr constant [5 x i8] c", 0\0A\00" +@.str10004 = private unnamed_addr constant [13 x i8] c" br i1 %mde\00" +@.str10005 = private unnamed_addr constant [13 x i8] c", label %mdh\00" +@.str10006 = private unnamed_addr constant [13 x i8] c", label %mdn\00" +@.str10007 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10008 = private unnamed_addr constant [4 x i8] c"mdh\00" +@.str10009 = private unnamed_addr constant [13 x i8] c":\0A ret i32 \00" +@.str10010 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10011 = private unnamed_addr constant [4 x i8] c"mdn\00" +@.str10012 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10013 = private unnamed_addr constant [17 x i8] c" ret i32 -1\0A}\0A\0A\00" +@.str10014 = private unnamed_addr constant [4 x i8] c"int\00" +@.str10015 = private unnamed_addr constant [11 x i8] c" ret i32 \00" +@.str10016 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10017 = private unnamed_addr constant [25 x i8] c"define i32 @ludic_spawn_\00" +@.str10018 = private unnamed_addr constant [13 x i8] c"() {\0Aentry:\0A\00" +@.str10019 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" +@.str10020 = private unnamed_addr constant [42 x i8] c"define i32 @ludic_spawn(i32 %m) {\0Aentry:\0A\00" +@.str10021 = private unnamed_addr constant [6 x i8] c" %sm\00" +@.str10022 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %m, \00" +@.str10023 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10024 = private unnamed_addr constant [12 x i8] c" br i1 %sm\00" +@.str10025 = private unnamed_addr constant [12 x i8] c", label %sh\00" +@.str10026 = private unnamed_addr constant [12 x i8] c", label %sn\00" @.str10027 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10028 = private unnamed_addr constant [3 x i8] c"sn\00" -@.str10029 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10030 = private unnamed_addr constant [17 x i8] c" ret i32 -1\0A}\0A\0A\00" -@.str10031 = private unnamed_addr constant [58 x i8] c"define i32 @ludic_query_next(i32 %p, i32 %from) {\0Aentry:\0A\00" -@.str10032 = private unnamed_addr constant [47 x i8] c" %n = load i32, ptr @L_entc\0A br label %loop\0A\00" -@.str10033 = private unnamed_addr constant [56 x i8] c"loop:\0A %e = phi i32 [ %from, %entry ], [ %e1, %cont ]\0A\00" -@.str10034 = private unnamed_addr constant [67 x i8] c" %go = icmp slt i32 %e, %n\0A br i1 %go, label %body, label %none\0A\00" -@.str10035 = private unnamed_addr constant [39 x i8] c"body:\0A %ap = getelementptr inbounds [\00" -@.str10036 = private unnamed_addr constant [38 x i8] c" x i32], ptr @L_alive, i32 0, i32 %e\0A\00" -@.str10037 = private unnamed_addr constant [93 x i8] c" %al = load i32, ptr %ap\0A %isa = icmp ne i32 %al, 0\0A br i1 %isa, label %chk, label %cont\0A\00" -@.str10038 = private unnamed_addr constant [115 x i8] c"chk:\0A %h = call i32 @ludic_has(i32 %e, i32 %p)\0A %hit = icmp ne i32 %h, 0\0A br i1 %hit, label %hitb, label %cont\0A\00" -@.str10039 = private unnamed_addr constant [20 x i8] c"hitb:\0A ret i32 %e\0A\00" -@.str10040 = private unnamed_addr constant [46 x i8] c"cont:\0A %e1 = add i32 %e, 1\0A br label %loop\0A\00" -@.str10041 = private unnamed_addr constant [23 x i8] c"none:\0A ret i32 -1\0A}\0A\0A\00" -@.str10042 = private unnamed_addr constant [1 x i8] c"\00" -@.str10043 = private unnamed_addr constant [4 x i8] c"int\00" -@.str10044 = private unnamed_addr constant [41 x i8] c"define i32 @ludic_prop_count() {\0Aentry:\0A\00" -@.str10045 = private unnamed_addr constant [52 x i8] c" %d = load i32, ptr @dyn_count\0A %n = add i32 %d, \00" -@.str10046 = private unnamed_addr constant [18 x i8] c"\0A ret i32 %n\0A}\0A\0A\00" -@.str10047 = private unnamed_addr constant [46 x i8] c"define ptr @ludic_prop_name(i32 %i) {\0Aentry:\0A\00" -@.str10048 = private unnamed_addr constant [6 x i8] c" %pe\00" -@.str10049 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %i, \00" -@.str10050 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10051 = private unnamed_addr constant [12 x i8] c" br i1 %pe\00" -@.str10052 = private unnamed_addr constant [12 x i8] c", label %ph\00" -@.str10053 = private unnamed_addr constant [12 x i8] c", label %pn\00" -@.str10054 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10055 = private unnamed_addr constant [3 x i8] c"ph\00" -@.str10056 = private unnamed_addr constant [13 x i8] c":\0A ret ptr \00" -@.str10057 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10058 = private unnamed_addr constant [3 x i8] c"pn\00" -@.str10059 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10060 = private unnamed_addr constant [22 x i8] c" %dyn = sub i32 %i, \00" -@.str10061 = private unnamed_addr constant [35 x i8] c"\0A %dc = load i32, ptr @dyn_count\0A\00" -@.str10062 = private unnamed_addr constant [70 x i8] c" %ib = icmp uge i32 %dyn, %dc\0A br i1 %ib, label %pbad, label %pdyn\0A\00" -@.str10063 = private unnamed_addr constant [120 x i8] c"pdyn:\0A %np = getelementptr inbounds [32 x ptr], ptr @dynName, i32 0, i32 %dyn\0A %nm = load ptr, ptr %np\0A ret ptr %nm\0A\00" -@.str10064 = private unnamed_addr constant [17 x i8] c"pbad:\0A ret ptr \00" -@.str10065 = private unnamed_addr constant [5 x i8] c"\0A}\0A\0A\00" -@.str10066 = private unnamed_addr constant [48 x i8] c"define i32 @ludic_field_count(i32 %p) {\0Aentry:\0A\00" -@.str10067 = private unnamed_addr constant [7 x i8] c" %fce\00" -@.str10068 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %p, \00" -@.str10069 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10070 = private unnamed_addr constant [13 x i8] c" br i1 %fce\00" -@.str10071 = private unnamed_addr constant [13 x i8] c", label %fch\00" -@.str10072 = private unnamed_addr constant [13 x i8] c", label %fcn\00" -@.str10073 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10074 = private unnamed_addr constant [4 x i8] c"fch\00" -@.str10075 = private unnamed_addr constant [13 x i8] c":\0A ret i32 \00" -@.str10076 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10077 = private unnamed_addr constant [4 x i8] c"fcn\00" -@.str10078 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10079 = private unnamed_addr constant [22 x i8] c" %dyn = sub i32 %p, \00" -@.str10080 = private unnamed_addr constant [35 x i8] c"\0A %dc = load i32, ptr @dyn_count\0A\00" -@.str10081 = private unnamed_addr constant [72 x i8] c" %ib = icmp uge i32 %dyn, %dc\0A br i1 %ib, label %fcbad, label %fcdyn\0A\00" -@.str10082 = private unnamed_addr constant [118 x i8] c"fcdyn:\0A %fp = getelementptr inbounds [32 x i32], ptr @dynF, i32 0, i32 %dyn\0A %fn = load i32, ptr %fp\0A ret i32 %fn\0A\00" -@.str10083 = private unnamed_addr constant [23 x i8] c"fcbad:\0A ret i32 0\0A}\0A\0A\00" -@.str10084 = private unnamed_addr constant [55 x i8] c"define ptr @ludic_field_name(i32 %p, i32 %f) {\0Aentry:\0A\00" -@.str10085 = private unnamed_addr constant [7 x i8] c" %fne\00" -@.str10086 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %p, \00" -@.str10087 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10088 = private unnamed_addr constant [13 x i8] c" br i1 %fne\00" -@.str10089 = private unnamed_addr constant [13 x i8] c", label %fnk\00" -@.str10090 = private unnamed_addr constant [13 x i8] c", label %fnn\00" -@.str10091 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10092 = private unnamed_addr constant [4 x i8] c"fnk\00" -@.str10093 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10094 = private unnamed_addr constant [2 x i8] c"_\00" -@.str10095 = private unnamed_addr constant [8 x i8] c" %fnfe\00" -@.str10096 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %f, \00" -@.str10097 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10098 = private unnamed_addr constant [14 x i8] c" br i1 %fnfe\00" -@.str10099 = private unnamed_addr constant [14 x i8] c", label %fnfh\00" -@.str10100 = private unnamed_addr constant [14 x i8] c", label %fnfn\00" -@.str10101 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10102 = private unnamed_addr constant [5 x i8] c"fnfh\00" -@.str10103 = private unnamed_addr constant [13 x i8] c":\0A ret ptr \00" -@.str10104 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10105 = private unnamed_addr constant [5 x i8] c"fnfn\00" -@.str10106 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10107 = private unnamed_addr constant [11 x i8] c" ret ptr \00" -@.str10108 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10109 = private unnamed_addr constant [4 x i8] c"fnn\00" -@.str10110 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10111 = private unnamed_addr constant [11 x i8] c" ret ptr \00" -@.str10112 = private unnamed_addr constant [5 x i8] c"\0A}\0A\0A\00" -@.str10113 = private unnamed_addr constant [55 x i8] c"define ptr @ludic_field_type(i32 %p, i32 %f) {\0Aentry:\0A\00" -@.str10114 = private unnamed_addr constant [7 x i8] c" %fte\00" -@.str10115 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %p, \00" -@.str10116 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10117 = private unnamed_addr constant [13 x i8] c" br i1 %fte\00" -@.str10118 = private unnamed_addr constant [13 x i8] c", label %ftk\00" -@.str10119 = private unnamed_addr constant [13 x i8] c", label %ftn\00" -@.str10120 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10121 = private unnamed_addr constant [4 x i8] c"ftk\00" -@.str10122 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10123 = private unnamed_addr constant [2 x i8] c"_\00" -@.str10124 = private unnamed_addr constant [8 x i8] c" %ftfe\00" -@.str10125 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %f, \00" -@.str10126 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10127 = private unnamed_addr constant [14 x i8] c" br i1 %ftfe\00" -@.str10128 = private unnamed_addr constant [14 x i8] c", label %ftfh\00" -@.str10129 = private unnamed_addr constant [14 x i8] c", label %ftfn\00" -@.str10130 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10131 = private unnamed_addr constant [5 x i8] c"ftfh\00" -@.str10132 = private unnamed_addr constant [13 x i8] c":\0A ret ptr \00" -@.str10133 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10134 = private unnamed_addr constant [5 x i8] c"ftfn\00" -@.str10135 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10136 = private unnamed_addr constant [11 x i8] c" ret ptr \00" -@.str10137 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10138 = private unnamed_addr constant [4 x i8] c"ftn\00" -@.str10139 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10140 = private unnamed_addr constant [11 x i8] c" ret ptr \00" -@.str10141 = private unnamed_addr constant [5 x i8] c"\0A}\0A\0A\00" -@.str10142 = private unnamed_addr constant [38 x i8] c"define void @L_tick_fixed() {\0Aentry:\0A\00" -@.str10143 = private unnamed_addr constant [6 x i8] c"Input\00" -@.str10144 = private unnamed_addr constant [12 x i8] c"FixedUpdate\00" -@.str10145 = private unnamed_addr constant [7 x i8] c"Update\00" -@.str10146 = private unnamed_addr constant [11 x i8] c"LateUpdate\00" -@.str10147 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" -@.str10148 = private unnamed_addr constant [39 x i8] c"define void @L_tick_render() {\0Aentry:\0A\00" -@.str10149 = private unnamed_addr constant [7 x i8] c"Render\00" -@.str10150 = private unnamed_addr constant [8 x i8] c"Overlay\00" -@.str10151 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" -@.str10152 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" -@.str10153 = private unnamed_addr constant [32 x i8] c" store i32 %argc, ptr @L_argc\0A\00" -@.str10154 = private unnamed_addr constant [32 x i8] c" store ptr %argv, ptr @L_argv\0A\00" -@.str10155 = private unnamed_addr constant [8 x i8] c"rt_init\00" -@.str10156 = private unnamed_addr constant [27 x i8] c" call void @fn_rt_init()\0A\00" -@.str10157 = private unnamed_addr constant [31 x i8] c" call void @L_init_globals()\0A\00" -@.str10158 = private unnamed_addr constant [6 x i8] c"Start\00" -@.str10159 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str10160 = private unnamed_addr constant [16 x i8] c", ptr @L_scene\0A\00" -@.str10161 = private unnamed_addr constant [26 x i8] c" call void @scene_enter_\00" -@.str10162 = private unnamed_addr constant [4 x i8] c"()\0A\00" -@.str10163 = private unnamed_addr constant [14 x i8] c"program_start\00" -@.str10164 = private unnamed_addr constant [33 x i8] c" call void @ev_program_start()\0A\00" -@.str10165 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" -@.str10166 = private unnamed_addr constant [7 x i8] c"loop:\0A\00" -@.str10167 = private unnamed_addr constant [25 x i8] c"load i32, ptr @L_running\00" -@.str10168 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str10169 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str10170 = private unnamed_addr constant [11 x i8] c"rt_running\00" -@.str10171 = private unnamed_addr constant [26 x i8] c"call i32 @fn_rt_running()\00" -@.str10172 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str10173 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str10174 = private unnamed_addr constant [8 x i8] c"and i1 \00" -@.str10175 = private unnamed_addr constant [3 x i8] c", \00" -@.str10176 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str10177 = private unnamed_addr constant [28 x i8] c", label %body, label %done\0A\00" -@.str10178 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str10179 = private unnamed_addr constant [28 x i8] c", label %body, label %done\0A\00" -@.str10180 = private unnamed_addr constant [7 x i8] c"body:\0A\00" -@.str10181 = private unnamed_addr constant [12 x i8] c"input_drive\00" -@.str10182 = private unnamed_addr constant [27 x i8] c"call i32 @fn_input_drive()\00" -@.str10183 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str10184 = private unnamed_addr constant [14 x i8] c", ptr @L_key\0A\00" -@.str10185 = private unnamed_addr constant [8 x i8] c"rt_poll\00" -@.str10186 = private unnamed_addr constant [23 x i8] c"call i32 @fn_rt_poll()\00" -@.str10187 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str10188 = private unnamed_addr constant [14 x i8] c", ptr @L_key\0A\00" -@.str10189 = private unnamed_addr constant [11 x i8] c"rt_ui_tick\00" -@.str10190 = private unnamed_addr constant [21 x i8] c"load i32, ptr @L_key\00" -@.str10191 = private unnamed_addr constant [32 x i8] c" call void @fn_rt_ui_tick(i32 \00" -@.str10192 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10193 = private unnamed_addr constant [6 x i8] c"Input\00" -@.str10194 = private unnamed_addr constant [12 x i8] c"FixedUpdate\00" -@.str10195 = private unnamed_addr constant [7 x i8] c"Update\00" -@.str10196 = private unnamed_addr constant [11 x i8] c"LateUpdate\00" -@.str10197 = private unnamed_addr constant [9 x i8] c"rt_clear\00" -@.str10198 = private unnamed_addr constant [30 x i8] c" call void @fn_rt_clear(i32 \00" -@.str10199 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10200 = private unnamed_addr constant [7 x i8] c"Render\00" -@.str10201 = private unnamed_addr constant [8 x i8] c"Overlay\00" -@.str10202 = private unnamed_addr constant [11 x i8] c"rt_present\00" -@.str10203 = private unnamed_addr constant [30 x i8] c" call void @fn_rt_present()\0A\00" -@.str10204 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_frame\00" -@.str10205 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str10206 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str10207 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str10208 = private unnamed_addr constant [16 x i8] c", ptr @L_frame\0A\00" -@.str10209 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" -@.str10210 = private unnamed_addr constant [7 x i8] c"done:\0A\00" -@.str10211 = private unnamed_addr constant [35 x i8] c" call void @L_despawn_all(i32 2)\0A\00" -@.str10212 = private unnamed_addr constant [7 x i8] c"OnQuit\00" -@.str10213 = private unnamed_addr constant [13 x i8] c"program_quit\00" -@.str10214 = private unnamed_addr constant [32 x i8] c" call void @ev_program_quit()\0A\00" -@.str10215 = private unnamed_addr constant [12 x i8] c"rt_shutdown\00" -@.str10216 = private unnamed_addr constant [31 x i8] c" call void @fn_rt_shutdown()\0A\00" -@.str10217 = private unnamed_addr constant [15 x i8] c" ret i32 0\0A}\0A\00" -@.str10218 = private unnamed_addr constant [15 x i8] c"machine state \00" -@.str10219 = private unnamed_addr constant [27 x i8] c" is not a variant of enum \00" -@.str10220 = private unnamed_addr constant [1 x i8] c"\00" -@.str10221 = private unnamed_addr constant [18 x i8] c"load i32, ptr @g_\00" -@.str10222 = private unnamed_addr constant [25 x i8] c"call i32 @fn_rt_reg(i32 \00" -@.str10223 = private unnamed_addr constant [2 x i8] c")\00" -@.str10224 = private unnamed_addr constant [6 x i8] c"smend\00" -@.str10225 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str10226 = private unnamed_addr constant [3 x i8] c", \00" -@.str10227 = private unnamed_addr constant [6 x i8] c"sbody\00" -@.str10228 = private unnamed_addr constant [5 x i8] c"sarm\00" -@.str10229 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str10230 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str10231 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str10232 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10233 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10234 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str10235 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10236 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10237 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str10238 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10239 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10240 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str10241 = private unnamed_addr constant [10 x i8] c", ptr @g_\00" -@.str10242 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10243 = private unnamed_addr constant [32 x i8] c" call void @fn_rt_set_reg(i32 \00" -@.str10244 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str10245 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10246 = private unnamed_addr constant [27 x i8] c"become: no state or scene \00" -@.str10247 = private unnamed_addr constant [25 x i8] c" call void @scene_exit_\00" -@.str10248 = private unnamed_addr constant [4 x i8] c"()\0A\00" -@.str10249 = private unnamed_addr constant [30 x i8] c" call void @L_scene_leave()\0A\00" -@.str10250 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str10251 = private unnamed_addr constant [16 x i8] c", ptr @L_scene\0A\00" -@.str10252 = private unnamed_addr constant [26 x i8] c" call void @scene_enter_\00" +@.str10028 = private unnamed_addr constant [3 x i8] c"sh\00" +@.str10029 = private unnamed_addr constant [8 x i8] c":\0A %sr\00" +@.str10030 = private unnamed_addr constant [26 x i8] c" = call i32 @ludic_spawn_\00" +@.str10031 = private unnamed_addr constant [17 x i8] c"()\0A ret i32 %sr\00" +@.str10032 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10033 = private unnamed_addr constant [3 x i8] c"sn\00" +@.str10034 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10035 = private unnamed_addr constant [17 x i8] c" ret i32 -1\0A}\0A\0A\00" +@.str10036 = private unnamed_addr constant [58 x i8] c"define i32 @ludic_query_next(i32 %p, i32 %from) {\0Aentry:\0A\00" +@.str10037 = private unnamed_addr constant [47 x i8] c" %n = load i32, ptr @L_entc\0A br label %loop\0A\00" +@.str10038 = private unnamed_addr constant [56 x i8] c"loop:\0A %e = phi i32 [ %from, %entry ], [ %e1, %cont ]\0A\00" +@.str10039 = private unnamed_addr constant [67 x i8] c" %go = icmp slt i32 %e, %n\0A br i1 %go, label %body, label %none\0A\00" +@.str10040 = private unnamed_addr constant [39 x i8] c"body:\0A %ap = getelementptr inbounds [\00" +@.str10041 = private unnamed_addr constant [38 x i8] c" x i32], ptr @L_alive, i32 0, i32 %e\0A\00" +@.str10042 = private unnamed_addr constant [93 x i8] c" %al = load i32, ptr %ap\0A %isa = icmp ne i32 %al, 0\0A br i1 %isa, label %chk, label %cont\0A\00" +@.str10043 = private unnamed_addr constant [115 x i8] c"chk:\0A %h = call i32 @ludic_has(i32 %e, i32 %p)\0A %hit = icmp ne i32 %h, 0\0A br i1 %hit, label %hitb, label %cont\0A\00" +@.str10044 = private unnamed_addr constant [20 x i8] c"hitb:\0A ret i32 %e\0A\00" +@.str10045 = private unnamed_addr constant [46 x i8] c"cont:\0A %e1 = add i32 %e, 1\0A br label %loop\0A\00" +@.str10046 = private unnamed_addr constant [23 x i8] c"none:\0A ret i32 -1\0A}\0A\0A\00" +@.str10047 = private unnamed_addr constant [1 x i8] c"\00" +@.str10048 = private unnamed_addr constant [4 x i8] c"int\00" +@.str10049 = private unnamed_addr constant [41 x i8] c"define i32 @ludic_prop_count() {\0Aentry:\0A\00" +@.str10050 = private unnamed_addr constant [52 x i8] c" %d = load i32, ptr @dyn_count\0A %n = add i32 %d, \00" +@.str10051 = private unnamed_addr constant [18 x i8] c"\0A ret i32 %n\0A}\0A\0A\00" +@.str10052 = private unnamed_addr constant [46 x i8] c"define ptr @ludic_prop_name(i32 %i) {\0Aentry:\0A\00" +@.str10053 = private unnamed_addr constant [6 x i8] c" %pe\00" +@.str10054 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %i, \00" +@.str10055 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10056 = private unnamed_addr constant [12 x i8] c" br i1 %pe\00" +@.str10057 = private unnamed_addr constant [12 x i8] c", label %ph\00" +@.str10058 = private unnamed_addr constant [12 x i8] c", label %pn\00" +@.str10059 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10060 = private unnamed_addr constant [3 x i8] c"ph\00" +@.str10061 = private unnamed_addr constant [13 x i8] c":\0A ret ptr \00" +@.str10062 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10063 = private unnamed_addr constant [3 x i8] c"pn\00" +@.str10064 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10065 = private unnamed_addr constant [22 x i8] c" %dyn = sub i32 %i, \00" +@.str10066 = private unnamed_addr constant [35 x i8] c"\0A %dc = load i32, ptr @dyn_count\0A\00" +@.str10067 = private unnamed_addr constant [70 x i8] c" %ib = icmp uge i32 %dyn, %dc\0A br i1 %ib, label %pbad, label %pdyn\0A\00" +@.str10068 = private unnamed_addr constant [120 x i8] c"pdyn:\0A %np = getelementptr inbounds [32 x ptr], ptr @dynName, i32 0, i32 %dyn\0A %nm = load ptr, ptr %np\0A ret ptr %nm\0A\00" +@.str10069 = private unnamed_addr constant [17 x i8] c"pbad:\0A ret ptr \00" +@.str10070 = private unnamed_addr constant [5 x i8] c"\0A}\0A\0A\00" +@.str10071 = private unnamed_addr constant [48 x i8] c"define i32 @ludic_field_count(i32 %p) {\0Aentry:\0A\00" +@.str10072 = private unnamed_addr constant [7 x i8] c" %fce\00" +@.str10073 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %p, \00" +@.str10074 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10075 = private unnamed_addr constant [13 x i8] c" br i1 %fce\00" +@.str10076 = private unnamed_addr constant [13 x i8] c", label %fch\00" +@.str10077 = private unnamed_addr constant [13 x i8] c", label %fcn\00" +@.str10078 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10079 = private unnamed_addr constant [4 x i8] c"fch\00" +@.str10080 = private unnamed_addr constant [13 x i8] c":\0A ret i32 \00" +@.str10081 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10082 = private unnamed_addr constant [4 x i8] c"fcn\00" +@.str10083 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10084 = private unnamed_addr constant [22 x i8] c" %dyn = sub i32 %p, \00" +@.str10085 = private unnamed_addr constant [35 x i8] c"\0A %dc = load i32, ptr @dyn_count\0A\00" +@.str10086 = private unnamed_addr constant [72 x i8] c" %ib = icmp uge i32 %dyn, %dc\0A br i1 %ib, label %fcbad, label %fcdyn\0A\00" +@.str10087 = private unnamed_addr constant [118 x i8] c"fcdyn:\0A %fp = getelementptr inbounds [32 x i32], ptr @dynF, i32 0, i32 %dyn\0A %fn = load i32, ptr %fp\0A ret i32 %fn\0A\00" +@.str10088 = private unnamed_addr constant [23 x i8] c"fcbad:\0A ret i32 0\0A}\0A\0A\00" +@.str10089 = private unnamed_addr constant [55 x i8] c"define ptr @ludic_field_name(i32 %p, i32 %f) {\0Aentry:\0A\00" +@.str10090 = private unnamed_addr constant [7 x i8] c" %fne\00" +@.str10091 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %p, \00" +@.str10092 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10093 = private unnamed_addr constant [13 x i8] c" br i1 %fne\00" +@.str10094 = private unnamed_addr constant [13 x i8] c", label %fnk\00" +@.str10095 = private unnamed_addr constant [13 x i8] c", label %fnn\00" +@.str10096 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10097 = private unnamed_addr constant [4 x i8] c"fnk\00" +@.str10098 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10099 = private unnamed_addr constant [2 x i8] c"_\00" +@.str10100 = private unnamed_addr constant [8 x i8] c" %fnfe\00" +@.str10101 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %f, \00" +@.str10102 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10103 = private unnamed_addr constant [14 x i8] c" br i1 %fnfe\00" +@.str10104 = private unnamed_addr constant [14 x i8] c", label %fnfh\00" +@.str10105 = private unnamed_addr constant [14 x i8] c", label %fnfn\00" +@.str10106 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10107 = private unnamed_addr constant [5 x i8] c"fnfh\00" +@.str10108 = private unnamed_addr constant [13 x i8] c":\0A ret ptr \00" +@.str10109 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10110 = private unnamed_addr constant [5 x i8] c"fnfn\00" +@.str10111 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10112 = private unnamed_addr constant [11 x i8] c" ret ptr \00" +@.str10113 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10114 = private unnamed_addr constant [4 x i8] c"fnn\00" +@.str10115 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10116 = private unnamed_addr constant [11 x i8] c" ret ptr \00" +@.str10117 = private unnamed_addr constant [5 x i8] c"\0A}\0A\0A\00" +@.str10118 = private unnamed_addr constant [55 x i8] c"define ptr @ludic_field_type(i32 %p, i32 %f) {\0Aentry:\0A\00" +@.str10119 = private unnamed_addr constant [7 x i8] c" %fte\00" +@.str10120 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %p, \00" +@.str10121 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10122 = private unnamed_addr constant [13 x i8] c" br i1 %fte\00" +@.str10123 = private unnamed_addr constant [13 x i8] c", label %ftk\00" +@.str10124 = private unnamed_addr constant [13 x i8] c", label %ftn\00" +@.str10125 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10126 = private unnamed_addr constant [4 x i8] c"ftk\00" +@.str10127 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10128 = private unnamed_addr constant [2 x i8] c"_\00" +@.str10129 = private unnamed_addr constant [8 x i8] c" %ftfe\00" +@.str10130 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %f, \00" +@.str10131 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10132 = private unnamed_addr constant [14 x i8] c" br i1 %ftfe\00" +@.str10133 = private unnamed_addr constant [14 x i8] c", label %ftfh\00" +@.str10134 = private unnamed_addr constant [14 x i8] c", label %ftfn\00" +@.str10135 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10136 = private unnamed_addr constant [5 x i8] c"ftfh\00" +@.str10137 = private unnamed_addr constant [13 x i8] c":\0A ret ptr \00" +@.str10138 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10139 = private unnamed_addr constant [5 x i8] c"ftfn\00" +@.str10140 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10141 = private unnamed_addr constant [11 x i8] c" ret ptr \00" +@.str10142 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10143 = private unnamed_addr constant [4 x i8] c"ftn\00" +@.str10144 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10145 = private unnamed_addr constant [11 x i8] c" ret ptr \00" +@.str10146 = private unnamed_addr constant [5 x i8] c"\0A}\0A\0A\00" +@.str10147 = private unnamed_addr constant [38 x i8] c"define void @L_tick_fixed() {\0Aentry:\0A\00" +@.str10148 = private unnamed_addr constant [6 x i8] c"Input\00" +@.str10149 = private unnamed_addr constant [12 x i8] c"FixedUpdate\00" +@.str10150 = private unnamed_addr constant [7 x i8] c"Update\00" +@.str10151 = private unnamed_addr constant [11 x i8] c"LateUpdate\00" +@.str10152 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" +@.str10153 = private unnamed_addr constant [39 x i8] c"define void @L_tick_render() {\0Aentry:\0A\00" +@.str10154 = private unnamed_addr constant [7 x i8] c"Render\00" +@.str10155 = private unnamed_addr constant [8 x i8] c"Overlay\00" +@.str10156 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" +@.str10157 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" +@.str10158 = private unnamed_addr constant [32 x i8] c" store i32 %argc, ptr @L_argc\0A\00" +@.str10159 = private unnamed_addr constant [32 x i8] c" store ptr %argv, ptr @L_argv\0A\00" +@.str10160 = private unnamed_addr constant [8 x i8] c"rt_init\00" +@.str10161 = private unnamed_addr constant [27 x i8] c" call void @fn_rt_init()\0A\00" +@.str10162 = private unnamed_addr constant [31 x i8] c" call void @L_init_globals()\0A\00" +@.str10163 = private unnamed_addr constant [6 x i8] c"Start\00" +@.str10164 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str10165 = private unnamed_addr constant [16 x i8] c", ptr @L_scene\0A\00" +@.str10166 = private unnamed_addr constant [26 x i8] c" call void @scene_enter_\00" +@.str10167 = private unnamed_addr constant [4 x i8] c"()\0A\00" +@.str10168 = private unnamed_addr constant [14 x i8] c"program_start\00" +@.str10169 = private unnamed_addr constant [33 x i8] c" call void @ev_program_start()\0A\00" +@.str10170 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" +@.str10171 = private unnamed_addr constant [7 x i8] c"loop:\0A\00" +@.str10172 = private unnamed_addr constant [25 x i8] c"load i32, ptr @L_running\00" +@.str10173 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str10174 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str10175 = private unnamed_addr constant [11 x i8] c"rt_running\00" +@.str10176 = private unnamed_addr constant [26 x i8] c"call i32 @fn_rt_running()\00" +@.str10177 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str10178 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str10179 = private unnamed_addr constant [8 x i8] c"and i1 \00" +@.str10180 = private unnamed_addr constant [3 x i8] c", \00" +@.str10181 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str10182 = private unnamed_addr constant [28 x i8] c", label %body, label %done\0A\00" +@.str10183 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str10184 = private unnamed_addr constant [28 x i8] c", label %body, label %done\0A\00" +@.str10185 = private unnamed_addr constant [7 x i8] c"body:\0A\00" +@.str10186 = private unnamed_addr constant [12 x i8] c"input_drive\00" +@.str10187 = private unnamed_addr constant [27 x i8] c"call i32 @fn_input_drive()\00" +@.str10188 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str10189 = private unnamed_addr constant [14 x i8] c", ptr @L_key\0A\00" +@.str10190 = private unnamed_addr constant [8 x i8] c"rt_poll\00" +@.str10191 = private unnamed_addr constant [23 x i8] c"call i32 @fn_rt_poll()\00" +@.str10192 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str10193 = private unnamed_addr constant [14 x i8] c", ptr @L_key\0A\00" +@.str10194 = private unnamed_addr constant [11 x i8] c"rt_ui_tick\00" +@.str10195 = private unnamed_addr constant [21 x i8] c"load i32, ptr @L_key\00" +@.str10196 = private unnamed_addr constant [32 x i8] c" call void @fn_rt_ui_tick(i32 \00" +@.str10197 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10198 = private unnamed_addr constant [6 x i8] c"Input\00" +@.str10199 = private unnamed_addr constant [12 x i8] c"FixedUpdate\00" +@.str10200 = private unnamed_addr constant [7 x i8] c"Update\00" +@.str10201 = private unnamed_addr constant [11 x i8] c"LateUpdate\00" +@.str10202 = private unnamed_addr constant [9 x i8] c"rt_clear\00" +@.str10203 = private unnamed_addr constant [30 x i8] c" call void @fn_rt_clear(i32 \00" +@.str10204 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10205 = private unnamed_addr constant [7 x i8] c"Render\00" +@.str10206 = private unnamed_addr constant [8 x i8] c"Overlay\00" +@.str10207 = private unnamed_addr constant [11 x i8] c"rt_present\00" +@.str10208 = private unnamed_addr constant [30 x i8] c" call void @fn_rt_present()\0A\00" +@.str10209 = private unnamed_addr constant [23 x i8] c"load i32, ptr @L_frame\00" +@.str10210 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str10211 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str10212 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str10213 = private unnamed_addr constant [16 x i8] c", ptr @L_frame\0A\00" +@.str10214 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" +@.str10215 = private unnamed_addr constant [7 x i8] c"done:\0A\00" +@.str10216 = private unnamed_addr constant [35 x i8] c" call void @L_despawn_all(i32 2)\0A\00" +@.str10217 = private unnamed_addr constant [7 x i8] c"OnQuit\00" +@.str10218 = private unnamed_addr constant [13 x i8] c"program_quit\00" +@.str10219 = private unnamed_addr constant [32 x i8] c" call void @ev_program_quit()\0A\00" +@.str10220 = private unnamed_addr constant [12 x i8] c"rt_shutdown\00" +@.str10221 = private unnamed_addr constant [31 x i8] c" call void @fn_rt_shutdown()\0A\00" +@.str10222 = private unnamed_addr constant [15 x i8] c" ret i32 0\0A}\0A\00" +@.str10223 = private unnamed_addr constant [15 x i8] c"machine state \00" +@.str10224 = private unnamed_addr constant [27 x i8] c" is not a variant of enum \00" +@.str10225 = private unnamed_addr constant [1 x i8] c"\00" +@.str10226 = private unnamed_addr constant [18 x i8] c"load i32, ptr @g_\00" +@.str10227 = private unnamed_addr constant [25 x i8] c"call i32 @fn_rt_reg(i32 \00" +@.str10228 = private unnamed_addr constant [2 x i8] c")\00" +@.str10229 = private unnamed_addr constant [6 x i8] c"smend\00" +@.str10230 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str10231 = private unnamed_addr constant [3 x i8] c", \00" +@.str10232 = private unnamed_addr constant [6 x i8] c"sbody\00" +@.str10233 = private unnamed_addr constant [5 x i8] c"sarm\00" +@.str10234 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str10235 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str10236 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str10237 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10238 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10239 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str10240 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10241 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10242 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str10243 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10244 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10245 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str10246 = private unnamed_addr constant [10 x i8] c", ptr @g_\00" +@.str10247 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10248 = private unnamed_addr constant [32 x i8] c" call void @fn_rt_set_reg(i32 \00" +@.str10249 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str10250 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10251 = private unnamed_addr constant [27 x i8] c"become: no state or scene \00" +@.str10252 = private unnamed_addr constant [25 x i8] c" call void @scene_exit_\00" @.str10253 = private unnamed_addr constant [4 x i8] c"()\0A\00" -@.str10254 = private unnamed_addr constant [5 x i8] c"file\00" -@.str10255 = private unnamed_addr constant [4 x i8] c"%io\00" -@.str10256 = private unnamed_addr constant [3 x i8] c" \00" -@.str10257 = private unnamed_addr constant [14 x i8] c" = call i64 @\00" -@.str10258 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str10259 = private unnamed_addr constant [14 x i8] c", i64 1, i64 \00" -@.str10260 = private unnamed_addr constant [11 x i8] c", ptr %f)\0A\00" -@.str10261 = private unnamed_addr constant [5 x i8] c"size\00" -@.str10262 = private unnamed_addr constant [6 x i8] c"%ioff\00" -@.str10263 = private unnamed_addr constant [3 x i8] c" \00" -@.str10264 = private unnamed_addr constant [12 x i8] c" = add i64 \00" -@.str10265 = private unnamed_addr constant [3 x i8] c", \00" -@.str10266 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10267 = private unnamed_addr constant [5 x i8] c"%ioa\00" +@.str10254 = private unnamed_addr constant [30 x i8] c" call void @L_scene_leave()\0A\00" +@.str10255 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str10256 = private unnamed_addr constant [16 x i8] c", ptr @L_scene\0A\00" +@.str10257 = private unnamed_addr constant [26 x i8] c" call void @scene_enter_\00" +@.str10258 = private unnamed_addr constant [4 x i8] c"()\0A\00" +@.str10259 = private unnamed_addr constant [5 x i8] c"file\00" +@.str10260 = private unnamed_addr constant [4 x i8] c"%io\00" +@.str10261 = private unnamed_addr constant [3 x i8] c" \00" +@.str10262 = private unnamed_addr constant [14 x i8] c" = call i64 @\00" +@.str10263 = private unnamed_addr constant [6 x i8] c"(ptr \00" +@.str10264 = private unnamed_addr constant [14 x i8] c", i64 1, i64 \00" +@.str10265 = private unnamed_addr constant [11 x i8] c", ptr %f)\0A\00" +@.str10266 = private unnamed_addr constant [5 x i8] c"size\00" +@.str10267 = private unnamed_addr constant [6 x i8] c"%ioff\00" @.str10268 = private unnamed_addr constant [3 x i8] c" \00" -@.str10269 = private unnamed_addr constant [45 x i8] c" = getelementptr inbounds i8, ptr %buf, i64 \00" -@.str10270 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10271 = private unnamed_addr constant [5 x i8] c"save\00" -@.str10272 = private unnamed_addr constant [24 x i8] c" call ptr @memcpy(ptr \00" -@.str10273 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str10274 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str10275 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10276 = private unnamed_addr constant [24 x i8] c" call ptr @memcpy(ptr \00" -@.str10277 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str10278 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str10279 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10280 = private unnamed_addr constant [6 x i8] c"%ioff\00" -@.str10281 = private unnamed_addr constant [3 x i8] c" \00" -@.str10282 = private unnamed_addr constant [12 x i8] c" = add i64 \00" -@.str10283 = private unnamed_addr constant [3 x i8] c", \00" -@.str10284 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10285 = private unnamed_addr constant [2 x i8] c"0\00" -@.str10286 = private unnamed_addr constant [8 x i8] c"@L_entc\00" -@.str10287 = private unnamed_addr constant [2 x i8] c"4\00" -@.str10288 = private unnamed_addr constant [9 x i8] c"@L_freen\00" -@.str10289 = private unnamed_addr constant [2 x i8] c"4\00" -@.str10290 = private unnamed_addr constant [21 x i8] c" %nalive = mul i64 \00" -@.str10291 = private unnamed_addr constant [5 x i8] c", 4\0A\00" -@.str10292 = private unnamed_addr constant [9 x i8] c"@L_alive\00" -@.str10293 = private unnamed_addr constant [8 x i8] c"%nalive\00" -@.str10294 = private unnamed_addr constant [12 x i8] c"@L_freelist\00" -@.str10295 = private unnamed_addr constant [8 x i8] c"%nalive\00" -@.str10296 = private unnamed_addr constant [8 x i8] c"@L_kind\00" -@.str10297 = private unnamed_addr constant [8 x i8] c"%nalive\00" -@.str10298 = private unnamed_addr constant [13 x i8] c"@L_owner_arr\00" -@.str10299 = private unnamed_addr constant [8 x i8] c"%nalive\00" -@.str10300 = private unnamed_addr constant [4 x i8] c"@g_\00" -@.str10301 = private unnamed_addr constant [2 x i8] c"4\00" -@.str10302 = private unnamed_addr constant [5 x i8] c"%csz\00" -@.str10303 = private unnamed_addr constant [3 x i8] c" \00" -@.str10304 = private unnamed_addr constant [37 x i8] c" = ptrtoint ptr getelementptr (%Cmp_\00" -@.str10305 = private unnamed_addr constant [17 x i8] c", ptr null, i32 \00" -@.str10306 = private unnamed_addr constant [10 x i8] c") to i64\0A\00" -@.str10307 = private unnamed_addr constant [4 x i8] c"@S_\00" -@.str10308 = private unnamed_addr constant [4 x i8] c"@H_\00" -@.str10309 = private unnamed_addr constant [5 x i8] c"file\00" -@.str10310 = private unnamed_addr constant [70 x i8] c"@.sav_path = private unnamed_addr constant [10 x i8] c\22ludic.sav\5C00\22\0A\00" -@.str10311 = private unnamed_addr constant [60 x i8] c"@.sav_wb = private unnamed_addr constant [3 x i8] c\22wb\5C00\22\0A\00" -@.str10312 = private unnamed_addr constant [60 x i8] c"@.sav_rb = private unnamed_addr constant [3 x i8] c\22rb\5C00\22\0A\00" -@.str10313 = private unnamed_addr constant [14 x i8] c"rt_save_state\00" -@.str10314 = private unnamed_addr constant [14 x i8] c"rt_load_state\00" -@.str10315 = private unnamed_addr constant [32 x i8] c"define void @L_save() {\0Aentry:\0A\00" -@.str10316 = private unnamed_addr constant [54 x i8] c" %f = call ptr @fopen(ptr @.sav_path, ptr @.sav_wb)\0A\00" -@.str10317 = private unnamed_addr constant [31 x i8] c" %bad = icmp eq ptr %f, null\0A\00" -@.str10318 = private unnamed_addr constant [41 x i8] c" br i1 %bad, label %out, label %go\0Ago:\0A\00" -@.str10319 = private unnamed_addr constant [7 x i8] c"fwrite\00" -@.str10320 = private unnamed_addr constant [39 x i8] c" call void @fn_rt_save_state(ptr %f)\0A\00" -@.str10321 = private unnamed_addr constant [68 x i8] c" %c = call i32 @fclose(ptr %f)\0A br label %out\0Aout:\0A ret void\0A}\0A\0A\00" -@.str10322 = private unnamed_addr constant [31 x i8] c"define i32 @L_load() {\0Aentry:\0A\00" -@.str10323 = private unnamed_addr constant [54 x i8] c" %f = call ptr @fopen(ptr @.sav_path, ptr @.sav_rb)\0A\00" -@.str10324 = private unnamed_addr constant [31 x i8] c" %bad = icmp eq ptr %f, null\0A\00" -@.str10325 = private unnamed_addr constant [60 x i8] c" br i1 %bad, label %miss, label %go\0Amiss:\0A ret i32 0\0Ago:\0A\00" -@.str10326 = private unnamed_addr constant [6 x i8] c"fread\00" -@.str10327 = private unnamed_addr constant [39 x i8] c" call void @fn_rt_load_state(ptr %f)\0A\00" -@.str10328 = private unnamed_addr constant [48 x i8] c" %c = call i32 @fclose(ptr %f)\0A ret i32 1\0A}\0A\0A\00" -@.str10329 = private unnamed_addr constant [45 x i8] c"define i32 @L_world_save(ptr %buf) {\0Aentry:\0A\00" -@.str10330 = private unnamed_addr constant [5 x i8] c"save\00" -@.str10331 = private unnamed_addr constant [1 x i8] c"\00" -@.str10332 = private unnamed_addr constant [5 x i8] c"%wsn\00" -@.str10333 = private unnamed_addr constant [3 x i8] c" \00" -@.str10334 = private unnamed_addr constant [14 x i8] c" = trunc i64 \00" -@.str10335 = private unnamed_addr constant [9 x i8] c" to i32\0A\00" -@.str10336 = private unnamed_addr constant [11 x i8] c" ret i32 \00" -@.str10337 = private unnamed_addr constant [5 x i8] c"\0A}\0A\0A\00" -@.str10338 = private unnamed_addr constant [56 x i8] c"define void @L_world_load(ptr %buf, i32 %len) {\0Aentry:\0A\00" -@.str10339 = private unnamed_addr constant [5 x i8] c"load\00" -@.str10340 = private unnamed_addr constant [1 x i8] c"\00" -@.str10341 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" -@.str10342 = private unnamed_addr constant [37 x i8] c"define i32 @L_world_size() {\0Aentry:\0A\00" -@.str10343 = private unnamed_addr constant [5 x i8] c"size\00" -@.str10344 = private unnamed_addr constant [1 x i8] c"\00" -@.str10345 = private unnamed_addr constant [5 x i8] c"%wzn\00" -@.str10346 = private unnamed_addr constant [3 x i8] c" \00" -@.str10347 = private unnamed_addr constant [14 x i8] c" = trunc i64 \00" -@.str10348 = private unnamed_addr constant [9 x i8] c" to i32\0A\00" -@.str10349 = private unnamed_addr constant [11 x i8] c" ret i32 \00" -@.str10350 = private unnamed_addr constant [5 x i8] c"\0A}\0A\0A\00" -@.str10351 = private unnamed_addr constant [5 x i8] c"file\00" -@.str10352 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str10353 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str10354 = private unnamed_addr constant [2 x i8] c"1\00" -@.str10355 = private unnamed_addr constant [2 x i8] c"4\00" -@.str10356 = private unnamed_addr constant [24 x i8] c"ludicc(self): warning: \00" -@.str10357 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10358 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str10359 = private unnamed_addr constant [13 x i8] c"@Sync field \00" -@.str10360 = private unnamed_addr constant [2 x i8] c".\00" -@.str10361 = private unnamed_addr constant [68 x i8] c" is not a POD scalar (networked fields must be int/bool/fixed/byte)\00" -@.str10362 = private unnamed_addr constant [7 x i8] c"model \00" -@.str10363 = private unnamed_addr constant [9 x i8] c" @Syncs \00" -@.str10364 = private unnamed_addr constant [51 x i8] c" but it has no @Sync fields \E2\80\94 nothing replicates\00" -@.str10365 = private unnamed_addr constant [25 x i8] c"define i32 @L_serialize_\00" -@.str10366 = private unnamed_addr constant [29 x i8] c"(i32 %e, ptr %buf) {\0Aentry:\0A\00" -@.str10367 = private unnamed_addr constant [3 x i8] c" \00" -@.str10368 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str10369 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" -@.str10370 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" -@.str10371 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %e\0A\00" +@.str10269 = private unnamed_addr constant [12 x i8] c" = add i64 \00" +@.str10270 = private unnamed_addr constant [3 x i8] c", \00" +@.str10271 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10272 = private unnamed_addr constant [5 x i8] c"%ioa\00" +@.str10273 = private unnamed_addr constant [3 x i8] c" \00" +@.str10274 = private unnamed_addr constant [45 x i8] c" = getelementptr inbounds i8, ptr %buf, i64 \00" +@.str10275 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10276 = private unnamed_addr constant [5 x i8] c"save\00" +@.str10277 = private unnamed_addr constant [24 x i8] c" call ptr @memcpy(ptr \00" +@.str10278 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str10279 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str10280 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10281 = private unnamed_addr constant [24 x i8] c" call ptr @memcpy(ptr \00" +@.str10282 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str10283 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str10284 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10285 = private unnamed_addr constant [6 x i8] c"%ioff\00" +@.str10286 = private unnamed_addr constant [3 x i8] c" \00" +@.str10287 = private unnamed_addr constant [12 x i8] c" = add i64 \00" +@.str10288 = private unnamed_addr constant [3 x i8] c", \00" +@.str10289 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10290 = private unnamed_addr constant [2 x i8] c"0\00" +@.str10291 = private unnamed_addr constant [8 x i8] c"@L_entc\00" +@.str10292 = private unnamed_addr constant [2 x i8] c"4\00" +@.str10293 = private unnamed_addr constant [9 x i8] c"@L_freen\00" +@.str10294 = private unnamed_addr constant [2 x i8] c"4\00" +@.str10295 = private unnamed_addr constant [21 x i8] c" %nalive = mul i64 \00" +@.str10296 = private unnamed_addr constant [5 x i8] c", 4\0A\00" +@.str10297 = private unnamed_addr constant [9 x i8] c"@L_alive\00" +@.str10298 = private unnamed_addr constant [8 x i8] c"%nalive\00" +@.str10299 = private unnamed_addr constant [12 x i8] c"@L_freelist\00" +@.str10300 = private unnamed_addr constant [8 x i8] c"%nalive\00" +@.str10301 = private unnamed_addr constant [8 x i8] c"@L_kind\00" +@.str10302 = private unnamed_addr constant [8 x i8] c"%nalive\00" +@.str10303 = private unnamed_addr constant [13 x i8] c"@L_owner_arr\00" +@.str10304 = private unnamed_addr constant [8 x i8] c"%nalive\00" +@.str10305 = private unnamed_addr constant [4 x i8] c"@g_\00" +@.str10306 = private unnamed_addr constant [2 x i8] c"4\00" +@.str10307 = private unnamed_addr constant [5 x i8] c"%csz\00" +@.str10308 = private unnamed_addr constant [3 x i8] c" \00" +@.str10309 = private unnamed_addr constant [37 x i8] c" = ptrtoint ptr getelementptr (%Cmp_\00" +@.str10310 = private unnamed_addr constant [17 x i8] c", ptr null, i32 \00" +@.str10311 = private unnamed_addr constant [10 x i8] c") to i64\0A\00" +@.str10312 = private unnamed_addr constant [4 x i8] c"@S_\00" +@.str10313 = private unnamed_addr constant [4 x i8] c"@H_\00" +@.str10314 = private unnamed_addr constant [5 x i8] c"file\00" +@.str10315 = private unnamed_addr constant [70 x i8] c"@.sav_path = private unnamed_addr constant [10 x i8] c\22ludic.sav\5C00\22\0A\00" +@.str10316 = private unnamed_addr constant [60 x i8] c"@.sav_wb = private unnamed_addr constant [3 x i8] c\22wb\5C00\22\0A\00" +@.str10317 = private unnamed_addr constant [60 x i8] c"@.sav_rb = private unnamed_addr constant [3 x i8] c\22rb\5C00\22\0A\00" +@.str10318 = private unnamed_addr constant [14 x i8] c"rt_save_state\00" +@.str10319 = private unnamed_addr constant [14 x i8] c"rt_load_state\00" +@.str10320 = private unnamed_addr constant [32 x i8] c"define void @L_save() {\0Aentry:\0A\00" +@.str10321 = private unnamed_addr constant [54 x i8] c" %f = call ptr @fopen(ptr @.sav_path, ptr @.sav_wb)\0A\00" +@.str10322 = private unnamed_addr constant [31 x i8] c" %bad = icmp eq ptr %f, null\0A\00" +@.str10323 = private unnamed_addr constant [41 x i8] c" br i1 %bad, label %out, label %go\0Ago:\0A\00" +@.str10324 = private unnamed_addr constant [7 x i8] c"fwrite\00" +@.str10325 = private unnamed_addr constant [39 x i8] c" call void @fn_rt_save_state(ptr %f)\0A\00" +@.str10326 = private unnamed_addr constant [68 x i8] c" %c = call i32 @fclose(ptr %f)\0A br label %out\0Aout:\0A ret void\0A}\0A\0A\00" +@.str10327 = private unnamed_addr constant [31 x i8] c"define i32 @L_load() {\0Aentry:\0A\00" +@.str10328 = private unnamed_addr constant [54 x i8] c" %f = call ptr @fopen(ptr @.sav_path, ptr @.sav_rb)\0A\00" +@.str10329 = private unnamed_addr constant [31 x i8] c" %bad = icmp eq ptr %f, null\0A\00" +@.str10330 = private unnamed_addr constant [60 x i8] c" br i1 %bad, label %miss, label %go\0Amiss:\0A ret i32 0\0Ago:\0A\00" +@.str10331 = private unnamed_addr constant [6 x i8] c"fread\00" +@.str10332 = private unnamed_addr constant [39 x i8] c" call void @fn_rt_load_state(ptr %f)\0A\00" +@.str10333 = private unnamed_addr constant [48 x i8] c" %c = call i32 @fclose(ptr %f)\0A ret i32 1\0A}\0A\0A\00" +@.str10334 = private unnamed_addr constant [45 x i8] c"define i32 @L_world_save(ptr %buf) {\0Aentry:\0A\00" +@.str10335 = private unnamed_addr constant [5 x i8] c"save\00" +@.str10336 = private unnamed_addr constant [1 x i8] c"\00" +@.str10337 = private unnamed_addr constant [5 x i8] c"%wsn\00" +@.str10338 = private unnamed_addr constant [3 x i8] c" \00" +@.str10339 = private unnamed_addr constant [14 x i8] c" = trunc i64 \00" +@.str10340 = private unnamed_addr constant [9 x i8] c" to i32\0A\00" +@.str10341 = private unnamed_addr constant [11 x i8] c" ret i32 \00" +@.str10342 = private unnamed_addr constant [5 x i8] c"\0A}\0A\0A\00" +@.str10343 = private unnamed_addr constant [56 x i8] c"define void @L_world_load(ptr %buf, i32 %len) {\0Aentry:\0A\00" +@.str10344 = private unnamed_addr constant [5 x i8] c"load\00" +@.str10345 = private unnamed_addr constant [1 x i8] c"\00" +@.str10346 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" +@.str10347 = private unnamed_addr constant [37 x i8] c"define i32 @L_world_size() {\0Aentry:\0A\00" +@.str10348 = private unnamed_addr constant [5 x i8] c"size\00" +@.str10349 = private unnamed_addr constant [1 x i8] c"\00" +@.str10350 = private unnamed_addr constant [5 x i8] c"%wzn\00" +@.str10351 = private unnamed_addr constant [3 x i8] c" \00" +@.str10352 = private unnamed_addr constant [14 x i8] c" = trunc i64 \00" +@.str10353 = private unnamed_addr constant [9 x i8] c" to i32\0A\00" +@.str10354 = private unnamed_addr constant [11 x i8] c" ret i32 \00" +@.str10355 = private unnamed_addr constant [5 x i8] c"\0A}\0A\0A\00" +@.str10356 = private unnamed_addr constant [5 x i8] c"file\00" +@.str10357 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str10358 = private unnamed_addr constant [3 x i8] c"i8\00" +@.str10359 = private unnamed_addr constant [2 x i8] c"1\00" +@.str10360 = private unnamed_addr constant [2 x i8] c"4\00" +@.str10361 = private unnamed_addr constant [24 x i8] c"ludicc(self): warning: \00" +@.str10362 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10363 = private unnamed_addr constant [4 x i8] c"ptr\00" +@.str10364 = private unnamed_addr constant [13 x i8] c"@Sync field \00" +@.str10365 = private unnamed_addr constant [2 x i8] c".\00" +@.str10366 = private unnamed_addr constant [68 x i8] c" is not a POD scalar (networked fields must be int/bool/fixed/byte)\00" +@.str10367 = private unnamed_addr constant [7 x i8] c"model \00" +@.str10368 = private unnamed_addr constant [9 x i8] c" @Syncs \00" +@.str10369 = private unnamed_addr constant [51 x i8] c" but it has no @Sync fields \E2\80\94 nothing replicates\00" +@.str10370 = private unnamed_addr constant [25 x i8] c"define i32 @L_serialize_\00" +@.str10371 = private unnamed_addr constant [29 x i8] c"(i32 %e, ptr %buf) {\0Aentry:\0A\00" @.str10372 = private unnamed_addr constant [3 x i8] c" \00" -@.str10373 = private unnamed_addr constant [32 x i8] c" = getelementptr inbounds %Cmp_\00" -@.str10374 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str10375 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str10376 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10373 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str10374 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" +@.str10375 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" +@.str10376 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %e\0A\00" @.str10377 = private unnamed_addr constant [3 x i8] c" \00" -@.str10378 = private unnamed_addr constant [45 x i8] c" = getelementptr inbounds i8, ptr %buf, i32 \00" -@.str10379 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10380 = private unnamed_addr constant [24 x i8] c" call ptr @memcpy(ptr \00" -@.str10381 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str10382 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str10383 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10384 = private unnamed_addr constant [11 x i8] c" ret i32 \00" -@.str10385 = private unnamed_addr constant [5 x i8] c"\0A}\0A\0A\00" -@.str10386 = private unnamed_addr constant [22 x i8] c"define void @L_apply_\00" -@.str10387 = private unnamed_addr constant [39 x i8] c"(i32 %e, ptr %buf, i32 %len) {\0Aentry:\0A\00" -@.str10388 = private unnamed_addr constant [3 x i8] c" \00" -@.str10389 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" -@.str10390 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" -@.str10391 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" -@.str10392 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %e\0A\00" +@.str10378 = private unnamed_addr constant [32 x i8] c" = getelementptr inbounds %Cmp_\00" +@.str10379 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str10380 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str10381 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10382 = private unnamed_addr constant [3 x i8] c" \00" +@.str10383 = private unnamed_addr constant [45 x i8] c" = getelementptr inbounds i8, ptr %buf, i32 \00" +@.str10384 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10385 = private unnamed_addr constant [24 x i8] c" call ptr @memcpy(ptr \00" +@.str10386 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str10387 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str10388 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10389 = private unnamed_addr constant [11 x i8] c" ret i32 \00" +@.str10390 = private unnamed_addr constant [5 x i8] c"\0A}\0A\0A\00" +@.str10391 = private unnamed_addr constant [22 x i8] c"define void @L_apply_\00" +@.str10392 = private unnamed_addr constant [39 x i8] c"(i32 %e, ptr %buf, i32 %len) {\0Aentry:\0A\00" @.str10393 = private unnamed_addr constant [3 x i8] c" \00" -@.str10394 = private unnamed_addr constant [32 x i8] c" = getelementptr inbounds %Cmp_\00" -@.str10395 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str10396 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str10397 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10394 = private unnamed_addr constant [28 x i8] c" = getelementptr inbounds [\00" +@.str10395 = private unnamed_addr constant [9 x i8] c" x %Cmp_\00" +@.str10396 = private unnamed_addr constant [11 x i8] c"], ptr @S_\00" +@.str10397 = private unnamed_addr constant [17 x i8] c", i32 0, i32 %e\0A\00" @.str10398 = private unnamed_addr constant [3 x i8] c" \00" -@.str10399 = private unnamed_addr constant [45 x i8] c" = getelementptr inbounds i8, ptr %buf, i32 \00" -@.str10400 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10401 = private unnamed_addr constant [24 x i8] c" call ptr @memcpy(ptr \00" -@.str10402 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str10403 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str10404 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10405 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" -@.str10406 = private unnamed_addr constant [56 x i8] c"define i32 @ludic_serialize(i32 %e, ptr %buf) {\0Aentry:\0A\00" -@.str10407 = private unnamed_addr constant [33 x i8] c" %kp = getelementptr inbounds [\00" -@.str10408 = private unnamed_addr constant [62 x i8] c" x i32], ptr @L_kind, i32 0, i32 %e\0A %k = load i32, ptr %kp\0A\00" -@.str10409 = private unnamed_addr constant [5 x i8] c" %c\00" -@.str10410 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %k, \00" -@.str10411 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10412 = private unnamed_addr constant [11 x i8] c" br i1 %c\00" -@.str10413 = private unnamed_addr constant [11 x i8] c", label %h\00" -@.str10414 = private unnamed_addr constant [11 x i8] c", label %n\00" -@.str10415 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10416 = private unnamed_addr constant [2 x i8] c"h\00" -@.str10417 = private unnamed_addr constant [7 x i8] c":\0A %r\00" -@.str10418 = private unnamed_addr constant [26 x i8] c" = call i32 @L_serialize_\00" -@.str10419 = private unnamed_addr constant [32 x i8] c"(i32 %e, ptr %buf)\0A ret i32 %r\00" +@.str10399 = private unnamed_addr constant [32 x i8] c" = getelementptr inbounds %Cmp_\00" +@.str10400 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str10401 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" +@.str10402 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10403 = private unnamed_addr constant [3 x i8] c" \00" +@.str10404 = private unnamed_addr constant [45 x i8] c" = getelementptr inbounds i8, ptr %buf, i32 \00" +@.str10405 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10406 = private unnamed_addr constant [24 x i8] c" call ptr @memcpy(ptr \00" +@.str10407 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str10408 = private unnamed_addr constant [7 x i8] c", i64 \00" +@.str10409 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10410 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" +@.str10411 = private unnamed_addr constant [56 x i8] c"define i32 @ludic_serialize(i32 %e, ptr %buf) {\0Aentry:\0A\00" +@.str10412 = private unnamed_addr constant [33 x i8] c" %kp = getelementptr inbounds [\00" +@.str10413 = private unnamed_addr constant [62 x i8] c" x i32], ptr @L_kind, i32 0, i32 %e\0A %k = load i32, ptr %kp\0A\00" +@.str10414 = private unnamed_addr constant [5 x i8] c" %c\00" +@.str10415 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %k, \00" +@.str10416 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10417 = private unnamed_addr constant [11 x i8] c" br i1 %c\00" +@.str10418 = private unnamed_addr constant [11 x i8] c", label %h\00" +@.str10419 = private unnamed_addr constant [11 x i8] c", label %n\00" @.str10420 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10421 = private unnamed_addr constant [2 x i8] c"n\00" -@.str10422 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10423 = private unnamed_addr constant [16 x i8] c" ret i32 0\0A}\0A\0A\00" -@.str10424 = private unnamed_addr constant [63 x i8] c"define void @ludic_apply(i32 %e, ptr %buf, i32 %len) {\0Aentry:\0A\00" -@.str10425 = private unnamed_addr constant [33 x i8] c" %kp = getelementptr inbounds [\00" -@.str10426 = private unnamed_addr constant [62 x i8] c" x i32], ptr @L_kind, i32 0, i32 %e\0A %k = load i32, ptr %kp\0A\00" -@.str10427 = private unnamed_addr constant [5 x i8] c" %c\00" -@.str10428 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %k, \00" -@.str10429 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10430 = private unnamed_addr constant [11 x i8] c" br i1 %c\00" -@.str10431 = private unnamed_addr constant [11 x i8] c", label %h\00" -@.str10432 = private unnamed_addr constant [11 x i8] c", label %n\00" -@.str10433 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10434 = private unnamed_addr constant [2 x i8] c"h\00" -@.str10435 = private unnamed_addr constant [24 x i8] c":\0A call void @L_apply_\00" -@.str10436 = private unnamed_addr constant [41 x i8] c"(i32 %e, ptr %buf, i32 %len)\0A ret void\0A\00" -@.str10437 = private unnamed_addr constant [2 x i8] c"n\00" -@.str10438 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10439 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" -@.str10440 = private unnamed_addr constant [46 x i8] c"define i32 @ludic_sync_size(i32 %e) {\0Aentry:\0A\00" -@.str10441 = private unnamed_addr constant [33 x i8] c" %kp = getelementptr inbounds [\00" -@.str10442 = private unnamed_addr constant [62 x i8] c" x i32], ptr @L_kind, i32 0, i32 %e\0A %k = load i32, ptr %kp\0A\00" -@.str10443 = private unnamed_addr constant [5 x i8] c" %c\00" -@.str10444 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %k, \00" -@.str10445 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10446 = private unnamed_addr constant [11 x i8] c" br i1 %c\00" -@.str10447 = private unnamed_addr constant [11 x i8] c", label %h\00" -@.str10448 = private unnamed_addr constant [11 x i8] c", label %n\00" -@.str10449 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10450 = private unnamed_addr constant [2 x i8] c"h\00" -@.str10451 = private unnamed_addr constant [13 x i8] c":\0A ret i32 \00" -@.str10452 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10453 = private unnamed_addr constant [2 x i8] c"n\00" -@.str10454 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10455 = private unnamed_addr constant [16 x i8] c" ret i32 0\0A}\0A\0A\00" -@.str10456 = private unnamed_addr constant [38 x i8] c"define i32 @L_owner(i32 %e) {\0Aentry:\0A\00" -@.str10457 = private unnamed_addr constant [32 x i8] c" %p = getelementptr inbounds [\00" -@.str10458 = private unnamed_addr constant [82 x i8] c" x i32], ptr @L_owner_arr, i32 0, i32 %e\0A %v = load i32, ptr %p\0A ret i32 %v\0A}\0A\0A\00" -@.str10459 = private unnamed_addr constant [52 x i8] c"define void @L_set_owner(i32 %e, i32 %id) {\0Aentry:\0A\00" -@.str10460 = private unnamed_addr constant [32 x i8] c" %p = getelementptr inbounds [\00" -@.str10461 = private unnamed_addr constant [80 x i8] c" x i32], ptr @L_owner_arr, i32 0, i32 %e\0A store i32 %id, ptr %p\0A ret void\0A}\0A\0A\00" -@.str10462 = private unnamed_addr constant [41 x i8] c"define i32 @L_is_owner(i32 %e) {\0Aentry:\0A\00" -@.str10463 = private unnamed_addr constant [32 x i8] c" %p = getelementptr inbounds [\00" -@.str10464 = private unnamed_addr constant [66 x i8] c" x i32], ptr @L_owner_arr, i32 0, i32 %e\0A %o = load i32, ptr %p\0A\00" -@.str10465 = private unnamed_addr constant [106 x i8] c" %lid = load i32, ptr @L_localid\0A %eq = icmp eq i32 %o, %lid\0A %r = zext i1 %eq to i32\0A ret i32 %r\0A}\0A\0A\00" -@.str10466 = private unnamed_addr constant [62 x i8] c"@L_netq = internal global [64 x [2048 x i8]] zeroinitializer\0A\00" -@.str10467 = private unnamed_addr constant [56 x i8] c"@L_netlen = internal global [64 x i32] zeroinitializer\0A\00" -@.str10468 = private unnamed_addr constant [36 x i8] c"@L_nethead = internal global i32 0\0A\00" -@.str10469 = private unnamed_addr constant [36 x i8] c"@L_nettail = internal global i32 0\0A\00" -@.str10470 = private unnamed_addr constant [65 x i8] c"define void @L_net_send(i32 %peer, ptr %buf, i32 %len) {\0Aentry:\0A\00" -@.str10471 = private unnamed_addr constant [71 x i8] c" %l0 = icmp slt i32 %len, 0\0A %len1 = select i1 %l0, i32 0, i32 %len\0A\00" -@.str10472 = private unnamed_addr constant [76 x i8] c" %l1 = icmp sgt i32 %len1, 2048\0A %n = select i1 %l1, i32 2048, i32 %len1\0A\00" -@.str10473 = private unnamed_addr constant [65 x i8] c" %t = load i32, ptr @L_nettail\0A %h = load i32, ptr @L_nethead\0A\00" -@.str10474 = private unnamed_addr constant [78 x i8] c" %t1 = add i32 %t, 1\0A %tn = srem i32 %t1, 64\0A %full = icmp eq i32 %tn, %h\0A\00" -@.str10475 = private unnamed_addr constant [39 x i8] c" br i1 %full, label %drop, label %go\0A\00" -@.str10476 = private unnamed_addr constant [5 x i8] c"go:\0A\00" -@.str10477 = private unnamed_addr constant [80 x i8] c" %row = getelementptr inbounds [64 x [2048 x i8]], ptr @L_netq, i32 0, i32 %t\0A\00" -@.str10478 = private unnamed_addr constant [76 x i8] c" %nz = zext i32 %n to i64\0A call ptr @memcpy(ptr %row, ptr %buf, i64 %nz)\0A\00" -@.str10479 = private unnamed_addr constant [97 x i8] c" %lp = getelementptr inbounds [64 x i32], ptr @L_netlen, i32 0, i32 %t\0A store i32 %n, ptr %lp\0A\00" -@.str10480 = private unnamed_addr constant [50 x i8] c" store i32 %tn, ptr @L_nettail\0A br label %drop\0A\00" -@.str10481 = private unnamed_addr constant [21 x i8] c"drop:\0A ret void\0A}\0A\0A\00" -@.str10482 = private unnamed_addr constant [53 x i8] c"define i32 @L_net_poll(ptr %buf, i32 %cap) {\0Aentry:\0A\00" -@.str10483 = private unnamed_addr constant [95 x i8] c" %h = load i32, ptr @L_nethead\0A %t = load i32, ptr @L_nettail\0A %empty = icmp eq i32 %h, %t\0A\00" -@.str10484 = private unnamed_addr constant [40 x i8] c" br i1 %empty, label %none, label %go\0A\00" -@.str10485 = private unnamed_addr constant [5 x i8] c"go:\0A\00" -@.str10486 = private unnamed_addr constant [99 x i8] c" %lp = getelementptr inbounds [64 x i32], ptr @L_netlen, i32 0, i32 %h\0A %ln = load i32, ptr %lp\0A\00" -@.str10487 = private unnamed_addr constant [74 x i8] c" %big = icmp sgt i32 %ln, %cap\0A %n = select i1 %big, i32 %cap, i32 %ln\0A\00" -@.str10488 = private unnamed_addr constant [80 x i8] c" %row = getelementptr inbounds [64 x [2048 x i8]], ptr @L_netq, i32 0, i32 %h\0A\00" -@.str10489 = private unnamed_addr constant [76 x i8] c" %nz = zext i32 %n to i64\0A call ptr @memcpy(ptr %buf, ptr %row, i64 %nz)\0A\00" -@.str10490 = private unnamed_addr constant [93 x i8] c" %h1 = add i32 %h, 1\0A %hn = srem i32 %h1, 64\0A store i32 %hn, ptr @L_nethead\0A ret i32 %n\0A\00" -@.str10491 = private unnamed_addr constant [22 x i8] c"none:\0A ret i32 0\0A}\0A\0A\00" -@.str10492 = private unnamed_addr constant [9 x i8] c"net_send\00" -@.str10493 = private unnamed_addr constant [11 x i8] c"L_net_send\00" -@.str10494 = private unnamed_addr constant [9 x i8] c"net_poll\00" -@.str10495 = private unnamed_addr constant [11 x i8] c"L_net_poll\00" -@.str10496 = private unnamed_addr constant [58 x i8] c"@L_recvbuf = internal global [2048 x i8] zeroinitializer\0A\00" -@.str10497 = private unnamed_addr constant [9 x i8] c"net_poll\00" -@.str10498 = private unnamed_addr constant [53 x i8] c"define void @L_net_pump() {\0Aentry:\0A br label %loop\0A\00" -@.str10499 = private unnamed_addr constant [24 x i8] c"loop:\0A %n = call i32 @\00" -@.str10500 = private unnamed_addr constant [28 x i8] c"(ptr @L_recvbuf, i32 2048)\0A\00" -@.str10501 = private unnamed_addr constant [68 x i8] c" %done = icmp eq i32 %n, 0\0A br i1 %done, label %fin, label %body\0A\00" -@.str10502 = private unnamed_addr constant [41 x i8] c"body:\0A %eid = load i32, ptr @L_recvbuf\0A\00" -@.str10503 = private unnamed_addr constant [5 x i8] c" %c\00" -@.str10504 = private unnamed_addr constant [22 x i8] c" = icmp eq i32 %eid, \00" -@.str10505 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10506 = private unnamed_addr constant [11 x i8] c" br i1 %c\00" -@.str10507 = private unnamed_addr constant [11 x i8] c", label %h\00" -@.str10508 = private unnamed_addr constant [11 x i8] c", label %x\00" -@.str10509 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10510 = private unnamed_addr constant [2 x i8] c"h\00" -@.str10511 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10512 = private unnamed_addr constant [2 x i8] c"_\00" -@.str10513 = private unnamed_addr constant [6 x i8] c" %fa\00" -@.str10514 = private unnamed_addr constant [51 x i8] c" = getelementptr inbounds i8, ptr @L_recvbuf, i32 \00" -@.str10515 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10516 = private unnamed_addr constant [6 x i8] c" %fv\00" -@.str10517 = private unnamed_addr constant [9 x i8] c" = load \00" -@.str10518 = private unnamed_addr constant [10 x i8] c", ptr %fa\00" -@.str10519 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10520 = private unnamed_addr constant [3 x i8] c", \00" -@.str10521 = private unnamed_addr constant [5 x i8] c" %fv\00" -@.str10522 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" -@.str10523 = private unnamed_addr constant [2 x i8] c"(\00" -@.str10524 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10525 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" -@.str10526 = private unnamed_addr constant [2 x i8] c"x\00" -@.str10527 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10528 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" -@.str10529 = private unnamed_addr constant [20 x i8] c"fin:\0A ret void\0A}\0A\0A\00" -@.str10530 = private unnamed_addr constant [58 x i8] c"@L_sendbuf = internal global [2048 x i8] zeroinitializer\0A\00" -@.str10531 = private unnamed_addr constant [6 x i8] c"panel\00" -@.str10532 = private unnamed_addr constant [4 x i8] c"col\00" -@.str10533 = private unnamed_addr constant [4 x i8] c"row\00" -@.str10534 = private unnamed_addr constant [6 x i8] c"label\00" -@.str10535 = private unnamed_addr constant [7 x i8] c"button\00" -@.str10536 = private unnamed_addr constant [6 x i8] c"image\00" -@.str10537 = private unnamed_addr constant [7 x i8] c"spacer\00" -@.str10538 = private unnamed_addr constant [5 x i8] c"font\00" -@.str10539 = private unnamed_addr constant [5 x i8] c"size\00" -@.str10540 = private unnamed_addr constant [3 x i8] c"fg\00" -@.str10541 = private unnamed_addr constant [6 x i8] c"align\00" -@.str10542 = private unnamed_addr constant [3 x i8] c"id\00" -@.str10543 = private unnamed_addr constant [31 x i8] c" call void @fn_rt_ui_set(i32 \00" -@.str10544 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str10545 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str10546 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10547 = private unnamed_addr constant [2 x i8] c"w\00" -@.str10548 = private unnamed_addr constant [2 x i8] c"h\00" -@.str10549 = private unnamed_addr constant [2 x i8] c"x\00" -@.str10550 = private unnamed_addr constant [2 x i8] c"y\00" -@.str10551 = private unnamed_addr constant [4 x i8] c"pad\00" -@.str10552 = private unnamed_addr constant [4 x i8] c"gap\00" -@.str10553 = private unnamed_addr constant [3 x i8] c"bg\00" -@.str10554 = private unnamed_addr constant [3 x i8] c"fg\00" -@.str10555 = private unnamed_addr constant [7 x i8] c"border\00" -@.str10556 = private unnamed_addr constant [5 x i8] c"grow\00" -@.str10557 = private unnamed_addr constant [5 x i8] c"font\00" -@.str10558 = private unnamed_addr constant [5 x i8] c"size\00" -@.str10559 = private unnamed_addr constant [6 x i8] c"inset\00" -@.str10560 = private unnamed_addr constant [6 x i8] c"focus\00" -@.str10561 = private unnamed_addr constant [33 x i8] c" call void @fn_rt_ui_reset(i32 \00" -@.str10562 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10563 = private unnamed_addr constant [2 x i8] c"1\00" -@.str10564 = private unnamed_addr constant [3 x i8] c"id\00" -@.str10565 = private unnamed_addr constant [5 x i8] c"goto\00" -@.str10566 = private unnamed_addr constant [5 x i8] c"text\00" -@.str10567 = private unnamed_addr constant [39 x i8] c" call void @fn_rt_ui_static_text(i32 \00" -@.str10568 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str10569 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10570 = private unnamed_addr constant [5 x i8] c"skin\00" -@.str10571 = private unnamed_addr constant [6 x i8] c"image\00" -@.str10572 = private unnamed_addr constant [32 x i8] c"call i32 @fn_rt_image_load(ptr \00" -@.str10573 = private unnamed_addr constant [2 x i8] c")\00" -@.str10574 = private unnamed_addr constant [5 x i8] c"skin\00" -@.str10575 = private unnamed_addr constant [6 x i8] c"align\00" -@.str10576 = private unnamed_addr constant [7 x i8] c"center\00" -@.str10577 = private unnamed_addr constant [4 x i8] c"end\00" -@.str10578 = private unnamed_addr constant [2 x i8] c"1\00" -@.str10579 = private unnamed_addr constant [34 x i8] c"define void @ui_build() {\0Aentry:\0A\00" -@.str10580 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" -@.str10581 = private unnamed_addr constant [3 x i8] c", \00" -@.str10582 = private unnamed_addr constant [7 x i8] c" %arg_\00" -@.str10583 = private unnamed_addr constant [5 x i8] c"void\00" -@.str10584 = private unnamed_addr constant [20 x i8] c" %retval = alloca \00" -@.str10585 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10586 = private unnamed_addr constant [9 x i8] c" store \00" +@.str10421 = private unnamed_addr constant [2 x i8] c"h\00" +@.str10422 = private unnamed_addr constant [7 x i8] c":\0A %r\00" +@.str10423 = private unnamed_addr constant [26 x i8] c" = call i32 @L_serialize_\00" +@.str10424 = private unnamed_addr constant [32 x i8] c"(i32 %e, ptr %buf)\0A ret i32 %r\00" +@.str10425 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10426 = private unnamed_addr constant [2 x i8] c"n\00" +@.str10427 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10428 = private unnamed_addr constant [16 x i8] c" ret i32 0\0A}\0A\0A\00" +@.str10429 = private unnamed_addr constant [63 x i8] c"define void @ludic_apply(i32 %e, ptr %buf, i32 %len) {\0Aentry:\0A\00" +@.str10430 = private unnamed_addr constant [33 x i8] c" %kp = getelementptr inbounds [\00" +@.str10431 = private unnamed_addr constant [62 x i8] c" x i32], ptr @L_kind, i32 0, i32 %e\0A %k = load i32, ptr %kp\0A\00" +@.str10432 = private unnamed_addr constant [5 x i8] c" %c\00" +@.str10433 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %k, \00" +@.str10434 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10435 = private unnamed_addr constant [11 x i8] c" br i1 %c\00" +@.str10436 = private unnamed_addr constant [11 x i8] c", label %h\00" +@.str10437 = private unnamed_addr constant [11 x i8] c", label %n\00" +@.str10438 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10439 = private unnamed_addr constant [2 x i8] c"h\00" +@.str10440 = private unnamed_addr constant [24 x i8] c":\0A call void @L_apply_\00" +@.str10441 = private unnamed_addr constant [41 x i8] c"(i32 %e, ptr %buf, i32 %len)\0A ret void\0A\00" +@.str10442 = private unnamed_addr constant [2 x i8] c"n\00" +@.str10443 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10444 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" +@.str10445 = private unnamed_addr constant [46 x i8] c"define i32 @ludic_sync_size(i32 %e) {\0Aentry:\0A\00" +@.str10446 = private unnamed_addr constant [33 x i8] c" %kp = getelementptr inbounds [\00" +@.str10447 = private unnamed_addr constant [62 x i8] c" x i32], ptr @L_kind, i32 0, i32 %e\0A %k = load i32, ptr %kp\0A\00" +@.str10448 = private unnamed_addr constant [5 x i8] c" %c\00" +@.str10449 = private unnamed_addr constant [20 x i8] c" = icmp eq i32 %k, \00" +@.str10450 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10451 = private unnamed_addr constant [11 x i8] c" br i1 %c\00" +@.str10452 = private unnamed_addr constant [11 x i8] c", label %h\00" +@.str10453 = private unnamed_addr constant [11 x i8] c", label %n\00" +@.str10454 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10455 = private unnamed_addr constant [2 x i8] c"h\00" +@.str10456 = private unnamed_addr constant [13 x i8] c":\0A ret i32 \00" +@.str10457 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10458 = private unnamed_addr constant [2 x i8] c"n\00" +@.str10459 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10460 = private unnamed_addr constant [16 x i8] c" ret i32 0\0A}\0A\0A\00" +@.str10461 = private unnamed_addr constant [38 x i8] c"define i32 @L_owner(i32 %e) {\0Aentry:\0A\00" +@.str10462 = private unnamed_addr constant [32 x i8] c" %p = getelementptr inbounds [\00" +@.str10463 = private unnamed_addr constant [82 x i8] c" x i32], ptr @L_owner_arr, i32 0, i32 %e\0A %v = load i32, ptr %p\0A ret i32 %v\0A}\0A\0A\00" +@.str10464 = private unnamed_addr constant [52 x i8] c"define void @L_set_owner(i32 %e, i32 %id) {\0Aentry:\0A\00" +@.str10465 = private unnamed_addr constant [32 x i8] c" %p = getelementptr inbounds [\00" +@.str10466 = private unnamed_addr constant [80 x i8] c" x i32], ptr @L_owner_arr, i32 0, i32 %e\0A store i32 %id, ptr %p\0A ret void\0A}\0A\0A\00" +@.str10467 = private unnamed_addr constant [41 x i8] c"define i32 @L_is_owner(i32 %e) {\0Aentry:\0A\00" +@.str10468 = private unnamed_addr constant [32 x i8] c" %p = getelementptr inbounds [\00" +@.str10469 = private unnamed_addr constant [66 x i8] c" x i32], ptr @L_owner_arr, i32 0, i32 %e\0A %o = load i32, ptr %p\0A\00" +@.str10470 = private unnamed_addr constant [106 x i8] c" %lid = load i32, ptr @L_localid\0A %eq = icmp eq i32 %o, %lid\0A %r = zext i1 %eq to i32\0A ret i32 %r\0A}\0A\0A\00" +@.str10471 = private unnamed_addr constant [62 x i8] c"@L_netq = internal global [64 x [2048 x i8]] zeroinitializer\0A\00" +@.str10472 = private unnamed_addr constant [56 x i8] c"@L_netlen = internal global [64 x i32] zeroinitializer\0A\00" +@.str10473 = private unnamed_addr constant [36 x i8] c"@L_nethead = internal global i32 0\0A\00" +@.str10474 = private unnamed_addr constant [36 x i8] c"@L_nettail = internal global i32 0\0A\00" +@.str10475 = private unnamed_addr constant [65 x i8] c"define void @L_net_send(i32 %peer, ptr %buf, i32 %len) {\0Aentry:\0A\00" +@.str10476 = private unnamed_addr constant [71 x i8] c" %l0 = icmp slt i32 %len, 0\0A %len1 = select i1 %l0, i32 0, i32 %len\0A\00" +@.str10477 = private unnamed_addr constant [76 x i8] c" %l1 = icmp sgt i32 %len1, 2048\0A %n = select i1 %l1, i32 2048, i32 %len1\0A\00" +@.str10478 = private unnamed_addr constant [65 x i8] c" %t = load i32, ptr @L_nettail\0A %h = load i32, ptr @L_nethead\0A\00" +@.str10479 = private unnamed_addr constant [78 x i8] c" %t1 = add i32 %t, 1\0A %tn = srem i32 %t1, 64\0A %full = icmp eq i32 %tn, %h\0A\00" +@.str10480 = private unnamed_addr constant [39 x i8] c" br i1 %full, label %drop, label %go\0A\00" +@.str10481 = private unnamed_addr constant [5 x i8] c"go:\0A\00" +@.str10482 = private unnamed_addr constant [80 x i8] c" %row = getelementptr inbounds [64 x [2048 x i8]], ptr @L_netq, i32 0, i32 %t\0A\00" +@.str10483 = private unnamed_addr constant [76 x i8] c" %nz = zext i32 %n to i64\0A call ptr @memcpy(ptr %row, ptr %buf, i64 %nz)\0A\00" +@.str10484 = private unnamed_addr constant [97 x i8] c" %lp = getelementptr inbounds [64 x i32], ptr @L_netlen, i32 0, i32 %t\0A store i32 %n, ptr %lp\0A\00" +@.str10485 = private unnamed_addr constant [50 x i8] c" store i32 %tn, ptr @L_nettail\0A br label %drop\0A\00" +@.str10486 = private unnamed_addr constant [21 x i8] c"drop:\0A ret void\0A}\0A\0A\00" +@.str10487 = private unnamed_addr constant [53 x i8] c"define i32 @L_net_poll(ptr %buf, i32 %cap) {\0Aentry:\0A\00" +@.str10488 = private unnamed_addr constant [95 x i8] c" %h = load i32, ptr @L_nethead\0A %t = load i32, ptr @L_nettail\0A %empty = icmp eq i32 %h, %t\0A\00" +@.str10489 = private unnamed_addr constant [40 x i8] c" br i1 %empty, label %none, label %go\0A\00" +@.str10490 = private unnamed_addr constant [5 x i8] c"go:\0A\00" +@.str10491 = private unnamed_addr constant [99 x i8] c" %lp = getelementptr inbounds [64 x i32], ptr @L_netlen, i32 0, i32 %h\0A %ln = load i32, ptr %lp\0A\00" +@.str10492 = private unnamed_addr constant [74 x i8] c" %big = icmp sgt i32 %ln, %cap\0A %n = select i1 %big, i32 %cap, i32 %ln\0A\00" +@.str10493 = private unnamed_addr constant [80 x i8] c" %row = getelementptr inbounds [64 x [2048 x i8]], ptr @L_netq, i32 0, i32 %h\0A\00" +@.str10494 = private unnamed_addr constant [76 x i8] c" %nz = zext i32 %n to i64\0A call ptr @memcpy(ptr %buf, ptr %row, i64 %nz)\0A\00" +@.str10495 = private unnamed_addr constant [93 x i8] c" %h1 = add i32 %h, 1\0A %hn = srem i32 %h1, 64\0A store i32 %hn, ptr @L_nethead\0A ret i32 %n\0A\00" +@.str10496 = private unnamed_addr constant [22 x i8] c"none:\0A ret i32 0\0A}\0A\0A\00" +@.str10497 = private unnamed_addr constant [9 x i8] c"net_send\00" +@.str10498 = private unnamed_addr constant [11 x i8] c"L_net_send\00" +@.str10499 = private unnamed_addr constant [9 x i8] c"net_poll\00" +@.str10500 = private unnamed_addr constant [11 x i8] c"L_net_poll\00" +@.str10501 = private unnamed_addr constant [58 x i8] c"@L_recvbuf = internal global [2048 x i8] zeroinitializer\0A\00" +@.str10502 = private unnamed_addr constant [9 x i8] c"net_poll\00" +@.str10503 = private unnamed_addr constant [53 x i8] c"define void @L_net_pump() {\0Aentry:\0A br label %loop\0A\00" +@.str10504 = private unnamed_addr constant [24 x i8] c"loop:\0A %n = call i32 @\00" +@.str10505 = private unnamed_addr constant [28 x i8] c"(ptr @L_recvbuf, i32 2048)\0A\00" +@.str10506 = private unnamed_addr constant [68 x i8] c" %done = icmp eq i32 %n, 0\0A br i1 %done, label %fin, label %body\0A\00" +@.str10507 = private unnamed_addr constant [41 x i8] c"body:\0A %eid = load i32, ptr @L_recvbuf\0A\00" +@.str10508 = private unnamed_addr constant [5 x i8] c" %c\00" +@.str10509 = private unnamed_addr constant [22 x i8] c" = icmp eq i32 %eid, \00" +@.str10510 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10511 = private unnamed_addr constant [11 x i8] c" br i1 %c\00" +@.str10512 = private unnamed_addr constant [11 x i8] c", label %h\00" +@.str10513 = private unnamed_addr constant [11 x i8] c", label %x\00" +@.str10514 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10515 = private unnamed_addr constant [2 x i8] c"h\00" +@.str10516 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10517 = private unnamed_addr constant [2 x i8] c"_\00" +@.str10518 = private unnamed_addr constant [6 x i8] c" %fa\00" +@.str10519 = private unnamed_addr constant [51 x i8] c" = getelementptr inbounds i8, ptr @L_recvbuf, i32 \00" +@.str10520 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10521 = private unnamed_addr constant [6 x i8] c" %fv\00" +@.str10522 = private unnamed_addr constant [9 x i8] c" = load \00" +@.str10523 = private unnamed_addr constant [10 x i8] c", ptr %fa\00" +@.str10524 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10525 = private unnamed_addr constant [3 x i8] c", \00" +@.str10526 = private unnamed_addr constant [5 x i8] c" %fv\00" +@.str10527 = private unnamed_addr constant [17 x i8] c" call void @ev_\00" +@.str10528 = private unnamed_addr constant [2 x i8] c"(\00" +@.str10529 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10530 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" +@.str10531 = private unnamed_addr constant [2 x i8] c"x\00" +@.str10532 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10533 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" +@.str10534 = private unnamed_addr constant [20 x i8] c"fin:\0A ret void\0A}\0A\0A\00" +@.str10535 = private unnamed_addr constant [58 x i8] c"@L_sendbuf = internal global [2048 x i8] zeroinitializer\0A\00" +@.str10536 = private unnamed_addr constant [6 x i8] c"panel\00" +@.str10537 = private unnamed_addr constant [4 x i8] c"col\00" +@.str10538 = private unnamed_addr constant [4 x i8] c"row\00" +@.str10539 = private unnamed_addr constant [6 x i8] c"label\00" +@.str10540 = private unnamed_addr constant [7 x i8] c"button\00" +@.str10541 = private unnamed_addr constant [6 x i8] c"image\00" +@.str10542 = private unnamed_addr constant [7 x i8] c"spacer\00" +@.str10543 = private unnamed_addr constant [5 x i8] c"font\00" +@.str10544 = private unnamed_addr constant [5 x i8] c"size\00" +@.str10545 = private unnamed_addr constant [3 x i8] c"fg\00" +@.str10546 = private unnamed_addr constant [6 x i8] c"align\00" +@.str10547 = private unnamed_addr constant [3 x i8] c"id\00" +@.str10548 = private unnamed_addr constant [31 x i8] c" call void @fn_rt_ui_set(i32 \00" +@.str10549 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str10550 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str10551 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10552 = private unnamed_addr constant [2 x i8] c"w\00" +@.str10553 = private unnamed_addr constant [2 x i8] c"h\00" +@.str10554 = private unnamed_addr constant [2 x i8] c"x\00" +@.str10555 = private unnamed_addr constant [2 x i8] c"y\00" +@.str10556 = private unnamed_addr constant [4 x i8] c"pad\00" +@.str10557 = private unnamed_addr constant [4 x i8] c"gap\00" +@.str10558 = private unnamed_addr constant [3 x i8] c"bg\00" +@.str10559 = private unnamed_addr constant [3 x i8] c"fg\00" +@.str10560 = private unnamed_addr constant [7 x i8] c"border\00" +@.str10561 = private unnamed_addr constant [5 x i8] c"grow\00" +@.str10562 = private unnamed_addr constant [5 x i8] c"font\00" +@.str10563 = private unnamed_addr constant [5 x i8] c"size\00" +@.str10564 = private unnamed_addr constant [6 x i8] c"inset\00" +@.str10565 = private unnamed_addr constant [6 x i8] c"focus\00" +@.str10566 = private unnamed_addr constant [33 x i8] c" call void @fn_rt_ui_reset(i32 \00" +@.str10567 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10568 = private unnamed_addr constant [2 x i8] c"1\00" +@.str10569 = private unnamed_addr constant [3 x i8] c"id\00" +@.str10570 = private unnamed_addr constant [5 x i8] c"goto\00" +@.str10571 = private unnamed_addr constant [5 x i8] c"text\00" +@.str10572 = private unnamed_addr constant [39 x i8] c" call void @fn_rt_ui_static_text(i32 \00" +@.str10573 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str10574 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10575 = private unnamed_addr constant [5 x i8] c"skin\00" +@.str10576 = private unnamed_addr constant [6 x i8] c"image\00" +@.str10577 = private unnamed_addr constant [32 x i8] c"call i32 @fn_rt_image_load(ptr \00" +@.str10578 = private unnamed_addr constant [2 x i8] c")\00" +@.str10579 = private unnamed_addr constant [5 x i8] c"skin\00" +@.str10580 = private unnamed_addr constant [6 x i8] c"align\00" +@.str10581 = private unnamed_addr constant [7 x i8] c"center\00" +@.str10582 = private unnamed_addr constant [4 x i8] c"end\00" +@.str10583 = private unnamed_addr constant [2 x i8] c"1\00" +@.str10584 = private unnamed_addr constant [34 x i8] c"define void @ui_build() {\0Aentry:\0A\00" +@.str10585 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" +@.str10586 = private unnamed_addr constant [3 x i8] c", \00" @.str10587 = private unnamed_addr constant [7 x i8] c" %arg_\00" -@.str10588 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str10589 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10590 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" -@.str10591 = private unnamed_addr constant [6 x i8] c"ret:\0A\00" -@.str10592 = private unnamed_addr constant [5 x i8] c"void\00" -@.str10593 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" -@.str10594 = private unnamed_addr constant [6 x i8] c"load \00" -@.str10595 = private unnamed_addr constant [14 x i8] c", ptr %retval\00" -@.str10596 = private unnamed_addr constant [7 x i8] c" ret \00" -@.str10597 = private unnamed_addr constant [2 x i8] c" \00" -@.str10598 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10599 = private unnamed_addr constant [8 x i8] c"define \00" -@.str10600 = private unnamed_addr constant [6 x i8] c" @fn_\00" -@.str10601 = private unnamed_addr constant [2 x i8] c"(\00" -@.str10602 = private unnamed_addr constant [12 x i8] c") {\0Aentry:\0A\00" -@.str10603 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" -@.str10604 = private unnamed_addr constant [4 x i8] c"int\00" -@.str10605 = private unnamed_addr constant [24 x i8] c" %retval = alloca i32\0A\00" -@.str10606 = private unnamed_addr constant [32 x i8] c" store i32 %argc, ptr @L_argc\0A\00" -@.str10607 = private unnamed_addr constant [32 x i8] c" store ptr %argv, ptr @L_argv\0A\00" -@.str10608 = private unnamed_addr constant [28 x i8] c" store i32 0, ptr %retval\0A\00" -@.str10609 = private unnamed_addr constant [8 x i8] c"rt_init\00" -@.str10610 = private unnamed_addr constant [27 x i8] c" call void @fn_rt_init()\0A\00" -@.str10611 = private unnamed_addr constant [31 x i8] c" call void @L_init_globals()\0A\00" -@.str10612 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" -@.str10613 = private unnamed_addr constant [6 x i8] c"ret:\0A\00" -@.str10614 = private unnamed_addr constant [22 x i8] c"load i32, ptr %retval\00" -@.str10615 = private unnamed_addr constant [11 x i8] c" ret i32 \00" -@.str10616 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10617 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" -@.str10618 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str10619 = private unnamed_addr constant [5 x i8] c"void\00" -@.str10620 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" -@.str10621 = private unnamed_addr constant [17 x i8] c"ret:\0A ret void\0A\00" -@.str10622 = private unnamed_addr constant [23 x i8] c"define void @fn__test_\00" -@.str10623 = private unnamed_addr constant [13 x i8] c"() {\0Aentry:\0A\00" -@.str10624 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" -@.str10625 = private unnamed_addr constant [38 x i8] c"@L_test_fail = internal global i32 0\0A\00" -@.str10626 = private unnamed_addr constant [94 x i8] c"@.fmt_test_sum = private unnamed_addr constant [28 x i8] c\22== %d passed, %d failed ==\5C0A\5C00\22\0A\00" -@.str10627 = private unnamed_addr constant [86 x i8] c"@.fmt_expect = private unnamed_addr constant [22 x i8] c\22%s (got %d, want %d)\5C0A\5C00\22\0A\00" -@.str10628 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" -@.str10629 = private unnamed_addr constant [32 x i8] c" store i32 %argc, ptr @L_argc\0A\00" -@.str10630 = private unnamed_addr constant [32 x i8] c" store ptr %argv, ptr @L_argv\0A\00" -@.str10631 = private unnamed_addr constant [51 x i8] c" %failed = alloca i32\0A store i32 0, ptr %failed\0A\00" -@.str10632 = private unnamed_addr constant [24 x i8] c" call void @rt_init()\0A\00" -@.str10633 = private unnamed_addr constant [31 x i8] c" call void @L_init_globals()\0A\00" -@.str10634 = private unnamed_addr constant [8 x i8] c"ok - \00" -@.str10635 = private unnamed_addr constant [8 x i8] c"FAIL - \00" -@.str10636 = private unnamed_addr constant [33 x i8] c" store i32 0, ptr @L_test_fail\0A\00" -@.str10637 = private unnamed_addr constant [23 x i8] c" call void @fn__test_\00" -@.str10638 = private unnamed_addr constant [4 x i8] c"()\0A\00" -@.str10639 = private unnamed_addr constant [27 x i8] c"load i32, ptr @L_test_fail\00" -@.str10640 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str10641 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str10642 = private unnamed_addr constant [6 x i8] c"tpass\00" -@.str10643 = private unnamed_addr constant [6 x i8] c"tfail\00" -@.str10644 = private unnamed_addr constant [6 x i8] c"tdone\00" -@.str10645 = private unnamed_addr constant [9 x i8] c" br i1 \00" -@.str10646 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str10647 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str10648 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10649 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10650 = private unnamed_addr constant [51 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_line, ptr \00" -@.str10651 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10652 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str10588 = private unnamed_addr constant [5 x i8] c"void\00" +@.str10589 = private unnamed_addr constant [20 x i8] c" %retval = alloca \00" +@.str10590 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10591 = private unnamed_addr constant [9 x i8] c" store \00" +@.str10592 = private unnamed_addr constant [7 x i8] c" %arg_\00" +@.str10593 = private unnamed_addr constant [7 x i8] c", ptr \00" +@.str10594 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10595 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" +@.str10596 = private unnamed_addr constant [6 x i8] c"ret:\0A\00" +@.str10597 = private unnamed_addr constant [5 x i8] c"void\00" +@.str10598 = private unnamed_addr constant [12 x i8] c" ret void\0A\00" +@.str10599 = private unnamed_addr constant [6 x i8] c"load \00" +@.str10600 = private unnamed_addr constant [14 x i8] c", ptr %retval\00" +@.str10601 = private unnamed_addr constant [7 x i8] c" ret \00" +@.str10602 = private unnamed_addr constant [2 x i8] c" \00" +@.str10603 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10604 = private unnamed_addr constant [8 x i8] c"define \00" +@.str10605 = private unnamed_addr constant [6 x i8] c" @fn_\00" +@.str10606 = private unnamed_addr constant [2 x i8] c"(\00" +@.str10607 = private unnamed_addr constant [12 x i8] c") {\0Aentry:\0A\00" +@.str10608 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" +@.str10609 = private unnamed_addr constant [4 x i8] c"int\00" +@.str10610 = private unnamed_addr constant [24 x i8] c" %retval = alloca i32\0A\00" +@.str10611 = private unnamed_addr constant [32 x i8] c" store i32 %argc, ptr @L_argc\0A\00" +@.str10612 = private unnamed_addr constant [32 x i8] c" store ptr %argv, ptr @L_argv\0A\00" +@.str10613 = private unnamed_addr constant [28 x i8] c" store i32 0, ptr %retval\0A\00" +@.str10614 = private unnamed_addr constant [8 x i8] c"rt_init\00" +@.str10615 = private unnamed_addr constant [27 x i8] c" call void @fn_rt_init()\0A\00" +@.str10616 = private unnamed_addr constant [31 x i8] c" call void @L_init_globals()\0A\00" +@.str10617 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" +@.str10618 = private unnamed_addr constant [6 x i8] c"ret:\0A\00" +@.str10619 = private unnamed_addr constant [22 x i8] c"load i32, ptr %retval\00" +@.str10620 = private unnamed_addr constant [11 x i8] c" ret i32 \00" +@.str10621 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10622 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" +@.str10623 = private unnamed_addr constant [3 x i8] c"}\0A\00" +@.str10624 = private unnamed_addr constant [5 x i8] c"void\00" +@.str10625 = private unnamed_addr constant [17 x i8] c" br label %ret\0A\00" +@.str10626 = private unnamed_addr constant [17 x i8] c"ret:\0A ret void\0A\00" +@.str10627 = private unnamed_addr constant [23 x i8] c"define void @fn__test_\00" +@.str10628 = private unnamed_addr constant [13 x i8] c"() {\0Aentry:\0A\00" +@.str10629 = private unnamed_addr constant [4 x i8] c"}\0A\0A\00" +@.str10630 = private unnamed_addr constant [38 x i8] c"@L_test_fail = internal global i32 0\0A\00" +@.str10631 = private unnamed_addr constant [94 x i8] c"@.fmt_test_sum = private unnamed_addr constant [28 x i8] c\22== %d passed, %d failed ==\5C0A\5C00\22\0A\00" +@.str10632 = private unnamed_addr constant [86 x i8] c"@.fmt_expect = private unnamed_addr constant [22 x i8] c\22%s (got %d, want %d)\5C0A\5C00\22\0A\00" +@.str10633 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" +@.str10634 = private unnamed_addr constant [32 x i8] c" store i32 %argc, ptr @L_argc\0A\00" +@.str10635 = private unnamed_addr constant [32 x i8] c" store ptr %argv, ptr @L_argv\0A\00" +@.str10636 = private unnamed_addr constant [51 x i8] c" %failed = alloca i32\0A store i32 0, ptr %failed\0A\00" +@.str10637 = private unnamed_addr constant [24 x i8] c" call void @rt_init()\0A\00" +@.str10638 = private unnamed_addr constant [31 x i8] c" call void @L_init_globals()\0A\00" +@.str10639 = private unnamed_addr constant [8 x i8] c"ok - \00" +@.str10640 = private unnamed_addr constant [8 x i8] c"FAIL - \00" +@.str10641 = private unnamed_addr constant [33 x i8] c" store i32 0, ptr @L_test_fail\0A\00" +@.str10642 = private unnamed_addr constant [23 x i8] c" call void @fn__test_\00" +@.str10643 = private unnamed_addr constant [4 x i8] c"()\0A\00" +@.str10644 = private unnamed_addr constant [27 x i8] c"load i32, ptr @L_test_fail\00" +@.str10645 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" +@.str10646 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str10647 = private unnamed_addr constant [6 x i8] c"tpass\00" +@.str10648 = private unnamed_addr constant [6 x i8] c"tfail\00" +@.str10649 = private unnamed_addr constant [6 x i8] c"tdone\00" +@.str10650 = private unnamed_addr constant [9 x i8] c" br i1 \00" +@.str10651 = private unnamed_addr constant [10 x i8] c", label %\00" +@.str10652 = private unnamed_addr constant [10 x i8] c", label %\00" @.str10653 = private unnamed_addr constant [2 x i8] c"\0A\00" @.str10654 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10655 = private unnamed_addr constant [22 x i8] c"load i32, ptr %failed\00" -@.str10656 = private unnamed_addr constant [9 x i8] c"add i32 \00" -@.str10657 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str10658 = private unnamed_addr constant [13 x i8] c" store i32 \00" -@.str10659 = private unnamed_addr constant [15 x i8] c", ptr %failed\0A\00" -@.str10660 = private unnamed_addr constant [51 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_line, ptr \00" -@.str10661 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10662 = private unnamed_addr constant [13 x i8] c" br label %\00" -@.str10663 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10664 = private unnamed_addr constant [3 x i8] c":\0A\00" -@.str10665 = private unnamed_addr constant [22 x i8] c"load i32, ptr %failed\00" -@.str10666 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str10667 = private unnamed_addr constant [3 x i8] c", \00" -@.str10668 = private unnamed_addr constant [55 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_test_sum, i32 \00" -@.str10669 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str10670 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10671 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str10672 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str10673 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str10674 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str10675 = private unnamed_addr constant [11 x i8] c" ret i32 \00" -@.str10676 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" -@.str10677 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str10678 = private unnamed_addr constant [30 x i8] c"' is defined twice (first in \00" -@.str10679 = private unnamed_addr constant [2 x i8] c":\00" -@.str10680 = private unnamed_addr constant [2 x i8] c")\00" -@.str10681 = private unnamed_addr constant [23 x i8] c"declare i32 @getpid()\0A\00" -@.str10682 = private unnamed_addr constant [37 x i8] c"declare i32 @fprintf(ptr, ptr, ...)\0A\00" -@.str10683 = private unnamed_addr constant [68 x i8] c"@.fmt_panic = private unnamed_addr constant [6 x i8] c\22%s%s\5C0A\5C00\22\0A\00" -@.str10684 = private unnamed_addr constant [34 x i8] c"%Result = type { i32, i32, ptr }\0A\00" -@.str10685 = private unnamed_addr constant [29 x i8] c"%Option = type { i32, i32 }\0A\00" -@.str10686 = private unnamed_addr constant [33 x i8] c"@L_cov_lines = internal global [\00" -@.str10687 = private unnamed_addr constant [10 x i8] c" x i32] [\00" -@.str10688 = private unnamed_addr constant [3 x i8] c", \00" -@.str10689 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str10690 = private unnamed_addr constant [3 x i8] c"]\0A\00" -@.str10691 = private unnamed_addr constant [32 x i8] c"@L_cov_hits = internal global [\00" -@.str10692 = private unnamed_addr constant [25 x i8] c" x i32] zeroinitializer\0A\00" -@.str10693 = private unnamed_addr constant [32 x i8] c"@L_cov_n = internal global i32 \00" -@.str10694 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10695 = private unnamed_addr constant [15 x i8] c"LUDIC_COVERAGE\00" -@.str10696 = private unnamed_addr constant [10 x i8] c"ludic.cov\00" -@.str10697 = private unnamed_addr constant [2 x i8] c"w\00" -@.str10698 = private unnamed_addr constant [73 x i8] c"@.cov_filefmt = private unnamed_addr constant [9 x i8] c\22FILE %s\5C0A\5C00\22\0A\00" -@.str10699 = private unnamed_addr constant [70 x i8] c"@.cov_rowfmt = private unnamed_addr constant [7 x i8] c\22%d %d\5C0A\5C00\22\0A\00" -@.str10700 = private unnamed_addr constant [37 x i8] c"declare i32 @fprintf(ptr, ptr, ...)\0A\00" -@.str10701 = private unnamed_addr constant [26 x i8] c"declare i32 @atexit(ptr)\0A\00" -@.str10702 = private unnamed_addr constant [34 x i8] c"define void @cov_dump() {\0Aentry:\0A\00" -@.str10703 = private unnamed_addr constant [31 x i8] c" %env = call ptr @getenv(ptr \00" -@.str10704 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10705 = private unnamed_addr constant [35 x i8] c" %noenv = icmp eq ptr %env, null\0A\00" -@.str10706 = private unnamed_addr constant [33 x i8] c" %path = select i1 %noenv, ptr \00" -@.str10707 = private unnamed_addr constant [12 x i8] c", ptr %env\0A\00" -@.str10708 = private unnamed_addr constant [39 x i8] c" %f = call ptr @fopen(ptr %path, ptr \00" +@.str10655 = private unnamed_addr constant [51 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_line, ptr \00" +@.str10656 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10657 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str10658 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10659 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10660 = private unnamed_addr constant [22 x i8] c"load i32, ptr %failed\00" +@.str10661 = private unnamed_addr constant [9 x i8] c"add i32 \00" +@.str10662 = private unnamed_addr constant [4 x i8] c", 1\00" +@.str10663 = private unnamed_addr constant [13 x i8] c" store i32 \00" +@.str10664 = private unnamed_addr constant [15 x i8] c", ptr %failed\0A\00" +@.str10665 = private unnamed_addr constant [51 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_line, ptr \00" +@.str10666 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10667 = private unnamed_addr constant [13 x i8] c" br label %\00" +@.str10668 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10669 = private unnamed_addr constant [3 x i8] c":\0A\00" +@.str10670 = private unnamed_addr constant [22 x i8] c"load i32, ptr %failed\00" +@.str10671 = private unnamed_addr constant [9 x i8] c"sub i32 \00" +@.str10672 = private unnamed_addr constant [3 x i8] c", \00" +@.str10673 = private unnamed_addr constant [55 x i8] c" call i32 (ptr, ...) @printf(ptr @.fmt_test_sum, i32 \00" +@.str10674 = private unnamed_addr constant [7 x i8] c", i32 \00" +@.str10675 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10676 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" +@.str10677 = private unnamed_addr constant [4 x i8] c", 0\00" +@.str10678 = private unnamed_addr constant [11 x i8] c"select i1 \00" +@.str10679 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" +@.str10680 = private unnamed_addr constant [11 x i8] c" ret i32 \00" +@.str10681 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" +@.str10682 = private unnamed_addr constant [11 x i8] c"function '\00" +@.str10683 = private unnamed_addr constant [30 x i8] c"' is defined twice (first in \00" +@.str10684 = private unnamed_addr constant [2 x i8] c":\00" +@.str10685 = private unnamed_addr constant [2 x i8] c")\00" +@.str10686 = private unnamed_addr constant [23 x i8] c"declare i32 @getpid()\0A\00" +@.str10687 = private unnamed_addr constant [37 x i8] c"declare i32 @fprintf(ptr, ptr, ...)\0A\00" +@.str10688 = private unnamed_addr constant [68 x i8] c"@.fmt_panic = private unnamed_addr constant [6 x i8] c\22%s%s\5C0A\5C00\22\0A\00" +@.str10689 = private unnamed_addr constant [34 x i8] c"%Result = type { i32, i32, ptr }\0A\00" +@.str10690 = private unnamed_addr constant [29 x i8] c"%Option = type { i32, i32 }\0A\00" +@.str10691 = private unnamed_addr constant [33 x i8] c"@L_cov_lines = internal global [\00" +@.str10692 = private unnamed_addr constant [10 x i8] c" x i32] [\00" +@.str10693 = private unnamed_addr constant [3 x i8] c", \00" +@.str10694 = private unnamed_addr constant [5 x i8] c"i32 \00" +@.str10695 = private unnamed_addr constant [3 x i8] c"]\0A\00" +@.str10696 = private unnamed_addr constant [32 x i8] c"@L_cov_hits = internal global [\00" +@.str10697 = private unnamed_addr constant [25 x i8] c" x i32] zeroinitializer\0A\00" +@.str10698 = private unnamed_addr constant [32 x i8] c"@L_cov_n = internal global i32 \00" +@.str10699 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10700 = private unnamed_addr constant [15 x i8] c"LUDIC_COVERAGE\00" +@.str10701 = private unnamed_addr constant [10 x i8] c"ludic.cov\00" +@.str10702 = private unnamed_addr constant [2 x i8] c"w\00" +@.str10703 = private unnamed_addr constant [73 x i8] c"@.cov_filefmt = private unnamed_addr constant [9 x i8] c\22FILE %s\5C0A\5C00\22\0A\00" +@.str10704 = private unnamed_addr constant [70 x i8] c"@.cov_rowfmt = private unnamed_addr constant [7 x i8] c\22%d %d\5C0A\5C00\22\0A\00" +@.str10705 = private unnamed_addr constant [37 x i8] c"declare i32 @fprintf(ptr, ptr, ...)\0A\00" +@.str10706 = private unnamed_addr constant [26 x i8] c"declare i32 @atexit(ptr)\0A\00" +@.str10707 = private unnamed_addr constant [34 x i8] c"define void @cov_dump() {\0Aentry:\0A\00" +@.str10708 = private unnamed_addr constant [31 x i8] c" %env = call ptr @getenv(ptr \00" @.str10709 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10710 = private unnamed_addr constant [31 x i8] c" %bad = icmp eq ptr %f, null\0A\00" -@.str10711 = private unnamed_addr constant [41 x i8] c" br i1 %bad, label %done, label %write\0A\00" -@.str10712 = private unnamed_addr constant [8 x i8] c"write:\0A\00" -@.str10713 = private unnamed_addr constant [68 x i8] c" call i32 (ptr, ptr, ...) @fprintf(ptr %f, ptr @.cov_filefmt, ptr \00" +@.str10710 = private unnamed_addr constant [35 x i8] c" %noenv = icmp eq ptr %env, null\0A\00" +@.str10711 = private unnamed_addr constant [33 x i8] c" %path = select i1 %noenv, ptr \00" +@.str10712 = private unnamed_addr constant [12 x i8] c", ptr %env\0A\00" +@.str10713 = private unnamed_addr constant [39 x i8] c" %f = call ptr @fopen(ptr %path, ptr \00" @.str10714 = private unnamed_addr constant [3 x i8] c")\0A\00" -@.str10715 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" -@.str10716 = private unnamed_addr constant [7 x i8] c"loop:\0A\00" -@.str10717 = private unnamed_addr constant [46 x i8] c" %i = phi i32 [ 0, %write ], [ %i1, %body ]\0A\00" -@.str10718 = private unnamed_addr constant [26 x i8] c" %go = icmp slt i32 %i, \00" -@.str10719 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10720 = private unnamed_addr constant [40 x i8] c" br i1 %go, label %body, label %close\0A\00" -@.str10721 = private unnamed_addr constant [7 x i8] c"body:\0A\00" -@.str10722 = private unnamed_addr constant [33 x i8] c" %lp = getelementptr inbounds [\00" -@.str10723 = private unnamed_addr constant [42 x i8] c" x i32], ptr @L_cov_lines, i32 0, i32 %i\0A\00" -@.str10724 = private unnamed_addr constant [27 x i8] c" %lv = load i32, ptr %lp\0A\00" -@.str10725 = private unnamed_addr constant [33 x i8] c" %hp = getelementptr inbounds [\00" -@.str10726 = private unnamed_addr constant [41 x i8] c" x i32], ptr @L_cov_hits, i32 0, i32 %i\0A\00" -@.str10727 = private unnamed_addr constant [27 x i8] c" %hv = load i32, ptr %hp\0A\00" -@.str10728 = private unnamed_addr constant [81 x i8] c" call i32 (ptr, ptr, ...) @fprintf(ptr %f, ptr @.cov_rowfmt, i32 %lv, i32 %hv)\0A\00" -@.str10729 = private unnamed_addr constant [23 x i8] c" %i1 = add i32 %i, 1\0A\00" -@.str10730 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" -@.str10731 = private unnamed_addr constant [8 x i8] c"close:\0A\00" -@.str10732 = private unnamed_addr constant [34 x i8] c" %rc = call i32 @fclose(ptr %f)\0A\00" -@.str10733 = private unnamed_addr constant [18 x i8] c" br label %done\0A\00" -@.str10734 = private unnamed_addr constant [21 x i8] c"done:\0A ret void\0A}\0A\0A\00" -@.str10735 = private unnamed_addr constant [34 x i8] c"define void @cov_init() {\0Aentry:\0A\00" -@.str10736 = private unnamed_addr constant [40 x i8] c" %r = call i32 @atexit(ptr @cov_dump)\0A\00" -@.str10737 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" -@.str10738 = private unnamed_addr constant [122 x i8] c"@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @cov_init, ptr null }]\0A\00" -@.str10739 = private unnamed_addr constant [3 x i8] c"wb\00" -@.str10740 = private unnamed_addr constant [7 x i8] c".ludic\00" -@.str10741 = private unnamed_addr constant [2 x i8] c"/\00" -@.str10742 = private unnamed_addr constant [8 x i8] c"VERSION\00" -@.str10743 = private unnamed_addr constant [24 x i8] c"ludic (version unknown)\00" -@.str10744 = private unnamed_addr constant [7 x i8] c"ludic \00" -@.str10745 = private unnamed_addr constant [1 x i8] c"\00" -@.str10746 = private unnamed_addr constant [1 x i8] c"\00" -@.str10747 = private unnamed_addr constant [2 x i8] c"?\00" -@.str10748 = private unnamed_addr constant [10 x i8] c"--version\00" -@.str10749 = private unnamed_addr constant [11 x i8] c"--windowed\00" -@.str10750 = private unnamed_addr constant [11 x i8] c"--headless\00" -@.str10751 = private unnamed_addr constant [12 x i8] c"--emit-llvm\00" -@.str10752 = private unnamed_addr constant [14 x i8] c"--emit-module\00" -@.str10753 = private unnamed_addr constant [6 x i8] c"--fmt\00" -@.str10754 = private unnamed_addr constant [13 x i8] c"--save-temps\00" -@.str10755 = private unnamed_addr constant [6 x i8] c"--run\00" -@.str10756 = private unnamed_addr constant [11 x i8] c"--coverage\00" -@.str10757 = private unnamed_addr constant [3 x i8] c"-o\00" -@.str10758 = private unnamed_addr constant [31 x i8] c"ludicc: ignoring unknown flag \00" -@.str10759 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str10760 = private unnamed_addr constant [90 x i8] c"usage: ludicc [-o out] [--windowed|--headless] [--emit-llvm] [--save-temps]\0A\00" -@.str10761 = private unnamed_addr constant [27 x i8] c"ludicc: cannot open input\0A\00" -@.str10762 = private unnamed_addr constant [16 x i8] c"/tmp/ludic-run-\00" -@.str10763 = private unnamed_addr constant [10 x i8] c"mkdir -p \00" -@.str10764 = private unnamed_addr constant [4 x i8] c".ll\00" -@.str10765 = private unnamed_addr constant [25 x i8] c"ludicc: cannot write IR\0A\00" -@.str10766 = private unnamed_addr constant [9 x i8] c"LUDIC_CC\00" -@.str10767 = private unnamed_addr constant [6 x i8] c"clang\00" -@.str10768 = private unnamed_addr constant [27 x i8] c" -O2 -Wno-override-module \00" -@.str10769 = private unnamed_addr constant [24 x i8] c"runtime/native/cocoa.ll\00" -@.str10770 = private unnamed_addr constant [2 x i8] c" \00" -@.str10771 = private unnamed_addr constant [79 x i8] c" -framework Cocoa -Wl,-needed_framework,GameController -Wl,-rpath,@loader_path\00" -@.str10772 = private unnamed_addr constant [24 x i8] c"runtime/native/audio.ll\00" -@.str10773 = private unnamed_addr constant [2 x i8] c" \00" -@.str10774 = private unnamed_addr constant [36 x i8] c" -Wl,-needed_framework,AVFoundation\00" -@.str10775 = private unnamed_addr constant [23 x i8] c"runtime/native/http.ll\00" -@.str10776 = private unnamed_addr constant [2 x i8] c" \00" -@.str10777 = private unnamed_addr constant [34 x i8] c" -Wl,-needed_framework,Foundation\00" -@.str10778 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str10779 = private unnamed_addr constant [7 x i8] c"rm -f \00" -@.str10780 = private unnamed_addr constant [21 x i8] c"ludicc: link failed\0A\00" +@.str10715 = private unnamed_addr constant [31 x i8] c" %bad = icmp eq ptr %f, null\0A\00" +@.str10716 = private unnamed_addr constant [41 x i8] c" br i1 %bad, label %done, label %write\0A\00" +@.str10717 = private unnamed_addr constant [8 x i8] c"write:\0A\00" +@.str10718 = private unnamed_addr constant [68 x i8] c" call i32 (ptr, ptr, ...) @fprintf(ptr %f, ptr @.cov_filefmt, ptr \00" +@.str10719 = private unnamed_addr constant [3 x i8] c")\0A\00" +@.str10720 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" +@.str10721 = private unnamed_addr constant [7 x i8] c"loop:\0A\00" +@.str10722 = private unnamed_addr constant [46 x i8] c" %i = phi i32 [ 0, %write ], [ %i1, %body ]\0A\00" +@.str10723 = private unnamed_addr constant [26 x i8] c" %go = icmp slt i32 %i, \00" +@.str10724 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10725 = private unnamed_addr constant [40 x i8] c" br i1 %go, label %body, label %close\0A\00" +@.str10726 = private unnamed_addr constant [7 x i8] c"body:\0A\00" +@.str10727 = private unnamed_addr constant [33 x i8] c" %lp = getelementptr inbounds [\00" +@.str10728 = private unnamed_addr constant [42 x i8] c" x i32], ptr @L_cov_lines, i32 0, i32 %i\0A\00" +@.str10729 = private unnamed_addr constant [27 x i8] c" %lv = load i32, ptr %lp\0A\00" +@.str10730 = private unnamed_addr constant [33 x i8] c" %hp = getelementptr inbounds [\00" +@.str10731 = private unnamed_addr constant [41 x i8] c" x i32], ptr @L_cov_hits, i32 0, i32 %i\0A\00" +@.str10732 = private unnamed_addr constant [27 x i8] c" %hv = load i32, ptr %hp\0A\00" +@.str10733 = private unnamed_addr constant [81 x i8] c" call i32 (ptr, ptr, ...) @fprintf(ptr %f, ptr @.cov_rowfmt, i32 %lv, i32 %hv)\0A\00" +@.str10734 = private unnamed_addr constant [23 x i8] c" %i1 = add i32 %i, 1\0A\00" +@.str10735 = private unnamed_addr constant [18 x i8] c" br label %loop\0A\00" +@.str10736 = private unnamed_addr constant [8 x i8] c"close:\0A\00" +@.str10737 = private unnamed_addr constant [34 x i8] c" %rc = call i32 @fclose(ptr %f)\0A\00" +@.str10738 = private unnamed_addr constant [18 x i8] c" br label %done\0A\00" +@.str10739 = private unnamed_addr constant [21 x i8] c"done:\0A ret void\0A}\0A\0A\00" +@.str10740 = private unnamed_addr constant [34 x i8] c"define void @cov_init() {\0Aentry:\0A\00" +@.str10741 = private unnamed_addr constant [40 x i8] c" %r = call i32 @atexit(ptr @cov_dump)\0A\00" +@.str10742 = private unnamed_addr constant [15 x i8] c" ret void\0A}\0A\0A\00" +@.str10743 = private unnamed_addr constant [122 x i8] c"@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @cov_init, ptr null }]\0A\00" +@.str10744 = private unnamed_addr constant [3 x i8] c"wb\00" +@.str10745 = private unnamed_addr constant [7 x i8] c".ludic\00" +@.str10746 = private unnamed_addr constant [2 x i8] c"/\00" +@.str10747 = private unnamed_addr constant [8 x i8] c"VERSION\00" +@.str10748 = private unnamed_addr constant [24 x i8] c"ludic (version unknown)\00" +@.str10749 = private unnamed_addr constant [7 x i8] c"ludic \00" +@.str10750 = private unnamed_addr constant [1 x i8] c"\00" +@.str10751 = private unnamed_addr constant [1 x i8] c"\00" +@.str10752 = private unnamed_addr constant [2 x i8] c"?\00" +@.str10753 = private unnamed_addr constant [10 x i8] c"--version\00" +@.str10754 = private unnamed_addr constant [11 x i8] c"--windowed\00" +@.str10755 = private unnamed_addr constant [11 x i8] c"--headless\00" +@.str10756 = private unnamed_addr constant [12 x i8] c"--emit-llvm\00" +@.str10757 = private unnamed_addr constant [14 x i8] c"--emit-module\00" +@.str10758 = private unnamed_addr constant [6 x i8] c"--fmt\00" +@.str10759 = private unnamed_addr constant [13 x i8] c"--save-temps\00" +@.str10760 = private unnamed_addr constant [6 x i8] c"--run\00" +@.str10761 = private unnamed_addr constant [11 x i8] c"--coverage\00" +@.str10762 = private unnamed_addr constant [3 x i8] c"-o\00" +@.str10763 = private unnamed_addr constant [31 x i8] c"ludicc: ignoring unknown flag \00" +@.str10764 = private unnamed_addr constant [2 x i8] c"\0A\00" +@.str10765 = private unnamed_addr constant [90 x i8] c"usage: ludicc [-o out] [--windowed|--headless] [--emit-llvm] [--save-temps]\0A\00" +@.str10766 = private unnamed_addr constant [27 x i8] c"ludicc: cannot open input\0A\00" +@.str10767 = private unnamed_addr constant [16 x i8] c"/tmp/ludic-run-\00" +@.str10768 = private unnamed_addr constant [10 x i8] c"mkdir -p \00" +@.str10769 = private unnamed_addr constant [4 x i8] c".ll\00" +@.str10770 = private unnamed_addr constant [25 x i8] c"ludicc: cannot write IR\0A\00" +@.str10771 = private unnamed_addr constant [9 x i8] c"LUDIC_CC\00" +@.str10772 = private unnamed_addr constant [6 x i8] c"clang\00" +@.str10773 = private unnamed_addr constant [27 x i8] c" -O2 -Wno-override-module \00" +@.str10774 = private unnamed_addr constant [24 x i8] c"runtime/native/cocoa.ll\00" +@.str10775 = private unnamed_addr constant [2 x i8] c" \00" +@.str10776 = private unnamed_addr constant [79 x i8] c" -framework Cocoa -Wl,-needed_framework,GameController -Wl,-rpath,@loader_path\00" +@.str10777 = private unnamed_addr constant [24 x i8] c"runtime/native/audio.ll\00" +@.str10778 = private unnamed_addr constant [2 x i8] c" \00" +@.str10779 = private unnamed_addr constant [36 x i8] c" -Wl,-needed_framework,AVFoundation\00" +@.str10780 = private unnamed_addr constant [23 x i8] c"runtime/native/http.ll\00" +@.str10781 = private unnamed_addr constant [2 x i8] c" \00" +@.str10782 = private unnamed_addr constant [34 x i8] c" -Wl,-needed_framework,Foundation\00" +@.str10783 = private unnamed_addr constant [21 x i8] c"runtime/native/gl.ll\00" +@.str10784 = private unnamed_addr constant [28 x i8] c"runtime/native/gl_thunks.ll\00" +@.str10785 = private unnamed_addr constant [2 x i8] c" \00" +@.str10786 = private unnamed_addr constant [2 x i8] c" \00" +@.str10787 = private unnamed_addr constant [19 x i8] c" -framework OpenGL\00" +@.str10788 = private unnamed_addr constant [5 x i8] c" -o \00" +@.str10789 = private unnamed_addr constant [7 x i8] c"rm -f \00" +@.str10790 = private unnamed_addr constant [21 x i8] c"ludicc: link failed\0A\00" define i32 @lp_str_eq(ptr %a, ptr %b) { entry: br label %loop @@ -11754,56 +11765,56 @@ sod: store i32 %fcnt, ptr %d2 ret ptr %h } -@.str10781 = private unnamed_addr constant [4 x i8] c"png\00" -@.str10782 = private unnamed_addr constant [10 x i8] c"image/png\00" -@.str10783 = private unnamed_addr constant [4 x i8] c"jpg\00" -@.str10784 = private unnamed_addr constant [11 x i8] c"image/jpeg\00" -@.str10785 = private unnamed_addr constant [5 x i8] c"jpeg\00" -@.str10786 = private unnamed_addr constant [11 x i8] c"image/jpeg\00" -@.str10787 = private unnamed_addr constant [4 x i8] c"gif\00" -@.str10788 = private unnamed_addr constant [10 x i8] c"image/gif\00" -@.str10789 = private unnamed_addr constant [4 x i8] c"bmp\00" -@.str10790 = private unnamed_addr constant [10 x i8] c"image/bmp\00" -@.str10791 = private unnamed_addr constant [5 x i8] c"webp\00" -@.str10792 = private unnamed_addr constant [11 x i8] c"image/webp\00" -@.str10793 = private unnamed_addr constant [4 x i8] c"svg\00" -@.str10794 = private unnamed_addr constant [14 x i8] c"image/svg+xml\00" -@.str10795 = private unnamed_addr constant [4 x i8] c"txt\00" -@.str10796 = private unnamed_addr constant [11 x i8] c"text/plain\00" -@.str10797 = private unnamed_addr constant [3 x i8] c"md\00" -@.str10798 = private unnamed_addr constant [14 x i8] c"text/markdown\00" -@.str10799 = private unnamed_addr constant [4 x i8] c"csv\00" -@.str10800 = private unnamed_addr constant [9 x i8] c"text/csv\00" -@.str10801 = private unnamed_addr constant [5 x i8] c"html\00" -@.str10802 = private unnamed_addr constant [10 x i8] c"text/html\00" -@.str10803 = private unnamed_addr constant [4 x i8] c"htm\00" -@.str10804 = private unnamed_addr constant [10 x i8] c"text/html\00" -@.str10805 = private unnamed_addr constant [4 x i8] c"css\00" -@.str10806 = private unnamed_addr constant [9 x i8] c"text/css\00" -@.str10807 = private unnamed_addr constant [3 x i8] c"js\00" -@.str10808 = private unnamed_addr constant [16 x i8] c"text/javascript\00" -@.str10809 = private unnamed_addr constant [5 x i8] c"json\00" -@.str10810 = private unnamed_addr constant [17 x i8] c"application/json\00" -@.str10811 = private unnamed_addr constant [4 x i8] c"xml\00" -@.str10812 = private unnamed_addr constant [16 x i8] c"application/xml\00" -@.str10813 = private unnamed_addr constant [4 x i8] c"zip\00" -@.str10814 = private unnamed_addr constant [16 x i8] c"application/zip\00" -@.str10815 = private unnamed_addr constant [4 x i8] c"pdf\00" -@.str10816 = private unnamed_addr constant [16 x i8] c"application/pdf\00" -@.str10817 = private unnamed_addr constant [4 x i8] c"wav\00" -@.str10818 = private unnamed_addr constant [10 x i8] c"audio/wav\00" -@.str10819 = private unnamed_addr constant [4 x i8] c"ogg\00" -@.str10820 = private unnamed_addr constant [10 x i8] c"audio/ogg\00" -@.str10821 = private unnamed_addr constant [4 x i8] c"mp3\00" -@.str10822 = private unnamed_addr constant [11 x i8] c"audio/mpeg\00" -@.str10823 = private unnamed_addr constant [4 x i8] c"ttf\00" -@.str10824 = private unnamed_addr constant [9 x i8] c"font/ttf\00" -@.str10825 = private unnamed_addr constant [4 x i8] c"otf\00" -@.str10826 = private unnamed_addr constant [9 x i8] c"font/otf\00" -@.str10827 = private unnamed_addr constant [6 x i8] c"ludic\00" -@.str10828 = private unnamed_addr constant [13 x i8] c"text/x-ludic\00" -@.str10829 = private unnamed_addr constant [25 x i8] c"application/octet-stream\00" -@mime_tbl = private unnamed_addr constant [24 x { ptr, ptr }] [{ ptr, ptr } { ptr @.str10781, ptr @.str10782 }, { ptr, ptr } { ptr @.str10783, ptr @.str10784 }, { ptr, ptr } { ptr @.str10785, ptr @.str10786 }, { ptr, ptr } { ptr @.str10787, ptr @.str10788 }, { ptr, ptr } { ptr @.str10789, ptr @.str10790 }, { ptr, ptr } { ptr @.str10791, ptr @.str10792 }, { ptr, ptr } { ptr @.str10793, ptr @.str10794 }, { ptr, ptr } { ptr @.str10795, ptr @.str10796 }, { ptr, ptr } { ptr @.str10797, ptr @.str10798 }, { ptr, ptr } { ptr @.str10799, ptr @.str10800 }, { ptr, ptr } { ptr @.str10801, ptr @.str10802 }, { ptr, ptr } { ptr @.str10803, ptr @.str10804 }, { ptr, ptr } { ptr @.str10805, ptr @.str10806 }, { ptr, ptr } { ptr @.str10807, ptr @.str10808 }, { ptr, ptr } { ptr @.str10809, ptr @.str10810 }, { ptr, ptr } { ptr @.str10811, ptr @.str10812 }, { ptr, ptr } { ptr @.str10813, ptr @.str10814 }, { ptr, ptr } { ptr @.str10815, ptr @.str10816 }, { ptr, ptr } { ptr @.str10817, ptr @.str10818 }, { ptr, ptr } { ptr @.str10819, ptr @.str10820 }, { ptr, ptr } { ptr @.str10821, ptr @.str10822 }, { ptr, ptr } { ptr @.str10823, ptr @.str10824 }, { ptr, ptr } { ptr @.str10825, ptr @.str10826 }, { ptr, ptr } { ptr @.str10827, ptr @.str10828 }] +@.str10791 = private unnamed_addr constant [4 x i8] c"png\00" +@.str10792 = private unnamed_addr constant [10 x i8] c"image/png\00" +@.str10793 = private unnamed_addr constant [4 x i8] c"jpg\00" +@.str10794 = private unnamed_addr constant [11 x i8] c"image/jpeg\00" +@.str10795 = private unnamed_addr constant [5 x i8] c"jpeg\00" +@.str10796 = private unnamed_addr constant [11 x i8] c"image/jpeg\00" +@.str10797 = private unnamed_addr constant [4 x i8] c"gif\00" +@.str10798 = private unnamed_addr constant [10 x i8] c"image/gif\00" +@.str10799 = private unnamed_addr constant [4 x i8] c"bmp\00" +@.str10800 = private unnamed_addr constant [10 x i8] c"image/bmp\00" +@.str10801 = private unnamed_addr constant [5 x i8] c"webp\00" +@.str10802 = private unnamed_addr constant [11 x i8] c"image/webp\00" +@.str10803 = private unnamed_addr constant [4 x i8] c"svg\00" +@.str10804 = private unnamed_addr constant [14 x i8] c"image/svg+xml\00" +@.str10805 = private unnamed_addr constant [4 x i8] c"txt\00" +@.str10806 = private unnamed_addr constant [11 x i8] c"text/plain\00" +@.str10807 = private unnamed_addr constant [3 x i8] c"md\00" +@.str10808 = private unnamed_addr constant [14 x i8] c"text/markdown\00" +@.str10809 = private unnamed_addr constant [4 x i8] c"csv\00" +@.str10810 = private unnamed_addr constant [9 x i8] c"text/csv\00" +@.str10811 = private unnamed_addr constant [5 x i8] c"html\00" +@.str10812 = private unnamed_addr constant [10 x i8] c"text/html\00" +@.str10813 = private unnamed_addr constant [4 x i8] c"htm\00" +@.str10814 = private unnamed_addr constant [10 x i8] c"text/html\00" +@.str10815 = private unnamed_addr constant [4 x i8] c"css\00" +@.str10816 = private unnamed_addr constant [9 x i8] c"text/css\00" +@.str10817 = private unnamed_addr constant [3 x i8] c"js\00" +@.str10818 = private unnamed_addr constant [16 x i8] c"text/javascript\00" +@.str10819 = private unnamed_addr constant [5 x i8] c"json\00" +@.str10820 = private unnamed_addr constant [17 x i8] c"application/json\00" +@.str10821 = private unnamed_addr constant [4 x i8] c"xml\00" +@.str10822 = private unnamed_addr constant [16 x i8] c"application/xml\00" +@.str10823 = private unnamed_addr constant [4 x i8] c"zip\00" +@.str10824 = private unnamed_addr constant [16 x i8] c"application/zip\00" +@.str10825 = private unnamed_addr constant [4 x i8] c"pdf\00" +@.str10826 = private unnamed_addr constant [16 x i8] c"application/pdf\00" +@.str10827 = private unnamed_addr constant [4 x i8] c"wav\00" +@.str10828 = private unnamed_addr constant [10 x i8] c"audio/wav\00" +@.str10829 = private unnamed_addr constant [4 x i8] c"ogg\00" +@.str10830 = private unnamed_addr constant [10 x i8] c"audio/ogg\00" +@.str10831 = private unnamed_addr constant [4 x i8] c"mp3\00" +@.str10832 = private unnamed_addr constant [11 x i8] c"audio/mpeg\00" +@.str10833 = private unnamed_addr constant [4 x i8] c"ttf\00" +@.str10834 = private unnamed_addr constant [9 x i8] c"font/ttf\00" +@.str10835 = private unnamed_addr constant [4 x i8] c"otf\00" +@.str10836 = private unnamed_addr constant [9 x i8] c"font/otf\00" +@.str10837 = private unnamed_addr constant [6 x i8] c"ludic\00" +@.str10838 = private unnamed_addr constant [13 x i8] c"text/x-ludic\00" +@.str10839 = private unnamed_addr constant [25 x i8] c"application/octet-stream\00" +@mime_tbl = private unnamed_addr constant [24 x { ptr, ptr }] [{ ptr, ptr } { ptr @.str10791, ptr @.str10792 }, { ptr, ptr } { ptr @.str10793, ptr @.str10794 }, { ptr, ptr } { ptr @.str10795, ptr @.str10796 }, { ptr, ptr } { ptr @.str10797, ptr @.str10798 }, { ptr, ptr } { ptr @.str10799, ptr @.str10800 }, { ptr, ptr } { ptr @.str10801, ptr @.str10802 }, { ptr, ptr } { ptr @.str10803, ptr @.str10804 }, { ptr, ptr } { ptr @.str10805, ptr @.str10806 }, { ptr, ptr } { ptr @.str10807, ptr @.str10808 }, { ptr, ptr } { ptr @.str10809, ptr @.str10810 }, { ptr, ptr } { ptr @.str10811, ptr @.str10812 }, { ptr, ptr } { ptr @.str10813, ptr @.str10814 }, { ptr, ptr } { ptr @.str10815, ptr @.str10816 }, { ptr, ptr } { ptr @.str10817, ptr @.str10818 }, { ptr, ptr } { ptr @.str10819, ptr @.str10820 }, { ptr, ptr } { ptr @.str10821, ptr @.str10822 }, { ptr, ptr } { ptr @.str10823, ptr @.str10824 }, { ptr, ptr } { ptr @.str10825, ptr @.str10826 }, { ptr, ptr } { ptr @.str10827, ptr @.str10828 }, { ptr, ptr } { ptr @.str10829, ptr @.str10830 }, { ptr, ptr } { ptr @.str10831, ptr @.str10832 }, { ptr, ptr } { ptr @.str10833, ptr @.str10834 }, { ptr, ptr } { ptr @.str10835, ptr @.str10836 }, { ptr, ptr } { ptr @.str10837, ptr @.str10838 }] define ptr @lp_mime_of(ptr %path) { entry: %ext = call ptr @lp_path_ext(ptr %path) @@ -11831,7 +11842,7 @@ nx: store i32 %i1, ptr %ip br label %lp def: - %d = call ptr @lp_fs_strdup(ptr @.str10829) + %d = call ptr @lp_fs_strdup(ptr @.str10839) ret ptr %d } define ptr @lp_mime_lc(ptr %s) { @@ -16023,19 +16034,20 @@ entry: %t1020 = alloca i32 %t1040 = alloca i32 %t1060 = alloca i32 - %t1061 = alloca i32 - %t1082 = alloca i32 - %t1083 = alloca i32 - %t1084 = alloca i32 - %t1085 = alloca i32 - %t1086 = alloca i32 - %t1140 = alloca i32 - %t1165 = alloca ptr - %t1171 = alloca ptr - %t1183 = alloca ptr - %t1194 = alloca ptr - %t1210 = alloca i32 - %t1220 = alloca i32 + %t1080 = alloca i32 + %t1081 = alloca i32 + %t1102 = alloca i32 + %t1103 = alloca i32 + %t1104 = alloca i32 + %t1105 = alloca i32 + %t1106 = alloca i32 + %t1160 = alloca i32 + %t1185 = alloca ptr + %t1191 = alloca ptr + %t1203 = alloca ptr + %t1214 = alloca ptr + %t1230 = alloca i32 + %t1240 = alloca i32 %t0 = call ptr @fn_p_primary() store ptr %t0, ptr %t1 br label %wcond0 @@ -17622,303 +17634,333 @@ then230: store i32 1, ptr @g_g_uses_http br label %ifend232 ifend232: - %t1062 = load ptr, ptr %t1 - %t1063 = getelementptr inbounds %Cmp_Node, ptr %t1062, i32 0, i32 4 - %t1064 = load ptr, ptr %t1063 - %t1065 = getelementptr inbounds %Cmp_Node, ptr %t1064, i32 0, i32 0 - %t1066 = load i32, ptr %t1065 - %t1067 = icmp eq i32 %t1066, 33 - %t1068 = zext i1 %t1067 to i32 - %t1069 = icmp ne i32 %t1068, 0 - %t1070 = zext i1 %t1069 to i32 - store i32 %t1070, ptr %t1061 - br i1 %t1069, label %sc233, label %scend234 + %t1061 = load ptr, ptr %t1 + %t1062 = getelementptr inbounds %Cmp_Node, ptr %t1061, i32 0, i32 4 + %t1063 = load ptr, ptr %t1062 + %t1064 = getelementptr inbounds %Cmp_Node, ptr %t1063, i32 0, i32 0 + %t1065 = load i32, ptr %t1064 + %t1066 = icmp eq i32 %t1065, 33 + %t1067 = zext i1 %t1066 to i32 + %t1068 = icmp ne i32 %t1067, 0 + %t1069 = zext i1 %t1068 to i32 + store i32 %t1069, ptr %t1060 + br i1 %t1068, label %sc233, label %scend234 sc233: - %t1071 = load ptr, ptr %t1 - %t1072 = getelementptr inbounds %Cmp_Node, ptr %t1071, i32 0, i32 4 - %t1073 = load ptr, ptr %t1072 - %t1074 = getelementptr inbounds %Cmp_Node, ptr %t1073, i32 0, i32 1 - %t1075 = load ptr, ptr %t1074 - %t1076 = call i32 @lp_str_eq(ptr %t1075, ptr @.str138) - %t1077 = icmp ne i32 %t1076, 0 - %t1078 = zext i1 %t1077 to i32 - store i32 %t1078, ptr %t1061 + %t1070 = load ptr, ptr %t1 + %t1071 = getelementptr inbounds %Cmp_Node, ptr %t1070, i32 0, i32 4 + %t1072 = load ptr, ptr %t1071 + %t1073 = getelementptr inbounds %Cmp_Node, ptr %t1072, i32 0, i32 1 + %t1074 = load ptr, ptr %t1073 + %t1075 = call i32 @lp_str_eq(ptr %t1074, ptr @.str138) + %t1076 = icmp ne i32 %t1075, 0 + %t1077 = zext i1 %t1076 to i32 + store i32 %t1077, ptr %t1060 br label %scend234 scend234: - %t1079 = load i32, ptr %t1061 - %t1080 = icmp ne i32 %t1079, 0 - %t1081 = zext i1 %t1080 to i32 - store i32 %t1081, ptr %t1060 - br i1 %t1080, label %sc235, label %scend236 -sc235: - %t1087 = load ptr, ptr %t1 - %t1088 = getelementptr inbounds %Cmp_Node, ptr %t1087, i32 0, i32 1 - %t1089 = load ptr, ptr %t1088 - %t1090 = call i32 @lp_str_eq(ptr %t1089, ptr @.str139) - %t1091 = icmp ne i32 %t1090, 0 - %t1092 = zext i1 %t1091 to i32 - store i32 %t1092, ptr %t1086 - br i1 %t1091, label %scend238, label %sc237 -sc237: - %t1093 = load ptr, ptr %t1 + %t1078 = load i32, ptr %t1060 + %t1079 = icmp ne i32 %t1078, 0 + br i1 %t1079, label %then235, label %ifend237 +then235: + store i32 1, ptr @g_g_uses_gl + br label %ifend237 +ifend237: + %t1082 = load ptr, ptr %t1 + %t1083 = getelementptr inbounds %Cmp_Node, ptr %t1082, i32 0, i32 4 + %t1084 = load ptr, ptr %t1083 + %t1085 = getelementptr inbounds %Cmp_Node, ptr %t1084, i32 0, i32 0 + %t1086 = load i32, ptr %t1085 + %t1087 = icmp eq i32 %t1086, 33 + %t1088 = zext i1 %t1087 to i32 + %t1089 = icmp ne i32 %t1088, 0 + %t1090 = zext i1 %t1089 to i32 + store i32 %t1090, ptr %t1081 + br i1 %t1089, label %sc238, label %scend239 +sc238: + %t1091 = load ptr, ptr %t1 + %t1092 = getelementptr inbounds %Cmp_Node, ptr %t1091, i32 0, i32 4 + %t1093 = load ptr, ptr %t1092 %t1094 = getelementptr inbounds %Cmp_Node, ptr %t1093, i32 0, i32 1 %t1095 = load ptr, ptr %t1094 - %t1096 = call i32 @lp_str_eq(ptr %t1095, ptr @.str140) + %t1096 = call i32 @lp_str_eq(ptr %t1095, ptr @.str139) %t1097 = icmp ne i32 %t1096, 0 %t1098 = zext i1 %t1097 to i32 - store i32 %t1098, ptr %t1086 - br label %scend238 -scend238: - %t1099 = load i32, ptr %t1086 + store i32 %t1098, ptr %t1081 + br label %scend239 +scend239: + %t1099 = load i32, ptr %t1081 %t1100 = icmp ne i32 %t1099, 0 %t1101 = zext i1 %t1100 to i32 - store i32 %t1101, ptr %t1085 - br i1 %t1100, label %scend240, label %sc239 -sc239: - %t1102 = load ptr, ptr %t1 - %t1103 = getelementptr inbounds %Cmp_Node, ptr %t1102, i32 0, i32 1 - %t1104 = load ptr, ptr %t1103 - %t1105 = call i32 @lp_str_eq(ptr %t1104, ptr @.str141) - %t1106 = icmp ne i32 %t1105, 0 - %t1107 = zext i1 %t1106 to i32 - store i32 %t1107, ptr %t1085 - br label %scend240 -scend240: - %t1108 = load i32, ptr %t1085 - %t1109 = icmp ne i32 %t1108, 0 - %t1110 = zext i1 %t1109 to i32 - store i32 %t1110, ptr %t1084 - br i1 %t1109, label %scend242, label %sc241 -sc241: - %t1111 = load ptr, ptr %t1 - %t1112 = getelementptr inbounds %Cmp_Node, ptr %t1111, i32 0, i32 1 - %t1113 = load ptr, ptr %t1112 - %t1114 = call i32 @lp_str_eq(ptr %t1113, ptr @.str142) - %t1115 = icmp ne i32 %t1114, 0 - %t1116 = zext i1 %t1115 to i32 - store i32 %t1116, ptr %t1084 - br label %scend242 -scend242: - %t1117 = load i32, ptr %t1084 - %t1118 = icmp ne i32 %t1117, 0 - %t1119 = zext i1 %t1118 to i32 - store i32 %t1119, ptr %t1083 - br i1 %t1118, label %scend244, label %sc243 -sc243: - %t1120 = load ptr, ptr %t1 - %t1121 = getelementptr inbounds %Cmp_Node, ptr %t1120, i32 0, i32 1 - %t1122 = load ptr, ptr %t1121 - %t1123 = call i32 @lp_str_eq(ptr %t1122, ptr @.str143) - %t1124 = icmp ne i32 %t1123, 0 - %t1125 = zext i1 %t1124 to i32 - store i32 %t1125, ptr %t1083 - br label %scend244 -scend244: - %t1126 = load i32, ptr %t1083 - %t1127 = icmp ne i32 %t1126, 0 - %t1128 = zext i1 %t1127 to i32 - store i32 %t1128, ptr %t1082 - br i1 %t1127, label %scend246, label %sc245 -sc245: - %t1129 = load ptr, ptr %t1 - %t1130 = getelementptr inbounds %Cmp_Node, ptr %t1129, i32 0, i32 1 - %t1131 = load ptr, ptr %t1130 - %t1132 = call i32 @lp_str_eq(ptr %t1131, ptr @.str144) - %t1133 = icmp ne i32 %t1132, 0 - %t1134 = zext i1 %t1133 to i32 - store i32 %t1134, ptr %t1082 - br label %scend246 -scend246: - %t1135 = load i32, ptr %t1082 - %t1136 = icmp ne i32 %t1135, 0 - %t1137 = zext i1 %t1136 to i32 - store i32 %t1137, ptr %t1060 - br label %scend236 -scend236: - %t1138 = load i32, ptr %t1060 - %t1139 = icmp ne i32 %t1138, 0 - br i1 %t1139, label %then247, label %ifend249 -then247: - store i32 1, ptr @g_g_uses_tween_rt - br label %ifend249 -ifend249: - %t1141 = load ptr, ptr %t1 - %t1142 = getelementptr inbounds %Cmp_Node, ptr %t1141, i32 0, i32 4 - %t1143 = load ptr, ptr %t1142 - %t1144 = getelementptr inbounds %Cmp_Node, ptr %t1143, i32 0, i32 0 - %t1145 = load i32, ptr %t1144 - %t1146 = icmp eq i32 %t1145, 33 - %t1147 = zext i1 %t1146 to i32 - %t1148 = icmp ne i32 %t1147, 0 - %t1149 = zext i1 %t1148 to i32 - store i32 %t1149, ptr %t1140 - br i1 %t1148, label %sc250, label %scend251 + store i32 %t1101, ptr %t1080 + br i1 %t1100, label %sc240, label %scend241 +sc240: + %t1107 = load ptr, ptr %t1 + %t1108 = getelementptr inbounds %Cmp_Node, ptr %t1107, i32 0, i32 1 + %t1109 = load ptr, ptr %t1108 + %t1110 = call i32 @lp_str_eq(ptr %t1109, ptr @.str140) + %t1111 = icmp ne i32 %t1110, 0 + %t1112 = zext i1 %t1111 to i32 + store i32 %t1112, ptr %t1106 + br i1 %t1111, label %scend243, label %sc242 +sc242: + %t1113 = load ptr, ptr %t1 + %t1114 = getelementptr inbounds %Cmp_Node, ptr %t1113, i32 0, i32 1 + %t1115 = load ptr, ptr %t1114 + %t1116 = call i32 @lp_str_eq(ptr %t1115, ptr @.str141) + %t1117 = icmp ne i32 %t1116, 0 + %t1118 = zext i1 %t1117 to i32 + store i32 %t1118, ptr %t1106 + br label %scend243 +scend243: + %t1119 = load i32, ptr %t1106 + %t1120 = icmp ne i32 %t1119, 0 + %t1121 = zext i1 %t1120 to i32 + store i32 %t1121, ptr %t1105 + br i1 %t1120, label %scend245, label %sc244 +sc244: + %t1122 = load ptr, ptr %t1 + %t1123 = getelementptr inbounds %Cmp_Node, ptr %t1122, i32 0, i32 1 + %t1124 = load ptr, ptr %t1123 + %t1125 = call i32 @lp_str_eq(ptr %t1124, ptr @.str142) + %t1126 = icmp ne i32 %t1125, 0 + %t1127 = zext i1 %t1126 to i32 + store i32 %t1127, ptr %t1105 + br label %scend245 +scend245: + %t1128 = load i32, ptr %t1105 + %t1129 = icmp ne i32 %t1128, 0 + %t1130 = zext i1 %t1129 to i32 + store i32 %t1130, ptr %t1104 + br i1 %t1129, label %scend247, label %sc246 +sc246: + %t1131 = load ptr, ptr %t1 + %t1132 = getelementptr inbounds %Cmp_Node, ptr %t1131, i32 0, i32 1 + %t1133 = load ptr, ptr %t1132 + %t1134 = call i32 @lp_str_eq(ptr %t1133, ptr @.str143) + %t1135 = icmp ne i32 %t1134, 0 + %t1136 = zext i1 %t1135 to i32 + store i32 %t1136, ptr %t1104 + br label %scend247 +scend247: + %t1137 = load i32, ptr %t1104 + %t1138 = icmp ne i32 %t1137, 0 + %t1139 = zext i1 %t1138 to i32 + store i32 %t1139, ptr %t1103 + br i1 %t1138, label %scend249, label %sc248 +sc248: + %t1140 = load ptr, ptr %t1 + %t1141 = getelementptr inbounds %Cmp_Node, ptr %t1140, i32 0, i32 1 + %t1142 = load ptr, ptr %t1141 + %t1143 = call i32 @lp_str_eq(ptr %t1142, ptr @.str144) + %t1144 = icmp ne i32 %t1143, 0 + %t1145 = zext i1 %t1144 to i32 + store i32 %t1145, ptr %t1103 + br label %scend249 +scend249: + %t1146 = load i32, ptr %t1103 + %t1147 = icmp ne i32 %t1146, 0 + %t1148 = zext i1 %t1147 to i32 + store i32 %t1148, ptr %t1102 + br i1 %t1147, label %scend251, label %sc250 sc250: - %t1150 = load ptr, ptr %t1 - %t1151 = getelementptr inbounds %Cmp_Node, ptr %t1150, i32 0, i32 4 - %t1152 = load ptr, ptr %t1151 - %t1153 = getelementptr inbounds %Cmp_Node, ptr %t1152, i32 0, i32 1 - %t1154 = load ptr, ptr %t1153 - %t1155 = call i32 @lp_str_eq(ptr %t1154, ptr @.str145) - %t1156 = icmp ne i32 %t1155, 0 - %t1157 = zext i1 %t1156 to i32 - store i32 %t1157, ptr %t1140 + %t1149 = load ptr, ptr %t1 + %t1150 = getelementptr inbounds %Cmp_Node, ptr %t1149, i32 0, i32 1 + %t1151 = load ptr, ptr %t1150 + %t1152 = call i32 @lp_str_eq(ptr %t1151, ptr @.str145) + %t1153 = icmp ne i32 %t1152, 0 + %t1154 = zext i1 %t1153 to i32 + store i32 %t1154, ptr %t1102 br label %scend251 scend251: - %t1158 = load i32, ptr %t1140 + %t1155 = load i32, ptr %t1102 + %t1156 = icmp ne i32 %t1155, 0 + %t1157 = zext i1 %t1156 to i32 + store i32 %t1157, ptr %t1080 + br label %scend241 +scend241: + %t1158 = load i32, ptr %t1080 %t1159 = icmp ne i32 %t1158, 0 br i1 %t1159, label %then252, label %ifend254 then252: - store i32 1, ptr @g_g_uses_fx + store i32 1, ptr @g_g_uses_tween_rt br label %ifend254 ifend254: + %t1161 = load ptr, ptr %t1 + %t1162 = getelementptr inbounds %Cmp_Node, ptr %t1161, i32 0, i32 4 + %t1163 = load ptr, ptr %t1162 + %t1164 = getelementptr inbounds %Cmp_Node, ptr %t1163, i32 0, i32 0 + %t1165 = load i32, ptr %t1164 + %t1166 = icmp eq i32 %t1165, 33 + %t1167 = zext i1 %t1166 to i32 + %t1168 = icmp ne i32 %t1167, 0 + %t1169 = zext i1 %t1168 to i32 + store i32 %t1169, ptr %t1160 + br i1 %t1168, label %sc255, label %scend256 +sc255: + %t1170 = load ptr, ptr %t1 + %t1171 = getelementptr inbounds %Cmp_Node, ptr %t1170, i32 0, i32 4 + %t1172 = load ptr, ptr %t1171 + %t1173 = getelementptr inbounds %Cmp_Node, ptr %t1172, i32 0, i32 1 + %t1174 = load ptr, ptr %t1173 + %t1175 = call i32 @lp_str_eq(ptr %t1174, ptr @.str146) + %t1176 = icmp ne i32 %t1175, 0 + %t1177 = zext i1 %t1176 to i32 + store i32 %t1177, ptr %t1160 + br label %scend256 +scend256: + %t1178 = load i32, ptr %t1160 + %t1179 = icmp ne i32 %t1178, 0 + br i1 %t1179, label %then257, label %ifend259 +then257: + store i32 1, ptr @g_g_uses_fx + br label %ifend259 +ifend259: br label %ifend5 else4: - %t1160 = call i32 @fn_is_op(ptr @.str146) - %t1161 = icmp ne i32 %t1160, 0 - br i1 %t1161, label %then255, label %else256 -then255: - %t1162 = load i32, ptr @g_pi - %t1163 = add i32 %t1162, 1 - store i32 %t1163, ptr @g_pi - %t1164 = call ptr @fn_expr() - store ptr %t1164, ptr %t1165 - %t1166 = call i32 @fn_is_op(ptr @.str147) - %t1167 = icmp ne i32 %t1166, 0 - br i1 %t1167, label %then258, label %else259 -then258: - %t1168 = load i32, ptr @g_pi - %t1169 = add i32 %t1168, 1 - store i32 %t1169, ptr @g_pi - %t1170 = call ptr @fn_node(i32 44) - store ptr %t1170, ptr %t1171 - %t1172 = load ptr, ptr %t1171 - %t1173 = getelementptr inbounds %Cmp_Node, ptr %t1172, i32 0, i32 4 - %t1174 = load ptr, ptr %t1 - store ptr %t1174, ptr %t1173 - %t1175 = load ptr, ptr %t1171 - %t1176 = getelementptr inbounds %Cmp_Node, ptr %t1175, i32 0, i32 5 - %t1177 = load ptr, ptr %t1165 - store ptr %t1177, ptr %t1176 - %t1178 = load ptr, ptr %t1171 - %t1179 = getelementptr inbounds %Cmp_Node, ptr %t1178, i32 0, i32 6 - %t1180 = call ptr @fn_expr() - store ptr %t1180, ptr %t1179 - call void @fn_eat_op(ptr @.str148) - %t1181 = load ptr, ptr %t1171 - store ptr %t1181, ptr %t1 - br label %ifend260 -else259: - %t1182 = call ptr @fn_node(i32 36) - store ptr %t1182, ptr %t1183 - %t1184 = load ptr, ptr %t1183 - %t1185 = getelementptr inbounds %Cmp_Node, ptr %t1184, i32 0, i32 4 - %t1186 = load ptr, ptr %t1 - store ptr %t1186, ptr %t1185 - %t1187 = load ptr, ptr %t1183 - %t1188 = getelementptr inbounds %Cmp_Node, ptr %t1187, i32 0, i32 5 - %t1189 = load ptr, ptr %t1165 - store ptr %t1189, ptr %t1188 - call void @fn_eat_op(ptr @.str149) - %t1190 = load ptr, ptr %t1183 - store ptr %t1190, ptr %t1 - br label %ifend260 -ifend260: - br label %ifend257 -else256: - %t1191 = call i32 @fn_is_op(ptr @.str150) - %t1192 = icmp ne i32 %t1191, 0 - br i1 %t1192, label %then261, label %else262 -then261: - %t1193 = call ptr @fn_node(i32 34) - store ptr %t1193, ptr %t1194 - %t1195 = load ptr, ptr %t1194 - %t1196 = getelementptr inbounds %Cmp_Node, ptr %t1195, i32 0, i32 4 - %t1197 = load ptr, ptr %t1 + %t1180 = call i32 @fn_is_op(ptr @.str147) + %t1181 = icmp ne i32 %t1180, 0 + br i1 %t1181, label %then260, label %else261 +then260: + %t1182 = load i32, ptr @g_pi + %t1183 = add i32 %t1182, 1 + store i32 %t1183, ptr @g_pi + %t1184 = call ptr @fn_expr() + store ptr %t1184, ptr %t1185 + %t1186 = call i32 @fn_is_op(ptr @.str148) + %t1187 = icmp ne i32 %t1186, 0 + br i1 %t1187, label %then263, label %else264 +then263: + %t1188 = load i32, ptr @g_pi + %t1189 = add i32 %t1188, 1 + store i32 %t1189, ptr @g_pi + %t1190 = call ptr @fn_node(i32 44) + store ptr %t1190, ptr %t1191 + %t1192 = load ptr, ptr %t1191 + %t1193 = getelementptr inbounds %Cmp_Node, ptr %t1192, i32 0, i32 4 + %t1194 = load ptr, ptr %t1 + store ptr %t1194, ptr %t1193 + %t1195 = load ptr, ptr %t1191 + %t1196 = getelementptr inbounds %Cmp_Node, ptr %t1195, i32 0, i32 5 + %t1197 = load ptr, ptr %t1185 store ptr %t1197, ptr %t1196 - %t1198 = load ptr, ptr %t1194 - %t1199 = getelementptr inbounds %Cmp_Node, ptr %t1198, i32 0, i32 8 - %t1200 = load ptr, ptr @g_toks - %t1201 = getelementptr inbounds %LSlice, ptr %t1200, i32 0, i32 0 - %t1202 = load ptr, ptr %t1201 - %t1203 = load i32, ptr @g_pi - %t1204 = getelementptr inbounds ptr, ptr %t1202, i32 %t1203 - %t1205 = load ptr, ptr %t1204 - %t1206 = getelementptr inbounds %Cmp_Tok, ptr %t1205, i32 0, i32 3 - %t1207 = load i32, ptr %t1206 - store i32 %t1207, ptr %t1199 - %t1208 = load ptr, ptr %t1194 - call void @fn_args_call(ptr %t1208) - %t1209 = load ptr, ptr %t1194 - store ptr %t1209, ptr %t1 - %t1211 = load ptr, ptr %t1194 - %t1212 = getelementptr inbounds %Cmp_Node, ptr %t1211, i32 0, i32 4 - %t1213 = load ptr, ptr %t1212 - %t1214 = getelementptr inbounds %Cmp_Node, ptr %t1213, i32 0, i32 0 - %t1215 = load i32, ptr %t1214 - %t1216 = icmp eq i32 %t1215, 33 - %t1217 = zext i1 %t1216 to i32 - %t1218 = icmp ne i32 %t1217, 0 - %t1219 = zext i1 %t1218 to i32 - store i32 %t1219, ptr %t1210 - br i1 %t1218, label %sc264, label %scend265 -sc264: - %t1221 = load ptr, ptr %t1194 - %t1222 = getelementptr inbounds %Cmp_Node, ptr %t1221, i32 0, i32 4 - %t1223 = load ptr, ptr %t1222 - %t1224 = getelementptr inbounds %Cmp_Node, ptr %t1223, i32 0, i32 1 + %t1198 = load ptr, ptr %t1191 + %t1199 = getelementptr inbounds %Cmp_Node, ptr %t1198, i32 0, i32 6 + %t1200 = call ptr @fn_expr() + store ptr %t1200, ptr %t1199 + call void @fn_eat_op(ptr @.str149) + %t1201 = load ptr, ptr %t1191 + store ptr %t1201, ptr %t1 + br label %ifend265 +else264: + %t1202 = call ptr @fn_node(i32 36) + store ptr %t1202, ptr %t1203 + %t1204 = load ptr, ptr %t1203 + %t1205 = getelementptr inbounds %Cmp_Node, ptr %t1204, i32 0, i32 4 + %t1206 = load ptr, ptr %t1 + store ptr %t1206, ptr %t1205 + %t1207 = load ptr, ptr %t1203 + %t1208 = getelementptr inbounds %Cmp_Node, ptr %t1207, i32 0, i32 5 + %t1209 = load ptr, ptr %t1185 + store ptr %t1209, ptr %t1208 + call void @fn_eat_op(ptr @.str150) + %t1210 = load ptr, ptr %t1203 + store ptr %t1210, ptr %t1 + br label %ifend265 +ifend265: + br label %ifend262 +else261: + %t1211 = call i32 @fn_is_op(ptr @.str151) + %t1212 = icmp ne i32 %t1211, 0 + br i1 %t1212, label %then266, label %else267 +then266: + %t1213 = call ptr @fn_node(i32 34) + store ptr %t1213, ptr %t1214 + %t1215 = load ptr, ptr %t1214 + %t1216 = getelementptr inbounds %Cmp_Node, ptr %t1215, i32 0, i32 4 + %t1217 = load ptr, ptr %t1 + store ptr %t1217, ptr %t1216 + %t1218 = load ptr, ptr %t1214 + %t1219 = getelementptr inbounds %Cmp_Node, ptr %t1218, i32 0, i32 8 + %t1220 = load ptr, ptr @g_toks + %t1221 = getelementptr inbounds %LSlice, ptr %t1220, i32 0, i32 0 + %t1222 = load ptr, ptr %t1221 + %t1223 = load i32, ptr @g_pi + %t1224 = getelementptr inbounds ptr, ptr %t1222, i32 %t1223 %t1225 = load ptr, ptr %t1224 - %t1226 = call i32 @lp_str_eq(ptr %t1225, ptr @.str151) - %t1227 = icmp ne i32 %t1226, 0 - %t1228 = zext i1 %t1227 to i32 - store i32 %t1228, ptr %t1220 - br i1 %t1227, label %scend267, label %sc266 -sc266: - %t1229 = load ptr, ptr %t1194 - %t1230 = getelementptr inbounds %Cmp_Node, ptr %t1229, i32 0, i32 4 - %t1231 = load ptr, ptr %t1230 - %t1232 = getelementptr inbounds %Cmp_Node, ptr %t1231, i32 0, i32 1 + %t1226 = getelementptr inbounds %Cmp_Tok, ptr %t1225, i32 0, i32 3 + %t1227 = load i32, ptr %t1226 + store i32 %t1227, ptr %t1219 + %t1228 = load ptr, ptr %t1214 + call void @fn_args_call(ptr %t1228) + %t1229 = load ptr, ptr %t1214 + store ptr %t1229, ptr %t1 + %t1231 = load ptr, ptr %t1214 + %t1232 = getelementptr inbounds %Cmp_Node, ptr %t1231, i32 0, i32 4 %t1233 = load ptr, ptr %t1232 - %t1234 = call i32 @lp_str_eq(ptr %t1233, ptr @.str152) - %t1235 = icmp ne i32 %t1234, 0 - %t1236 = zext i1 %t1235 to i32 - store i32 %t1236, ptr %t1220 - br label %scend267 -scend267: - %t1237 = load i32, ptr %t1220 + %t1234 = getelementptr inbounds %Cmp_Node, ptr %t1233, i32 0, i32 0 + %t1235 = load i32, ptr %t1234 + %t1236 = icmp eq i32 %t1235, 33 + %t1237 = zext i1 %t1236 to i32 %t1238 = icmp ne i32 %t1237, 0 %t1239 = zext i1 %t1238 to i32 - store i32 %t1239, ptr %t1210 - br label %scend265 -scend265: - %t1240 = load i32, ptr %t1210 - %t1241 = icmp ne i32 %t1240, 0 - br i1 %t1241, label %then268, label %ifend270 -then268: - %t1242 = load ptr, ptr %t1194 - %t1243 = getelementptr inbounds %Cmp_Node, ptr %t1242, i32 0, i32 4 - %t1244 = load ptr, ptr %t1243 - %t1245 = getelementptr inbounds %Cmp_Node, ptr %t1244, i32 0, i32 1 - %t1246 = load ptr, ptr %t1245 - call void @fn_warn_draw_sprite(ptr %t1246) - br label %ifend270 -ifend270: - br label %ifend263 -else262: + store i32 %t1239, ptr %t1230 + br i1 %t1238, label %sc269, label %scend270 +sc269: + %t1241 = load ptr, ptr %t1214 + %t1242 = getelementptr inbounds %Cmp_Node, ptr %t1241, i32 0, i32 4 + %t1243 = load ptr, ptr %t1242 + %t1244 = getelementptr inbounds %Cmp_Node, ptr %t1243, i32 0, i32 1 + %t1245 = load ptr, ptr %t1244 + %t1246 = call i32 @lp_str_eq(ptr %t1245, ptr @.str152) + %t1247 = icmp ne i32 %t1246, 0 + %t1248 = zext i1 %t1247 to i32 + store i32 %t1248, ptr %t1240 + br i1 %t1247, label %scend272, label %sc271 +sc271: + %t1249 = load ptr, ptr %t1214 + %t1250 = getelementptr inbounds %Cmp_Node, ptr %t1249, i32 0, i32 4 + %t1251 = load ptr, ptr %t1250 + %t1252 = getelementptr inbounds %Cmp_Node, ptr %t1251, i32 0, i32 1 + %t1253 = load ptr, ptr %t1252 + %t1254 = call i32 @lp_str_eq(ptr %t1253, ptr @.str153) + %t1255 = icmp ne i32 %t1254, 0 + %t1256 = zext i1 %t1255 to i32 + store i32 %t1256, ptr %t1240 + br label %scend272 +scend272: + %t1257 = load i32, ptr %t1240 + %t1258 = icmp ne i32 %t1257, 0 + %t1259 = zext i1 %t1258 to i32 + store i32 %t1259, ptr %t1230 + br label %scend270 +scend270: + %t1260 = load i32, ptr %t1230 + %t1261 = icmp ne i32 %t1260, 0 + br i1 %t1261, label %then273, label %ifend275 +then273: + %t1262 = load ptr, ptr %t1214 + %t1263 = getelementptr inbounds %Cmp_Node, ptr %t1262, i32 0, i32 4 + %t1264 = load ptr, ptr %t1263 + %t1265 = getelementptr inbounds %Cmp_Node, ptr %t1264, i32 0, i32 1 + %t1266 = load ptr, ptr %t1265 + call void @fn_warn_draw_sprite(ptr %t1266) + br label %ifend275 +ifend275: + br label %ifend268 +else267: br label %wend2 -ifend263: - br label %ifend257 -ifend257: +ifend268: + br label %ifend262 +ifend262: br label %ifend5 ifend5: br label %wcond0 wend2: - %t1247 = load ptr, ptr %t1 - store ptr %t1247, ptr %retval + %t1267 = load ptr, ptr %t1 + store ptr %t1267, ptr %retval br label %ret ret: - %t1248 = load ptr, ptr %retval - ret ptr %t1248 + %t1268 = load ptr, ptr %retval + ret ptr %t1268 } define ptr @fn_p_unary() { @@ -17927,7 +17969,7 @@ entry: %t5 = alloca ptr %t17 = alloca ptr %t29 = alloca ptr - %t0 = call i32 @fn_is_op(ptr @.str153) + %t0 = call i32 @fn_is_op(ptr @.str154) %t1 = icmp ne i32 %t0, 0 br i1 %t1, label %then0, label %ifend2 then0: @@ -17938,7 +17980,7 @@ then0: store ptr %t4, ptr %t5 %t6 = load ptr, ptr %t5 %t7 = getelementptr inbounds %Cmp_Node, ptr %t6, i32 0, i32 1 - store ptr @.str154, ptr %t7 + store ptr @.str155, ptr %t7 %t8 = load ptr, ptr %t5 %t9 = getelementptr inbounds %Cmp_Node, ptr %t8, i32 0, i32 4 %t10 = call ptr @fn_p_unary() @@ -17947,7 +17989,7 @@ then0: store ptr %t11, ptr %retval br label %ret ifend2: - %t12 = call i32 @fn_is_op(ptr @.str155) + %t12 = call i32 @fn_is_op(ptr @.str156) %t13 = icmp ne i32 %t12, 0 br i1 %t13, label %then3, label %ifend5 then3: @@ -17958,7 +18000,7 @@ then3: store ptr %t16, ptr %t17 %t18 = load ptr, ptr %t17 %t19 = getelementptr inbounds %Cmp_Node, ptr %t18, i32 0, i32 1 - store ptr @.str156, ptr %t19 + store ptr @.str157, ptr %t19 %t20 = load ptr, ptr %t17 %t21 = getelementptr inbounds %Cmp_Node, ptr %t20, i32 0, i32 4 %t22 = call ptr @fn_p_unary() @@ -17967,7 +18009,7 @@ then3: store ptr %t23, ptr %retval br label %ret ifend5: - %t24 = call i32 @fn_is_id(ptr @.str157) + %t24 = call i32 @fn_is_id(ptr @.str158) %t25 = icmp ne i32 %t24, 0 br i1 %t25, label %then6, label %ifend8 then6: @@ -17978,7 +18020,7 @@ then6: store ptr %t28, ptr %t29 %t30 = load ptr, ptr %t29 %t31 = getelementptr inbounds %Cmp_Node, ptr %t30, i32 0, i32 1 - store ptr @.str158, ptr %t31 + store ptr @.str159, ptr %t31 %t32 = load ptr, ptr %t29 %t33 = getelementptr inbounds %Cmp_Node, ptr %t32, i32 0, i32 4 %t34 = call ptr @fn_p_unary() @@ -18041,13 +18083,13 @@ entry: store ptr %t0, ptr %t1 br label %wcond0 wcond0: - %t7 = call i32 @fn_is_op(ptr @.str159) + %t7 = call i32 @fn_is_op(ptr @.str160) %t8 = icmp ne i32 %t7, 0 %t9 = zext i1 %t8 to i32 store i32 %t9, ptr %t6 br i1 %t8, label %scend4, label %sc3 sc3: - %t10 = call i32 @fn_is_op(ptr @.str160) + %t10 = call i32 @fn_is_op(ptr @.str161) %t11 = icmp ne i32 %t10, 0 %t12 = zext i1 %t11 to i32 store i32 %t12, ptr %t6 @@ -18059,7 +18101,7 @@ scend4: store i32 %t15, ptr %t5 br i1 %t14, label %scend6, label %sc5 sc5: - %t16 = call i32 @fn_is_op(ptr @.str161) + %t16 = call i32 @fn_is_op(ptr @.str162) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t5 @@ -18071,7 +18113,7 @@ scend6: store i32 %t21, ptr %t4 br i1 %t20, label %scend8, label %sc7 sc7: - %t22 = call i32 @fn_is_op(ptr @.str162) + %t22 = call i32 @fn_is_op(ptr @.str163) %t23 = icmp ne i32 %t22, 0 %t24 = zext i1 %t23 to i32 store i32 %t24, ptr %t4 @@ -18083,7 +18125,7 @@ scend8: store i32 %t27, ptr %t3 br i1 %t26, label %scend10, label %sc9 sc9: - %t28 = call i32 @fn_is_op(ptr @.str163) + %t28 = call i32 @fn_is_op(ptr @.str164) %t29 = icmp ne i32 %t28, 0 %t30 = zext i1 %t29 to i32 store i32 %t30, ptr %t3 @@ -18095,7 +18137,7 @@ scend10: store i32 %t33, ptr %t2 br i1 %t32, label %scend12, label %sc11 sc11: - %t34 = call i32 @fn_is_op(ptr @.str164) + %t34 = call i32 @fn_is_op(ptr @.str165) %t35 = icmp ne i32 %t34, 0 %t36 = zext i1 %t35 to i32 store i32 %t36, ptr %t2 @@ -18144,13 +18186,13 @@ entry: store ptr %t0, ptr %t1 br label %wcond0 wcond0: - %t5 = call i32 @fn_is_op(ptr @.str165) + %t5 = call i32 @fn_is_op(ptr @.str166) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t4 br i1 %t6, label %scend4, label %sc3 sc3: - %t8 = call i32 @fn_is_op(ptr @.str166) + %t8 = call i32 @fn_is_op(ptr @.str167) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t4 @@ -18162,7 +18204,7 @@ scend4: store i32 %t13, ptr %t3 br i1 %t12, label %scend6, label %sc5 sc5: - %t14 = call i32 @fn_is_op(ptr @.str167) + %t14 = call i32 @fn_is_op(ptr @.str168) %t15 = icmp ne i32 %t14, 0 %t16 = zext i1 %t15 to i32 store i32 %t16, ptr %t3 @@ -18174,7 +18216,7 @@ scend6: store i32 %t19, ptr %t2 br i1 %t18, label %scend8, label %sc7 sc7: - %t20 = call i32 @fn_is_op(ptr @.str168) + %t20 = call i32 @fn_is_op(ptr @.str169) %t21 = icmp ne i32 %t20, 0 %t22 = zext i1 %t21 to i32 store i32 %t22, ptr %t2 @@ -18225,13 +18267,13 @@ entry: store ptr %t0, ptr %t1 br label %wcond0 wcond0: - %t7 = call i32 @fn_is_op(ptr @.str169) + %t7 = call i32 @fn_is_op(ptr @.str170) %t8 = icmp ne i32 %t7, 0 %t9 = zext i1 %t8 to i32 store i32 %t9, ptr %t6 br i1 %t8, label %scend4, label %sc3 sc3: - %t10 = call i32 @fn_is_op(ptr @.str170) + %t10 = call i32 @fn_is_op(ptr @.str171) %t11 = icmp ne i32 %t10, 0 %t12 = zext i1 %t11 to i32 store i32 %t12, ptr %t6 @@ -18243,7 +18285,7 @@ scend4: store i32 %t15, ptr %t5 br i1 %t14, label %scend6, label %sc5 sc5: - %t16 = call i32 @fn_is_op(ptr @.str171) + %t16 = call i32 @fn_is_op(ptr @.str172) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t5 @@ -18255,7 +18297,7 @@ scend6: store i32 %t21, ptr %t4 br i1 %t20, label %scend8, label %sc7 sc7: - %t22 = call i32 @fn_is_op(ptr @.str172) + %t22 = call i32 @fn_is_op(ptr @.str173) %t23 = icmp ne i32 %t22, 0 %t24 = zext i1 %t23 to i32 store i32 %t24, ptr %t4 @@ -18267,7 +18309,7 @@ scend8: store i32 %t27, ptr %t3 br i1 %t26, label %scend10, label %sc9 sc9: - %t28 = call i32 @fn_is_op(ptr @.str173) + %t28 = call i32 @fn_is_op(ptr @.str174) %t29 = icmp ne i32 %t28, 0 %t30 = zext i1 %t29 to i32 store i32 %t30, ptr %t3 @@ -18279,7 +18321,7 @@ scend10: store i32 %t33, ptr %t2 br i1 %t32, label %scend12, label %sc11 sc11: - %t34 = call i32 @fn_is_op(ptr @.str174) + %t34 = call i32 @fn_is_op(ptr @.str175) %t35 = icmp ne i32 %t34, 0 %t36 = zext i1 %t35 to i32 store i32 %t36, ptr %t2 @@ -18324,7 +18366,7 @@ entry: store ptr %t0, ptr %t1 br label %wcond0 wcond0: - %t2 = call i32 @fn_is_id(ptr @.str175) + %t2 = call i32 @fn_is_id(ptr @.str176) %t3 = icmp ne i32 %t2, 0 br i1 %t3, label %wbody1, label %wend2 wbody1: @@ -18333,7 +18375,7 @@ wbody1: store i32 %t5, ptr @g_pi %t6 = load ptr, ptr %t1 %t7 = call ptr @fn_p_cmp() - %t8 = call ptr @fn_mkbin(ptr @.str176, ptr %t6, ptr %t7) + %t8 = call ptr @fn_mkbin(ptr @.str177, ptr %t6, ptr %t7) store ptr %t8, ptr %t1 br label %wcond0 wend2: @@ -18353,7 +18395,7 @@ entry: store ptr %t0, ptr %t1 br label %wcond0 wcond0: - %t2 = call i32 @fn_is_id(ptr @.str177) + %t2 = call i32 @fn_is_id(ptr @.str178) %t3 = icmp ne i32 %t2, 0 br i1 %t3, label %wbody1, label %wend2 wbody1: @@ -18362,7 +18404,7 @@ wbody1: store i32 %t5, ptr @g_pi %t6 = load ptr, ptr %t1 %t7 = call ptr @fn_p_and() - %t8 = call ptr @fn_mkbin(ptr @.str178, ptr %t6, ptr %t7) + %t8 = call ptr @fn_mkbin(ptr @.str179, ptr %t6, ptr %t7) store ptr %t8, ptr %t1 br label %wcond0 wend2: @@ -18379,7 +18421,7 @@ entry: %retval = alloca ptr %t1 = alloca ptr %t6 = alloca ptr - call void @fn_eat_op(ptr @.str179) + call void @fn_eat_op(ptr @.str180) %t0 = call ptr @fn_node(i32 41) store ptr %t0, ptr %t1 br label %wcond0 @@ -18388,7 +18430,7 @@ wcond0: br i1 %t2, label %wbody1, label %wend2 wbody1: call void @fn_skipnl() - %t3 = call i32 @fn_is_op(ptr @.str180) + %t3 = call i32 @fn_is_op(ptr @.str181) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then3, label %ifend5 then3: @@ -18400,7 +18442,7 @@ ifend5: %t8 = getelementptr inbounds %Cmp_Node, ptr %t7, i32 0, i32 1 %t9 = call ptr @fn_eat_id() store ptr %t9, ptr %t8 - call void @fn_eat_op(ptr @.str181) + call void @fn_eat_op(ptr @.str182) %t10 = load ptr, ptr %t6 %t11 = getelementptr inbounds %Cmp_Node, ptr %t10, i32 0, i32 4 %t12 = call ptr @fn_expr() @@ -18435,7 +18477,7 @@ put7: store ptr %t16, ptr %t33 %t34 = add i32 %t20, 1 store i32 %t34, ptr %t17 - %t35 = call i32 @fn_is_op(ptr @.str182) + %t35 = call i32 @fn_is_op(ptr @.str183) %t36 = icmp ne i32 %t35, 0 br i1 %t36, label %then8, label %ifend10 then8: @@ -18446,7 +18488,7 @@ then8: ifend10: br label %wcond0 wend2: - call void @fn_eat_op(ptr @.str183) + call void @fn_eat_op(ptr @.str184) %t39 = load ptr, ptr %t1 store ptr %t39, ptr %retval br label %ret @@ -18461,7 +18503,7 @@ entry: %t1 = alloca ptr %t37 = alloca i32 call void @fn_skipnl() - call void @fn_eat_op(ptr @.str184) + call void @fn_eat_op(ptr @.str185) %t0 = call ptr @fn_node(i32 7) store ptr %t0, ptr %t1 br label %wcond0 @@ -18470,7 +18512,7 @@ wcond0: br i1 %t2, label %wbody1, label %wend2 wbody1: call void @fn_skipnl() - %t3 = call i32 @fn_is_op(ptr @.str185) + %t3 = call i32 @fn_is_op(ptr @.str186) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then3, label %ifend5 then3: @@ -18517,7 +18559,7 @@ put7: %t35 = icmp eq i32 %t34, 4 %t36 = zext i1 %t35 to i32 store i32 %t36, ptr %t37 - %t38 = call i32 @fn_is_op(ptr @.str186) + %t38 = call i32 @fn_is_op(ptr @.str187) %t39 = icmp ne i32 %t38, 0 br i1 %t39, label %then8, label %ifend10 then8: @@ -18530,12 +18572,12 @@ ifend10: %t43 = icmp ne i32 %t42, 0 br i1 %t43, label %then11, label %ifend13 then11: - call void @fn_perr(ptr @.str187) + call void @fn_perr(ptr @.str188) br label %ifend13 ifend13: br label %wcond0 wend2: - call void @fn_eat_op(ptr @.str188) + call void @fn_eat_op(ptr @.str189) %t44 = load ptr, ptr %t1 store ptr %t44, ptr %retval br label %ret @@ -18636,7 +18678,7 @@ then0: %t14 = load ptr, ptr %t6 %t15 = getelementptr inbounds %Cmp_Tok, ptr %t14, i32 0, i32 1 %t16 = load ptr, ptr %t15 - %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str189) + %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str190) %t18 = icmp ne i32 %t17, 0 %t19 = zext i1 %t18 to i32 store i32 %t19, ptr %t13 @@ -18645,7 +18687,7 @@ sc3: %t20 = load ptr, ptr %t6 %t21 = getelementptr inbounds %Cmp_Tok, ptr %t20, i32 0, i32 1 %t22 = load ptr, ptr %t21 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str190) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str191) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t13 @@ -18659,7 +18701,7 @@ then5: %t29 = load ptr, ptr %t6 %t30 = getelementptr inbounds %Cmp_Tok, ptr %t29, i32 0, i32 1 %t31 = load ptr, ptr %t30 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str191) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str192) %t33 = icmp ne i32 %t32, 0 br i1 %t33, label %then8, label %ifend10 then8: @@ -18690,7 +18732,7 @@ ifend10: %t52 = getelementptr inbounds %Cmp_Node, ptr %t51, i32 0, i32 1 %t53 = call ptr @fn_eat_id() store ptr %t53, ptr %t52 - %t54 = call i32 @fn_is_op(ptr @.str192) + %t54 = call i32 @fn_is_op(ptr @.str193) %t55 = icmp ne i32 %t54, 0 br i1 %t55, label %then11, label %ifend13 then11: @@ -18703,7 +18745,7 @@ then11: store ptr %t60, ptr %t59 br label %ifend13 ifend13: - %t61 = call i32 @fn_is_op(ptr @.str193) + %t61 = call i32 @fn_is_op(ptr @.str194) %t62 = icmp ne i32 %t61, 0 br i1 %t62, label %then14, label %ifend16 then14: @@ -18723,7 +18765,7 @@ ifend7: %t69 = load ptr, ptr %t6 %t70 = getelementptr inbounds %Cmp_Tok, ptr %t69, i32 0, i32 1 %t71 = load ptr, ptr %t70 - %t72 = call i32 @lp_str_eq(ptr %t71, ptr @.str194) + %t72 = call i32 @lp_str_eq(ptr %t71, ptr @.str195) %t73 = icmp ne i32 %t72, 0 br i1 %t73, label %then17, label %ifend19 then17: @@ -18747,7 +18789,7 @@ then17: store i32 %t90, ptr %t78 br i1 %t89, label %sc20, label %scend21 sc20: - %t91 = call i32 @fn_is_op(ptr @.str195) + %t91 = call i32 @fn_is_op(ptr @.str196) %t92 = icmp eq i32 %t91, 0 %t93 = zext i1 %t92 to i32 %t94 = icmp ne i32 %t93, 0 @@ -18772,7 +18814,7 @@ ifend19: %t102 = load ptr, ptr %t6 %t103 = getelementptr inbounds %Cmp_Tok, ptr %t102, i32 0, i32 1 %t104 = load ptr, ptr %t103 - %t105 = call i32 @lp_str_eq(ptr %t104, ptr @.str196) + %t105 = call i32 @lp_str_eq(ptr %t104, ptr @.str197) %t106 = icmp ne i32 %t105, 0 br i1 %t106, label %then25, label %ifend27 then25: @@ -18792,7 +18834,7 @@ then25: %t117 = load i32, ptr @g_pi store i32 %t117, ptr %t118 call void @fn_skipnl() - %t119 = call i32 @fn_is_id(ptr @.str197) + %t119 = call i32 @fn_is_id(ptr @.str198) %t120 = icmp ne i32 %t119, 0 br i1 %t120, label %then28, label %else29 then28: @@ -18800,7 +18842,7 @@ then28: %t122 = add i32 %t121, 1 store i32 %t122, ptr @g_pi call void @fn_skipnl() - %t123 = call i32 @fn_is_id(ptr @.str198) + %t123 = call i32 @fn_is_id(ptr @.str199) %t124 = icmp ne i32 %t123, 0 br i1 %t124, label %then31, label %else32 then31: @@ -18829,7 +18871,7 @@ ifend27: %t133 = load ptr, ptr %t6 %t134 = getelementptr inbounds %Cmp_Tok, ptr %t133, i32 0, i32 1 %t135 = load ptr, ptr %t134 - %t136 = call i32 @lp_str_eq(ptr %t135, ptr @.str199) + %t136 = call i32 @lp_str_eq(ptr %t135, ptr @.str200) %t137 = icmp ne i32 %t136, 0 br i1 %t137, label %then34, label %ifend36 then34: @@ -18853,14 +18895,14 @@ ifend36: %t149 = load ptr, ptr %t6 %t150 = getelementptr inbounds %Cmp_Tok, ptr %t149, i32 0, i32 1 %t151 = load ptr, ptr %t150 - %t152 = call i32 @lp_str_eq(ptr %t151, ptr @.str200) + %t152 = call i32 @lp_str_eq(ptr %t151, ptr @.str201) %t153 = icmp ne i32 %t152, 0 br i1 %t153, label %then37, label %ifend39 then37: %t154 = load i32, ptr @g_pi %t155 = add i32 %t154, 1 store i32 %t155, ptr @g_pi - %t156 = call i32 @fn_is_op(ptr @.str201) + %t156 = call i32 @fn_is_op(ptr @.str202) %t157 = icmp ne i32 %t156, 0 br i1 %t157, label %then40, label %ifend42 then40: @@ -18880,7 +18922,7 @@ ifend42: %t167 = getelementptr inbounds %Cmp_Node, ptr %t166, i32 0, i32 4 %t168 = call ptr @fn_expr() store ptr %t168, ptr %t167 - call void @fn_eat_op(ptr @.str202) + call void @fn_eat_op(ptr @.str203) %t169 = load ptr, ptr %t160 %t170 = getelementptr inbounds %Cmp_Node, ptr %t169, i32 0, i32 5 %t171 = call ptr @fn_expr() @@ -18896,7 +18938,7 @@ ifend39: %t176 = load ptr, ptr %t6 %t177 = getelementptr inbounds %Cmp_Tok, ptr %t176, i32 0, i32 1 %t178 = load ptr, ptr %t177 - %t179 = call i32 @lp_str_eq(ptr %t178, ptr @.str203) + %t179 = call i32 @lp_str_eq(ptr %t178, ptr @.str204) %t180 = icmp ne i32 %t179, 0 br i1 %t180, label %then43, label %ifend45 then43: @@ -18907,7 +18949,7 @@ ifend45: %t182 = load ptr, ptr %t6 %t183 = getelementptr inbounds %Cmp_Tok, ptr %t182, i32 0, i32 1 %t184 = load ptr, ptr %t183 - %t185 = call i32 @lp_str_eq(ptr %t184, ptr @.str204) + %t185 = call i32 @lp_str_eq(ptr %t184, ptr @.str205) %t186 = icmp ne i32 %t185, 0 br i1 %t186, label %then46, label %ifend48 then46: @@ -18921,7 +18963,7 @@ then46: %t193 = call ptr @fn_expr() store ptr %t193, ptr %t192 call void @fn_skipnl() - call void @fn_eat_op(ptr @.str205) + call void @fn_eat_op(ptr @.str206) store i32 0, ptr %t194 br label %wcond49 wcond49: @@ -18929,7 +18971,7 @@ wcond49: br i1 %t195, label %wbody50, label %wend51 wbody50: call void @fn_skipnl() - %t196 = call i32 @fn_is_op(ptr @.str206) + %t196 = call i32 @fn_is_op(ptr @.str207) %t197 = icmp ne i32 %t196, 0 br i1 %t197, label %then52, label %ifend54 then52: @@ -18943,7 +18985,7 @@ ifend54: %t203 = getelementptr inbounds %Cmp_Node, ptr %t202, i32 0, i32 1 %t204 = call ptr @fn_eat_id() store ptr %t204, ptr %t203 - %t205 = call i32 @fn_is_op(ptr @.str207) + %t205 = call i32 @fn_is_op(ptr @.str208) %t206 = icmp ne i32 %t205, 0 br i1 %t206, label %then55, label %ifend57 then55: @@ -19000,7 +19042,7 @@ put59: store i32 %t241, ptr %t194 br label %wcond49 wend51: - call void @fn_eat_op(ptr @.str208) + call void @fn_eat_op(ptr @.str209) %t242 = load ptr, ptr %t190 store ptr %t242, ptr %retval br label %ret @@ -19008,7 +19050,7 @@ ifend48: %t244 = load ptr, ptr %t6 %t245 = getelementptr inbounds %Cmp_Tok, ptr %t244, i32 0, i32 1 %t246 = load ptr, ptr %t245 - %t247 = call i32 @lp_str_eq(ptr %t246, ptr @.str209) + %t247 = call i32 @lp_str_eq(ptr %t246, ptr @.str210) %t248 = icmp ne i32 %t247, 0 %t249 = zext i1 %t248 to i32 store i32 %t249, ptr %t243 @@ -19041,7 +19083,7 @@ ifend64: %t266 = load ptr, ptr %t6 %t267 = getelementptr inbounds %Cmp_Tok, ptr %t266, i32 0, i32 1 %t268 = load ptr, ptr %t267 - %t269 = call i32 @lp_str_eq(ptr %t268, ptr @.str210) + %t269 = call i32 @lp_str_eq(ptr %t268, ptr @.str211) %t270 = icmp ne i32 %t269, 0 br i1 %t270, label %then65, label %ifend67 then65: @@ -19061,7 +19103,7 @@ ifend67: %t279 = load ptr, ptr %t6 %t280 = getelementptr inbounds %Cmp_Tok, ptr %t279, i32 0, i32 1 %t281 = load ptr, ptr %t280 - %t282 = call i32 @lp_str_eq(ptr %t281, ptr @.str211) + %t282 = call i32 @lp_str_eq(ptr %t281, ptr @.str212) %t283 = icmp ne i32 %t282, 0 br i1 %t283, label %then68, label %ifend70 then68: @@ -19081,7 +19123,7 @@ ifend70: %t293 = load ptr, ptr %t6 %t294 = getelementptr inbounds %Cmp_Tok, ptr %t293, i32 0, i32 1 %t295 = load ptr, ptr %t294 - %t296 = call i32 @lp_str_eq(ptr %t295, ptr @.str212) + %t296 = call i32 @lp_str_eq(ptr %t295, ptr @.str213) %t297 = icmp ne i32 %t296, 0 %t298 = zext i1 %t297 to i32 store i32 %t298, ptr %t292 @@ -19090,7 +19132,7 @@ sc71: %t299 = load ptr, ptr %t6 %t300 = getelementptr inbounds %Cmp_Tok, ptr %t299, i32 0, i32 1 %t301 = load ptr, ptr %t300 - %t302 = call i32 @lp_str_eq(ptr %t301, ptr @.str213) + %t302 = call i32 @lp_str_eq(ptr %t301, ptr @.str214) %t303 = icmp ne i32 %t302, 0 %t304 = zext i1 %t303 to i32 store i32 %t304, ptr %t292 @@ -19104,7 +19146,7 @@ then73: %t308 = load ptr, ptr %t6 %t309 = getelementptr inbounds %Cmp_Tok, ptr %t308, i32 0, i32 1 %t310 = load ptr, ptr %t309 - %t311 = call i32 @lp_str_eq(ptr %t310, ptr @.str214) + %t311 = call i32 @lp_str_eq(ptr %t310, ptr @.str215) %t312 = icmp ne i32 %t311, 0 br i1 %t312, label %then76, label %ifend78 then76: @@ -19120,7 +19162,7 @@ ifend78: %t318 = getelementptr inbounds %Cmp_Node, ptr %t317, i32 0, i32 2 %t319 = load i32, ptr %t307 store i32 %t319, ptr %t318 - %t320 = call i32 @fn_is_id(ptr @.str215) + %t320 = call i32 @fn_is_id(ptr @.str216) %t321 = icmp ne i32 %t320, 0 br i1 %t321, label %then79, label %ifend81 then79: @@ -19129,7 +19171,7 @@ then79: store i32 %t323, ptr @g_pi %t324 = load ptr, ptr %t316 %t325 = getelementptr inbounds %Cmp_Node, ptr %t324, i32 0, i32 3 - store ptr @.str216, ptr %t325 + store ptr @.str217, ptr %t325 %t326 = load ptr, ptr %t316 %t327 = getelementptr inbounds %Cmp_Node, ptr %t326, i32 0, i32 1 %t328 = call ptr @fn_eat_id() @@ -19142,7 +19184,7 @@ then79: store ptr %t332, ptr %retval br label %ret ifend81: - %t333 = call i32 @fn_is_id(ptr @.str217) + %t333 = call i32 @fn_is_id(ptr @.str218) %t334 = icmp ne i32 %t333, 0 br i1 %t334, label %then82, label %ifend84 then82: @@ -19151,7 +19193,7 @@ then82: store i32 %t336, ptr @g_pi %t337 = load ptr, ptr %t316 %t338 = getelementptr inbounds %Cmp_Node, ptr %t337, i32 0, i32 3 - store ptr @.str218, ptr %t338 + store ptr @.str219, ptr %t338 %t339 = load ptr, ptr %t316 %t340 = getelementptr inbounds %Cmp_Node, ptr %t339, i32 0, i32 1 %t341 = call ptr @fn_eat_id() @@ -19202,7 +19244,7 @@ ifend84: %t370 = getelementptr inbounds %Cmp_Node, ptr %t369, i32 0, i32 1 %t371 = call ptr @fn_eat_id() store ptr %t371, ptr %t370 - %t372 = call i32 @fn_is_id(ptr @.str219) + %t372 = call i32 @fn_is_id(ptr @.str220) %t373 = icmp ne i32 %t372, 0 br i1 %t373, label %then90, label %ifend92 then90: @@ -19222,7 +19264,7 @@ ifend75: %t380 = load ptr, ptr %t6 %t381 = getelementptr inbounds %Cmp_Tok, ptr %t380, i32 0, i32 1 %t382 = load ptr, ptr %t381 - %t383 = call i32 @lp_str_eq(ptr %t382, ptr @.str220) + %t383 = call i32 @lp_str_eq(ptr %t382, ptr @.str221) %t384 = icmp ne i32 %t383, 0 br i1 %t384, label %then93, label %ifend95 then93: @@ -19235,13 +19277,13 @@ then93: %t390 = getelementptr inbounds %Cmp_Node, ptr %t389, i32 0, i32 1 %t391 = call ptr @fn_eat_id() store ptr %t391, ptr %t390 - %t392 = call i32 @fn_is_id(ptr @.str221) + %t392 = call i32 @fn_is_id(ptr @.str222) %t393 = icmp eq i32 %t392, 0 %t394 = zext i1 %t393 to i32 %t395 = icmp ne i32 %t394, 0 br i1 %t395, label %then96, label %ifend98 then96: - call void @fn_perr(ptr @.str222) + call void @fn_perr(ptr @.str223) br label %ifend98 ifend98: %t396 = load i32, ptr @g_pi @@ -19251,7 +19293,7 @@ ifend98: %t399 = getelementptr inbounds %Cmp_Node, ptr %t398, i32 0, i32 4 %t400 = call ptr @fn_expr() store ptr %t400, ptr %t399 - %t401 = call i32 @fn_is_op(ptr @.str223) + %t401 = call i32 @fn_is_op(ptr @.str224) %t402 = icmp ne i32 %t401, 0 br i1 %t402, label %then99, label %ifend101 then99: @@ -19268,7 +19310,7 @@ ifend95: %t407 = load ptr, ptr %t6 %t408 = getelementptr inbounds %Cmp_Tok, ptr %t407, i32 0, i32 1 %t409 = load ptr, ptr %t408 - %t410 = call i32 @lp_str_eq(ptr %t409, ptr @.str224) + %t410 = call i32 @lp_str_eq(ptr %t409, ptr @.str225) %t411 = icmp ne i32 %t410, 0 br i1 %t411, label %then102, label %ifend104 then102: @@ -19281,13 +19323,13 @@ then102: %t417 = getelementptr inbounds %Cmp_Node, ptr %t416, i32 0, i32 1 %t418 = call ptr @fn_eat_id() store ptr %t418, ptr %t417 - %t419 = call i32 @fn_is_id(ptr @.str225) + %t419 = call i32 @fn_is_id(ptr @.str226) %t420 = icmp eq i32 %t419, 0 %t421 = zext i1 %t420 to i32 %t422 = icmp ne i32 %t421, 0 br i1 %t422, label %then105, label %ifend107 then105: - call void @fn_perr(ptr @.str226) + call void @fn_perr(ptr @.str227) br label %ifend107 ifend107: %t423 = load i32, ptr @g_pi @@ -19304,7 +19346,7 @@ ifend104: %t429 = load ptr, ptr %t6 %t430 = getelementptr inbounds %Cmp_Tok, ptr %t429, i32 0, i32 1 %t431 = load ptr, ptr %t430 - %t432 = call i32 @lp_str_eq(ptr %t431, ptr @.str227) + %t432 = call i32 @lp_str_eq(ptr %t431, ptr @.str228) %t433 = icmp ne i32 %t432, 0 br i1 %t433, label %then108, label %ifend110 then108: @@ -19318,7 +19360,7 @@ ifend110: %t437 = load ptr, ptr %t6 %t438 = getelementptr inbounds %Cmp_Tok, ptr %t437, i32 0, i32 1 %t439 = load ptr, ptr %t438 - %t440 = call i32 @lp_str_eq(ptr %t439, ptr @.str228) + %t440 = call i32 @lp_str_eq(ptr %t439, ptr @.str229) %t441 = icmp ne i32 %t440, 0 br i1 %t441, label %then111, label %ifend113 then111: @@ -19332,7 +19374,7 @@ ifend113: %t445 = load ptr, ptr %t6 %t446 = getelementptr inbounds %Cmp_Tok, ptr %t445, i32 0, i32 1 %t447 = load ptr, ptr %t446 - %t448 = call i32 @lp_str_eq(ptr %t447, ptr @.str229) + %t448 = call i32 @lp_str_eq(ptr %t447, ptr @.str230) %t449 = icmp ne i32 %t448, 0 br i1 %t449, label %then114, label %ifend116 then114: @@ -19346,7 +19388,7 @@ ifend116: %t453 = load ptr, ptr %t6 %t454 = getelementptr inbounds %Cmp_Tok, ptr %t453, i32 0, i32 1 %t455 = load ptr, ptr %t454 - %t456 = call i32 @lp_str_eq(ptr %t455, ptr @.str230) + %t456 = call i32 @lp_str_eq(ptr %t455, ptr @.str231) %t457 = icmp ne i32 %t456, 0 br i1 %t457, label %then117, label %ifend119 then117: @@ -19360,14 +19402,14 @@ then117: %t464 = call ptr @fn_expr() store ptr %t464, ptr %t463 call void @fn_skipnl() - call void @fn_eat_op(ptr @.str231) + call void @fn_eat_op(ptr @.str232) br label %wcond120 wcond120: %t465 = icmp ne i32 1, 0 br i1 %t465, label %wbody121, label %wend122 wbody121: call void @fn_skipnl() - %t466 = call i32 @fn_is_op(ptr @.str232) + %t466 = call i32 @fn_is_op(ptr @.str233) %t467 = icmp ne i32 %t466, 0 br i1 %t467, label %then123, label %ifend125 then123: @@ -19410,7 +19452,7 @@ put130: store ptr %t474, ptr %t491 %t492 = add i32 %t478, 1 store i32 %t492, ptr %t475 - %t493 = call i32 @fn_is_op(ptr @.str233) + %t493 = call i32 @fn_is_op(ptr @.str234) %t494 = icmp ne i32 %t493, 0 br i1 %t494, label %then131, label %ifend133 then131: @@ -19422,9 +19464,9 @@ then131: ifend133: br label %wend128 wend128: - call void @fn_eat_op(ptr @.str234) + call void @fn_eat_op(ptr @.str235) call void @fn_skipnl() - %t497 = call i32 @fn_is_op(ptr @.str235) + %t497 = call i32 @fn_is_op(ptr @.str236) %t498 = icmp ne i32 %t497, 0 br i1 %t498, label %then134, label %else135 then134: @@ -19504,7 +19546,7 @@ put140: store i32 %t550, ptr %t533 br label %wcond120 wend122: - call void @fn_eat_op(ptr @.str236) + call void @fn_eat_op(ptr @.str237) %t551 = load ptr, ptr %t461 store ptr %t551, ptr %retval br label %ret @@ -19513,13 +19555,13 @@ ifend119: ifend2: %t552 = call ptr @fn_expr() store ptr %t552, ptr %t553 - %t558 = call i32 @fn_is_op(ptr @.str237) + %t558 = call i32 @fn_is_op(ptr @.str238) %t559 = icmp ne i32 %t558, 0 %t560 = zext i1 %t559 to i32 store i32 %t560, ptr %t557 br i1 %t559, label %scend142, label %sc141 sc141: - %t561 = call i32 @fn_is_op(ptr @.str238) + %t561 = call i32 @fn_is_op(ptr @.str239) %t562 = icmp ne i32 %t561, 0 %t563 = zext i1 %t562 to i32 store i32 %t563, ptr %t557 @@ -19531,7 +19573,7 @@ scend142: store i32 %t566, ptr %t556 br i1 %t565, label %scend144, label %sc143 sc143: - %t567 = call i32 @fn_is_op(ptr @.str239) + %t567 = call i32 @fn_is_op(ptr @.str240) %t568 = icmp ne i32 %t567, 0 %t569 = zext i1 %t568 to i32 store i32 %t569, ptr %t556 @@ -19543,7 +19585,7 @@ scend144: store i32 %t572, ptr %t555 br i1 %t571, label %scend146, label %sc145 sc145: - %t573 = call i32 @fn_is_op(ptr @.str240) + %t573 = call i32 @fn_is_op(ptr @.str241) %t574 = icmp ne i32 %t573, 0 %t575 = zext i1 %t574 to i32 store i32 %t575, ptr %t555 @@ -19555,7 +19597,7 @@ scend146: store i32 %t578, ptr %t554 br i1 %t577, label %scend148, label %sc147 sc147: - %t579 = call i32 @fn_is_op(ptr @.str241) + %t579 = call i32 @fn_is_op(ptr @.str242) %t580 = icmp ne i32 %t579, 0 %t581 = zext i1 %t580 to i32 store i32 %t581, ptr %t554 @@ -19631,12 +19673,12 @@ entry: %t5 = getelementptr inbounds %Cmp_Node, ptr %t4, i32 0, i32 1 %t6 = call ptr @fn_eat_id() store ptr %t6, ptr %t5 - call void @fn_eat_op(ptr @.str242) + call void @fn_eat_op(ptr @.str243) %t7 = load ptr, ptr %t3 %t8 = getelementptr inbounds %Cmp_Node, ptr %t7, i32 0, i32 3 %t9 = call ptr @fn_ptype() store ptr %t9, ptr %t8 - %t10 = call i32 @fn_is_op(ptr @.str243) + %t10 = call i32 @fn_is_op(ptr @.str244) %t11 = icmp ne i32 %t10, 0 br i1 %t11, label %then0, label %ifend2 then0: @@ -19670,12 +19712,12 @@ entry: %t5 = getelementptr inbounds %Cmp_Node, ptr %t4, i32 0, i32 1 %t6 = call ptr @fn_eat_id() store ptr %t6, ptr %t5 - call void @fn_eat_op(ptr @.str244) + call void @fn_eat_op(ptr @.str245) %t7 = load ptr, ptr %t3 %t8 = getelementptr inbounds %Cmp_Node, ptr %t7, i32 0, i32 3 %t9 = call ptr @fn_ptype() store ptr %t9, ptr %t8 - call void @fn_eat_op(ptr @.str245) + call void @fn_eat_op(ptr @.str246) %t10 = load ptr, ptr %t3 %t11 = getelementptr inbounds %Cmp_Node, ptr %t10, i32 0, i32 4 %t12 = call ptr @fn_expr() @@ -19725,14 +19767,14 @@ entry: %t231 = alloca i32 store ptr %arg_w, ptr %t0 %t6 = load ptr, ptr %t0 - %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str246) + %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str247) %t8 = icmp ne i32 %t7, 0 %t9 = zext i1 %t8 to i32 store i32 %t9, ptr %t5 br i1 %t8, label %scend1, label %sc0 sc0: %t10 = load ptr, ptr %t0 - %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str247) + %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str248) %t12 = icmp ne i32 %t11, 0 %t13 = zext i1 %t12 to i32 store i32 %t13, ptr %t5 @@ -19745,7 +19787,7 @@ scend1: br i1 %t15, label %scend3, label %sc2 sc2: %t17 = load ptr, ptr %t0 - %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str248) + %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str249) %t19 = icmp ne i32 %t18, 0 %t20 = zext i1 %t19 to i32 store i32 %t20, ptr %t4 @@ -19758,7 +19800,7 @@ scend3: br i1 %t22, label %scend5, label %sc4 sc4: %t24 = load ptr, ptr %t0 - %t25 = call i32 @lp_str_eq(ptr %t24, ptr @.str249) + %t25 = call i32 @lp_str_eq(ptr %t24, ptr @.str250) %t26 = icmp ne i32 %t25, 0 %t27 = zext i1 %t26 to i32 store i32 %t27, ptr %t3 @@ -19771,7 +19813,7 @@ scend5: br i1 %t29, label %scend7, label %sc6 sc6: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str250) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str251) %t33 = icmp ne i32 %t32, 0 %t34 = zext i1 %t33 to i32 store i32 %t34, ptr %t2 @@ -19784,7 +19826,7 @@ scend7: br i1 %t36, label %scend9, label %sc8 sc8: %t38 = load ptr, ptr %t0 - %t39 = call i32 @lp_str_eq(ptr %t38, ptr @.str251) + %t39 = call i32 @lp_str_eq(ptr %t38, ptr @.str252) %t40 = icmp ne i32 %t39, 0 %t41 = zext i1 %t40 to i32 store i32 %t41, ptr %t1 @@ -19798,14 +19840,14 @@ then10: br label %ret ifend12: %t49 = load ptr, ptr %t0 - %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str252) + %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str253) %t51 = icmp ne i32 %t50, 0 %t52 = zext i1 %t51 to i32 store i32 %t52, ptr %t48 br i1 %t51, label %scend14, label %sc13 sc13: %t53 = load ptr, ptr %t0 - %t54 = call i32 @lp_str_eq(ptr %t53, ptr @.str253) + %t54 = call i32 @lp_str_eq(ptr %t53, ptr @.str254) %t55 = icmp ne i32 %t54, 0 %t56 = zext i1 %t55 to i32 store i32 %t56, ptr %t48 @@ -19818,7 +19860,7 @@ scend14: br i1 %t58, label %scend16, label %sc15 sc15: %t60 = load ptr, ptr %t0 - %t61 = call i32 @lp_str_eq(ptr %t60, ptr @.str254) + %t61 = call i32 @lp_str_eq(ptr %t60, ptr @.str255) %t62 = icmp ne i32 %t61, 0 %t63 = zext i1 %t62 to i32 store i32 %t63, ptr %t47 @@ -19831,7 +19873,7 @@ scend16: br i1 %t65, label %scend18, label %sc17 sc17: %t67 = load ptr, ptr %t0 - %t68 = call i32 @lp_str_eq(ptr %t67, ptr @.str255) + %t68 = call i32 @lp_str_eq(ptr %t67, ptr @.str256) %t69 = icmp ne i32 %t68, 0 %t70 = zext i1 %t69 to i32 store i32 %t70, ptr %t46 @@ -19844,7 +19886,7 @@ scend18: br i1 %t72, label %scend20, label %sc19 sc19: %t74 = load ptr, ptr %t0 - %t75 = call i32 @lp_str_eq(ptr %t74, ptr @.str256) + %t75 = call i32 @lp_str_eq(ptr %t74, ptr @.str257) %t76 = icmp ne i32 %t75, 0 %t77 = zext i1 %t76 to i32 store i32 %t77, ptr %t45 @@ -19857,7 +19899,7 @@ scend20: br i1 %t79, label %scend22, label %sc21 sc21: %t81 = load ptr, ptr %t0 - %t82 = call i32 @lp_str_eq(ptr %t81, ptr @.str257) + %t82 = call i32 @lp_str_eq(ptr %t81, ptr @.str258) %t83 = icmp ne i32 %t82, 0 %t84 = zext i1 %t83 to i32 store i32 %t84, ptr %t44 @@ -19871,14 +19913,14 @@ then23: br label %ret ifend25: %t92 = load ptr, ptr %t0 - %t93 = call i32 @lp_str_eq(ptr %t92, ptr @.str258) + %t93 = call i32 @lp_str_eq(ptr %t92, ptr @.str259) %t94 = icmp ne i32 %t93, 0 %t95 = zext i1 %t94 to i32 store i32 %t95, ptr %t91 br i1 %t94, label %scend27, label %sc26 sc26: %t96 = load ptr, ptr %t0 - %t97 = call i32 @lp_str_eq(ptr %t96, ptr @.str259) + %t97 = call i32 @lp_str_eq(ptr %t96, ptr @.str260) %t98 = icmp ne i32 %t97, 0 %t99 = zext i1 %t98 to i32 store i32 %t99, ptr %t91 @@ -19891,7 +19933,7 @@ scend27: br i1 %t101, label %scend29, label %sc28 sc28: %t103 = load ptr, ptr %t0 - %t104 = call i32 @lp_str_eq(ptr %t103, ptr @.str260) + %t104 = call i32 @lp_str_eq(ptr %t103, ptr @.str261) %t105 = icmp ne i32 %t104, 0 %t106 = zext i1 %t105 to i32 store i32 %t106, ptr %t90 @@ -19904,7 +19946,7 @@ scend29: br i1 %t108, label %scend31, label %sc30 sc30: %t110 = load ptr, ptr %t0 - %t111 = call i32 @lp_str_eq(ptr %t110, ptr @.str261) + %t111 = call i32 @lp_str_eq(ptr %t110, ptr @.str262) %t112 = icmp ne i32 %t111, 0 %t113 = zext i1 %t112 to i32 store i32 %t113, ptr %t89 @@ -19917,7 +19959,7 @@ scend31: br i1 %t115, label %scend33, label %sc32 sc32: %t117 = load ptr, ptr %t0 - %t118 = call i32 @lp_str_eq(ptr %t117, ptr @.str262) + %t118 = call i32 @lp_str_eq(ptr %t117, ptr @.str263) %t119 = icmp ne i32 %t118, 0 %t120 = zext i1 %t119 to i32 store i32 %t120, ptr %t88 @@ -19930,7 +19972,7 @@ scend33: br i1 %t122, label %scend35, label %sc34 sc34: %t124 = load ptr, ptr %t0 - %t125 = call i32 @lp_str_eq(ptr %t124, ptr @.str263) + %t125 = call i32 @lp_str_eq(ptr %t124, ptr @.str264) %t126 = icmp ne i32 %t125, 0 %t127 = zext i1 %t126 to i32 store i32 %t127, ptr %t87 @@ -19944,7 +19986,7 @@ then36: br label %ret ifend38: %t130 = load ptr, ptr %t0 - %t131 = call i32 @lp_str_eq(ptr %t130, ptr @.str264) + %t131 = call i32 @lp_str_eq(ptr %t130, ptr @.str265) %t132 = icmp ne i32 %t131, 0 br i1 %t132, label %then39, label %ifend41 then39: @@ -19952,14 +19994,14 @@ then39: br label %ret ifend41: %t139 = load ptr, ptr %t0 - %t140 = call i32 @lp_str_eq(ptr %t139, ptr @.str265) + %t140 = call i32 @lp_str_eq(ptr %t139, ptr @.str266) %t141 = icmp ne i32 %t140, 0 %t142 = zext i1 %t141 to i32 store i32 %t142, ptr %t138 br i1 %t141, label %scend43, label %sc42 sc42: %t143 = load ptr, ptr %t0 - %t144 = call i32 @lp_str_eq(ptr %t143, ptr @.str266) + %t144 = call i32 @lp_str_eq(ptr %t143, ptr @.str267) %t145 = icmp ne i32 %t144, 0 %t146 = zext i1 %t145 to i32 store i32 %t146, ptr %t138 @@ -19972,7 +20014,7 @@ scend43: br i1 %t148, label %scend45, label %sc44 sc44: %t150 = load ptr, ptr %t0 - %t151 = call i32 @lp_str_eq(ptr %t150, ptr @.str267) + %t151 = call i32 @lp_str_eq(ptr %t150, ptr @.str268) %t152 = icmp ne i32 %t151, 0 %t153 = zext i1 %t152 to i32 store i32 %t153, ptr %t137 @@ -19985,7 +20027,7 @@ scend45: br i1 %t155, label %scend47, label %sc46 sc46: %t157 = load ptr, ptr %t0 - %t158 = call i32 @lp_str_eq(ptr %t157, ptr @.str268) + %t158 = call i32 @lp_str_eq(ptr %t157, ptr @.str269) %t159 = icmp ne i32 %t158, 0 %t160 = zext i1 %t159 to i32 store i32 %t160, ptr %t136 @@ -19998,7 +20040,7 @@ scend47: br i1 %t162, label %scend49, label %sc48 sc48: %t164 = load ptr, ptr %t0 - %t165 = call i32 @lp_str_eq(ptr %t164, ptr @.str269) + %t165 = call i32 @lp_str_eq(ptr %t164, ptr @.str270) %t166 = icmp ne i32 %t165, 0 %t167 = zext i1 %t166 to i32 store i32 %t167, ptr %t135 @@ -20011,7 +20053,7 @@ scend49: br i1 %t169, label %scend51, label %sc50 sc50: %t171 = load ptr, ptr %t0 - %t172 = call i32 @lp_str_eq(ptr %t171, ptr @.str270) + %t172 = call i32 @lp_str_eq(ptr %t171, ptr @.str271) %t173 = icmp ne i32 %t172, 0 %t174 = zext i1 %t173 to i32 store i32 %t174, ptr %t134 @@ -20024,7 +20066,7 @@ scend51: br i1 %t176, label %scend53, label %sc52 sc52: %t178 = load ptr, ptr %t0 - %t179 = call i32 @lp_str_eq(ptr %t178, ptr @.str271) + %t179 = call i32 @lp_str_eq(ptr %t178, ptr @.str272) %t180 = icmp ne i32 %t179, 0 %t181 = zext i1 %t180 to i32 store i32 %t181, ptr %t133 @@ -20038,14 +20080,14 @@ then54: br label %ret ifend56: %t189 = load ptr, ptr %t0 - %t190 = call i32 @lp_str_eq(ptr %t189, ptr @.str272) + %t190 = call i32 @lp_str_eq(ptr %t189, ptr @.str273) %t191 = icmp ne i32 %t190, 0 %t192 = zext i1 %t191 to i32 store i32 %t192, ptr %t188 br i1 %t191, label %scend58, label %sc57 sc57: %t193 = load ptr, ptr %t0 - %t194 = call i32 @lp_str_eq(ptr %t193, ptr @.str273) + %t194 = call i32 @lp_str_eq(ptr %t193, ptr @.str274) %t195 = icmp ne i32 %t194, 0 %t196 = zext i1 %t195 to i32 store i32 %t196, ptr %t188 @@ -20058,7 +20100,7 @@ scend58: br i1 %t198, label %scend60, label %sc59 sc59: %t200 = load ptr, ptr %t0 - %t201 = call i32 @lp_str_eq(ptr %t200, ptr @.str274) + %t201 = call i32 @lp_str_eq(ptr %t200, ptr @.str275) %t202 = icmp ne i32 %t201, 0 %t203 = zext i1 %t202 to i32 store i32 %t203, ptr %t187 @@ -20071,7 +20113,7 @@ scend60: br i1 %t205, label %scend62, label %sc61 sc61: %t207 = load ptr, ptr %t0 - %t208 = call i32 @lp_str_eq(ptr %t207, ptr @.str275) + %t208 = call i32 @lp_str_eq(ptr %t207, ptr @.str276) %t209 = icmp ne i32 %t208, 0 %t210 = zext i1 %t209 to i32 store i32 %t210, ptr %t186 @@ -20084,7 +20126,7 @@ scend62: br i1 %t212, label %scend64, label %sc63 sc63: %t214 = load ptr, ptr %t0 - %t215 = call i32 @lp_str_eq(ptr %t214, ptr @.str276) + %t215 = call i32 @lp_str_eq(ptr %t214, ptr @.str277) %t216 = icmp ne i32 %t215, 0 %t217 = zext i1 %t216 to i32 store i32 %t217, ptr %t185 @@ -20097,7 +20139,7 @@ scend64: br i1 %t219, label %scend66, label %sc65 sc65: %t221 = load ptr, ptr %t0 - %t222 = call i32 @lp_str_eq(ptr %t221, ptr @.str277) + %t222 = call i32 @lp_str_eq(ptr %t221, ptr @.str278) %t223 = icmp ne i32 %t222, 0 %t224 = zext i1 %t223 to i32 store i32 %t224, ptr %t184 @@ -20111,14 +20153,14 @@ then67: br label %ret ifend69: %t232 = load ptr, ptr %t0 - %t233 = call i32 @lp_str_eq(ptr %t232, ptr @.str278) + %t233 = call i32 @lp_str_eq(ptr %t232, ptr @.str279) %t234 = icmp ne i32 %t233, 0 %t235 = zext i1 %t234 to i32 store i32 %t235, ptr %t231 br i1 %t234, label %scend71, label %sc70 sc70: %t236 = load ptr, ptr %t0 - %t237 = call i32 @lp_str_eq(ptr %t236, ptr @.str279) + %t237 = call i32 @lp_str_eq(ptr %t236, ptr @.str280) %t238 = icmp ne i32 %t237, 0 %t239 = zext i1 %t238 to i32 store i32 %t239, ptr %t231 @@ -20131,7 +20173,7 @@ scend71: br i1 %t241, label %scend73, label %sc72 sc72: %t243 = load ptr, ptr %t0 - %t244 = call i32 @lp_str_eq(ptr %t243, ptr @.str280) + %t244 = call i32 @lp_str_eq(ptr %t243, ptr @.str281) %t245 = icmp ne i32 %t244, 0 %t246 = zext i1 %t245 to i32 store i32 %t246, ptr %t230 @@ -20144,7 +20186,7 @@ scend73: br i1 %t248, label %scend75, label %sc74 sc74: %t250 = load ptr, ptr %t0 - %t251 = call i32 @lp_str_eq(ptr %t250, ptr @.str281) + %t251 = call i32 @lp_str_eq(ptr %t250, ptr @.str282) %t252 = icmp ne i32 %t251, 0 %t253 = zext i1 %t252 to i32 store i32 %t253, ptr %t229 @@ -20157,7 +20199,7 @@ scend75: br i1 %t255, label %scend77, label %sc76 sc76: %t257 = load ptr, ptr %t0 - %t258 = call i32 @lp_str_eq(ptr %t257, ptr @.str282) + %t258 = call i32 @lp_str_eq(ptr %t257, ptr @.str283) %t259 = icmp ne i32 %t258, 0 %t260 = zext i1 %t259 to i32 store i32 %t260, ptr %t228 @@ -20170,7 +20212,7 @@ scend77: br i1 %t262, label %scend79, label %sc78 sc78: %t264 = load ptr, ptr %t0 - %t265 = call i32 @lp_str_eq(ptr %t264, ptr @.str283) + %t265 = call i32 @lp_str_eq(ptr %t264, ptr @.str284) %t266 = icmp ne i32 %t265, 0 %t267 = zext i1 %t266 to i32 store i32 %t267, ptr %t227 @@ -20204,7 +20246,7 @@ entry: %t5 = getelementptr inbounds %Cmp_Node, ptr %t4, i32 0, i32 1 %t6 = call ptr @fn_eat_id() store ptr %t6, ptr %t5 - call void @fn_eat_op(ptr @.str284) + call void @fn_eat_op(ptr @.str285) %t7 = load ptr, ptr %t3 %t8 = getelementptr inbounds %Cmp_Node, ptr %t7, i32 0, i32 1 %t9 = load ptr, ptr %t8 @@ -20215,14 +20257,14 @@ then0: %t12 = load ptr, ptr %t3 %t13 = getelementptr inbounds %Cmp_Node, ptr %t12, i32 0, i32 1 %t14 = load ptr, ptr %t13 - %t15 = call ptr @lp_str_concat(ptr @.str285, ptr %t14) - %t16 = call ptr @lp_str_concat(ptr %t15, ptr @.str286) + %t15 = call ptr @lp_str_concat(ptr @.str286, ptr %t14) + %t16 = call ptr @lp_str_concat(ptr %t15, ptr @.str287) call void @fn_perr(ptr %t16) br label %ifend2 ifend2: br label %wcond3 wcond3: - %t17 = call i32 @fn_is_op(ptr @.str287) + %t17 = call i32 @fn_is_op(ptr @.str288) %t18 = icmp eq i32 %t17, 0 %t19 = zext i1 %t18 to i32 %t20 = icmp ne i32 %t19, 0 @@ -20234,7 +20276,7 @@ wbody4: %t24 = getelementptr inbounds %Cmp_Node, ptr %t23, i32 0, i32 1 %t25 = call ptr @fn_eat_id() store ptr %t25, ptr %t24 - call void @fn_eat_op(ptr @.str288) + call void @fn_eat_op(ptr @.str289) %t26 = load ptr, ptr %t22 %t27 = getelementptr inbounds %Cmp_Node, ptr %t26, i32 0, i32 3 %t28 = call ptr @fn_ptype() @@ -20269,7 +20311,7 @@ put7: store ptr %t32, ptr %t49 %t50 = add i32 %t36, 1 store i32 %t50, ptr %t33 - %t51 = call i32 @fn_is_op(ptr @.str289) + %t51 = call i32 @fn_is_op(ptr @.str290) %t52 = icmp ne i32 %t51, 0 br i1 %t52, label %then8, label %ifend10 then8: @@ -20280,11 +20322,11 @@ then8: ifend10: br label %wcond3 wend5: - call void @fn_eat_op(ptr @.str290) + call void @fn_eat_op(ptr @.str291) %t55 = load ptr, ptr %t3 %t56 = getelementptr inbounds %Cmp_Node, ptr %t55, i32 0, i32 3 - store ptr @.str291, ptr %t56 - %t57 = call i32 @fn_is_op(ptr @.str292) + store ptr @.str292, ptr %t56 + %t57 = call i32 @fn_is_op(ptr @.str293) %t58 = icmp ne i32 %t57, 0 br i1 %t58, label %then11, label %ifend13 then11: @@ -20531,7 +20573,7 @@ entry: store i32 %t1, ptr @g_pi %t2 = call ptr @fn_eat_id() store ptr %t2, ptr %t3 - call void @fn_eat_op(ptr @.str293) + call void @fn_eat_op(ptr @.str294) call void @fn_skipnl() %t4 = getelementptr %LSlice, ptr null, i32 1 %t5 = ptrtoint ptr %t4 to i64 @@ -20565,14 +20607,14 @@ entry: store ptr %t20, ptr %t24 br label %wcond0 wcond0: - %t25 = call i32 @fn_is_op(ptr @.str294) + %t25 = call i32 @fn_is_op(ptr @.str295) %t26 = icmp eq i32 %t25, 0 %t27 = zext i1 %t26 to i32 %t28 = icmp ne i32 %t27, 0 br i1 %t28, label %wbody1, label %wend2 wbody1: store i32 1, ptr %t29 - %t30 = call i32 @fn_is_id(ptr @.str295) + %t30 = call i32 @fn_is_id(ptr @.str296) %t31 = icmp ne i32 %t30, 0 br i1 %t31, label %then3, label %else4 then3: @@ -20581,7 +20623,7 @@ then3: store i32 %t33, ptr @g_pi br label %ifend5 else4: - %t34 = call i32 @fn_is_id(ptr @.str296) + %t34 = call i32 @fn_is_id(ptr @.str297) %t35 = icmp ne i32 %t34, 0 br i1 %t35, label %then6, label %ifend8 then6: @@ -20593,13 +20635,13 @@ then6: ifend8: br label %ifend5 ifend5: - %t38 = call i32 @fn_is_id(ptr @.str297) + %t38 = call i32 @fn_is_id(ptr @.str298) %t39 = icmp eq i32 %t38, 0 %t40 = zext i1 %t39 to i32 %t41 = icmp ne i32 %t40, 0 br i1 %t41, label %then9, label %ifend11 then9: - call void @fn_perr(ptr @.str298) + call void @fn_perr(ptr @.str299) br label %ifend11 ifend11: %t42 = call ptr @fn_parse_fn() @@ -20693,10 +20735,10 @@ put17: call void @fn_skipnl() br label %wcond0 wend2: - call void @fn_eat_op(ptr @.str299) + call void @fn_eat_op(ptr @.str300) %t106 = load ptr, ptr %t3 %t107 = call ptr @fn_ns_lower(ptr %t106) - %t108 = call ptr @lp_str_concat(ptr %t107, ptr @.str300) + %t108 = call ptr @lp_str_concat(ptr %t107, ptr @.str301) store ptr %t108, ptr %t109 store i32 0, ptr %t110 br label %wcond18 @@ -20939,7 +20981,7 @@ wend2: %t26 = icmp ne i32 %t25, 0 br i1 %t26, label %then6, label %ifend8 then6: - store ptr @.str301, ptr %retval + store ptr @.str302, ptr %retval br label %ret ifend8: %t27 = load ptr, ptr %t0 @@ -20989,7 +21031,7 @@ entry: %t1 = alloca ptr %t12 = alloca ptr %t30 = alloca i32 - %t0 = call ptr @getenv(ptr @.str302) + %t0 = call ptr @getenv(ptr @.str303) store ptr %t0, ptr %t1 %t2 = load ptr, ptr %t1 %t3 = icmp ne ptr %t2, null @@ -21031,7 +21073,7 @@ ifend5: %t29 = icmp ne i32 %t28, 0 br i1 %t29, label %then6, label %ifend8 then6: - store ptr @.str303, ptr %retval + store ptr @.str304, ptr %retval br label %ret ifend8: %t31 = load ptr, ptr %t12 @@ -21053,7 +21095,7 @@ sc9: %t44 = call i64 @strlen(ptr %t43) %t45 = trunc i64 %t44 to i32 %t46 = call ptr @lp_str_slice(ptr %t38, i32 %t42, i32 %t45) - %t47 = call i32 @lp_str_eq(ptr %t46, ptr @.str304) + %t47 = call i32 @lp_str_eq(ptr %t46, ptr @.str305) %t48 = icmp ne i32 %t47, 0 %t49 = zext i1 %t48 to i32 store i32 %t49, ptr %t30 @@ -21092,7 +21134,7 @@ entry: %t46 = alloca ptr %t51 = alloca ptr store ptr %arg_name, ptr %t0 - %t1 = call ptr @getenv(ptr @.str305) + %t1 = call ptr @getenv(ptr @.str306) store ptr %t1, ptr %t2 %t3 = load ptr, ptr %t2 %t4 = icmp eq ptr %t3, null @@ -21100,7 +21142,7 @@ entry: %t6 = icmp ne i32 %t5, 0 br i1 %t6, label %then0, label %ifend2 then0: - store ptr @.str306, ptr %retval + store ptr @.str307, ptr %retval br label %ret ifend2: %t7 = load ptr, ptr %t2 @@ -21159,7 +21201,7 @@ then11: %t47 = load ptr, ptr %t46 %t48 = load ptr, ptr %t0 %t49 = call ptr @lp_str_concat(ptr %t47, ptr %t48) - %t50 = call ptr @fopen(ptr %t49, ptr @.str307) + %t50 = call ptr @fopen(ptr %t49, ptr @.str308) store ptr %t50, ptr %t51 %t52 = load ptr, ptr %t51 %t53 = icmp ne ptr %t52, null @@ -21185,7 +21227,7 @@ ifend10: store i32 %t61, ptr %t12 br label %wcond3 wend5: - store ptr @.str308, ptr %retval + store ptr @.str309, ptr %retval br label %ret ret: %t62 = load ptr, ptr %retval @@ -21205,8 +21247,8 @@ then0: ifend2: store i32 1, ptr @g_g_warned_draw_sprite %t3 = load ptr, ptr %t0 - %t4 = call ptr @lp_str_concat(ptr @.str309, ptr %t3) - %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str310) + %t4 = call ptr @lp_str_concat(ptr @.str310, ptr %t3) + %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str311) store ptr %t5, ptr %t6 %t7 = load ptr, ptr @__stderrp %t8 = load ptr, ptr %t6 @@ -21564,7 +21606,7 @@ entry: store ptr null, ptr %t19 br label %wcond0 wcond0: - %t20 = call i32 @fn_is_op(ptr @.str311) + %t20 = call i32 @fn_is_op(ptr @.str312) %t21 = icmp ne i32 %t20, 0 br i1 %t21, label %wbody1, label %wend2 wbody1: @@ -21574,7 +21616,7 @@ wbody1: %t24 = call ptr @fn_eat_id() store ptr %t24, ptr %t25 %t26 = load ptr, ptr %t25 - %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str312) + %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str313) %t28 = icmp ne i32 %t27, 0 br i1 %t28, label %then3, label %else4 then3: @@ -21582,7 +21624,7 @@ then3: br label %ifend5 else4: %t29 = load ptr, ptr %t25 - %t30 = call i32 @lp_str_eq(ptr %t29, ptr @.str313) + %t30 = call i32 @lp_str_eq(ptr %t29, ptr @.str314) %t31 = icmp ne i32 %t30, 0 br i1 %t31, label %then6, label %else7 then6: @@ -21590,18 +21632,18 @@ then6: br label %ifend8 else7: %t32 = load ptr, ptr %t25 - %t33 = call i32 @lp_str_eq(ptr %t32, ptr @.str314) + %t33 = call i32 @lp_str_eq(ptr %t32, ptr @.str315) %t34 = icmp ne i32 %t33, 0 br i1 %t34, label %then9, label %else10 then9: - call void @fn_eat_op(ptr @.str315) + call void @fn_eat_op(ptr @.str316) %t35 = call ptr @fn_eat_id() store ptr %t35, ptr %t9 - call void @fn_eat_op(ptr @.str316) + call void @fn_eat_op(ptr @.str317) br label %ifend11 else10: %t36 = load ptr, ptr %t25 - %t37 = call i32 @lp_str_eq(ptr %t36, ptr @.str317) + %t37 = call i32 @lp_str_eq(ptr %t36, ptr @.str318) %t38 = icmp ne i32 %t37, 0 br i1 %t38, label %then12, label %else13 then12: @@ -21610,25 +21652,25 @@ then12: br label %ifend14 else13: %t40 = load ptr, ptr %t25 - %t41 = call i32 @lp_str_eq(ptr %t40, ptr @.str318) + %t41 = call i32 @lp_str_eq(ptr %t40, ptr @.str319) %t42 = icmp ne i32 %t41, 0 br i1 %t42, label %then15, label %else16 then15: - call void @fn_eat_op(ptr @.str319) + call void @fn_eat_op(ptr @.str320) %t43 = call ptr @fn_eat_id() store ptr %t43, ptr %t2 - call void @fn_eat_op(ptr @.str320) + call void @fn_eat_op(ptr @.str321) br label %ifend17 else16: %t44 = load ptr, ptr %t25 - %t45 = call i32 @lp_str_eq(ptr %t44, ptr @.str321) + %t45 = call i32 @lp_str_eq(ptr %t44, ptr @.str322) %t46 = icmp ne i32 %t45, 0 br i1 %t46, label %then18, label %else19 then18: - call void @fn_eat_op(ptr @.str322) + call void @fn_eat_op(ptr @.str323) %t47 = call ptr @fn_eat_id() store ptr %t47, ptr %t3 - %t48 = call i32 @fn_is_op(ptr @.str323) + %t48 = call i32 @fn_is_op(ptr @.str324) %t49 = icmp ne i32 %t48, 0 br i1 %t49, label %then21, label %ifend23 then21: @@ -21636,76 +21678,76 @@ then21: %t51 = add i32 %t50, 1 store i32 %t51, ptr @g_pi %t52 = call ptr @fn_eat_id() - call void @fn_eat_op(ptr @.str324) + call void @fn_eat_op(ptr @.str325) %t53 = call ptr @fn_eat_id() store ptr %t53, ptr %t4 br label %ifend23 ifend23: - call void @fn_eat_op(ptr @.str325) + call void @fn_eat_op(ptr @.str326) br label %ifend20 else19: %t54 = load ptr, ptr %t25 - %t55 = call i32 @lp_str_eq(ptr %t54, ptr @.str326) + %t55 = call i32 @lp_str_eq(ptr %t54, ptr @.str327) %t56 = icmp ne i32 %t55, 0 br i1 %t56, label %then24, label %else25 then24: - call void @fn_eat_op(ptr @.str327) + call void @fn_eat_op(ptr @.str328) %t57 = call ptr @fn_eat_id() store ptr %t57, ptr %t5 - call void @fn_eat_op(ptr @.str328) + call void @fn_eat_op(ptr @.str329) br label %ifend26 else25: %t58 = load ptr, ptr %t25 - %t59 = call i32 @lp_str_eq(ptr %t58, ptr @.str329) + %t59 = call i32 @lp_str_eq(ptr %t58, ptr @.str330) %t60 = icmp ne i32 %t59, 0 br i1 %t60, label %then27, label %else28 then27: - call void @fn_eat_op(ptr @.str330) + call void @fn_eat_op(ptr @.str331) %t61 = call ptr @fn_eat_id() store ptr %t61, ptr %t6 - call void @fn_eat_op(ptr @.str331) + call void @fn_eat_op(ptr @.str332) br label %ifend29 else28: %t62 = load ptr, ptr %t25 - %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str332) + %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str333) %t64 = icmp ne i32 %t63, 0 br i1 %t64, label %then30, label %else31 then30: - call void @fn_eat_op(ptr @.str333) + call void @fn_eat_op(ptr @.str334) %t65 = call ptr @fn_eat_id() store ptr %t65, ptr %t7 - call void @fn_eat_op(ptr @.str334) + call void @fn_eat_op(ptr @.str335) br label %ifend32 else31: %t66 = load ptr, ptr %t25 - %t67 = call i32 @lp_str_eq(ptr %t66, ptr @.str335) + %t67 = call i32 @lp_str_eq(ptr %t66, ptr @.str336) %t68 = icmp ne i32 %t67, 0 br i1 %t68, label %then33, label %else34 then33: - call void @fn_eat_op(ptr @.str336) + call void @fn_eat_op(ptr @.str337) %t69 = call ptr @fn_eat_id() store ptr %t69, ptr %t8 - call void @fn_eat_op(ptr @.str337) + call void @fn_eat_op(ptr @.str338) br label %ifend35 else34: %t70 = load ptr, ptr %t25 - %t71 = call i32 @lp_str_eq(ptr %t70, ptr @.str338) + %t71 = call i32 @lp_str_eq(ptr %t70, ptr @.str339) %t72 = icmp ne i32 %t71, 0 br i1 %t72, label %then36, label %else37 then36: - store ptr @.str339, ptr %t11 + store ptr @.str340, ptr %t11 br label %ifend38 else37: %t73 = load ptr, ptr %t25 - %t74 = call i32 @lp_str_eq(ptr %t73, ptr @.str340) + %t74 = call i32 @lp_str_eq(ptr %t73, ptr @.str341) %t75 = icmp ne i32 %t74, 0 br i1 %t75, label %then39, label %else40 then39: - store ptr @.str341, ptr %t11 + store ptr @.str342, ptr %t11 br label %ifend41 else40: %t76 = load ptr, ptr %t25 - %t77 = call i32 @lp_str_eq(ptr %t76, ptr @.str342) + %t77 = call i32 @lp_str_eq(ptr %t76, ptr @.str343) %t78 = icmp ne i32 %t77, 0 br i1 %t78, label %then42, label %else43 then42: @@ -21713,7 +21755,7 @@ then42: br label %ifend44 else43: %t79 = load ptr, ptr %t25 - %t80 = call i32 @lp_str_eq(ptr %t79, ptr @.str343) + %t80 = call i32 @lp_str_eq(ptr %t79, ptr @.str344) %t81 = icmp ne i32 %t80, 0 br i1 %t81, label %then45, label %else46 then45: @@ -21721,44 +21763,44 @@ then45: br label %ifend47 else46: %t82 = load ptr, ptr %t25 - %t83 = call i32 @lp_str_eq(ptr %t82, ptr @.str344) + %t83 = call i32 @lp_str_eq(ptr %t82, ptr @.str345) %t84 = icmp ne i32 %t83, 0 br i1 %t84, label %then48, label %else49 then48: - store ptr @.str345, ptr %t14 + store ptr @.str346, ptr %t14 br label %ifend50 else49: %t85 = load ptr, ptr %t25 - %t86 = call i32 @lp_str_eq(ptr %t85, ptr @.str346) + %t86 = call i32 @lp_str_eq(ptr %t85, ptr @.str347) %t87 = icmp ne i32 %t86, 0 br i1 %t87, label %then51, label %else52 then51: - store ptr @.str347, ptr %t14 + store ptr @.str348, ptr %t14 br label %ifend53 else52: %t88 = load ptr, ptr %t25 - %t89 = call i32 @lp_str_eq(ptr %t88, ptr @.str348) + %t89 = call i32 @lp_str_eq(ptr %t88, ptr @.str349) %t90 = icmp ne i32 %t89, 0 br i1 %t90, label %then54, label %else55 then54: - store ptr @.str349, ptr %t15 + store ptr @.str350, ptr %t15 br label %ifend56 else55: %t91 = load ptr, ptr %t25 - %t92 = call i32 @lp_str_eq(ptr %t91, ptr @.str350) + %t92 = call i32 @lp_str_eq(ptr %t91, ptr @.str351) %t93 = icmp ne i32 %t92, 0 br i1 %t93, label %then57, label %else58 then57: - store ptr @.str351, ptr %t15 + store ptr @.str352, ptr %t15 br label %ifend59 else58: %t94 = load ptr, ptr %t25 - %t95 = call i32 @lp_str_eq(ptr %t94, ptr @.str352) + %t95 = call i32 @lp_str_eq(ptr %t94, ptr @.str353) %t96 = icmp ne i32 %t95, 0 br i1 %t96, label %then60, label %else61 then60: - store ptr @.str353, ptr %t16 - %t97 = call i32 @fn_is_op(ptr @.str354) + store ptr @.str354, ptr %t16 + %t97 = call i32 @fn_is_op(ptr @.str355) %t98 = icmp ne i32 %t97, 0 br i1 %t98, label %then63, label %ifend65 then63: @@ -21767,49 +21809,49 @@ then63: store i32 %t100, ptr @g_pi %t101 = call ptr @fn_eat_id() store ptr %t101, ptr %t16 - call void @fn_eat_op(ptr @.str355) + call void @fn_eat_op(ptr @.str356) br label %ifend65 ifend65: br label %ifend62 else61: %t102 = load ptr, ptr %t25 - %t103 = call i32 @lp_str_eq(ptr %t102, ptr @.str356) + %t103 = call i32 @lp_str_eq(ptr %t102, ptr @.str357) %t104 = icmp ne i32 %t103, 0 br i1 %t104, label %then66, label %else67 then66: - call void @fn_eat_op(ptr @.str357) + call void @fn_eat_op(ptr @.str358) %t105 = call ptr @fn_eat_id() store ptr %t105, ptr %t17 - call void @fn_eat_op(ptr @.str358) + call void @fn_eat_op(ptr @.str359) %t106 = call ptr @fn_eat_id() store ptr %t106, ptr %t18 - call void @fn_eat_op(ptr @.str359) + call void @fn_eat_op(ptr @.str360) br label %ifend68 else67: %t107 = load ptr, ptr %t25 - %t108 = call i32 @lp_str_eq(ptr %t107, ptr @.str360) + %t108 = call i32 @lp_str_eq(ptr %t107, ptr @.str361) %t109 = icmp ne i32 %t108, 0 br i1 %t109, label %then69, label %else70 then69: - call void @fn_eat_op(ptr @.str361) + call void @fn_eat_op(ptr @.str362) %t110 = call ptr @fn_eat_id() store ptr %t110, ptr %t19 - call void @fn_eat_op(ptr @.str362) + call void @fn_eat_op(ptr @.str363) br label %ifend71 else70: %t111 = load ptr, ptr %t25 - %t112 = call i32 @lp_str_eq(ptr %t111, ptr @.str363) + %t112 = call i32 @lp_str_eq(ptr %t111, ptr @.str364) %t113 = icmp ne i32 %t112, 0 br i1 %t113, label %then72, label %else73 then72: - call void @fn_eat_op(ptr @.str364) + call void @fn_eat_op(ptr @.str365) %t114 = call ptr @fn_expr() store ptr %t114, ptr @g_g_clear_color store i32 1, ptr @g_g_has_clear_color - call void @fn_eat_op(ptr @.str365) + call void @fn_eat_op(ptr @.str366) br label %ifend74 else73: - %t115 = call i32 @fn_is_op(ptr @.str366) + %t115 = call i32 @fn_is_op(ptr @.str367) %t116 = icmp ne i32 %t115, 0 br i1 %t116, label %then75, label %ifend77 then75: @@ -21819,7 +21861,7 @@ wcond78: %t118 = icmp ne i32 1, 0 br i1 %t118, label %wbody79, label %wend80 wbody79: - %t119 = call i32 @fn_is_op(ptr @.str367) + %t119 = call i32 @fn_is_op(ptr @.str368) %t120 = icmp ne i32 %t119, 0 br i1 %t120, label %then81, label %ifend83 then81: @@ -21828,7 +21870,7 @@ then81: store i32 %t122, ptr %t117 br label %ifend83 ifend83: - %t123 = call i32 @fn_is_op(ptr @.str368) + %t123 = call i32 @fn_is_op(ptr @.str369) %t124 = icmp ne i32 %t123, 0 br i1 %t124, label %then84, label %ifend86 then84: @@ -21899,7 +21941,7 @@ ifend5: call void @fn_skipnl() br label %wcond0 wend2: - %t133 = call i32 @fn_is_id(ptr @.str369) + %t133 = call i32 @fn_is_id(ptr @.str370) %t134 = icmp ne i32 %t133, 0 br i1 %t134, label %then90, label %ifend92 then90: @@ -21921,7 +21963,7 @@ then90: %t149 = icmp ne i32 %t148, 0 br i1 %t149, label %then93, label %ifend95 then93: - call void @fn_perr(ptr @.str370) + call void @fn_perr(ptr @.str371) br label %ifend95 ifend95: %t150 = load ptr, ptr %t143 @@ -21935,7 +21977,7 @@ ifend95: call void @fn_do_import(ptr %t156) br label %ret ifend92: - %t157 = call i32 @fn_is_id(ptr @.str371) + %t157 = call i32 @fn_is_id(ptr @.str372) %t158 = icmp ne i32 %t157, 0 br i1 %t158, label %then96, label %ifend98 then96: @@ -21969,7 +22011,7 @@ put100: store i32 %t178, ptr %t161 br label %ret ifend98: - %t179 = call i32 @fn_is_id(ptr @.str372) + %t179 = call i32 @fn_is_id(ptr @.str373) %t180 = icmp ne i32 %t179, 0 br i1 %t180, label %then101, label %ifend103 then101: @@ -21991,7 +22033,7 @@ ifend106: call void @fn_register_event(ptr %t190) br label %ret ifend103: - %t191 = call i32 @fn_is_id(ptr @.str373) + %t191 = call i32 @fn_is_id(ptr @.str374) %t192 = icmp ne i32 %t191, 0 br i1 %t192, label %then107, label %ifend109 then107: @@ -22062,7 +22104,7 @@ put117: store i32 %t237, ptr %t220 br label %ret ifend109: - %t238 = call i32 @fn_is_id(ptr @.str374) + %t238 = call i32 @fn_is_id(ptr @.str375) %t239 = icmp ne i32 %t238, 0 br i1 %t239, label %then118, label %ifend120 then118: @@ -22107,14 +22149,14 @@ put125: store i32 %t265, ptr %t248 br label %ret ifend120: - %t266 = call i32 @fn_is_id(ptr @.str375) + %t266 = call i32 @fn_is_id(ptr @.str376) %t267 = icmp ne i32 %t266, 0 br i1 %t267, label %then126, label %ifend128 then126: call void @fn_parse_scene() br label %ret ifend128: - %t268 = call i32 @fn_is_id(ptr @.str376) + %t268 = call i32 @fn_is_id(ptr @.str377) %t269 = icmp ne i32 %t268, 0 br i1 %t269, label %then129, label %ifend131 then129: @@ -22148,7 +22190,7 @@ put133: store i32 %t289, ptr %t272 br label %ret ifend131: - %t290 = call i32 @fn_is_id(ptr @.str377) + %t290 = call i32 @fn_is_id(ptr @.str378) %t291 = icmp ne i32 %t290, 0 br i1 %t291, label %then134, label %ifend136 then134: @@ -22161,7 +22203,7 @@ then134: br i1 %t297, label %then137, label %ifend139 then137: %t298 = load ptr, ptr %t14 - %t299 = call i32 @lp_str_eq(ptr %t298, ptr @.str378) + %t299 = call i32 @lp_str_eq(ptr %t298, ptr @.str379) %t300 = icmp ne i32 %t299, 0 br i1 %t300, label %then140, label %else141 then140: @@ -22206,8 +22248,8 @@ then146: br i1 %t322, label %then149, label %ifend151 then149: %t323 = load ptr, ptr %t2 - %t324 = call ptr @lp_str_concat(ptr @.str379, ptr %t323) - %t325 = call ptr @lp_str_concat(ptr %t324, ptr @.str380) + %t324 = call ptr @lp_str_concat(ptr @.str380, ptr %t323) + %t325 = call ptr @lp_str_concat(ptr %t324, ptr @.str381) call void @fn_ensure_event(ptr %t325, i32 0) br label %ifend151 ifend151: @@ -22230,8 +22272,8 @@ then152: br i1 %t336, label %then155, label %ifend157 then155: %t337 = load ptr, ptr %t3 - %t338 = call ptr @lp_str_concat(ptr @.str381, ptr %t337) - %t339 = call ptr @lp_str_concat(ptr %t338, ptr @.str382) + %t338 = call ptr @lp_str_concat(ptr @.str382, ptr %t337) + %t339 = call ptr @lp_str_concat(ptr %t338, ptr @.str383) call void @fn_ensure_event(ptr %t339, i32 1) br label %ifend157 ifend157: @@ -22253,8 +22295,8 @@ then158: br i1 %t349, label %then161, label %ifend163 then161: %t350 = load ptr, ptr %t5 - %t351 = call ptr @lp_str_concat(ptr @.str383, ptr %t350) - %t352 = call ptr @lp_str_concat(ptr %t351, ptr @.str384) + %t351 = call ptr @lp_str_concat(ptr @.str384, ptr %t350) + %t352 = call ptr @lp_str_concat(ptr %t351, ptr @.str385) call void @fn_ensure_event(ptr %t352, i32 0) br label %ifend163 ifend163: @@ -22276,8 +22318,8 @@ then164: br i1 %t362, label %then167, label %ifend169 then167: %t363 = load ptr, ptr %t6 - %t364 = call ptr @lp_str_concat(ptr @.str385, ptr %t363) - %t365 = call ptr @lp_str_concat(ptr %t364, ptr @.str386) + %t364 = call ptr @lp_str_concat(ptr @.str386, ptr %t363) + %t365 = call ptr @lp_str_concat(ptr %t364, ptr @.str387) call void @fn_ensure_event(ptr %t365, i32 0) br label %ifend169 ifend169: @@ -22299,8 +22341,8 @@ then170: br i1 %t375, label %then173, label %ifend175 then173: %t376 = load ptr, ptr %t7 - %t377 = call ptr @lp_str_concat(ptr @.str387, ptr %t376) - %t378 = call ptr @lp_str_concat(ptr %t377, ptr @.str388) + %t377 = call ptr @lp_str_concat(ptr @.str388, ptr %t376) + %t378 = call ptr @lp_str_concat(ptr %t377, ptr @.str389) call void @fn_ensure_event(ptr %t378, i32 0) br label %ifend175 ifend175: @@ -22322,8 +22364,8 @@ then176: br i1 %t388, label %then179, label %ifend181 then179: %t389 = load ptr, ptr %t8 - %t390 = call ptr @lp_str_concat(ptr @.str389, ptr %t389) - %t391 = call ptr @lp_str_concat(ptr %t390, ptr @.str390) + %t390 = call ptr @lp_str_concat(ptr @.str390, ptr %t389) + %t391 = call ptr @lp_str_concat(ptr %t390, ptr @.str391) call void @fn_ensure_event(ptr %t391, i32 0) br label %ifend181 ifend181: @@ -22344,14 +22386,14 @@ then182: br i1 %t400, label %then185, label %ifend187 then185: %t401 = load ptr, ptr %t11 - %t402 = call i32 @lp_str_eq(ptr %t401, ptr @.str391) + %t402 = call i32 @lp_str_eq(ptr %t401, ptr @.str392) %t403 = icmp ne i32 %t402, 0 br i1 %t403, label %then188, label %else189 then188: - call void @fn_ensure_event_empty(ptr @.str392) + call void @fn_ensure_event_empty(ptr @.str393) br label %ifend190 else189: - call void @fn_ensure_event_empty(ptr @.str393) + call void @fn_ensure_event_empty(ptr @.str394) br label %ifend190 ifend190: br label %ifend187 @@ -22438,7 +22480,7 @@ put197: store i32 %t459, ptr %t442 br label %ret ifend136: - %t460 = call i32 @fn_is_id(ptr @.str394) + %t460 = call i32 @fn_is_id(ptr @.str395) %t461 = icmp ne i32 %t460, 0 br i1 %t461, label %then198, label %ifend200 then198: @@ -22472,14 +22514,14 @@ put202: store i32 %t481, ptr %t464 br label %ret ifend200: - %t482 = call i32 @fn_is_id(ptr @.str395) + %t482 = call i32 @fn_is_id(ptr @.str396) %t483 = icmp ne i32 %t482, 0 br i1 %t483, label %then203, label %ifend205 then203: call void @fn_parse_namespace() br label %ret ifend205: - %t484 = call i32 @fn_is_id(ptr @.str396) + %t484 = call i32 @fn_is_id(ptr @.str397) %t485 = icmp ne i32 %t484, 0 br i1 %t485, label %then206, label %ifend208 then206: @@ -22513,7 +22555,7 @@ put210: store i32 %t505, ptr %t488 br label %ret ifend208: - %t506 = call i32 @fn_is_id(ptr @.str397) + %t506 = call i32 @fn_is_id(ptr @.str398) %t507 = icmp ne i32 %t506, 0 br i1 %t507, label %then211, label %ifend213 then211: @@ -22547,7 +22589,7 @@ put215: store i32 %t527, ptr %t510 br label %ret ifend213: - %t528 = call i32 @fn_is_id(ptr @.str398) + %t528 = call i32 @fn_is_id(ptr @.str399) %t529 = icmp ne i32 %t528, 0 br i1 %t529, label %then216, label %ifend218 then216: @@ -22762,7 +22804,7 @@ put242: store i32 %t672, ptr %t655 br label %ret ifend218: - %t673 = call i32 @fn_is_id(ptr @.str399) + %t673 = call i32 @fn_is_id(ptr @.str400) %t674 = icmp ne i32 %t673, 0 br i1 %t674, label %then243, label %ifend245 then243: @@ -22796,7 +22838,7 @@ put247: store i32 %t694, ptr %t677 br label %ret ifend245: - %t695 = call i32 @fn_is_id(ptr @.str400) + %t695 = call i32 @fn_is_id(ptr @.str401) %t696 = icmp ne i32 %t695, 0 br i1 %t696, label %then248, label %ifend250 then248: @@ -22830,7 +22872,7 @@ put252: store i32 %t716, ptr %t699 br label %ret ifend250: - %t717 = call i32 @fn_is_id(ptr @.str401) + %t717 = call i32 @fn_is_id(ptr @.str402) %t718 = icmp ne i32 %t717, 0 br i1 %t718, label %then253, label %ifend255 then253: @@ -22865,7 +22907,7 @@ put257: br label %ret ifend255: %t739 = call ptr @fn_tok_desc() - %t740 = call ptr @lp_str_concat(ptr @.str402, ptr %t739) + %t740 = call ptr @lp_str_concat(ptr @.str403, ptr %t739) call void @fn_perr(ptr %t740) br label %ret ret: @@ -22902,7 +22944,7 @@ entry: %t21 = icmp ne i32 %t20, 0 br i1 %t21, label %then0, label %ifend2 then0: - call void @fn_perr(ptr @.str403) + call void @fn_perr(ptr @.str404) br label %ifend2 ifend2: %t22 = call ptr @fn_node(i32 51) @@ -22943,7 +22985,7 @@ entry: %t0 = alloca ptr store ptr %arg_rel, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call i32 @fn_str_starts(ptr %t1, ptr @.str404) + %t2 = call i32 @fn_str_starts(ptr %t1, ptr @.str405) store i32 %t2, ptr %retval br label %ret ret: @@ -23046,7 +23088,7 @@ entry: br i1 %t16, label %then0, label %ifend2 then0: %t17 = load ptr, ptr %t7 - %t18 = call ptr @lp_str_concat(ptr @.str405, ptr %t17) + %t18 = call ptr @lp_str_concat(ptr @.str406, ptr %t17) call void @fn_perr(ptr %t18) br label %ifend2 ifend2: @@ -23170,7 +23212,7 @@ sc15: %t108 = sub i32 %t107, 6 %t109 = load i32, ptr %t99 %t110 = call ptr @lp_str_slice(ptr %t106, i32 %t108, i32 %t109) - %t111 = call i32 @lp_str_eq(ptr %t110, ptr @.str406) + %t111 = call i32 @lp_str_eq(ptr %t110, ptr @.str407) %t112 = icmp ne i32 %t111, 0 %t113 = zext i1 %t112 to i32 store i32 %t113, ptr %t100 @@ -23181,7 +23223,7 @@ scend16: br i1 %t115, label %then17, label %ifend19 then17: %t116 = load ptr, ptr %t7 - %t117 = call ptr @lp_str_concat(ptr %t116, ptr @.str407) + %t117 = call ptr @lp_str_concat(ptr %t116, ptr @.str408) %t118 = load ptr, ptr %t95 %t119 = call ptr @lp_str_concat(ptr %t117, ptr %t118) call void @fn_do_import(ptr %t119) @@ -23241,7 +23283,7 @@ sc0: %t15 = call i64 @strlen(ptr %t14) %t16 = trunc i64 %t15 to i32 %t17 = call ptr @lp_str_slice(ptr %t9, i32 %t13, i32 %t16) - %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str408) + %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str409) %t19 = icmp ne i32 %t18, 0 %t20 = zext i1 %t19 to i32 store i32 %t20, ptr %t1 @@ -23342,7 +23384,7 @@ scend16: %t83 = icmp ne i32 %t82, 0 br i1 %t83, label %then17, label %ifend19 then17: - %t84 = call ptr @fn_getenv_or(ptr @.str409, ptr @.str410) + %t84 = call ptr @fn_getenv_or(ptr @.str410, ptr @.str411) %t85 = call ptr @fn_ensure_slash(ptr %t84) %t86 = load ptr, ptr %t0 %t87 = call ptr @lp_str_concat(ptr %t85, ptr %t86) @@ -23388,7 +23430,7 @@ scend24: br i1 %t113, label %then25, label %ifend27 then25: %t114 = call ptr @fn_ludic_home() - %t115 = call ptr @lp_str_concat(ptr %t114, ptr @.str411) + %t115 = call ptr @lp_str_concat(ptr %t114, ptr @.str412) %t116 = load ptr, ptr %t0 %t117 = call ptr @lp_str_concat(ptr %t115, ptr %t116) store ptr %t117, ptr %t118 @@ -23451,11 +23493,11 @@ put35: br i1 %t154, label %then36, label %ifend38 then36: %t155 = load ptr, ptr %t27 - %t156 = call ptr @lp_str_concat(ptr @.str412, ptr %t155) + %t156 = call ptr @lp_str_concat(ptr @.str413, ptr %t155) call void @fn_perr(ptr %t156) br label %ifend38 ifend38: - store ptr @.str413, ptr %t157 + store ptr @.str414, ptr %t157 %t158 = load ptr, ptr %t27 %t159 = call i64 @strlen(ptr %t158) %t160 = trunc i64 %t159 to i32 @@ -23550,16 +23592,16 @@ ret: define void @fn_maybe_splice_runtime() { entry: %t1 = alloca ptr - %t66 = alloca i32 - %t95 = alloca i32 + %t69 = alloca i32 + %t98 = alloca i32 %t0 = load ptr, ptr @g_cur_dir store ptr %t0, ptr %t1 %t2 = call i32 @fn_has_ecs() %t3 = icmp ne i32 %t2, 0 br i1 %t3, label %then0, label %ifend2 then0: - store ptr @.str414, ptr @g_cur_dir - call void @fn_do_import(ptr @.str415) + store ptr @.str415, ptr @g_cur_dir + call void @fn_do_import(ptr @.str416) %t4 = load ptr, ptr %t1 store ptr %t4, ptr @g_cur_dir br label %ifend2 @@ -23568,9 +23610,9 @@ ifend2: %t6 = icmp ne i32 %t5, 0 br i1 %t6, label %then3, label %ifend5 then3: - store ptr @.str416, ptr @g_cur_dir - call void @fn_do_import(ptr @.str417) + store ptr @.str417, ptr @g_cur_dir call void @fn_do_import(ptr @.str418) + call void @fn_do_import(ptr @.str419) %t7 = load ptr, ptr %t1 store ptr %t7, ptr @g_cur_dir br label %ifend5 @@ -23579,8 +23621,8 @@ ifend5: %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then6, label %ifend8 then6: - store ptr @.str419, ptr @g_cur_dir - call void @fn_do_import(ptr @.str420) + store ptr @.str420, ptr @g_cur_dir + call void @fn_do_import(ptr @.str421) %t10 = load ptr, ptr %t1 store ptr %t10, ptr @g_cur_dir br label %ifend8 @@ -23589,8 +23631,8 @@ ifend8: %t12 = icmp ne i32 %t11, 0 br i1 %t12, label %then9, label %ifend11 then9: - store ptr @.str421, ptr @g_cur_dir - call void @fn_do_import(ptr @.str422) + store ptr @.str422, ptr @g_cur_dir + call void @fn_do_import(ptr @.str423) %t13 = load ptr, ptr %t1 store ptr %t13, ptr @g_cur_dir br label %ifend11 @@ -23599,8 +23641,8 @@ ifend11: %t15 = icmp ne i32 %t14, 0 br i1 %t15, label %then12, label %ifend14 then12: - store ptr @.str423, ptr @g_cur_dir - call void @fn_do_import(ptr @.str424) + store ptr @.str424, ptr @g_cur_dir + call void @fn_do_import(ptr @.str425) %t16 = load ptr, ptr %t1 store ptr %t16, ptr @g_cur_dir br label %ifend14 @@ -23609,8 +23651,8 @@ ifend14: %t18 = icmp ne i32 %t17, 0 br i1 %t18, label %then15, label %ifend17 then15: - store ptr @.str425, ptr @g_cur_dir - call void @fn_do_import(ptr @.str426) + store ptr @.str426, ptr @g_cur_dir + call void @fn_do_import(ptr @.str427) %t19 = load ptr, ptr %t1 store ptr %t19, ptr @g_cur_dir br label %ifend17 @@ -23619,8 +23661,8 @@ ifend17: %t21 = icmp ne i32 %t20, 0 br i1 %t21, label %then18, label %ifend20 then18: - store ptr @.str427, ptr @g_cur_dir - call void @fn_do_import(ptr @.str428) + store ptr @.str428, ptr @g_cur_dir + call void @fn_do_import(ptr @.str429) %t22 = load ptr, ptr %t1 store ptr %t22, ptr @g_cur_dir br label %ifend20 @@ -23629,8 +23671,8 @@ ifend20: %t24 = icmp ne i32 %t23, 0 br i1 %t24, label %then21, label %ifend23 then21: - store ptr @.str429, ptr @g_cur_dir - call void @fn_do_import(ptr @.str430) + store ptr @.str430, ptr @g_cur_dir + call void @fn_do_import(ptr @.str431) %t25 = load ptr, ptr %t1 store ptr %t25, ptr @g_cur_dir br label %ifend23 @@ -23639,8 +23681,8 @@ ifend23: %t27 = icmp ne i32 %t26, 0 br i1 %t27, label %then24, label %ifend26 then24: - store ptr @.str431, ptr @g_cur_dir - call void @fn_do_import(ptr @.str432) + store ptr @.str432, ptr @g_cur_dir + call void @fn_do_import(ptr @.str433) %t28 = load ptr, ptr %t1 store ptr %t28, ptr @g_cur_dir br label %ifend26 @@ -23649,8 +23691,8 @@ ifend26: %t30 = icmp ne i32 %t29, 0 br i1 %t30, label %then27, label %ifend29 then27: - store ptr @.str433, ptr @g_cur_dir - call void @fn_do_import(ptr @.str434) + store ptr @.str434, ptr @g_cur_dir + call void @fn_do_import(ptr @.str435) %t31 = load ptr, ptr %t1 store ptr %t31, ptr @g_cur_dir br label %ifend29 @@ -23659,10 +23701,10 @@ ifend29: %t33 = icmp ne i32 %t32, 0 br i1 %t33, label %then30, label %ifend32 then30: - store ptr @.str435, ptr @g_cur_dir - call void @fn_do_import(ptr @.str436) + store ptr @.str436, ptr @g_cur_dir call void @fn_do_import(ptr @.str437) call void @fn_do_import(ptr @.str438) + call void @fn_do_import(ptr @.str439) %t34 = load ptr, ptr %t1 store ptr %t34, ptr @g_cur_dir br label %ifend32 @@ -23671,9 +23713,9 @@ ifend32: %t36 = icmp ne i32 %t35, 0 br i1 %t36, label %then33, label %ifend35 then33: - store ptr @.str439, ptr @g_cur_dir - call void @fn_do_import(ptr @.str440) + store ptr @.str440, ptr @g_cur_dir call void @fn_do_import(ptr @.str441) + call void @fn_do_import(ptr @.str442) %t37 = load ptr, ptr %t1 store ptr %t37, ptr @g_cur_dir br label %ifend35 @@ -23682,10 +23724,10 @@ ifend35: %t39 = icmp ne i32 %t38, 0 br i1 %t39, label %then36, label %ifend38 then36: - store ptr @.str442, ptr @g_cur_dir - call void @fn_do_import(ptr @.str443) + store ptr @.str443, ptr @g_cur_dir call void @fn_do_import(ptr @.str444) call void @fn_do_import(ptr @.str445) + call void @fn_do_import(ptr @.str446) %t40 = load ptr, ptr %t1 store ptr %t40, ptr @g_cur_dir br label %ifend38 @@ -23694,19 +23736,19 @@ ifend38: %t42 = icmp ne i32 %t41, 0 br i1 %t42, label %then39, label %ifend41 then39: - store ptr @.str446, ptr @g_cur_dir - call void @fn_do_import(ptr @.str447) + store ptr @.str447, ptr @g_cur_dir call void @fn_do_import(ptr @.str448) call void @fn_do_import(ptr @.str449) call void @fn_do_import(ptr @.str450) call void @fn_do_import(ptr @.str451) call void @fn_do_import(ptr @.str452) call void @fn_do_import(ptr @.str453) + call void @fn_do_import(ptr @.str454) %t43 = call i32 @fn_has_ecs() %t44 = icmp ne i32 %t43, 0 br i1 %t44, label %then42, label %ifend44 then42: - call void @fn_do_import(ptr @.str454) + call void @fn_do_import(ptr @.str455) br label %ifend44 ifend44: %t45 = load ptr, ptr %t1 @@ -23717,8 +23759,8 @@ ifend41: %t47 = icmp ne i32 %t46, 0 br i1 %t47, label %then45, label %ifend47 then45: - store ptr @.str455, ptr @g_cur_dir - call void @fn_do_import(ptr @.str456) + store ptr @.str456, ptr @g_cur_dir + call void @fn_do_import(ptr @.str457) %t48 = load ptr, ptr %t1 store ptr %t48, ptr @g_cur_dir br label %ifend47 @@ -23727,9 +23769,9 @@ ifend47: %t50 = icmp ne i32 %t49, 0 br i1 %t50, label %then48, label %ifend50 then48: - store ptr @.str457, ptr @g_cur_dir - call void @fn_do_import(ptr @.str458) + store ptr @.str458, ptr @g_cur_dir call void @fn_do_import(ptr @.str459) + call void @fn_do_import(ptr @.str460) %t51 = load ptr, ptr %t1 store ptr %t51, ptr @g_cur_dir br label %ifend50 @@ -23738,9 +23780,9 @@ ifend50: %t53 = icmp ne i32 %t52, 0 br i1 %t53, label %then51, label %ifend53 then51: - store ptr @.str460, ptr @g_cur_dir - call void @fn_do_import(ptr @.str461) + store ptr @.str461, ptr @g_cur_dir call void @fn_do_import(ptr @.str462) + call void @fn_do_import(ptr @.str463) %t54 = load ptr, ptr %t1 store ptr %t54, ptr @g_cur_dir br label %ifend53 @@ -23749,8 +23791,8 @@ ifend53: %t56 = icmp ne i32 %t55, 0 br i1 %t56, label %then54, label %ifend56 then54: - store ptr @.str463, ptr @g_cur_dir - call void @fn_do_import(ptr @.str464) + store ptr @.str464, ptr @g_cur_dir + call void @fn_do_import(ptr @.str465) %t57 = load ptr, ptr %t1 store ptr %t57, ptr @g_cur_dir br label %ifend56 @@ -23759,121 +23801,131 @@ ifend56: %t59 = icmp ne i32 %t58, 0 br i1 %t59, label %then57, label %ifend59 then57: - store ptr @.str465, ptr @g_cur_dir - call void @fn_do_import(ptr @.str466) + store ptr @.str466, ptr @g_cur_dir + call void @fn_do_import(ptr @.str467) %t60 = load ptr, ptr %t1 store ptr %t60, ptr @g_cur_dir br label %ifend59 ifend59: - %t61 = load i32, ptr @g_g_uses_anim_rt + %t61 = load i32, ptr @g_g_uses_gl %t62 = icmp ne i32 %t61, 0 br i1 %t62, label %then60, label %ifend62 then60: - store i32 1, ptr @g_g_uses_esys - store ptr @.str467, ptr @g_cur_dir - call void @fn_do_import(ptr @.str468) + store ptr @.str468, ptr @g_cur_dir call void @fn_do_import(ptr @.str469) %t63 = load ptr, ptr %t1 store ptr %t63, ptr @g_cur_dir br label %ifend62 ifend62: - %t64 = call i32 @fn_uses_engine_systems() + %t64 = load i32, ptr @g_g_uses_anim_rt %t65 = icmp ne i32 %t64, 0 br i1 %t65, label %then63, label %ifend65 then63: store i32 1, ptr @g_g_uses_esys store ptr @.str470, ptr @g_cur_dir - %t67 = call ptr @fn_find_comp(ptr @.str471) - %t68 = icmp ne ptr %t67, null - %t69 = zext i1 %t68 to i32 - %t70 = icmp ne i32 %t69, 0 - %t71 = zext i1 %t70 to i32 - store i32 %t71, ptr %t66 - br i1 %t70, label %scend67, label %sc66 -sc66: - %t72 = call ptr @fn_find_comp(ptr @.str472) - %t73 = icmp ne ptr %t72, null + call void @fn_do_import(ptr @.str471) + call void @fn_do_import(ptr @.str472) + %t66 = load ptr, ptr %t1 + store ptr %t66, ptr @g_cur_dir + br label %ifend65 +ifend65: + %t67 = call i32 @fn_uses_engine_systems() + %t68 = icmp ne i32 %t67, 0 + br i1 %t68, label %then66, label %ifend68 +then66: + store i32 1, ptr @g_g_uses_esys + store ptr @.str473, ptr @g_cur_dir + %t70 = call ptr @fn_find_comp(ptr @.str474) + %t71 = icmp ne ptr %t70, null + %t72 = zext i1 %t71 to i32 + %t73 = icmp ne i32 %t72, 0 %t74 = zext i1 %t73 to i32 - %t75 = icmp ne i32 %t74, 0 - %t76 = zext i1 %t75 to i32 - store i32 %t76, ptr %t66 - br label %scend67 -scend67: - %t77 = load i32, ptr %t66 + store i32 %t74, ptr %t69 + br i1 %t73, label %scend70, label %sc69 +sc69: + %t75 = call ptr @fn_find_comp(ptr @.str475) + %t76 = icmp ne ptr %t75, null + %t77 = zext i1 %t76 to i32 %t78 = icmp ne i32 %t77, 0 - br i1 %t78, label %then68, label %ifend70 -then68: - call void @fn_do_import(ptr @.str473) - br label %ifend70 -ifend70: - %t79 = call ptr @fn_find_comp(ptr @.str474) - %t80 = icmp ne ptr %t79, null - %t81 = zext i1 %t80 to i32 - %t82 = icmp ne i32 %t81, 0 - br i1 %t82, label %then71, label %ifend73 + %t79 = zext i1 %t78 to i32 + store i32 %t79, ptr %t69 + br label %scend70 +scend70: + %t80 = load i32, ptr %t69 + %t81 = icmp ne i32 %t80, 0 + br i1 %t81, label %then71, label %ifend73 then71: - call void @fn_do_import(ptr @.str475) call void @fn_do_import(ptr @.str476) br label %ifend73 ifend73: - %t83 = call ptr @fn_find_comp(ptr @.str477) - %t84 = icmp ne ptr %t83, null - %t85 = zext i1 %t84 to i32 - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %then74, label %ifend76 + %t82 = call ptr @fn_find_comp(ptr @.str477) + %t83 = icmp ne ptr %t82, null + %t84 = zext i1 %t83 to i32 + %t85 = icmp ne i32 %t84, 0 + br i1 %t85, label %then74, label %ifend76 then74: call void @fn_do_import(ptr @.str478) call void @fn_do_import(ptr @.str479) br label %ifend76 ifend76: - %t87 = call ptr @fn_find_comp(ptr @.str480) - %t88 = icmp ne ptr %t87, null - %t89 = zext i1 %t88 to i32 - %t90 = icmp ne i32 %t89, 0 - br i1 %t90, label %then77, label %ifend79 + %t86 = call ptr @fn_find_comp(ptr @.str480) + %t87 = icmp ne ptr %t86, null + %t88 = zext i1 %t87 to i32 + %t89 = icmp ne i32 %t88, 0 + br i1 %t89, label %then77, label %ifend79 then77: call void @fn_do_import(ptr @.str481) call void @fn_do_import(ptr @.str482) br label %ifend79 ifend79: - %t91 = call ptr @fn_find_comp(ptr @.str483) - %t92 = icmp ne ptr %t91, null - %t93 = zext i1 %t92 to i32 - %t94 = icmp ne i32 %t93, 0 - br i1 %t94, label %then80, label %ifend82 + %t90 = call ptr @fn_find_comp(ptr @.str483) + %t91 = icmp ne ptr %t90, null + %t92 = zext i1 %t91 to i32 + %t93 = icmp ne i32 %t92, 0 + br i1 %t93, label %then80, label %ifend82 then80: call void @fn_do_import(ptr @.str484) + call void @fn_do_import(ptr @.str485) br label %ifend82 ifend82: - %t96 = call ptr @fn_find_comp(ptr @.str485) - %t97 = icmp ne ptr %t96, null - %t98 = zext i1 %t97 to i32 - %t99 = icmp ne i32 %t98, 0 - %t100 = zext i1 %t99 to i32 - store i32 %t100, ptr %t95 - br i1 %t99, label %scend84, label %sc83 -sc83: - %t101 = call ptr @fn_find_comp(ptr @.str486) - %t102 = icmp ne ptr %t101, null - %t103 = zext i1 %t102 to i32 - %t104 = icmp ne i32 %t103, 0 - %t105 = zext i1 %t104 to i32 - store i32 %t105, ptr %t95 - br label %scend84 -scend84: - %t106 = load i32, ptr %t95 - %t107 = icmp ne i32 %t106, 0 - br i1 %t107, label %then85, label %ifend87 -then85: + %t94 = call ptr @fn_find_comp(ptr @.str486) + %t95 = icmp ne ptr %t94, null + %t96 = zext i1 %t95 to i32 + %t97 = icmp ne i32 %t96, 0 + br i1 %t97, label %then83, label %ifend85 +then83: call void @fn_do_import(ptr @.str487) - call void @fn_do_import(ptr @.str488) + br label %ifend85 +ifend85: + %t99 = call ptr @fn_find_comp(ptr @.str488) + %t100 = icmp ne ptr %t99, null + %t101 = zext i1 %t100 to i32 + %t102 = icmp ne i32 %t101, 0 + %t103 = zext i1 %t102 to i32 + store i32 %t103, ptr %t98 + br i1 %t102, label %scend87, label %sc86 +sc86: + %t104 = call ptr @fn_find_comp(ptr @.str489) + %t105 = icmp ne ptr %t104, null + %t106 = zext i1 %t105 to i32 + %t107 = icmp ne i32 %t106, 0 + %t108 = zext i1 %t107 to i32 + store i32 %t108, ptr %t98 + br label %scend87 +scend87: + %t109 = load i32, ptr %t98 + %t110 = icmp ne i32 %t109, 0 + br i1 %t110, label %then88, label %ifend90 +then88: + call void @fn_do_import(ptr @.str490) + call void @fn_do_import(ptr @.str491) store i32 1, ptr @g_g_uses_light - br label %ifend87 -ifend87: - %t108 = load ptr, ptr %t1 - store ptr %t108, ptr @g_cur_dir - br label %ifend65 -ifend65: + br label %ifend90 +ifend90: + %t111 = load ptr, ptr %t1 + store ptr %t111, ptr @g_cur_dir + br label %ifend68 +ifend68: br label %ret ret: ret void @@ -24008,6 +24060,7 @@ entry: store i32 0, ptr %t71 store ptr %t68, ptr @g_g_toggled_layers store i32 0, ptr @g_g_uses_regex + store i32 0, ptr @g_g_uses_gl store i32 0, ptr @g_g_uses_bignum store i32 0, ptr @g_g_uses_dict store i32 0, ptr @g_g_uses_numeric @@ -24122,7 +24175,7 @@ grow0: put1: %t130 = load ptr, ptr %t117 %t131 = getelementptr inbounds ptr, ptr %t130, i32 %t118 - store ptr @.str489, ptr %t131 + store ptr @.str492, ptr %t131 %t132 = add i32 %t118, 1 store i32 %t132, ptr %t115 %t133 = load ptr, ptr @g_g_esys_fn @@ -24149,7 +24202,7 @@ grow2: put3: %t149 = load ptr, ptr %t136 %t150 = getelementptr inbounds ptr, ptr %t149, i32 %t137 - store ptr @.str490, ptr %t150 + store ptr @.str493, ptr %t150 %t151 = add i32 %t137, 1 store i32 %t151, ptr %t134 %t152 = load ptr, ptr @g_g_esys_phase @@ -24176,7 +24229,7 @@ grow4: put5: %t168 = load ptr, ptr %t155 %t169 = getelementptr inbounds ptr, ptr %t168, i32 %t156 - store ptr @.str491, ptr %t169 + store ptr @.str494, ptr %t169 %t170 = add i32 %t156, 1 store i32 %t170, ptr %t153 %t171 = load ptr, ptr @g_g_esys_comp @@ -24203,7 +24256,7 @@ grow6: put7: %t187 = load ptr, ptr %t174 %t188 = getelementptr inbounds ptr, ptr %t187, i32 %t175 - store ptr @.str492, ptr %t188 + store ptr @.str495, ptr %t188 %t189 = add i32 %t175, 1 store i32 %t189, ptr %t172 %t190 = load ptr, ptr @g_g_esys_fn @@ -24230,7 +24283,7 @@ grow8: put9: %t206 = load ptr, ptr %t193 %t207 = getelementptr inbounds ptr, ptr %t206, i32 %t194 - store ptr @.str493, ptr %t207 + store ptr @.str496, ptr %t207 %t208 = add i32 %t194, 1 store i32 %t208, ptr %t191 %t209 = load ptr, ptr @g_g_esys_phase @@ -24257,7 +24310,7 @@ grow10: put11: %t225 = load ptr, ptr %t212 %t226 = getelementptr inbounds ptr, ptr %t225, i32 %t213 - store ptr @.str494, ptr %t226 + store ptr @.str497, ptr %t226 %t227 = add i32 %t213, 1 store i32 %t227, ptr %t210 %t228 = load ptr, ptr @g_g_esys_comp @@ -24284,7 +24337,7 @@ grow12: put13: %t244 = load ptr, ptr %t231 %t245 = getelementptr inbounds ptr, ptr %t244, i32 %t232 - store ptr @.str495, ptr %t245 + store ptr @.str498, ptr %t245 %t246 = add i32 %t232, 1 store i32 %t246, ptr %t229 %t247 = load ptr, ptr @g_g_esys_fn @@ -24311,7 +24364,7 @@ grow14: put15: %t263 = load ptr, ptr %t250 %t264 = getelementptr inbounds ptr, ptr %t263, i32 %t251 - store ptr @.str496, ptr %t264 + store ptr @.str499, ptr %t264 %t265 = add i32 %t251, 1 store i32 %t265, ptr %t248 %t266 = load ptr, ptr @g_g_esys_phase @@ -24338,7 +24391,7 @@ grow16: put17: %t282 = load ptr, ptr %t269 %t283 = getelementptr inbounds ptr, ptr %t282, i32 %t270 - store ptr @.str497, ptr %t283 + store ptr @.str500, ptr %t283 %t284 = add i32 %t270, 1 store i32 %t284, ptr %t267 %t285 = load ptr, ptr @g_g_esys_comp @@ -24365,7 +24418,7 @@ grow18: put19: %t301 = load ptr, ptr %t288 %t302 = getelementptr inbounds ptr, ptr %t301, i32 %t289 - store ptr @.str498, ptr %t302 + store ptr @.str501, ptr %t302 %t303 = add i32 %t289, 1 store i32 %t303, ptr %t286 %t304 = load ptr, ptr @g_g_esys_fn @@ -24392,7 +24445,7 @@ grow20: put21: %t320 = load ptr, ptr %t307 %t321 = getelementptr inbounds ptr, ptr %t320, i32 %t308 - store ptr @.str499, ptr %t321 + store ptr @.str502, ptr %t321 %t322 = add i32 %t308, 1 store i32 %t322, ptr %t305 %t323 = load ptr, ptr @g_g_esys_phase @@ -24419,7 +24472,7 @@ grow22: put23: %t339 = load ptr, ptr %t326 %t340 = getelementptr inbounds ptr, ptr %t339, i32 %t327 - store ptr @.str500, ptr %t340 + store ptr @.str503, ptr %t340 %t341 = add i32 %t327, 1 store i32 %t341, ptr %t324 %t342 = load ptr, ptr @g_g_esys_comp @@ -24446,7 +24499,7 @@ grow24: put25: %t358 = load ptr, ptr %t345 %t359 = getelementptr inbounds ptr, ptr %t358, i32 %t346 - store ptr @.str501, ptr %t359 + store ptr @.str504, ptr %t359 %t360 = add i32 %t346, 1 store i32 %t360, ptr %t343 %t361 = load ptr, ptr @g_g_esys_fn @@ -24473,7 +24526,7 @@ grow26: put27: %t377 = load ptr, ptr %t364 %t378 = getelementptr inbounds ptr, ptr %t377, i32 %t365 - store ptr @.str502, ptr %t378 + store ptr @.str505, ptr %t378 %t379 = add i32 %t365, 1 store i32 %t379, ptr %t362 %t380 = load ptr, ptr @g_g_esys_phase @@ -24500,7 +24553,7 @@ grow28: put29: %t396 = load ptr, ptr %t383 %t397 = getelementptr inbounds ptr, ptr %t396, i32 %t384 - store ptr @.str503, ptr %t397 + store ptr @.str506, ptr %t397 %t398 = add i32 %t384, 1 store i32 %t398, ptr %t381 %t399 = load ptr, ptr @g_g_esys_comp @@ -24527,7 +24580,7 @@ grow30: put31: %t415 = load ptr, ptr %t402 %t416 = getelementptr inbounds ptr, ptr %t415, i32 %t403 - store ptr @.str504, ptr %t416 + store ptr @.str507, ptr %t416 %t417 = add i32 %t403, 1 store i32 %t417, ptr %t400 %t418 = load ptr, ptr @g_g_esys_fn @@ -24554,7 +24607,7 @@ grow32: put33: %t434 = load ptr, ptr %t421 %t435 = getelementptr inbounds ptr, ptr %t434, i32 %t422 - store ptr @.str505, ptr %t435 + store ptr @.str508, ptr %t435 %t436 = add i32 %t422, 1 store i32 %t436, ptr %t419 %t437 = load ptr, ptr @g_g_esys_phase @@ -24581,7 +24634,7 @@ grow34: put35: %t453 = load ptr, ptr %t440 %t454 = getelementptr inbounds ptr, ptr %t453, i32 %t441 - store ptr @.str506, ptr %t454 + store ptr @.str509, ptr %t454 %t455 = add i32 %t441, 1 store i32 %t455, ptr %t438 %t456 = load ptr, ptr @g_g_esys_comp @@ -24608,7 +24661,7 @@ grow36: put37: %t472 = load ptr, ptr %t459 %t473 = getelementptr inbounds ptr, ptr %t472, i32 %t460 - store ptr @.str507, ptr %t473 + store ptr @.str510, ptr %t473 %t474 = add i32 %t460, 1 store i32 %t474, ptr %t457 %t475 = load ptr, ptr @g_g_esys_fn @@ -24635,7 +24688,7 @@ grow38: put39: %t491 = load ptr, ptr %t478 %t492 = getelementptr inbounds ptr, ptr %t491, i32 %t479 - store ptr @.str508, ptr %t492 + store ptr @.str511, ptr %t492 %t493 = add i32 %t479, 1 store i32 %t493, ptr %t476 %t494 = load ptr, ptr @g_g_esys_phase @@ -24662,7 +24715,7 @@ grow40: put41: %t510 = load ptr, ptr %t497 %t511 = getelementptr inbounds ptr, ptr %t510, i32 %t498 - store ptr @.str509, ptr %t511 + store ptr @.str512, ptr %t511 %t512 = add i32 %t498, 1 store i32 %t512, ptr %t495 %t513 = getelementptr %LSlice, ptr null, i32 1 @@ -24706,10 +24759,10 @@ put41: store i32 0, ptr %t536 store ptr %t533, ptr @g_loaded_paths call void @fn_skipnl() - store ptr @.str510, ptr @g_g_game_name + store ptr @.str513, ptr @g_g_game_name br label %wcond42 wcond42: - %t537 = call i32 @fn_is_id(ptr @.str511) + %t537 = call i32 @fn_is_id(ptr @.str514) %t538 = icmp ne i32 %t537, 0 br i1 %t538, label %wbody43, label %wend44 wbody43: @@ -24737,7 +24790,7 @@ wbody43: wend44: br label %wcond45 wcond45: - %t555 = call i32 @fn_is_op(ptr @.str512) + %t555 = call i32 @fn_is_op(ptr @.str515) %t556 = icmp ne i32 %t555, 0 br i1 %t556, label %wbody46, label %wend47 wbody46: @@ -24746,7 +24799,7 @@ wbody46: store i32 %t558, ptr @g_pi %t559 = call ptr @fn_eat_id() store ptr %t559, ptr %t560 - %t561 = call i32 @fn_is_op(ptr @.str513) + %t561 = call i32 @fn_is_op(ptr @.str516) %t562 = icmp ne i32 %t561, 0 br i1 %t562, label %then48, label %ifend50 then48: @@ -24756,7 +24809,7 @@ wcond51: %t564 = icmp ne i32 1, 0 br i1 %t564, label %wbody52, label %wend53 wbody52: - %t565 = call i32 @fn_is_op(ptr @.str514) + %t565 = call i32 @fn_is_op(ptr @.str517) %t566 = icmp ne i32 %t565, 0 br i1 %t566, label %then54, label %ifend56 then54: @@ -24765,7 +24818,7 @@ then54: store i32 %t568, ptr %t563 br label %ifend56 ifend56: - %t569 = call i32 @fn_is_op(ptr @.str515) + %t569 = call i32 @fn_is_op(ptr @.str518) %t570 = icmp ne i32 %t569, 0 br i1 %t570, label %then57, label %ifend59 then57: @@ -24792,7 +24845,7 @@ ifend50: call void @fn_skipnl() br label %wcond45 wend47: - %t579 = call i32 @fn_is_id(ptr @.str516) + %t579 = call i32 @fn_is_id(ptr @.str519) %t580 = icmp ne i32 %t579, 0 br i1 %t580, label %then63, label %ifend65 then63: @@ -24802,7 +24855,7 @@ then63: %t583 = call ptr @fn_eat_id() store ptr %t583, ptr @g_g_game_name call void @fn_skipnl() - call void @fn_eat_op(ptr @.str517) + call void @fn_eat_op(ptr @.str520) br label %ifend65 ifend65: br label %wcond66 @@ -24826,7 +24879,7 @@ wbody67: then69: br label %wend68 ifend71: - %t596 = call i32 @fn_is_op(ptr @.str518) + %t596 = call i32 @fn_is_op(ptr @.str521) %t597 = icmp ne i32 %t596, 0 br i1 %t597, label %then72, label %ifend74 then72: @@ -24858,14 +24911,14 @@ entry: %t6 = call ptr @fn_eat_id() store ptr %t6, ptr %t5 call void @fn_skipnl() - call void @fn_eat_op(ptr @.str519) + call void @fn_eat_op(ptr @.str522) br label %wcond0 wcond0: %t7 = icmp ne i32 1, 0 br i1 %t7, label %wbody1, label %wend2 wbody1: call void @fn_skipnl() - %t8 = call i32 @fn_is_op(ptr @.str520) + %t8 = call i32 @fn_is_op(ptr @.str523) %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then3, label %ifend5 then3: @@ -24873,7 +24926,7 @@ then3: ifend5: store i32 0, ptr %t10 store i32 0, ptr %t11 - %t12 = call i32 @fn_is_op(ptr @.str521) + %t12 = call i32 @fn_is_op(ptr @.str524) %t13 = icmp ne i32 %t12, 0 br i1 %t13, label %then6, label %ifend8 then6: @@ -24883,7 +24936,7 @@ then6: %t16 = call ptr @fn_eat_id() store ptr %t16, ptr %t17 %t18 = load ptr, ptr %t17 - %t19 = call i32 @lp_str_eq(ptr %t18, ptr @.str522) + %t19 = call i32 @lp_str_eq(ptr %t18, ptr @.str525) %t20 = icmp ne i32 %t19, 0 br i1 %t20, label %then9, label %else10 then9: @@ -24891,7 +24944,7 @@ then9: br label %ifend11 else10: %t21 = load ptr, ptr %t17 - %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str523) + %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str526) %t23 = icmp ne i32 %t22, 0 br i1 %t23, label %then12, label %ifend14 then12: @@ -24909,12 +24962,12 @@ ifend8: %t27 = getelementptr inbounds %Cmp_Node, ptr %t26, i32 0, i32 1 %t28 = call ptr @fn_eat_id() store ptr %t28, ptr %t27 - call void @fn_eat_op(ptr @.str524) + call void @fn_eat_op(ptr @.str527) %t29 = load ptr, ptr %t25 %t30 = getelementptr inbounds %Cmp_Node, ptr %t29, i32 0, i32 3 %t31 = call ptr @fn_ptype() store ptr %t31, ptr %t30 - %t32 = call i32 @fn_is_op(ptr @.str525) + %t32 = call i32 @fn_is_op(ptr @.str528) %t33 = icmp ne i32 %t32, 0 br i1 %t33, label %then15, label %ifend17 then15: @@ -24987,7 +25040,7 @@ put25: store i32 %t78, ptr %t61 br label %ifend23 ifend23: - %t79 = call i32 @fn_is_op(ptr @.str526) + %t79 = call i32 @fn_is_op(ptr @.str529) %t80 = icmp ne i32 %t79, 0 br i1 %t80, label %then26, label %ifend28 then26: @@ -24998,7 +25051,7 @@ then26: ifend28: br label %wcond0 wend2: - call void @fn_eat_op(ptr @.str527) + call void @fn_eat_op(ptr @.str530) %t83 = load ptr, ptr %t3 store ptr %t83, ptr %retval br label %ret @@ -25017,7 +25070,7 @@ entry: store i32 %t1, ptr @g_pi %t2 = call ptr @fn_node(i32 48) store ptr %t2, ptr %t3 - %t4 = call i32 @fn_is_id(ptr @.str528) + %t4 = call i32 @fn_is_id(ptr @.str531) %t5 = icmp ne i32 %t4, 0 br i1 %t5, label %then0, label %ifend2 then0: @@ -25034,14 +25087,14 @@ ifend2: %t12 = call ptr @fn_eat_id() store ptr %t12, ptr %t11 call void @fn_skipnl() - call void @fn_eat_op(ptr @.str529) + call void @fn_eat_op(ptr @.str532) br label %wcond3 wcond3: %t13 = icmp ne i32 1, 0 br i1 %t13, label %wbody4, label %wend5 wbody4: call void @fn_skipnl() - %t14 = call i32 @fn_is_op(ptr @.str530) + %t14 = call i32 @fn_is_op(ptr @.str533) %t15 = icmp ne i32 %t14, 0 br i1 %t15, label %then6, label %ifend8 then6: @@ -25053,12 +25106,12 @@ ifend8: %t19 = getelementptr inbounds %Cmp_Node, ptr %t18, i32 0, i32 1 %t20 = call ptr @fn_eat_id() store ptr %t20, ptr %t19 - call void @fn_eat_op(ptr @.str531) + call void @fn_eat_op(ptr @.str534) %t21 = load ptr, ptr %t17 %t22 = getelementptr inbounds %Cmp_Node, ptr %t21, i32 0, i32 3 %t23 = call ptr @fn_ptype() store ptr %t23, ptr %t22 - %t24 = call i32 @fn_is_op(ptr @.str532) + %t24 = call i32 @fn_is_op(ptr @.str535) %t25 = icmp ne i32 %t24, 0 br i1 %t25, label %then9, label %ifend11 then9: @@ -25101,7 +25154,7 @@ put13: store ptr %t34, ptr %t51 %t52 = add i32 %t38, 1 store i32 %t52, ptr %t35 - %t53 = call i32 @fn_is_op(ptr @.str533) + %t53 = call i32 @fn_is_op(ptr @.str536) %t54 = icmp ne i32 %t53, 0 br i1 %t54, label %then14, label %ifend16 then14: @@ -25112,7 +25165,7 @@ then14: ifend16: br label %wcond3 wend5: - call void @fn_eat_op(ptr @.str534) + call void @fn_eat_op(ptr @.str537) %t57 = load ptr, ptr %t3 store ptr %t57, ptr %retval br label %ret @@ -25138,14 +25191,14 @@ entry: store ptr %t6, ptr %t5 %t7 = load ptr, ptr %t3 %t8 = getelementptr inbounds %Cmp_Node, ptr %t7, i32 0, i32 3 - store ptr @.str535, ptr %t8 + store ptr @.str538, ptr %t8 br label %wcond0 wcond0: %t9 = icmp ne i32 1, 0 br i1 %t9, label %wbody1, label %wend2 wbody1: call void @fn_skipnl() - %t10 = call i32 @fn_is_op(ptr @.str536) + %t10 = call i32 @fn_is_op(ptr @.str539) %t11 = icmp ne i32 %t10, 0 br i1 %t11, label %then3, label %ifend5 then3: @@ -25154,7 +25207,7 @@ then3: store i32 %t13, ptr @g_pi %t14 = call ptr @fn_eat_id() store ptr %t14, ptr %t15 - %t16 = call i32 @fn_is_op(ptr @.str537) + %t16 = call i32 @fn_is_op(ptr @.str540) %t17 = icmp ne i32 %t16, 0 br i1 %t17, label %then6, label %ifend8 then6: @@ -25164,7 +25217,7 @@ wcond9: %t19 = icmp ne i32 1, 0 br i1 %t19, label %wbody10, label %wend11 wbody10: - %t20 = call i32 @fn_is_op(ptr @.str538) + %t20 = call i32 @fn_is_op(ptr @.str541) %t21 = icmp ne i32 %t20, 0 br i1 %t21, label %then12, label %ifend14 then12: @@ -25173,7 +25226,7 @@ then12: store i32 %t23, ptr %t18 br label %ifend14 ifend14: - %t24 = call i32 @fn_is_op(ptr @.str539) + %t24 = call i32 @fn_is_op(ptr @.str542) %t25 = icmp ne i32 %t24, 0 br i1 %t25, label %then15, label %ifend17 then15: @@ -25199,7 +25252,7 @@ wend11: ifend8: br label %wcond0 ifend5: - %t34 = call i32 @fn_is_id(ptr @.str540) + %t34 = call i32 @fn_is_id(ptr @.str543) %t35 = icmp ne i32 %t34, 0 br i1 %t35, label %then21, label %ifend23 then21: @@ -25222,8 +25275,8 @@ then24: %t48 = load ptr, ptr %t3 %t49 = getelementptr inbounds %Cmp_Node, ptr %t48, i32 0, i32 3 %t50 = load ptr, ptr %t49 - %t51 = call ptr @lp_str_concat(ptr @.str541, ptr %t50) - %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str542) + %t51 = call ptr @lp_str_concat(ptr @.str544, ptr %t50) + %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str545) call void @fn_perr(ptr %t52) br label %ifend26 ifend26: @@ -25250,18 +25303,18 @@ entry: %t1 = alloca ptr %t11 = alloca ptr %t40 = alloca ptr - call void @fn_eat_op(ptr @.str543) + call void @fn_eat_op(ptr @.str546) %t0 = call ptr @fn_node(i32 7) store ptr %t0, ptr %t1 br label %wcond0 wcond0: - %t2 = call i32 @fn_is_op(ptr @.str544) + %t2 = call i32 @fn_is_op(ptr @.str547) %t3 = icmp eq i32 %t2, 0 %t4 = zext i1 %t3 to i32 %t5 = icmp ne i32 %t4, 0 br i1 %t5, label %wbody1, label %wend2 wbody1: - %t6 = call i32 @fn_is_op(ptr @.str545) + %t6 = call i32 @fn_is_op(ptr @.str548) %t7 = icmp ne i32 %t6, 0 br i1 %t7, label %then3, label %else4 then3: @@ -25307,7 +25360,7 @@ put7: store ptr %t20, ptr %t37 %t38 = add i32 %t24, 1 store i32 %t38, ptr %t21 - call void @fn_eat_op(ptr @.str546) + call void @fn_eat_op(ptr @.str549) br label %ifend5 else4: %t39 = call ptr @fn_node(i32 33) @@ -25351,7 +25404,7 @@ put9: store i32 %t67, ptr %t50 br label %ifend5 ifend5: - %t68 = call i32 @fn_is_op(ptr @.str547) + %t68 = call i32 @fn_is_op(ptr @.str550) %t69 = icmp ne i32 %t68, 0 br i1 %t69, label %then10, label %ifend12 then10: @@ -25362,8 +25415,8 @@ then10: ifend12: br label %wcond0 wend2: - call void @fn_eat_op(ptr @.str548) - %t72 = call i32 @fn_is_id(ptr @.str549) + call void @fn_eat_op(ptr @.str551) + %t72 = call i32 @fn_is_id(ptr @.str552) %t73 = icmp ne i32 %t72, 0 br i1 %t73, label %then13, label %ifend15 then13: @@ -25392,10 +25445,10 @@ entry: %t38 = alloca ptr %t0 = call ptr @fn_node(i32 21) store ptr %t0, ptr %t1 - call void @fn_eat_op(ptr @.str550) + call void @fn_eat_op(ptr @.str553) br label %wcond0 wcond0: - %t2 = call i32 @fn_is_op(ptr @.str551) + %t2 = call i32 @fn_is_op(ptr @.str554) %t3 = icmp eq i32 %t2, 0 %t4 = zext i1 %t3 to i32 %t5 = icmp ne i32 %t4, 0 @@ -25437,7 +25490,7 @@ put4: store ptr %t14, ptr %t31 %t32 = add i32 %t18, 1 store i32 %t32, ptr %t15 - %t33 = call i32 @fn_is_op(ptr @.str552) + %t33 = call i32 @fn_is_op(ptr @.str555) %t34 = icmp ne i32 %t33, 0 br i1 %t34, label %then5, label %ifend7 then5: @@ -25448,16 +25501,16 @@ then5: ifend7: br label %wcond0 wend2: - call void @fn_eat_op(ptr @.str553) + call void @fn_eat_op(ptr @.str556) %t37 = call ptr @fn_eat_id() store ptr %t37, ptr %t38 - %t39 = call i32 @fn_is_id(ptr @.str554) + %t39 = call i32 @fn_is_id(ptr @.str557) %t40 = icmp eq i32 %t39, 0 %t41 = zext i1 %t40 to i32 %t42 = icmp ne i32 %t41, 0 br i1 %t42, label %then8, label %ifend10 then8: - call void @fn_perr(ptr @.str555) + call void @fn_perr(ptr @.str558) br label %ifend10 ifend10: %t43 = load i32, ptr @g_pi @@ -25509,7 +25562,7 @@ ifend2: store ptr %t7, ptr %t8 %t9 = load ptr, ptr %t8 %t10 = getelementptr inbounds %Cmp_Node, ptr %t9, i32 0, i32 1 - store ptr @.str556, ptr %t10 + store ptr @.str559, ptr %t10 %t11 = load ptr, ptr %t8 %t12 = getelementptr inbounds %Cmp_Node, ptr %t11, i32 0, i32 4 %t13 = load ptr, ptr %t0 @@ -25656,7 +25709,7 @@ entry: %t85 = alloca ptr %t102 = alloca ptr %t104 = alloca ptr - call void @fn_eat_op(ptr @.str557) + call void @fn_eat_op(ptr @.str560) %t0 = call ptr @fn_node(i32 21) store ptr %t0, ptr %t1 %t2 = call ptr @fn_node(i32 7) @@ -25664,14 +25717,14 @@ entry: store ptr null, ptr %t4 br label %wcond0 wcond0: - %t5 = call i32 @fn_is_op(ptr @.str558) + %t5 = call i32 @fn_is_op(ptr @.str561) %t6 = icmp eq i32 %t5, 0 %t7 = zext i1 %t6 to i32 %t8 = icmp ne i32 %t7, 0 br i1 %t8, label %wbody1, label %wend2 wbody1: call void @fn_skipnl() - %t9 = call i32 @fn_is_op(ptr @.str559) + %t9 = call i32 @fn_is_op(ptr @.str562) %t10 = icmp ne i32 %t9, 0 br i1 %t10, label %then3, label %ifend5 then3: @@ -25679,17 +25732,17 @@ then3: ifend5: %t11 = call ptr @fn_eat_id() store ptr %t11, ptr %t12 - call void @fn_eat_op(ptr @.str560) + call void @fn_eat_op(ptr @.str563) %t13 = load ptr, ptr %t12 - %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str561) + %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str564) %t15 = icmp ne i32 %t14, 0 br i1 %t15, label %then6, label %else7 then6: - call void @fn_eat_op(ptr @.str562) + call void @fn_eat_op(ptr @.str565) call void @fn_skipnl() br label %wcond9 wcond9: - %t16 = call i32 @fn_is_op(ptr @.str563) + %t16 = call i32 @fn_is_op(ptr @.str566) %t17 = icmp eq i32 %t16, 0 %t18 = zext i1 %t17 to i32 %t19 = icmp ne i32 %t18, 0 @@ -25772,7 +25825,7 @@ put15: store ptr %t59, ptr %t76 %t77 = add i32 %t63, 1 store i32 %t77, ptr %t60 - %t78 = call i32 @fn_is_op(ptr @.str564) + %t78 = call i32 @fn_is_op(ptr @.str567) %t79 = icmp ne i32 %t78, 0 br i1 %t79, label %then16, label %ifend18 then16: @@ -25781,7 +25834,7 @@ then16: store i32 %t81, ptr @g_pi %t82 = call ptr @fn_expr() store ptr %t82, ptr %t83 - call void @fn_eat_op(ptr @.str565) + call void @fn_eat_op(ptr @.str568) %t84 = call ptr @fn_node(i32 33) store ptr %t84, ptr %t85 %t86 = load ptr, ptr %t85 @@ -25796,7 +25849,7 @@ then16: store ptr %t93, ptr %t4 br label %ifend18 ifend18: - %t94 = call i32 @fn_is_op(ptr @.str566) + %t94 = call i32 @fn_is_op(ptr @.str569) %t95 = icmp ne i32 %t94, 0 br i1 %t95, label %then19, label %ifend21 then19: @@ -25808,11 +25861,11 @@ ifend21: call void @fn_skipnl() br label %wcond9 wend11: - call void @fn_eat_op(ptr @.str567) + call void @fn_eat_op(ptr @.str570) br label %ifend8 else7: %t98 = load ptr, ptr %t12 - %t99 = call i32 @lp_str_eq(ptr %t98, ptr @.str568) + %t99 = call i32 @lp_str_eq(ptr %t98, ptr @.str571) %t100 = icmp ne i32 %t99, 0 br i1 %t100, label %then22, label %else23 then22: @@ -25864,7 +25917,7 @@ else23: ifend24: br label %ifend8 ifend8: - %t133 = call i32 @fn_is_op(ptr @.str569) + %t133 = call i32 @fn_is_op(ptr @.str572) %t134 = icmp ne i32 %t133, 0 br i1 %t134, label %then27, label %ifend29 then27: @@ -25876,7 +25929,7 @@ ifend29: call void @fn_skipnl() br label %wcond0 wend2: - call void @fn_eat_op(ptr @.str570) + call void @fn_eat_op(ptr @.str573) %t137 = load ptr, ptr %t1 %t138 = getelementptr inbounds %Cmp_Node, ptr %t137, i32 0, i32 6 %t139 = load ptr, ptr %t3 @@ -25907,10 +25960,10 @@ entry: %t6 = call ptr @fn_eat_id() store ptr %t6, ptr %t5 call void @fn_skipnl() - call void @fn_eat_op(ptr @.str571) + call void @fn_eat_op(ptr @.str574) %t7 = load ptr, ptr %t3 call void @fn_parse_component_records(ptr %t7) - call void @fn_eat_op(ptr @.str572) + call void @fn_eat_op(ptr @.str575) %t8 = load ptr, ptr %t3 store ptr %t8, ptr %retval br label %ret @@ -25930,7 +25983,7 @@ wcond0: br i1 %t1, label %wbody1, label %wend2 wbody1: call void @fn_skipnl() - %t2 = call i32 @fn_is_op(ptr @.str573) + %t2 = call i32 @fn_is_op(ptr @.str576) %t3 = icmp ne i32 %t2, 0 br i1 %t3, label %then3, label %ifend5 then3: @@ -25976,7 +26029,7 @@ put7: store ptr %t15, ptr %t32 %t33 = add i32 %t19, 1 store i32 %t33, ptr %t16 - %t34 = call i32 @fn_is_op(ptr @.str574) + %t34 = call i32 @fn_is_op(ptr @.str577) %t35 = icmp ne i32 %t34, 0 br i1 %t35, label %then8, label %ifend10 then8: @@ -26005,16 +26058,16 @@ entry: %t5 = getelementptr inbounds %Cmp_Node, ptr %t4, i32 0, i32 1 %t6 = call ptr @fn_eat_id() store ptr %t6, ptr %t5 - call void @fn_eat_op(ptr @.str575) + call void @fn_eat_op(ptr @.str578) %t7 = load ptr, ptr %t3 %t8 = getelementptr inbounds %Cmp_Node, ptr %t7, i32 0, i32 3 %t9 = call ptr @fn_eat_id() store ptr %t9, ptr %t8 call void @fn_skipnl() - call void @fn_eat_op(ptr @.str576) + call void @fn_eat_op(ptr @.str579) %t10 = load ptr, ptr %t3 call void @fn_parse_component_records(ptr %t10) - call void @fn_eat_op(ptr @.str577) + call void @fn_eat_op(ptr @.str580) %t11 = load ptr, ptr %t3 store ptr %t11, ptr %retval br label %ret @@ -26060,13 +26113,13 @@ entry: store ptr null, ptr %t13 br label %wcond0 wcond0: - %t18 = call i32 @fn_is_id(ptr @.str578) + %t18 = call i32 @fn_is_id(ptr @.str581) %t19 = icmp ne i32 %t18, 0 %t20 = zext i1 %t19 to i32 store i32 %t20, ptr %t17 br i1 %t19, label %scend4, label %sc3 sc3: - %t21 = call i32 @fn_is_id(ptr @.str579) + %t21 = call i32 @fn_is_id(ptr @.str582) %t22 = icmp ne i32 %t21, 0 %t23 = zext i1 %t22 to i32 store i32 %t23, ptr %t17 @@ -26078,7 +26131,7 @@ scend4: store i32 %t26, ptr %t16 br i1 %t25, label %scend6, label %sc5 sc5: - %t27 = call i32 @fn_is_id(ptr @.str580) + %t27 = call i32 @fn_is_id(ptr @.str583) %t28 = icmp ne i32 %t27, 0 %t29 = zext i1 %t28 to i32 store i32 %t29, ptr %t16 @@ -26090,7 +26143,7 @@ scend6: store i32 %t32, ptr %t15 br i1 %t31, label %scend8, label %sc7 sc7: - %t33 = call i32 @fn_is_id(ptr @.str581) + %t33 = call i32 @fn_is_id(ptr @.str584) %t34 = icmp ne i32 %t33, 0 %t35 = zext i1 %t34 to i32 store i32 %t35, ptr %t15 @@ -26102,7 +26155,7 @@ scend8: store i32 %t38, ptr %t14 br i1 %t37, label %scend10, label %sc9 sc9: - %t39 = call i32 @fn_is_id(ptr @.str582) + %t39 = call i32 @fn_is_id(ptr @.str585) %t40 = icmp ne i32 %t39, 0 %t41 = zext i1 %t40 to i32 store i32 %t41, ptr %t14 @@ -26112,7 +26165,7 @@ scend10: %t43 = icmp ne i32 %t42, 0 br i1 %t43, label %wbody1, label %wend2 wbody1: - %t44 = call i32 @fn_is_id(ptr @.str583) + %t44 = call i32 @fn_is_id(ptr @.str586) %t45 = icmp ne i32 %t44, 0 br i1 %t45, label %then11, label %else12 then11: @@ -26123,7 +26176,7 @@ then11: store i32 %t48, ptr @g_g_start_scene br label %ifend13 else12: - %t49 = call i32 @fn_is_id(ptr @.str584) + %t49 = call i32 @fn_is_id(ptr @.str587) %t50 = icmp ne i32 %t49, 0 br i1 %t50, label %then14, label %else15 then14: @@ -26136,7 +26189,7 @@ then14: store ptr %t55, ptr %t54 br label %ifend16 else15: - %t56 = call i32 @fn_is_id(ptr @.str585) + %t56 = call i32 @fn_is_id(ptr @.str588) %t57 = icmp ne i32 %t56, 0 br i1 %t57, label %then17, label %else18 then17: @@ -26145,13 +26198,13 @@ then17: store i32 %t59, ptr @g_pi %t60 = call ptr @fn_expr() store ptr %t60, ptr %t11 - %t61 = call i32 @fn_is_id(ptr @.str586) + %t61 = call i32 @fn_is_id(ptr @.str589) %t62 = icmp eq i32 %t61, 0 %t63 = zext i1 %t62 to i32 %t64 = icmp ne i32 %t63, 0 br i1 %t64, label %then20, label %ifend22 then20: - call void @fn_perr(ptr @.str587) + call void @fn_perr(ptr @.str590) br label %ifend22 ifend22: %t65 = load i32, ptr @g_pi @@ -26161,20 +26214,20 @@ ifend22: store ptr %t67, ptr %t12 br label %ifend19 else18: - %t68 = call i32 @fn_is_id(ptr @.str588) + %t68 = call i32 @fn_is_id(ptr @.str591) %t69 = icmp ne i32 %t68, 0 br i1 %t69, label %then23, label %else24 then23: %t70 = load i32, ptr @g_pi %t71 = add i32 %t70, 1 store i32 %t71, ptr @g_pi - %t72 = call i32 @fn_is_id(ptr @.str589) + %t72 = call i32 @fn_is_id(ptr @.str592) %t73 = icmp eq i32 %t72, 0 %t74 = zext i1 %t73 to i32 %t75 = icmp ne i32 %t74, 0 br i1 %t75, label %then26, label %ifend28 then26: - call void @fn_perr(ptr @.str590) + call void @fn_perr(ptr @.str593) br label %ifend28 ifend28: %t76 = load i32, ptr @g_pi @@ -26209,32 +26262,32 @@ then29: %t85 = load ptr, ptr %t3 %t86 = getelementptr inbounds %Cmp_Node, ptr %t85, i32 0, i32 1 %t87 = load ptr, ptr %t86 - %t88 = call ptr @lp_str_concat(ptr @.str591, ptr %t87) - %t89 = call ptr @lp_str_concat(ptr %t88, ptr @.str592) + %t88 = call ptr @lp_str_concat(ptr @.str594, ptr %t87) + %t89 = call ptr @lp_str_concat(ptr %t88, ptr @.str595) call void @fn_ensure_event_empty(ptr %t89) %t90 = load ptr, ptr %t3 %t91 = getelementptr inbounds %Cmp_Node, ptr %t90, i32 0, i32 1 %t92 = load ptr, ptr %t91 - %t93 = call ptr @lp_str_concat(ptr @.str593, ptr %t92) - %t94 = call ptr @lp_str_concat(ptr %t93, ptr @.str594) + %t93 = call ptr @lp_str_concat(ptr @.str596, ptr %t92) + %t94 = call ptr @lp_str_concat(ptr %t93, ptr @.str597) call void @fn_ensure_event_empty(ptr %t94) br label %ifend31 ifend31: call void @fn_skipnl() - call void @fn_eat_op(ptr @.str595) + call void @fn_eat_op(ptr @.str598) br label %wcond32 wcond32: %t95 = icmp ne i32 1, 0 br i1 %t95, label %wbody33, label %wend34 wbody33: call void @fn_skipnl() - %t96 = call i32 @fn_is_op(ptr @.str596) + %t96 = call i32 @fn_is_op(ptr @.str599) %t97 = icmp ne i32 %t96, 0 br i1 %t97, label %then35, label %ifend37 then35: br label %wend34 ifend37: - %t98 = call i32 @fn_is_id(ptr @.str597) + %t98 = call i32 @fn_is_id(ptr @.str600) %t99 = icmp ne i32 %t98, 0 br i1 %t99, label %then38, label %ifend40 then38: @@ -26245,7 +26298,7 @@ then38: store ptr %t102, ptr %t103 call void @fn_skipnl() %t104 = load ptr, ptr %t103 - %t105 = call i32 @lp_str_eq(ptr %t104, ptr @.str598) + %t105 = call i32 @lp_str_eq(ptr %t104, ptr @.str601) %t106 = icmp ne i32 %t105, 0 br i1 %t106, label %then41, label %else42 then41: @@ -26256,7 +26309,7 @@ then41: br label %ifend43 else42: %t110 = load ptr, ptr %t103 - %t111 = call i32 @lp_str_eq(ptr %t110, ptr @.str599) + %t111 = call i32 @lp_str_eq(ptr %t110, ptr @.str602) %t112 = icmp ne i32 %t111, 0 br i1 %t112, label %then44, label %else45 then44: @@ -26266,14 +26319,14 @@ then44: store ptr %t115, ptr %t114 br label %ifend46 else45: - call void @fn_perr(ptr @.str600) + call void @fn_perr(ptr @.str603) br label %ifend46 ifend46: br label %ifend43 ifend43: br label %wcond32 ifend40: - %t116 = call i32 @fn_is_id(ptr @.str601) + %t116 = call i32 @fn_is_id(ptr @.str604) %t117 = icmp ne i32 %t116, 0 br i1 %t117, label %then47, label %ifend49 then47: @@ -26282,7 +26335,7 @@ then47: store i32 %t119, ptr @g_pi %t120 = call ptr @fn_eat_id() store ptr %t120, ptr %t121 - %t122 = call i32 @fn_is_id(ptr @.str602) + %t122 = call i32 @fn_is_id(ptr @.str605) %t123 = icmp ne i32 %t122, 0 br i1 %t123, label %then50, label %ifend52 then50: @@ -26290,17 +26343,17 @@ then50: %t125 = add i32 %t124, 1 store i32 %t125, ptr @g_pi %t126 = load ptr, ptr %t121 - %t127 = call ptr @lp_str_concat(ptr @.str603, ptr %t126) - %t128 = call ptr @lp_str_concat(ptr %t127, ptr @.str604) + %t127 = call ptr @lp_str_concat(ptr @.str606, ptr %t126) + %t128 = call ptr @lp_str_concat(ptr %t127, ptr @.str607) call void @fn_ensure_event_empty(ptr %t128) %t129 = load ptr, ptr %t121 - %t130 = call ptr @lp_str_concat(ptr @.str605, ptr %t129) - %t131 = call ptr @lp_str_concat(ptr %t130, ptr @.str606) + %t130 = call ptr @lp_str_concat(ptr @.str608, ptr %t129) + %t131 = call ptr @lp_str_concat(ptr %t130, ptr @.str609) call void @fn_ensure_event_empty(ptr %t131) br label %ifend52 ifend52: call void @fn_skipnl() - call void @fn_eat_op(ptr @.str607) + call void @fn_eat_op(ptr @.str610) %t132 = call ptr @fn_node(i32 33) store ptr %t132, ptr %t133 %t134 = load ptr, ptr %t133 @@ -26313,7 +26366,7 @@ wcond53: br i1 %t137, label %wbody54, label %wend55 wbody54: call void @fn_skipnl() - %t138 = call i32 @fn_is_op(ptr @.str608) + %t138 = call i32 @fn_is_op(ptr @.str611) %t139 = icmp ne i32 %t138, 0 br i1 %t139, label %then56, label %ifend58 then56: @@ -26322,7 +26375,7 @@ ifend58: store ptr null, ptr %t140 br label %wcond59 wcond59: - %t141 = call i32 @fn_is_op(ptr @.str609) + %t141 = call i32 @fn_is_op(ptr @.str612) %t142 = icmp ne i32 %t141, 0 br i1 %t142, label %wbody60, label %wend61 wbody60: @@ -26332,7 +26385,7 @@ wbody60: %t145 = call ptr @fn_eat_id() store ptr %t145, ptr %t146 %t147 = load ptr, ptr %t146 - %t148 = call i32 @lp_str_eq(ptr %t147, ptr @.str610) + %t148 = call i32 @lp_str_eq(ptr %t147, ptr @.str613) %t149 = icmp ne i32 %t148, 0 br i1 %t149, label %then62, label %else63 then62: @@ -26341,21 +26394,21 @@ then62: br label %ifend64 else63: %t151 = load ptr, ptr %t146 - %t152 = call ptr @lp_str_concat(ptr @.str611, ptr %t151) - %t153 = call ptr @lp_str_concat(ptr %t152, ptr @.str612) + %t152 = call ptr @lp_str_concat(ptr @.str614, ptr %t151) + %t153 = call ptr @lp_str_concat(ptr %t152, ptr @.str615) call void @fn_perr(ptr %t153) br label %ifend64 ifend64: call void @fn_skipnl() br label %wcond59 wend61: - %t154 = call i32 @fn_is_id(ptr @.str613) + %t154 = call i32 @fn_is_id(ptr @.str616) %t155 = icmp eq i32 %t154, 0 %t156 = zext i1 %t155 to i32 %t157 = icmp ne i32 %t156, 0 br i1 %t157, label %then65, label %ifend67 then65: - call void @fn_perr(ptr @.str614) + call void @fn_perr(ptr @.str617) br label %ifend67 ifend67: %t158 = call ptr @fn_parse_system() @@ -26415,7 +26468,7 @@ ifend70: %t198 = load ptr, ptr %t3 %t199 = getelementptr inbounds %Cmp_Node, ptr %t198, i32 0, i32 1 %t200 = load ptr, ptr %t199 - %t201 = call ptr @lp_str_concat(ptr %t200, ptr @.str615) + %t201 = call ptr @lp_str_concat(ptr %t200, ptr @.str618) %t202 = load ptr, ptr %t159 %t203 = getelementptr inbounds %Cmp_Node, ptr %t202, i32 0, i32 1 %t204 = load ptr, ptr %t203 @@ -26460,13 +26513,13 @@ put74: call void @fn_skipnl() br label %wcond53 wend55: - call void @fn_eat_op(ptr @.str616) + call void @fn_eat_op(ptr @.str619) br label %wcond32 ifend49: - call void @fn_perr(ptr @.str617) + call void @fn_perr(ptr @.str620) br label %wcond32 wend34: - call void @fn_eat_op(ptr @.str618) + call void @fn_eat_op(ptr @.str621) %t232 = load ptr, ptr %t11 %t233 = icmp ne ptr %t232, null %t234 = zext i1 %t233 to i32 @@ -26553,11 +26606,11 @@ entry: %t6 = load ptr, ptr %t0 %t7 = getelementptr inbounds %Cmp_Node, ptr %t6, i32 0, i32 1 %t8 = load ptr, ptr %t7 - %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str619) + %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str622) store ptr %t9, ptr %t5 %t10 = load ptr, ptr %t3 %t11 = getelementptr inbounds %Cmp_Node, ptr %t10, i32 0, i32 3 - store ptr @.str620, ptr %t11 + store ptr @.str623, ptr %t11 %t12 = load ptr, ptr %t3 %t13 = getelementptr inbounds %Cmp_Node, ptr %t12, i32 0, i32 6 %t14 = load ptr, ptr %t0 @@ -26574,14 +26627,14 @@ entry: store ptr %t23, ptr %t24 %t25 = load ptr, ptr %t24 %t26 = getelementptr inbounds %Cmp_Node, ptr %t25, i32 0, i32 1 - store ptr @.str621, ptr %t26 + store ptr @.str624, ptr %t26 %t27 = load ptr, ptr %t22 %t28 = getelementptr inbounds %Cmp_Node, ptr %t27, i32 0, i32 4 %t29 = load ptr, ptr %t24 store ptr %t29, ptr %t28 %t30 = load ptr, ptr %t22 %t31 = getelementptr inbounds %Cmp_Node, ptr %t30, i32 0, i32 1 - store ptr @.str622, ptr %t31 + store ptr @.str625, ptr %t31 %t32 = load ptr, ptr %t20 %t33 = getelementptr inbounds %Cmp_Node, ptr %t32, i32 0, i32 4 %t34 = load ptr, ptr %t22 @@ -26665,14 +26718,14 @@ put3: store ptr %t92, ptr %t93 %t94 = load ptr, ptr %t93 %t95 = getelementptr inbounds %Cmp_Node, ptr %t94, i32 0, i32 1 - store ptr @.str623, ptr %t95 + store ptr @.str626, ptr %t95 %t96 = load ptr, ptr %t91 %t97 = getelementptr inbounds %Cmp_Node, ptr %t96, i32 0, i32 4 %t98 = load ptr, ptr %t93 store ptr %t98, ptr %t97 %t99 = load ptr, ptr %t91 %t100 = getelementptr inbounds %Cmp_Node, ptr %t99, i32 0, i32 1 - store ptr @.str624, ptr %t100 + store ptr @.str627, ptr %t100 %t101 = load ptr, ptr %t89 %t102 = getelementptr inbounds %Cmp_Node, ptr %t101, i32 0, i32 4 %t103 = load ptr, ptr %t91 @@ -26792,11 +26845,11 @@ put9: %t188 = load ptr, ptr %t0 %t189 = getelementptr inbounds %Cmp_Node, ptr %t188, i32 0, i32 1 %t190 = load ptr, ptr %t189 - %t191 = call ptr @lp_str_concat(ptr %t190, ptr @.str625) + %t191 = call ptr @lp_str_concat(ptr %t190, ptr @.str628) store ptr %t191, ptr %t187 %t192 = load ptr, ptr %t185 %t193 = getelementptr inbounds %Cmp_Node, ptr %t192, i32 0, i32 3 - store ptr @.str626, ptr %t193 + store ptr @.str629, ptr %t193 %t194 = load ptr, ptr %t185 %t195 = getelementptr inbounds %Cmp_Node, ptr %t194, i32 0, i32 6 %t196 = load ptr, ptr %t0 @@ -26809,7 +26862,7 @@ put9: store ptr %t201, ptr %t202 %t203 = load ptr, ptr %t202 %t204 = getelementptr inbounds %Cmp_Node, ptr %t203, i32 0, i32 1 - store ptr @.str627, ptr %t204 + store ptr @.str630, ptr %t204 %t205 = load ptr, ptr %t200 %t206 = getelementptr inbounds %Cmp_Node, ptr %t205, i32 0, i32 4 %t207 = load ptr, ptr %t202 @@ -26914,8 +26967,8 @@ entry: %t3 = load ptr, ptr %t0 %t4 = getelementptr inbounds %Cmp_Node, ptr %t3, i32 0, i32 1 %t5 = load ptr, ptr %t4 - %t6 = call ptr @lp_str_concat(ptr @.str628, ptr %t5) - %t7 = call ptr @lp_str_concat(ptr %t6, ptr @.str629) + %t6 = call ptr @lp_str_concat(ptr @.str631, ptr %t5) + %t7 = call ptr @lp_str_concat(ptr %t6, ptr @.str632) store ptr %t7, ptr %t8 %t9 = call ptr @fn_node(i32 2) store ptr %t9, ptr %t10 @@ -26925,7 +26978,7 @@ entry: store ptr %t13, ptr %t12 %t14 = load ptr, ptr %t10 %t15 = getelementptr inbounds %Cmp_Node, ptr %t14, i32 0, i32 3 - store ptr @.str630, ptr %t15 + store ptr @.str633, ptr %t15 %t16 = load ptr, ptr @g_prog %t17 = load ptr, ptr %t10 %t18 = getelementptr inbounds %LSlice, ptr %t16, i32 0, i32 1 @@ -26972,7 +27025,7 @@ ifend4: store ptr %t45, ptr %t46 %t47 = load ptr, ptr %t46 %t48 = getelementptr inbounds %Cmp_Node, ptr %t47, i32 0, i32 1 - store ptr @.str631, ptr %t48 + store ptr @.str634, ptr %t48 %t49 = call ptr @fn_node(i32 33) store ptr %t49, ptr %t50 %t51 = load ptr, ptr %t50 @@ -27096,11 +27149,11 @@ wend9: %t139 = load ptr, ptr %t0 %t140 = getelementptr inbounds %Cmp_Node, ptr %t139, i32 0, i32 1 %t141 = load ptr, ptr %t140 - %t142 = call ptr @lp_str_concat(ptr %t141, ptr @.str632) + %t142 = call ptr @lp_str_concat(ptr %t141, ptr @.str635) store ptr %t142, ptr %t138 %t143 = load ptr, ptr %t136 %t144 = getelementptr inbounds %Cmp_Node, ptr %t143, i32 0, i32 3 - store ptr @.str633, ptr %t144 + store ptr @.str636, ptr %t144 %t145 = load ptr, ptr %t136 %t146 = getelementptr inbounds %Cmp_Node, ptr %t145, i32 0, i32 6 %t147 = load ptr, ptr %t0 @@ -27111,7 +27164,7 @@ wend9: store ptr %t150, ptr %t151 %t152 = load ptr, ptr %t151 %t153 = getelementptr inbounds %Cmp_Node, ptr %t152, i32 0, i32 1 - store ptr @.str634, ptr %t153 + store ptr @.str637, ptr %t153 %t154 = call ptr @fn_node(i32 33) store ptr %t154, ptr %t155 %t156 = load ptr, ptr %t155 @@ -27165,7 +27218,7 @@ put13: store ptr %t191, ptr %t192 %t193 = load ptr, ptr %t192 %t194 = getelementptr inbounds %Cmp_Node, ptr %t193, i32 0, i32 1 - store ptr @.str635, ptr %t194 + store ptr @.str638, ptr %t194 %t195 = call ptr @fn_node(i32 33) store ptr %t195, ptr %t196 %t197 = load ptr, ptr %t196 @@ -27421,7 +27474,7 @@ wbody1: %t27 = load ptr, ptr %t25 %t28 = getelementptr inbounds %Cmp_Node, ptr %t27, i32 0, i32 1 %t29 = load ptr, ptr %t28 - %t30 = call i32 @lp_str_eq(ptr %t29, ptr @.str636) + %t30 = call i32 @lp_str_eq(ptr %t29, ptr @.str639) %t31 = icmp ne i32 %t30, 0 %t32 = zext i1 %t31 to i32 store i32 %t32, ptr %t26 @@ -27454,7 +27507,7 @@ ifend7: %t50 = load ptr, ptr %t25 %t51 = getelementptr inbounds %Cmp_Node, ptr %t50, i32 0, i32 1 %t52 = load ptr, ptr %t51 - %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str637) + %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str640) %t54 = icmp ne i32 %t53, 0 %t55 = zext i1 %t54 to i32 store i32 %t55, ptr %t49 @@ -27515,12 +27568,12 @@ then15: store ptr %t89, ptr %t90 %t91 = load ptr, ptr %t90 %t92 = getelementptr inbounds %Cmp_Node, ptr %t91, i32 0, i32 1 - store ptr @.str638, ptr %t92 + store ptr @.str641, ptr %t92 %t93 = call ptr @fn_node(i32 33) store ptr %t93, ptr %t94 %t95 = load ptr, ptr %t94 %t96 = getelementptr inbounds %Cmp_Node, ptr %t95, i32 0, i32 1 - store ptr @.str639, ptr %t96 + store ptr @.str642, ptr %t96 %t97 = load ptr, ptr %t90 %t98 = getelementptr inbounds %Cmp_Node, ptr %t97, i32 0, i32 4 %t99 = load ptr, ptr %t94 @@ -27530,7 +27583,7 @@ then15: %t102 = load ptr, ptr %t101 %t103 = getelementptr inbounds %Cmp_Node, ptr %t102, i32 0, i32 1 %t104 = load ptr, ptr %t1 - %t105 = call ptr @lp_str_concat(ptr @.str640, ptr %t104) + %t105 = call ptr @lp_str_concat(ptr @.str643, ptr %t104) store ptr %t105, ptr %t103 %t106 = load ptr, ptr %t90 %t107 = getelementptr inbounds %Cmp_Node, ptr %t106, i32 0, i32 5 @@ -27615,7 +27668,7 @@ put21: %t167 = add i32 %t153, 1 store i32 %t167, ptr %t150 %t168 = load ptr, ptr %t88 - call void @fn_register_onlisten(ptr @.str641, ptr %t168) + call void @fn_register_onlisten(ptr @.str644, ptr %t168) br label %ifend17 ifend17: store i32 0, ptr %t169 @@ -27667,14 +27720,14 @@ entry: %t6 = call ptr @fn_eat_id() store ptr %t6, ptr %t5 call void @fn_skipnl() - call void @fn_eat_op(ptr @.str642) + call void @fn_eat_op(ptr @.str645) br label %wcond0 wcond0: %t7 = icmp ne i32 1, 0 br i1 %t7, label %wbody1, label %wend2 wbody1: call void @fn_skipnl() - %t8 = call i32 @fn_is_op(ptr @.str643) + %t8 = call i32 @fn_is_op(ptr @.str646) %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then3, label %ifend5 then3: @@ -27686,7 +27739,7 @@ ifend5: %t13 = getelementptr inbounds %Cmp_Node, ptr %t12, i32 0, i32 1 %t14 = call ptr @fn_eat_id() store ptr %t14, ptr %t13 - %t15 = call i32 @fn_is_op(ptr @.str644) + %t15 = call i32 @fn_is_op(ptr @.str647) %t16 = icmp ne i32 %t15, 0 br i1 %t16, label %then6, label %ifend8 then6: @@ -27696,7 +27749,7 @@ then6: call void @fn_skipnl() br label %wcond9 wcond9: - %t19 = call i32 @fn_is_op(ptr @.str645) + %t19 = call i32 @fn_is_op(ptr @.str648) %t20 = icmp eq i32 %t19, 0 %t21 = zext i1 %t20 to i32 %t22 = icmp ne i32 %t21, 0 @@ -27738,7 +27791,7 @@ put13: store ptr %t31, ptr %t48 %t49 = add i32 %t35, 1 store i32 %t49, ptr %t32 - %t50 = call i32 @fn_is_op(ptr @.str646) + %t50 = call i32 @fn_is_op(ptr @.str649) %t51 = icmp ne i32 %t50, 0 br i1 %t51, label %then14, label %ifend16 then14: @@ -27750,7 +27803,7 @@ ifend16: call void @fn_skipnl() br label %wcond9 wend11: - call void @fn_eat_op(ptr @.str647) + call void @fn_eat_op(ptr @.str650) br label %ifend8 ifend8: %t54 = load ptr, ptr %t3 @@ -27783,7 +27836,7 @@ put18: store ptr %t57, ptr %t74 %t75 = add i32 %t61, 1 store i32 %t75, ptr %t58 - %t76 = call i32 @fn_is_op(ptr @.str648) + %t76 = call i32 @fn_is_op(ptr @.str651) %t77 = icmp ne i32 %t76, 0 br i1 %t77, label %then19, label %ifend21 then19: @@ -27795,7 +27848,7 @@ ifend21: call void @fn_skipnl() br label %wcond0 wend2: - call void @fn_eat_op(ptr @.str649) + call void @fn_eat_op(ptr @.str652) %t80 = load ptr, ptr %t3 store ptr %t80, ptr %retval br label %ret @@ -27820,14 +27873,14 @@ entry: %t6 = call ptr @fn_eat_id() store ptr %t6, ptr %t5 call void @fn_skipnl() - call void @fn_eat_op(ptr @.str650) + call void @fn_eat_op(ptr @.str653) br label %wcond0 wcond0: %t7 = icmp ne i32 1, 0 br i1 %t7, label %wbody1, label %wend2 wbody1: call void @fn_skipnl() - %t8 = call i32 @fn_is_op(ptr @.str651) + %t8 = call i32 @fn_is_op(ptr @.str654) %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then3, label %ifend5 then3: @@ -27835,7 +27888,7 @@ then3: ifend5: %t10 = call ptr @fn_node(i32 33) store ptr %t10, ptr %t11 - %t12 = call i32 @fn_is_op(ptr @.str652) + %t12 = call i32 @fn_is_op(ptr @.str655) %t13 = icmp ne i32 %t12, 0 br i1 %t13, label %then6, label %ifend8 then6: @@ -27845,7 +27898,7 @@ then6: %t16 = call ptr @fn_eat_id() store ptr %t16, ptr %t17 %t18 = load ptr, ptr %t17 - %t19 = call i32 @lp_str_eq(ptr %t18, ptr @.str653) + %t19 = call i32 @lp_str_eq(ptr %t18, ptr @.str656) %t20 = icmp ne i32 %t19, 0 br i1 %t20, label %then9, label %ifend11 then9: @@ -27891,7 +27944,7 @@ put13: store ptr %t29, ptr %t46 %t47 = add i32 %t33, 1 store i32 %t47, ptr %t30 - %t48 = call i32 @fn_is_op(ptr @.str654) + %t48 = call i32 @fn_is_op(ptr @.str657) %t49 = icmp ne i32 %t48, 0 br i1 %t49, label %then14, label %ifend16 then14: @@ -27903,7 +27956,7 @@ ifend16: call void @fn_skipnl() br label %wcond0 wend2: - call void @fn_eat_op(ptr @.str655) + call void @fn_eat_op(ptr @.str658) %t52 = load ptr, ptr %t3 store ptr %t52, ptr %retval br label %ret @@ -27930,10 +27983,10 @@ entry: %t7 = getelementptr inbounds %Cmp_Node, ptr %t6, i32 0, i32 1 %t8 = call ptr @fn_eat_id() store ptr %t8, ptr %t7 - call void @fn_eat_op(ptr @.str656) + call void @fn_eat_op(ptr @.str659) br label %wcond0 wcond0: - %t9 = call i32 @fn_is_op(ptr @.str657) + %t9 = call i32 @fn_is_op(ptr @.str660) %t10 = icmp eq i32 %t9, 0 %t11 = zext i1 %t10 to i32 %t12 = icmp ne i32 %t11, 0 @@ -27945,7 +27998,7 @@ wbody1: %t16 = getelementptr inbounds %Cmp_Node, ptr %t15, i32 0, i32 1 %t17 = call ptr @fn_eat_id() store ptr %t17, ptr %t16 - call void @fn_eat_op(ptr @.str658) + call void @fn_eat_op(ptr @.str661) %t18 = load ptr, ptr %t14 %t19 = getelementptr inbounds %Cmp_Node, ptr %t18, i32 0, i32 3 %t20 = call ptr @fn_ptype() @@ -27980,7 +28033,7 @@ put4: store ptr %t24, ptr %t41 %t42 = add i32 %t28, 1 store i32 %t42, ptr %t25 - %t43 = call i32 @fn_is_op(ptr @.str659) + %t43 = call i32 @fn_is_op(ptr @.str662) %t44 = icmp ne i32 %t43, 0 br i1 %t44, label %then5, label %ifend7 then5: @@ -27991,11 +28044,11 @@ then5: ifend7: br label %wcond0 wend2: - call void @fn_eat_op(ptr @.str660) + call void @fn_eat_op(ptr @.str663) %t47 = load ptr, ptr %t5 %t48 = getelementptr inbounds %Cmp_Node, ptr %t47, i32 0, i32 3 - store ptr @.str661, ptr %t48 - %t49 = call i32 @fn_is_op(ptr @.str662) + store ptr @.str664, ptr %t48 + %t49 = call i32 @fn_is_op(ptr @.str665) %t50 = icmp ne i32 %t49, 0 br i1 %t50, label %then8, label %ifend10 then8: @@ -28008,7 +28061,7 @@ then8: store ptr %t55, ptr %t54 br label %ifend10 ifend10: - call void @fn_eat_op(ptr @.str663) + call void @fn_eat_op(ptr @.str666) %t56 = load ptr, ptr @g_toks %t57 = getelementptr inbounds %LSlice, ptr %t56, i32 0, i32 0 %t58 = load ptr, ptr %t57 @@ -28104,7 +28157,7 @@ sc5: %t44 = load ptr, ptr %t43 %t45 = getelementptr inbounds %Cmp_Tok, ptr %t44, i32 0, i32 1 %t46 = load ptr, ptr %t45 - %t47 = call i32 @lp_str_eq(ptr %t46, ptr @.str664) + %t47 = call i32 @lp_str_eq(ptr %t46, ptr @.str667) %t48 = icmp ne i32 %t47, 0 %t49 = zext i1 %t48 to i32 store i32 %t49, ptr %t8 @@ -28120,7 +28173,7 @@ wbody1: %t55 = getelementptr inbounds %Cmp_Node, ptr %t54, i32 0, i32 1 %t56 = call ptr @fn_eat_id() store ptr %t56, ptr %t55 - call void @fn_eat_op(ptr @.str665) + call void @fn_eat_op(ptr @.str668) %t57 = load ptr, ptr %t53 %t58 = getelementptr inbounds %Cmp_Node, ptr %t57, i32 0, i32 4 %t59 = call ptr @fn_expr() @@ -28160,7 +28213,7 @@ put8: br label %wcond0 wend2: call void @fn_skipnl() - %t84 = call i32 @fn_is_op(ptr @.str666) + %t84 = call i32 @fn_is_op(ptr @.str669) %t85 = icmp ne i32 %t84, 0 br i1 %t85, label %then9, label %ifend11 then9: @@ -28173,7 +28226,7 @@ wcond12: br i1 %t88, label %wbody13, label %wend14 wbody13: call void @fn_skipnl() - %t89 = call i32 @fn_is_op(ptr @.str667) + %t89 = call i32 @fn_is_op(ptr @.str670) %t90 = icmp ne i32 %t89, 0 br i1 %t90, label %then15, label %ifend17 then15: @@ -28211,7 +28264,7 @@ put19: store i32 %t112, ptr %t95 br label %wcond12 wend14: - call void @fn_eat_op(ptr @.str668) + call void @fn_eat_op(ptr @.str671) br label %ifend11 ifend11: %t113 = load ptr, ptr %t1 @@ -28239,14 +28292,14 @@ entry: %t8 = getelementptr inbounds %Cmp_Node, ptr %t7, i32 0, i32 2 store i32 1, ptr %t8 call void @fn_skipnl() - call void @fn_eat_op(ptr @.str669) + call void @fn_eat_op(ptr @.str672) call void @fn_skipnl() %t9 = load ptr, ptr %t3 %t10 = getelementptr inbounds %Cmp_Node, ptr %t9, i32 0, i32 4 %t11 = call ptr @fn_parse_widget() store ptr %t11, ptr %t10 call void @fn_skipnl() - call void @fn_eat_op(ptr @.str670) + call void @fn_eat_op(ptr @.str673) %t12 = load ptr, ptr %t3 store ptr %t12, ptr %retval br label %ret @@ -28402,30 +28455,30 @@ ifend8: store i32 %t14, ptr %t15 %t16 = call ptr @fn_nreg() store ptr %t16, ptr %t17 - call void @fn_emit(ptr @.str671) + call void @fn_emit(ptr @.str674) %t18 = load ptr, ptr %t17 call void @fn_emit(ptr %t18) - call void @fn_emit(ptr @.str672) + call void @fn_emit(ptr @.str675) %t19 = load i32, ptr %t15 %t20 = call ptr @fn_itoa(i32 %t19) call void @fn_emit(ptr %t20) - call void @fn_emit(ptr @.str673) + call void @fn_emit(ptr @.str676) %t21 = load ptr, ptr %t17 - %t22 = call ptr @lp_str_concat(ptr @.str674, ptr %t21) + %t22 = call ptr @lp_str_concat(ptr @.str677, ptr %t21) %t23 = call ptr @fn_emit_bind(ptr %t22) store ptr %t23, ptr %t24 %t25 = load ptr, ptr %t24 - %t26 = call ptr @lp_str_concat(ptr @.str675, ptr %t25) - %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str676) + %t26 = call ptr @lp_str_concat(ptr @.str678, ptr %t25) + %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str679) %t28 = call ptr @fn_emit_bind(ptr %t27) store ptr %t28, ptr %t29 - call void @fn_emit(ptr @.str677) + call void @fn_emit(ptr @.str680) %t30 = load ptr, ptr %t29 call void @fn_emit(ptr %t30) - call void @fn_emit(ptr @.str678) + call void @fn_emit(ptr @.str681) %t31 = load ptr, ptr %t17 call void @fn_emit(ptr %t31) - call void @fn_emit(ptr @.str679) + call void @fn_emit(ptr @.str682) br label %ret ret: ret void @@ -28515,23 +28568,23 @@ entry: store ptr %arg_llt, ptr %t0 %t1 = load i32, ptr @g_ll_t %t2 = call ptr @fn_itoa(i32 %t1) - %t3 = call ptr @lp_str_concat(ptr @.str680, ptr %t2) + %t3 = call ptr @lp_str_concat(ptr @.str683, ptr %t2) store ptr %t3, ptr %t4 %t5 = load i32, ptr @g_ll_t %t6 = add i32 %t5, 1 store i32 %t6, ptr @g_ll_t %t7 = load ptr, ptr @g_falloc - call void @fn_buf_puts(ptr %t7, ptr @.str681) + call void @fn_buf_puts(ptr %t7, ptr @.str684) %t8 = load ptr, ptr @g_falloc %t9 = load ptr, ptr %t4 call void @fn_buf_puts(ptr %t8, ptr %t9) %t10 = load ptr, ptr @g_falloc - call void @fn_buf_puts(ptr %t10, ptr @.str682) + call void @fn_buf_puts(ptr %t10, ptr @.str685) %t11 = load ptr, ptr @g_falloc %t12 = load ptr, ptr %t0 call void @fn_buf_puts(ptr %t11, ptr %t12) %t13 = load ptr, ptr @g_falloc - call void @fn_buf_puts(ptr %t13, ptr @.str683) + call void @fn_buf_puts(ptr %t13, ptr @.str686) %t14 = load ptr, ptr %t4 store ptr %t14, ptr %retval br label %ret @@ -28546,7 +28599,7 @@ entry: %t3 = alloca ptr %t0 = load i32, ptr @g_ll_t %t1 = call ptr @fn_itoa(i32 %t0) - %t2 = call ptr @lp_str_concat(ptr @.str684, ptr %t1) + %t2 = call ptr @lp_str_concat(ptr @.str687, ptr %t1) store ptr %t2, ptr %t3 %t4 = load i32, ptr @g_ll_t %t5 = add i32 %t4, 1 @@ -28592,14 +28645,14 @@ entry: %t50 = alloca i32 store ptr %arg_t, ptr %t0 %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str685) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str688) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t3 br i1 %t6, label %scend1, label %sc0 sc0: %t8 = load ptr, ptr %t0 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str686) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str689) %t10 = icmp ne i32 %t9, 0 %t11 = zext i1 %t10 to i32 store i32 %t11, ptr %t3 @@ -28612,7 +28665,7 @@ scend1: br i1 %t13, label %scend3, label %sc2 sc2: %t15 = load ptr, ptr %t0 - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str687) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str690) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t2 @@ -28625,7 +28678,7 @@ scend3: br i1 %t20, label %scend5, label %sc4 sc4: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str688) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str691) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t1 @@ -28635,7 +28688,7 @@ scend5: %t27 = icmp ne i32 %t26, 0 br i1 %t27, label %then6, label %ifend8 then6: - store ptr @.str689, ptr %retval + store ptr @.str692, ptr %retval br label %ret ifend8: %t28 = load ptr, ptr %t0 @@ -28643,66 +28696,66 @@ ifend8: %t30 = icmp ne i32 %t29, 0 br i1 %t30, label %then9, label %ifend11 then9: - store ptr @.str690, ptr %retval + store ptr @.str693, ptr %retval br label %ret ifend11: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str691) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str694) %t33 = icmp ne i32 %t32, 0 br i1 %t33, label %then12, label %ifend14 then12: - store ptr @.str692, ptr %retval + store ptr @.str695, ptr %retval br label %ret ifend14: %t34 = load ptr, ptr %t0 - %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str693) + %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str696) %t36 = icmp ne i32 %t35, 0 br i1 %t36, label %then15, label %ifend17 then15: - store ptr @.str694, ptr %retval + store ptr @.str697, ptr %retval br label %ret ifend17: %t37 = load ptr, ptr %t0 - %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str695) + %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str698) %t39 = icmp ne i32 %t38, 0 br i1 %t39, label %then18, label %ifend20 then18: - store ptr @.str696, ptr %retval + store ptr @.str699, ptr %retval br label %ret ifend20: %t40 = load ptr, ptr %t0 - %t41 = call i32 @lp_str_eq(ptr %t40, ptr @.str697) + %t41 = call i32 @lp_str_eq(ptr %t40, ptr @.str700) %t42 = icmp ne i32 %t41, 0 br i1 %t42, label %then21, label %ifend23 then21: - store ptr @.str698, ptr %retval + store ptr @.str701, ptr %retval br label %ret ifend23: %t43 = load ptr, ptr %t0 - %t44 = call i32 @lp_str_eq(ptr %t43, ptr @.str699) + %t44 = call i32 @lp_str_eq(ptr %t43, ptr @.str702) %t45 = icmp ne i32 %t44, 0 br i1 %t45, label %then24, label %ifend26 then24: - store ptr @.str700, ptr %retval + store ptr @.str703, ptr %retval br label %ret ifend26: %t46 = load ptr, ptr %t0 - %t47 = call i32 @lp_str_eq(ptr %t46, ptr @.str701) + %t47 = call i32 @lp_str_eq(ptr %t46, ptr @.str704) %t48 = icmp ne i32 %t47, 0 br i1 %t48, label %then27, label %ifend29 then27: - store ptr @.str702, ptr %retval + store ptr @.str705, ptr %retval br label %ret ifend29: %t51 = load ptr, ptr %t0 - %t52 = call i32 @lp_str_eq(ptr %t51, ptr @.str703) + %t52 = call i32 @lp_str_eq(ptr %t51, ptr @.str706) %t53 = icmp ne i32 %t52, 0 %t54 = zext i1 %t53 to i32 store i32 %t54, ptr %t50 br i1 %t53, label %scend31, label %sc30 sc30: %t55 = load ptr, ptr %t0 - %t56 = call i32 @lp_str_eq(ptr %t55, ptr @.str704) + %t56 = call i32 @lp_str_eq(ptr %t55, ptr @.str707) %t57 = icmp ne i32 %t56, 0 %t58 = zext i1 %t57 to i32 store i32 %t58, ptr %t50 @@ -28715,7 +28768,7 @@ scend31: br i1 %t60, label %scend33, label %sc32 sc32: %t62 = load ptr, ptr %t0 - %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str705) + %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str708) %t64 = icmp ne i32 %t63, 0 %t65 = zext i1 %t64 to i32 store i32 %t65, ptr %t49 @@ -28725,18 +28778,18 @@ scend33: %t67 = icmp ne i32 %t66, 0 br i1 %t67, label %then34, label %ifend36 then34: - store ptr @.str706, ptr %retval + store ptr @.str709, ptr %retval br label %ret ifend36: %t68 = load ptr, ptr %t0 - %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str707) + %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str710) %t70 = icmp ne i32 %t69, 0 br i1 %t70, label %then37, label %ifend39 then37: - store ptr @.str708, ptr %retval + store ptr @.str711, ptr %retval br label %ret ifend39: - store ptr @.str709, ptr %retval + store ptr @.str712, ptr %retval br label %ret ret: %t71 = load ptr, ptr %retval @@ -28950,7 +29003,7 @@ entry: %t0 = alloca ptr store ptr %arg_name, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call ptr @lp_str_concat(ptr @.str710, ptr %t1) + %t2 = call ptr @lp_str_concat(ptr @.str713, ptr %t1) store ptr %t2, ptr %retval br label %ret ret: @@ -29067,7 +29120,7 @@ ifend5: store i32 %t36, ptr %t2 br label %wcond0 wend2: - store ptr @.str711, ptr %retval + store ptr @.str714, ptr %retval br label %ret ret: %t37 = load ptr, ptr %retval @@ -29270,12 +29323,12 @@ ifend7: br label %wcond0 wend2: %t62 = load ptr, ptr %t0 - %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str712) + %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str715) %t64 = icmp ne i32 %t63, 0 br i1 %t64, label %then14, label %ifend16 then14: %t65 = load ptr, ptr %t1 - %t66 = call i32 @lp_str_eq(ptr %t65, ptr @.str713) + %t66 = call i32 @lp_str_eq(ptr %t65, ptr @.str716) %t67 = icmp ne i32 %t66, 0 br i1 %t67, label %then17, label %ifend19 then17: @@ -29283,7 +29336,7 @@ then17: br label %ret ifend19: %t68 = load ptr, ptr %t1 - %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str714) + %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str717) %t70 = icmp ne i32 %t69, 0 br i1 %t70, label %then20, label %ifend22 then20: @@ -29291,7 +29344,7 @@ then20: br label %ret ifend22: %t71 = load ptr, ptr %t1 - %t72 = call i32 @lp_str_eq(ptr %t71, ptr @.str715) + %t72 = call i32 @lp_str_eq(ptr %t71, ptr @.str718) %t73 = icmp ne i32 %t72, 0 br i1 %t73, label %then23, label %ifend25 then23: @@ -29541,7 +29594,7 @@ wbody7: %t38 = load ptr, ptr %t37 %t39 = getelementptr inbounds %Cmp_Node, ptr %t38, i32 0, i32 3 %t40 = load ptr, ptr %t39 - %t41 = call i32 @lp_str_eq(ptr %t40, ptr @.str716) + %t41 = call i32 @lp_str_eq(ptr %t40, ptr @.str719) %t42 = icmp ne i32 %t41, 0 br i1 %t42, label %then9, label %ifend11 then9: @@ -30072,7 +30125,7 @@ entry: %t6 = load ptr, ptr %t5 %t7 = getelementptr inbounds %Cmp_Node, ptr %t6, i32 0, i32 1 %t8 = load ptr, ptr %t0 - %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str717) + %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str720) %t10 = load ptr, ptr %t1 %t11 = call ptr @lp_str_concat(ptr %t9, ptr %t10) store ptr %t11, ptr %t7 @@ -30136,7 +30189,7 @@ then0: br label %ret ifend2: %t6 = load ptr, ptr %t0 - %t7 = call ptr @lp_str_concat(ptr %t6, ptr @.str718) + %t7 = call ptr @lp_str_concat(ptr %t6, ptr @.str721) %t8 = load ptr, ptr %t1 %t9 = call ptr @lp_str_concat(ptr %t7, ptr %t8) store ptr %t9, ptr %t10 @@ -30354,7 +30407,7 @@ sc23: %t100 = load ptr, ptr %t99 %t101 = getelementptr inbounds %Cmp_Node, ptr %t100, i32 0, i32 1 %t102 = load ptr, ptr %t101 - %t103 = call i32 @lp_str_eq(ptr %t102, ptr @.str719) + %t103 = call i32 @lp_str_eq(ptr %t102, ptr @.str722) %t104 = icmp ne i32 %t103, 0 %t105 = zext i1 %t104 to i32 store i32 %t105, ptr %t85 @@ -30381,7 +30434,7 @@ ifend27: %t120 = load ptr, ptr %t119 %t121 = getelementptr inbounds %Cmp_Node, ptr %t120, i32 0, i32 1 %t122 = load ptr, ptr %t121 - %t123 = call i32 @lp_str_eq(ptr %t122, ptr @.str720) + %t123 = call i32 @lp_str_eq(ptr %t122, ptr @.str723) %t124 = icmp ne i32 %t123, 0 %t125 = zext i1 %t124 to i32 store i32 %t125, ptr %t115 @@ -30392,7 +30445,7 @@ sc28: %t134 = load ptr, ptr %t133 %t135 = getelementptr inbounds %Cmp_Node, ptr %t134, i32 0, i32 1 %t136 = load ptr, ptr %t135 - %t137 = call i32 @lp_str_eq(ptr %t136, ptr @.str721) + %t137 = call i32 @lp_str_eq(ptr %t136, ptr @.str724) %t138 = icmp ne i32 %t137, 0 %t139 = zext i1 %t138 to i32 store i32 %t139, ptr %t131 @@ -30403,7 +30456,7 @@ sc30: %t142 = load ptr, ptr %t141 %t143 = getelementptr inbounds %Cmp_Node, ptr %t142, i32 0, i32 1 %t144 = load ptr, ptr %t143 - %t145 = call i32 @lp_str_eq(ptr %t144, ptr @.str722) + %t145 = call i32 @lp_str_eq(ptr %t144, ptr @.str725) %t146 = icmp ne i32 %t145, 0 %t147 = zext i1 %t146 to i32 store i32 %t147, ptr %t131 @@ -30420,7 +30473,7 @@ sc32: %t153 = load ptr, ptr %t152 %t154 = getelementptr inbounds %Cmp_Node, ptr %t153, i32 0, i32 1 %t155 = load ptr, ptr %t154 - %t156 = call i32 @lp_str_eq(ptr %t155, ptr @.str723) + %t156 = call i32 @lp_str_eq(ptr %t155, ptr @.str726) %t157 = icmp ne i32 %t156, 0 %t158 = zext i1 %t157 to i32 store i32 %t158, ptr %t130 @@ -30437,7 +30490,7 @@ sc34: %t164 = load ptr, ptr %t163 %t165 = getelementptr inbounds %Cmp_Node, ptr %t164, i32 0, i32 1 %t166 = load ptr, ptr %t165 - %t167 = call i32 @lp_str_eq(ptr %t166, ptr @.str724) + %t167 = call i32 @lp_str_eq(ptr %t166, ptr @.str727) %t168 = icmp ne i32 %t167, 0 %t169 = zext i1 %t168 to i32 store i32 %t169, ptr %t129 @@ -30454,7 +30507,7 @@ sc36: %t175 = load ptr, ptr %t174 %t176 = getelementptr inbounds %Cmp_Node, ptr %t175, i32 0, i32 1 %t177 = load ptr, ptr %t176 - %t178 = call i32 @lp_str_eq(ptr %t177, ptr @.str725) + %t178 = call i32 @lp_str_eq(ptr %t177, ptr @.str728) %t179 = icmp ne i32 %t178, 0 %t180 = zext i1 %t179 to i32 store i32 %t180, ptr %t128 @@ -30471,7 +30524,7 @@ sc38: %t186 = load ptr, ptr %t185 %t187 = getelementptr inbounds %Cmp_Node, ptr %t186, i32 0, i32 1 %t188 = load ptr, ptr %t187 - %t189 = call i32 @lp_str_eq(ptr %t188, ptr @.str726) + %t189 = call i32 @lp_str_eq(ptr %t188, ptr @.str729) %t190 = icmp ne i32 %t189, 0 %t191 = zext i1 %t190 to i32 store i32 %t191, ptr %t127 @@ -30488,7 +30541,7 @@ sc40: %t197 = load ptr, ptr %t196 %t198 = getelementptr inbounds %Cmp_Node, ptr %t197, i32 0, i32 1 %t199 = load ptr, ptr %t198 - %t200 = call i32 @lp_str_eq(ptr %t199, ptr @.str727) + %t200 = call i32 @lp_str_eq(ptr %t199, ptr @.str730) %t201 = icmp ne i32 %t200, 0 %t202 = zext i1 %t201 to i32 store i32 %t202, ptr %t126 @@ -30504,7 +30557,7 @@ scend29: %t207 = icmp ne i32 %t206, 0 br i1 %t207, label %then42, label %ifend44 then42: - store ptr @.str728, ptr %retval + store ptr @.str731, ptr %retval br label %ret ifend44: %t209 = load ptr, ptr %t0 @@ -30514,7 +30567,7 @@ ifend44: %t213 = load ptr, ptr %t212 %t214 = getelementptr inbounds %Cmp_Node, ptr %t213, i32 0, i32 1 %t215 = load ptr, ptr %t214 - %t216 = call i32 @lp_str_eq(ptr %t215, ptr @.str729) + %t216 = call i32 @lp_str_eq(ptr %t215, ptr @.str732) %t217 = icmp ne i32 %t216, 0 %t218 = zext i1 %t217 to i32 store i32 %t218, ptr %t208 @@ -30525,7 +30578,7 @@ sc45: %t223 = load ptr, ptr %t222 %t224 = getelementptr inbounds %Cmp_Node, ptr %t223, i32 0, i32 1 %t225 = load ptr, ptr %t224 - %t226 = call i32 @lp_str_eq(ptr %t225, ptr @.str730) + %t226 = call i32 @lp_str_eq(ptr %t225, ptr @.str733) %t227 = icmp ne i32 %t226, 0 %t228 = zext i1 %t227 to i32 store i32 %t228, ptr %t220 @@ -30536,7 +30589,7 @@ sc47: %t231 = load ptr, ptr %t230 %t232 = getelementptr inbounds %Cmp_Node, ptr %t231, i32 0, i32 1 %t233 = load ptr, ptr %t232 - %t234 = call i32 @lp_str_eq(ptr %t233, ptr @.str731) + %t234 = call i32 @lp_str_eq(ptr %t233, ptr @.str734) %t235 = icmp ne i32 %t234, 0 %t236 = zext i1 %t235 to i32 store i32 %t236, ptr %t220 @@ -30553,7 +30606,7 @@ sc49: %t242 = load ptr, ptr %t241 %t243 = getelementptr inbounds %Cmp_Node, ptr %t242, i32 0, i32 1 %t244 = load ptr, ptr %t243 - %t245 = call i32 @lp_str_eq(ptr %t244, ptr @.str732) + %t245 = call i32 @lp_str_eq(ptr %t244, ptr @.str735) %t246 = icmp ne i32 %t245, 0 %t247 = zext i1 %t246 to i32 store i32 %t247, ptr %t219 @@ -30569,7 +30622,7 @@ scend46: %t252 = icmp ne i32 %t251, 0 br i1 %t252, label %then51, label %ifend53 then51: - store ptr @.str733, ptr %retval + store ptr @.str736, ptr %retval br label %ret ifend53: %t254 = load ptr, ptr %t0 @@ -30579,7 +30632,7 @@ ifend53: %t258 = load ptr, ptr %t257 %t259 = getelementptr inbounds %Cmp_Node, ptr %t258, i32 0, i32 1 %t260 = load ptr, ptr %t259 - %t261 = call i32 @lp_str_eq(ptr %t260, ptr @.str734) + %t261 = call i32 @lp_str_eq(ptr %t260, ptr @.str737) %t262 = icmp ne i32 %t261, 0 %t263 = zext i1 %t262 to i32 store i32 %t263, ptr %t253 @@ -30590,7 +30643,7 @@ sc54: %t266 = load ptr, ptr %t265 %t267 = getelementptr inbounds %Cmp_Node, ptr %t266, i32 0, i32 1 %t268 = load ptr, ptr %t267 - %t269 = call i32 @lp_str_eq(ptr %t268, ptr @.str735) + %t269 = call i32 @lp_str_eq(ptr %t268, ptr @.str738) %t270 = icmp ne i32 %t269, 0 %t271 = zext i1 %t270 to i32 store i32 %t271, ptr %t253 @@ -30600,7 +30653,7 @@ scend55: %t273 = icmp ne i32 %t272, 0 br i1 %t273, label %then56, label %ifend58 then56: - store ptr @.str736, ptr %retval + store ptr @.str739, ptr %retval br label %ret ifend58: %t275 = load ptr, ptr %t0 @@ -30610,7 +30663,7 @@ ifend58: %t279 = load ptr, ptr %t278 %t280 = getelementptr inbounds %Cmp_Node, ptr %t279, i32 0, i32 1 %t281 = load ptr, ptr %t280 - %t282 = call i32 @lp_str_eq(ptr %t281, ptr @.str737) + %t282 = call i32 @lp_str_eq(ptr %t281, ptr @.str740) %t283 = icmp ne i32 %t282, 0 %t284 = zext i1 %t283 to i32 store i32 %t284, ptr %t274 @@ -30621,7 +30674,7 @@ sc59: %t287 = load ptr, ptr %t286 %t288 = getelementptr inbounds %Cmp_Node, ptr %t287, i32 0, i32 1 %t289 = load ptr, ptr %t288 - %t290 = call i32 @lp_str_eq(ptr %t289, ptr @.str738) + %t290 = call i32 @lp_str_eq(ptr %t289, ptr @.str741) %t291 = icmp ne i32 %t290, 0 %t292 = zext i1 %t291 to i32 store i32 %t292, ptr %t274 @@ -30631,7 +30684,7 @@ scend60: %t294 = icmp ne i32 %t293, 0 br i1 %t294, label %then61, label %ifend63 then61: - store ptr @.str739, ptr %retval + store ptr @.str742, ptr %retval br label %ret ifend63: %t295 = load ptr, ptr %t0 @@ -30642,7 +30695,7 @@ ifend63: %t300 = getelementptr inbounds %Cmp_Node, ptr %t299, i32 0, i32 1 %t301 = load ptr, ptr %t300 %t302 = call ptr @fn_ns_lower(ptr %t301) - %t303 = call ptr @lp_str_concat(ptr %t302, ptr @.str740) + %t303 = call ptr @lp_str_concat(ptr %t302, ptr @.str743) %t304 = load ptr, ptr %t0 %t305 = getelementptr inbounds %Cmp_Node, ptr %t304, i32 0, i32 4 %t306 = load ptr, ptr %t305 @@ -30802,7 +30855,7 @@ then89: br i1 %t411, label %then92, label %ifend94 then92: %t412 = load ptr, ptr %t407 - %t413 = call ptr @lp_str_concat(ptr @.str741, ptr %t412) + %t413 = call ptr @lp_str_concat(ptr @.str744, ptr %t412) store ptr %t413, ptr %retval br label %ret ifend94: @@ -30832,7 +30885,7 @@ scend96: %t430 = icmp ne i32 %t429, 0 br i1 %t430, label %then97, label %ifend99 then97: - store ptr @.str742, ptr %retval + store ptr @.str745, ptr %retval br label %ret ifend99: %t431 = load ptr, ptr %t0 @@ -30843,7 +30896,7 @@ ifend99: %t436 = icmp ne i32 %t435, 0 br i1 %t436, label %then100, label %ifend102 then100: - store ptr @.str743, ptr %retval + store ptr @.str746, ptr %retval br label %ret ifend102: %t437 = load ptr, ptr %t0 @@ -30854,7 +30907,7 @@ ifend102: %t442 = icmp ne i32 %t441, 0 br i1 %t442, label %then103, label %ifend105 then103: - store ptr @.str744, ptr %retval + store ptr @.str747, ptr %retval br label %ret ifend105: %t443 = load ptr, ptr %t0 @@ -30865,7 +30918,7 @@ ifend105: %t448 = icmp ne i32 %t447, 0 br i1 %t448, label %then106, label %ifend108 then106: - store ptr @.str745, ptr %retval + store ptr @.str748, ptr %retval br label %ret ifend108: store ptr null, ptr %retval @@ -31672,10 +31725,10 @@ ifend2: store ptr %t12, ptr %t13 %t14 = load ptr, ptr %t13 %t15 = getelementptr inbounds %Cmp_Node, ptr %t14, i32 0, i32 1 - store ptr @.str746, ptr %t15 + store ptr @.str749, ptr %t15 %t16 = load ptr, ptr %t13 %t17 = getelementptr inbounds %Cmp_Node, ptr %t16, i32 0, i32 3 - store ptr @.str747, ptr %t17 + store ptr @.str750, ptr %t17 %t18 = load ptr, ptr %t8 %t19 = getelementptr inbounds %Cmp_Node, ptr %t18, i32 0, i32 7 %t20 = load ptr, ptr %t19 @@ -31714,10 +31767,10 @@ then5: store ptr %t42, ptr %t43 %t44 = load ptr, ptr %t43 %t45 = getelementptr inbounds %Cmp_Node, ptr %t44, i32 0, i32 1 - store ptr @.str748, ptr %t45 + store ptr @.str751, ptr %t45 %t46 = load ptr, ptr %t43 %t47 = getelementptr inbounds %Cmp_Node, ptr %t46, i32 0, i32 3 - store ptr @.str749, ptr %t47 + store ptr @.str752, ptr %t47 %t48 = load ptr, ptr %t8 %t49 = getelementptr inbounds %Cmp_Node, ptr %t48, i32 0, i32 7 %t50 = load ptr, ptr %t49 @@ -32196,7 +32249,7 @@ entry: store ptr %arg_s, ptr %t0 %t1 = load i32, ptr @g_ll_str %t2 = call ptr @fn_itoa(i32 %t1) - %t3 = call ptr @lp_str_concat(ptr @.str750, ptr %t2) + %t3 = call ptr @lp_str_concat(ptr @.str753, ptr %t2) store ptr %t3, ptr %t4 %t5 = load i32, ptr @g_ll_str %t6 = add i32 %t5, 1 @@ -32207,12 +32260,12 @@ entry: store i32 %t9, ptr %t10 %t11 = load ptr, ptr %t4 call void @fn_emith(ptr %t11) - call void @fn_emith(ptr @.str751) + call void @fn_emith(ptr @.str754) %t12 = load i32, ptr %t10 %t13 = add i32 %t12, 1 %t14 = call ptr @fn_itoa(i32 %t13) call void @fn_emith(ptr %t14) - call void @fn_emith(ptr @.str752) + call void @fn_emith(ptr @.str755) store i32 0, ptr %t15 br label %wcond0 wcond0: @@ -32301,7 +32354,7 @@ ifend11: store i32 %t70, ptr %t15 br label %wcond0 wend2: - call void @fn_emith(ptr @.str753) + call void @fn_emith(ptr @.str756) %t71 = load ptr, ptr %t4 store ptr %t71, ptr %retval br label %ret @@ -32334,14 +32387,14 @@ then0: %t8 = getelementptr inbounds %Cmp_Node, ptr %t7, i32 0, i32 3 %t9 = load ptr, ptr %t8 %t10 = call ptr @fn_llty(ptr %t9) - %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str754) + %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str757) %t12 = icmp ne i32 %t11, 0 br i1 %t12, label %then3, label %ifend5 then3: - store ptr @.str755, ptr %retval + store ptr @.str758, ptr %retval br label %ret ifend5: - store ptr @.str756, ptr %retval + store ptr @.str759, ptr %retval br label %ret ifend2: %t13 = load ptr, ptr %t0 @@ -32408,7 +32461,7 @@ sc13: %t58 = load ptr, ptr %t16 %t59 = getelementptr inbounds %Cmp_Node, ptr %t58, i32 0, i32 1 %t60 = load ptr, ptr %t59 - %t61 = call i32 @lp_str_eq(ptr %t60, ptr @.str757) + %t61 = call i32 @lp_str_eq(ptr %t60, ptr @.str760) %t62 = icmp ne i32 %t61, 0 %t63 = zext i1 %t62 to i32 store i32 %t63, ptr %t50 @@ -32442,7 +32495,7 @@ then17: %t81 = getelementptr inbounds %Cmp_Node, ptr %t80, i32 0, i32 2 %t82 = load i32, ptr %t81 %t83 = call ptr @fn_itoa(i32 %t82) - %t84 = call ptr @lp_str_concat(ptr @.str758, ptr %t83) + %t84 = call ptr @lp_str_concat(ptr @.str761, ptr %t83) store ptr %t84, ptr %retval br label %ret ifend19: @@ -32499,14 +32552,14 @@ ifend24: %t121 = getelementptr inbounds %Cmp_Node, ptr %t120, i32 0, i32 3 %t122 = load ptr, ptr %t121 %t123 = call ptr @fn_llty(ptr %t122) - %t124 = call i32 @lp_str_eq(ptr %t123, ptr @.str759) + %t124 = call i32 @lp_str_eq(ptr %t123, ptr @.str762) %t125 = icmp ne i32 %t124, 0 br i1 %t125, label %then28, label %ifend30 then28: - store ptr @.str760, ptr %retval + store ptr @.str763, ptr %retval br label %ret ifend30: - store ptr @.str761, ptr %retval + store ptr @.str764, ptr %retval br label %ret ret: %t126 = load ptr, ptr %retval @@ -32612,7 +32665,7 @@ sc12: %t59 = load ptr, ptr %t10 %t60 = getelementptr inbounds %Cmp_Node, ptr %t59, i32 0, i32 1 %t61 = load ptr, ptr %t60 - %t62 = call i32 @lp_str_eq(ptr %t61, ptr @.str762) + %t62 = call i32 @lp_str_eq(ptr %t61, ptr @.str765) %t63 = icmp ne i32 %t62, 0 %t64 = zext i1 %t63 to i32 store i32 %t64, ptr %t51 @@ -32709,7 +32762,7 @@ entry: call void @fn_loc_reset() store i32 0, ptr @g_nloop store i32 0, ptr @g_nself - store ptr @.str763, ptr @g_ret_ty + store ptr @.str766, ptr @g_ret_ty %t0 = call ptr @fn_buf_new() store ptr %t0, ptr %t1 %t2 = call ptr @fn_buf_new() @@ -32763,25 +32816,25 @@ then5: %t37 = load ptr, ptr %t36 %t38 = call ptr @fn_emit_expr(ptr %t37) store ptr %t38, ptr %t39 - call void @fn_emit(ptr @.str764) + call void @fn_emit(ptr @.str767) %t40 = load ptr, ptr %t20 %t41 = getelementptr inbounds %Cmp_Node, ptr %t40, i32 0, i32 3 %t42 = load ptr, ptr %t41 %t43 = call ptr @fn_llty(ptr %t42) call void @fn_emit(ptr %t43) - call void @fn_emit(ptr @.str765) + call void @fn_emit(ptr @.str768) %t44 = load ptr, ptr %t39 %t45 = load ptr, ptr %t20 %t46 = getelementptr inbounds %Cmp_Node, ptr %t45, i32 0, i32 3 %t47 = load ptr, ptr %t46 %t48 = call ptr @fn_coerce_code(ptr %t44, ptr %t47) call void @fn_emit(ptr %t48) - call void @fn_emit(ptr @.str766) + call void @fn_emit(ptr @.str769) %t49 = load ptr, ptr %t20 %t50 = getelementptr inbounds %Cmp_Node, ptr %t49, i32 0, i32 1 %t51 = load ptr, ptr %t50 call void @fn_emit(ptr %t51) - call void @fn_emit(ptr @.str767) + call void @fn_emit(ptr @.str770) br label %ifend7 ifend7: %t52 = load i32, ptr %t6 @@ -32789,17 +32842,17 @@ ifend7: store i32 %t53, ptr %t6 br label %wcond0 wend2: - call void @fn_emit(ptr @.str768) + call void @fn_emit(ptr @.str771) %t54 = load ptr, ptr %t4 store ptr %t54, ptr @g_code - call void @fn_emit(ptr @.str769) + call void @fn_emit(ptr @.str772) %t55 = load ptr, ptr @g_falloc %t56 = call ptr @fn_buf_str(ptr %t55) call void @fn_emit(ptr %t56) %t57 = load ptr, ptr %t1 %t58 = call ptr @fn_buf_str(ptr %t57) call void @fn_emit(ptr %t58) - call void @fn_emit(ptr @.str770) + call void @fn_emit(ptr @.str773) br label %ret ret: ret void @@ -32817,9 +32870,6 @@ entry: %t150 = alloca i32 %t156 = alloca i32 %t185 = alloca i32 - call void @fn_emith(ptr @.str771) - call void @fn_emith(ptr @.str772) - call void @fn_emith(ptr @.str773) call void @fn_emith(ptr @.str774) call void @fn_emith(ptr @.str775) call void @fn_emith(ptr @.str776) @@ -32876,17 +32926,20 @@ entry: call void @fn_emith(ptr @.str827) call void @fn_emith(ptr @.str828) call void @fn_emith(ptr @.str829) + call void @fn_emith(ptr @.str830) + call void @fn_emith(ptr @.str831) + call void @fn_emith(ptr @.str832) %t0 = load ptr, ptr @g_g_game_name %t1 = call i64 @strlen(ptr %t0) %t2 = trunc i64 %t1 to i32 %t3 = add i32 %t2, 1 %t4 = call ptr @fn_itoa(i32 %t3) call void @fn_emith(ptr %t4) - call void @fn_emith(ptr @.str830) + call void @fn_emith(ptr @.str833) %t5 = load ptr, ptr @g_g_game_name call void @fn_emith(ptr %t5) - call void @fn_emith(ptr @.str831) - call void @fn_emith(ptr @.str832) + call void @fn_emith(ptr @.str834) + call void @fn_emith(ptr @.str835) store i32 0, ptr %t6 br label %wcond0 wcond0: @@ -32985,16 +33038,16 @@ then16: %t77 = load ptr, ptr %t20 %t78 = getelementptr inbounds %Cmp_Node, ptr %t77, i32 0, i32 1 %t79 = load ptr, ptr %t78 - %t80 = call ptr @lp_str_concat(ptr @.str833, ptr %t79) - %t81 = call ptr @lp_str_concat(ptr %t80, ptr @.str834) + %t80 = call ptr @lp_str_concat(ptr @.str836, ptr %t79) + %t81 = call ptr @lp_str_concat(ptr %t80, ptr @.str837) call void @fn_perr(ptr %t81) br label %ifend18 ifend18: %t82 = load ptr, ptr %t20 %t83 = getelementptr inbounds %Cmp_Node, ptr %t82, i32 0, i32 1 %t84 = load ptr, ptr %t83 - %t85 = call ptr @lp_str_concat(ptr @.str835, ptr %t84) - %t86 = call ptr @lp_str_concat(ptr %t85, ptr @.str836) + %t85 = call ptr @lp_str_concat(ptr @.str838, ptr %t84) + %t86 = call ptr @lp_str_concat(ptr %t85, ptr @.str839) call void @fn_perr(ptr %t86) br label %ifend13 ifend13: @@ -33008,7 +33061,7 @@ wend8: %t91 = load ptr, ptr %t90 %t92 = call ptr @fn_layout_ty(ptr %t91) call void @fn_emith(ptr %t92) - call void @fn_emith(ptr @.str837) + call void @fn_emith(ptr @.str840) %t93 = load ptr, ptr %t20 %t94 = getelementptr inbounds %Cmp_Node, ptr %t93, i32 0, i32 7 %t95 = load ptr, ptr %t94 @@ -33019,7 +33072,7 @@ wend8: %t100 = icmp ne i32 %t99, 0 br i1 %t100, label %then19, label %ifend21 then19: - call void @fn_emith(ptr @.str838) + call void @fn_emith(ptr @.str841) br label %ifend21 ifend21: store i32 0, ptr %t101 @@ -33042,7 +33095,7 @@ wbody23: %t114 = icmp ne i32 %t113, 0 br i1 %t114, label %then25, label %ifend27 then25: - call void @fn_emith(ptr @.str839) + call void @fn_emith(ptr @.str842) br label %ifend27 ifend27: %t115 = load ptr, ptr %t20 @@ -33062,7 +33115,7 @@ ifend27: store i32 %t127, ptr %t101 br label %wcond22 wend24: - call void @fn_emith(ptr @.str840) + call void @fn_emith(ptr @.str843) br label %ifend5 ifend5: %t128 = load i32, ptr %t6 @@ -33168,16 +33221,16 @@ then44: %t200 = load ptr, ptr %t143 %t201 = getelementptr inbounds %Cmp_Node, ptr %t200, i32 0, i32 1 %t202 = load ptr, ptr %t201 - %t203 = call ptr @lp_str_concat(ptr @.str841, ptr %t202) - %t204 = call ptr @lp_str_concat(ptr %t203, ptr @.str842) + %t203 = call ptr @lp_str_concat(ptr @.str844, ptr %t202) + %t204 = call ptr @lp_str_concat(ptr %t203, ptr @.str845) call void @fn_perr(ptr %t204) br label %ifend46 ifend46: %t205 = load ptr, ptr %t143 %t206 = getelementptr inbounds %Cmp_Node, ptr %t205, i32 0, i32 1 %t207 = load ptr, ptr %t206 - %t208 = call ptr @lp_str_concat(ptr @.str843, ptr %t207) - %t209 = call ptr @lp_str_concat(ptr %t208, ptr @.str844) + %t208 = call ptr @lp_str_concat(ptr @.str846, ptr %t207) + %t209 = call ptr @lp_str_concat(ptr %t208, ptr @.str847) call void @fn_perr(ptr %t209) br label %ifend41 ifend41: @@ -33186,22 +33239,22 @@ ifend41: store i32 %t211, ptr %t150 br label %wcond34 wend36: - call void @fn_emith(ptr @.str845) + call void @fn_emith(ptr @.str848) %t212 = load ptr, ptr %t143 %t213 = getelementptr inbounds %Cmp_Node, ptr %t212, i32 0, i32 1 %t214 = load ptr, ptr %t213 call void @fn_emith(ptr %t214) - call void @fn_emith(ptr @.str846) + call void @fn_emith(ptr @.str849) %t215 = load ptr, ptr %t143 %t216 = getelementptr inbounds %Cmp_Node, ptr %t215, i32 0, i32 3 %t217 = load ptr, ptr %t216 %t218 = call ptr @fn_llty(ptr %t217) call void @fn_emith(ptr %t218) - call void @fn_emith(ptr @.str847) + call void @fn_emith(ptr @.str850) %t219 = load ptr, ptr %t143 %t220 = call ptr @fn_global_init(ptr %t219) call void @fn_emith(ptr %t220) - call void @fn_emith(ptr @.str848) + call void @fn_emith(ptr @.str851) br label %ifend33 ifend33: %t221 = load i32, ptr %t6 @@ -33246,20 +33299,20 @@ wbody1: %t20 = icmp ne i32 %t19, 0 br i1 %t20, label %then3, label %ifend5 then3: - call void @fn_emith(ptr @.str849) + call void @fn_emith(ptr @.str852) %t21 = load ptr, ptr %t14 %t22 = getelementptr inbounds %Cmp_Node, ptr %t21, i32 0, i32 3 %t23 = load ptr, ptr %t22 %t24 = call ptr @fn_llty(ptr %t23) call void @fn_emith(ptr %t24) - call void @fn_emith(ptr @.str850) + call void @fn_emith(ptr @.str853) %t25 = load ptr, ptr %t14 %t26 = getelementptr inbounds %Cmp_Node, ptr %t25, i32 0, i32 4 %t27 = load ptr, ptr %t26 %t28 = getelementptr inbounds %Cmp_Node, ptr %t27, i32 0, i32 1 %t29 = load ptr, ptr %t28 call void @fn_emith(ptr %t29) - call void @fn_emith(ptr @.str851) + call void @fn_emith(ptr @.str854) store i32 0, ptr %t30 br label %wcond6 wcond6: @@ -33280,7 +33333,7 @@ wbody7: %t43 = icmp ne i32 %t42, 0 br i1 %t43, label %then9, label %ifend11 then9: - call void @fn_emith(ptr @.str852) + call void @fn_emith(ptr @.str855) br label %ifend11 ifend11: %t44 = load ptr, ptr %t14 @@ -33300,7 +33353,7 @@ ifend11: store i32 %t56, ptr %t30 br label %wcond6 wend8: - call void @fn_emith(ptr @.str853) + call void @fn_emith(ptr @.str856) br label %ifend5 ifend5: %t57 = load i32, ptr %t0 @@ -33315,9 +33368,6 @@ ret: define void @fn_emit_str_prelude() { entry: - call void @fn_emith(ptr @.str854) - call void @fn_emith(ptr @.str855) - call void @fn_emith(ptr @.str856) call void @fn_emith(ptr @.str857) call void @fn_emith(ptr @.str858) call void @fn_emith(ptr @.str859) @@ -33350,6 +33400,9 @@ entry: call void @fn_emith(ptr @.str886) call void @fn_emith(ptr @.str887) call void @fn_emith(ptr @.str888) + call void @fn_emith(ptr @.str889) + call void @fn_emith(ptr @.str890) + call void @fn_emith(ptr @.str891) br label %ret ret: ret void @@ -33357,9 +33410,6 @@ ret: define void @fn_emit_int_str() { entry: - call void @fn_emith(ptr @.str889) - call void @fn_emith(ptr @.str890) - call void @fn_emith(ptr @.str891) call void @fn_emith(ptr @.str892) call void @fn_emith(ptr @.str893) call void @fn_emith(ptr @.str894) @@ -33374,6 +33424,9 @@ entry: call void @fn_emith(ptr @.str903) call void @fn_emith(ptr @.str904) call void @fn_emith(ptr @.str905) + call void @fn_emith(ptr @.str906) + call void @fn_emith(ptr @.str907) + call void @fn_emith(ptr @.str908) br label %ret ret: ret void @@ -33381,9 +33434,6 @@ ret: define void @fn_emit_long_str() { entry: - call void @fn_emith(ptr @.str906) - call void @fn_emith(ptr @.str907) - call void @fn_emith(ptr @.str908) call void @fn_emith(ptr @.str909) call void @fn_emith(ptr @.str910) call void @fn_emith(ptr @.str911) @@ -33398,6 +33448,9 @@ entry: call void @fn_emith(ptr @.str920) call void @fn_emith(ptr @.str921) call void @fn_emith(ptr @.str922) + call void @fn_emith(ptr @.str923) + call void @fn_emith(ptr @.str924) + call void @fn_emith(ptr @.str925) br label %ret ret: ret void @@ -33405,14 +33458,14 @@ ret: define void @fn_emit_str_slice() { entry: - call void @fn_emith(ptr @.str923) - call void @fn_emith(ptr @.str924) - call void @fn_emith(ptr @.str925) call void @fn_emith(ptr @.str926) call void @fn_emith(ptr @.str927) call void @fn_emith(ptr @.str928) call void @fn_emith(ptr @.str929) call void @fn_emith(ptr @.str930) + call void @fn_emith(ptr @.str931) + call void @fn_emith(ptr @.str932) + call void @fn_emith(ptr @.str933) br label %ret ret: ret void @@ -33446,7 +33499,7 @@ then0: %t15 = load ptr, ptr %t5 %t16 = getelementptr inbounds %Cmp_Val, ptr %t15, i32 0, i32 1 %t17 = load ptr, ptr %t16 - %t18 = call ptr @lp_str_concat(ptr @.str931, ptr %t17) + %t18 = call ptr @lp_str_concat(ptr @.str934, ptr %t17) call void @fn_perr(ptr %t18) br label %ifend2 ifend2: @@ -33465,7 +33518,7 @@ then3: %t29 = load ptr, ptr %t0 %t30 = getelementptr inbounds %Cmp_Node, ptr %t29, i32 0, i32 1 %t31 = load ptr, ptr %t30 - %t32 = call ptr @lp_str_concat(ptr @.str932, ptr %t31) + %t32 = call ptr @lp_str_concat(ptr @.str935, ptr %t31) call void @fn_perr(ptr %t32) br label %ifend5 ifend5: @@ -33477,25 +33530,25 @@ ifend5: store ptr %t37, ptr @g_g_addr_ty %t38 = call ptr @fn_nreg() store ptr %t38, ptr %t39 - call void @fn_emit(ptr @.str933) + call void @fn_emit(ptr @.str936) %t40 = load ptr, ptr %t39 call void @fn_emit(ptr %t40) - call void @fn_emit(ptr @.str934) + call void @fn_emit(ptr @.str937) %t41 = load ptr, ptr %t5 %t42 = getelementptr inbounds %Cmp_Val, ptr %t41, i32 0, i32 1 %t43 = load ptr, ptr %t42 %t44 = call ptr @fn_layout_ty(ptr %t43) call void @fn_emit(ptr %t44) - call void @fn_emit(ptr @.str935) + call void @fn_emit(ptr @.str938) %t45 = load ptr, ptr %t5 %t46 = getelementptr inbounds %Cmp_Val, ptr %t45, i32 0, i32 0 %t47 = load ptr, ptr %t46 call void @fn_emit(ptr %t47) - call void @fn_emit(ptr @.str936) + call void @fn_emit(ptr @.str939) %t48 = load i32, ptr %t24 %t49 = call ptr @fn_itoa(i32 %t48) call void @fn_emit(ptr %t49) - call void @fn_emit(ptr @.str937) + call void @fn_emit(ptr @.str940) %t50 = load ptr, ptr %t39 store ptr %t50, ptr %retval br label %ret @@ -33542,22 +33595,22 @@ then0: %t18 = load ptr, ptr %t5 %t19 = getelementptr inbounds %Cmp_Val, ptr %t18, i32 0, i32 1 %t20 = load ptr, ptr %t19 - %t21 = call i32 @lp_str_eq(ptr %t20, ptr @.str938) + %t21 = call i32 @lp_str_eq(ptr %t20, ptr @.str941) %t22 = icmp ne i32 %t21, 0 br i1 %t22, label %then3, label %ifend5 then3: %t23 = load ptr, ptr %t5 %t24 = getelementptr inbounds %Cmp_Val, ptr %t23, i32 0, i32 0 %t25 = load ptr, ptr %t24 - %t26 = call ptr @lp_str_concat(ptr @.str939, ptr %t25) - %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str940) + %t26 = call ptr @lp_str_concat(ptr @.str942, ptr %t25) + %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str943) %t28 = load ptr, ptr %t17 %t29 = getelementptr inbounds %Cmp_Val, ptr %t28, i32 0, i32 0 %t30 = load ptr, ptr %t29 %t31 = call ptr @lp_str_concat(ptr %t27, ptr %t30) %t32 = call ptr @fn_emit_bind(ptr %t31) store ptr %t32, ptr %t33 - store ptr @.str941, ptr @g_g_addr_ty + store ptr @.str944, ptr @g_g_addr_ty %t34 = load ptr, ptr %t33 store ptr %t34, ptr %retval br label %ret @@ -33565,22 +33618,22 @@ ifend5: %t35 = load ptr, ptr %t5 %t36 = getelementptr inbounds %Cmp_Val, ptr %t35, i32 0, i32 1 %t37 = load ptr, ptr %t36 - %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str942) + %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str945) %t39 = icmp ne i32 %t38, 0 br i1 %t39, label %then6, label %ifend8 then6: %t40 = load ptr, ptr %t5 %t41 = getelementptr inbounds %Cmp_Val, ptr %t40, i32 0, i32 0 %t42 = load ptr, ptr %t41 - %t43 = call ptr @lp_str_concat(ptr @.str943, ptr %t42) - %t44 = call ptr @lp_str_concat(ptr %t43, ptr @.str944) + %t43 = call ptr @lp_str_concat(ptr @.str946, ptr %t42) + %t44 = call ptr @lp_str_concat(ptr %t43, ptr @.str947) %t45 = load ptr, ptr %t17 %t46 = getelementptr inbounds %Cmp_Val, ptr %t45, i32 0, i32 0 %t47 = load ptr, ptr %t46 %t48 = call ptr @lp_str_concat(ptr %t44, ptr %t47) %t49 = call ptr @fn_emit_bind(ptr %t48) store ptr %t49, ptr %t50 - store ptr @.str945, ptr @g_g_addr_ty + store ptr @.str948, ptr @g_g_addr_ty %t51 = load ptr, ptr %t50 store ptr %t51, ptr %retval br label %ret @@ -33588,22 +33641,22 @@ ifend8: %t52 = load ptr, ptr %t5 %t53 = getelementptr inbounds %Cmp_Val, ptr %t52, i32 0, i32 1 %t54 = load ptr, ptr %t53 - %t55 = call i32 @lp_str_eq(ptr %t54, ptr @.str946) + %t55 = call i32 @lp_str_eq(ptr %t54, ptr @.str949) %t56 = icmp ne i32 %t55, 0 br i1 %t56, label %then9, label %ifend11 then9: %t57 = load ptr, ptr %t5 %t58 = getelementptr inbounds %Cmp_Val, ptr %t57, i32 0, i32 0 %t59 = load ptr, ptr %t58 - %t60 = call ptr @lp_str_concat(ptr @.str947, ptr %t59) - %t61 = call ptr @lp_str_concat(ptr %t60, ptr @.str948) + %t60 = call ptr @lp_str_concat(ptr @.str950, ptr %t59) + %t61 = call ptr @lp_str_concat(ptr %t60, ptr @.str951) %t62 = load ptr, ptr %t17 %t63 = getelementptr inbounds %Cmp_Val, ptr %t62, i32 0, i32 0 %t64 = load ptr, ptr %t63 %t65 = call ptr @lp_str_concat(ptr %t61, ptr %t64) %t66 = call ptr @fn_emit_bind(ptr %t65) store ptr %t66, ptr %t67 - store ptr @.str949, ptr @g_g_addr_ty + store ptr @.str952, ptr @g_g_addr_ty %t68 = load ptr, ptr %t67 store ptr %t68, ptr %retval br label %ret @@ -33611,15 +33664,15 @@ ifend11: %t69 = load ptr, ptr %t5 %t70 = getelementptr inbounds %Cmp_Val, ptr %t69, i32 0, i32 0 %t71 = load ptr, ptr %t70 - %t72 = call ptr @lp_str_concat(ptr @.str950, ptr %t71) - %t73 = call ptr @lp_str_concat(ptr %t72, ptr @.str951) + %t72 = call ptr @lp_str_concat(ptr @.str953, ptr %t71) + %t73 = call ptr @lp_str_concat(ptr %t72, ptr @.str954) %t74 = load ptr, ptr %t17 %t75 = getelementptr inbounds %Cmp_Val, ptr %t74, i32 0, i32 0 %t76 = load ptr, ptr %t75 %t77 = call ptr @lp_str_concat(ptr %t73, ptr %t76) %t78 = call ptr @fn_emit_bind(ptr %t77) store ptr %t78, ptr %t79 - store ptr @.str952, ptr @g_g_addr_ty + store ptr @.str955, ptr @g_g_addr_ty %t80 = load ptr, ptr %t79 store ptr %t80, ptr %retval br label %ret @@ -33631,24 +33684,24 @@ ifend2: store ptr %t84, ptr %t85 %t86 = call ptr @fn_nreg() store ptr %t86, ptr %t87 - call void @fn_emit(ptr @.str953) + call void @fn_emit(ptr @.str956) %t88 = load ptr, ptr %t87 call void @fn_emit(ptr %t88) - call void @fn_emit(ptr @.str954) + call void @fn_emit(ptr @.str957) %t89 = load ptr, ptr %t5 %t90 = getelementptr inbounds %Cmp_Val, ptr %t89, i32 0, i32 0 %t91 = load ptr, ptr %t90 call void @fn_emit(ptr %t91) - call void @fn_emit(ptr @.str955) + call void @fn_emit(ptr @.str958) %t92 = call ptr @fn_nreg() store ptr %t92, ptr %t93 - call void @fn_emit(ptr @.str956) + call void @fn_emit(ptr @.str959) %t94 = load ptr, ptr %t93 call void @fn_emit(ptr %t94) - call void @fn_emit(ptr @.str957) + call void @fn_emit(ptr @.str960) %t95 = load ptr, ptr %t87 call void @fn_emit(ptr %t95) - call void @fn_emit(ptr @.str958) + call void @fn_emit(ptr @.str961) %t96 = load ptr, ptr %t0 %t97 = getelementptr inbounds %Cmp_Node, ptr %t96, i32 0, i32 5 %t98 = load ptr, ptr %t97 @@ -33656,22 +33709,22 @@ ifend2: store ptr %t99, ptr %t100 %t101 = call ptr @fn_nreg() store ptr %t101, ptr %t102 - call void @fn_emit(ptr @.str959) + call void @fn_emit(ptr @.str962) %t103 = load ptr, ptr %t102 call void @fn_emit(ptr %t103) - call void @fn_emit(ptr @.str960) + call void @fn_emit(ptr @.str963) %t104 = load ptr, ptr %t85 %t105 = call ptr @fn_llty(ptr %t104) call void @fn_emit(ptr %t105) - call void @fn_emit(ptr @.str961) + call void @fn_emit(ptr @.str964) %t106 = load ptr, ptr %t93 call void @fn_emit(ptr %t106) - call void @fn_emit(ptr @.str962) + call void @fn_emit(ptr @.str965) %t107 = load ptr, ptr %t100 %t108 = getelementptr inbounds %Cmp_Val, ptr %t107, i32 0, i32 0 %t109 = load ptr, ptr %t108 call void @fn_emit(ptr %t109) - call void @fn_emit(ptr @.str963) + call void @fn_emit(ptr @.str966) %t110 = load ptr, ptr %t85 store ptr %t110, ptr @g_g_addr_ty %t111 = load ptr, ptr %t102 @@ -33696,7 +33749,7 @@ entry: %t72 = alloca i32 store ptr %arg_name, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call i32 @lp_str_eq(ptr %t1, ptr @.str964) + %t2 = call i32 @lp_str_eq(ptr %t1, ptr @.str967) %t3 = icmp ne i32 %t2, 0 br i1 %t3, label %then0, label %ifend2 then0: @@ -33704,14 +33757,14 @@ then0: br label %ret ifend2: %t6 = load ptr, ptr %t0 - %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str965) + %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str968) %t8 = icmp ne i32 %t7, 0 %t9 = zext i1 %t8 to i32 store i32 %t9, ptr %t5 br i1 %t8, label %scend4, label %sc3 sc3: %t10 = load ptr, ptr %t0 - %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str966) + %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str969) %t12 = icmp ne i32 %t11, 0 %t13 = zext i1 %t12 to i32 store i32 %t13, ptr %t5 @@ -33724,7 +33777,7 @@ scend4: br i1 %t15, label %scend6, label %sc5 sc5: %t17 = load ptr, ptr %t0 - %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str967) + %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str970) %t19 = icmp ne i32 %t18, 0 %t20 = zext i1 %t19 to i32 store i32 %t20, ptr %t4 @@ -33738,14 +33791,14 @@ then7: br label %ret ifend9: %t25 = load ptr, ptr %t0 - %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str968) + %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str971) %t27 = icmp ne i32 %t26, 0 %t28 = zext i1 %t27 to i32 store i32 %t28, ptr %t24 br i1 %t27, label %scend11, label %sc10 sc10: %t29 = load ptr, ptr %t0 - %t30 = call i32 @lp_str_eq(ptr %t29, ptr @.str969) + %t30 = call i32 @lp_str_eq(ptr %t29, ptr @.str972) %t31 = icmp ne i32 %t30, 0 %t32 = zext i1 %t31 to i32 store i32 %t32, ptr %t24 @@ -33758,7 +33811,7 @@ scend11: br i1 %t34, label %scend13, label %sc12 sc12: %t36 = load ptr, ptr %t0 - %t37 = call i32 @lp_str_eq(ptr %t36, ptr @.str970) + %t37 = call i32 @lp_str_eq(ptr %t36, ptr @.str973) %t38 = icmp ne i32 %t37, 0 %t39 = zext i1 %t38 to i32 store i32 %t39, ptr %t23 @@ -33772,14 +33825,14 @@ then14: br label %ret ifend16: %t44 = load ptr, ptr %t0 - %t45 = call i32 @lp_str_eq(ptr %t44, ptr @.str971) + %t45 = call i32 @lp_str_eq(ptr %t44, ptr @.str974) %t46 = icmp ne i32 %t45, 0 %t47 = zext i1 %t46 to i32 store i32 %t47, ptr %t43 br i1 %t46, label %scend18, label %sc17 sc17: %t48 = load ptr, ptr %t0 - %t49 = call i32 @lp_str_eq(ptr %t48, ptr @.str972) + %t49 = call i32 @lp_str_eq(ptr %t48, ptr @.str975) %t50 = icmp ne i32 %t49, 0 %t51 = zext i1 %t50 to i32 store i32 %t51, ptr %t43 @@ -33792,7 +33845,7 @@ scend18: br i1 %t53, label %scend20, label %sc19 sc19: %t55 = load ptr, ptr %t0 - %t56 = call i32 @lp_str_eq(ptr %t55, ptr @.str973) + %t56 = call i32 @lp_str_eq(ptr %t55, ptr @.str976) %t57 = icmp ne i32 %t56, 0 %t58 = zext i1 %t57 to i32 store i32 %t58, ptr %t42 @@ -33806,14 +33859,14 @@ then21: br label %ret ifend23: %t62 = load ptr, ptr %t0 - %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str974) + %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str977) %t64 = icmp ne i32 %t63, 0 %t65 = zext i1 %t64 to i32 store i32 %t65, ptr %t61 br i1 %t64, label %scend25, label %sc24 sc24: %t66 = load ptr, ptr %t0 - %t67 = call i32 @lp_str_eq(ptr %t66, ptr @.str975) + %t67 = call i32 @lp_str_eq(ptr %t66, ptr @.str978) %t68 = icmp ne i32 %t67, 0 %t69 = zext i1 %t68 to i32 store i32 %t69, ptr %t61 @@ -33827,14 +33880,14 @@ then26: br label %ret ifend28: %t73 = load ptr, ptr %t0 - %t74 = call i32 @lp_str_eq(ptr %t73, ptr @.str976) + %t74 = call i32 @lp_str_eq(ptr %t73, ptr @.str979) %t75 = icmp ne i32 %t74, 0 %t76 = zext i1 %t75 to i32 store i32 %t76, ptr %t72 br i1 %t75, label %scend30, label %sc29 sc29: %t77 = load ptr, ptr %t0 - %t78 = call i32 @lp_str_eq(ptr %t77, ptr @.str977) + %t78 = call i32 @lp_str_eq(ptr %t77, ptr @.str980) %t79 = icmp ne i32 %t78, 0 %t80 = zext i1 %t79 to i32 store i32 %t80, ptr %t72 @@ -33848,7 +33901,7 @@ then31: br label %ret ifend33: %t83 = load ptr, ptr %t0 - %t84 = call i32 @lp_str_eq(ptr %t83, ptr @.str978) + %t84 = call i32 @lp_str_eq(ptr %t83, ptr @.str981) %t85 = icmp ne i32 %t84, 0 br i1 %t85, label %then34, label %ifend36 then34: @@ -33870,13 +33923,13 @@ entry: store ptr %arg_rest, ptr %t0 %t1 = call ptr @fn_nreg() store ptr %t1, ptr %t2 - call void @fn_emit(ptr @.str979) + call void @fn_emit(ptr @.str982) %t3 = load ptr, ptr %t2 call void @fn_emit(ptr %t3) - call void @fn_emit(ptr @.str980) + call void @fn_emit(ptr @.str983) %t4 = load ptr, ptr %t0 call void @fn_emit(ptr %t4) - call void @fn_emit(ptr @.str981) + call void @fn_emit(ptr @.str984) %t5 = load ptr, ptr %t2 store ptr %t5, ptr %retval br label %ret @@ -33948,7 +34001,7 @@ entry: store ptr %arg_e, ptr %t1 store i32 1, ptr @g_g_intrin_ok %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str982) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str985) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -33959,23 +34012,23 @@ then0: %t9 = call ptr @fn_arg_code(ptr %t8, i32 1) store ptr %t9, ptr %t10 %t11 = load ptr, ptr %t10 - %t12 = call ptr @lp_str_concat(ptr @.str983, ptr %t11) - %t13 = call ptr @lp_str_concat(ptr %t12, ptr @.str984) + %t12 = call ptr @lp_str_concat(ptr @.str986, ptr %t11) + %t13 = call ptr @lp_str_concat(ptr %t12, ptr @.str987) %t14 = call ptr @fn_emit_bind(ptr %t13) store ptr %t14, ptr %t15 %t16 = load ptr, ptr %t7 - %t17 = call ptr @lp_str_concat(ptr @.str985, ptr %t16) - %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str986) + %t17 = call ptr @lp_str_concat(ptr @.str988, ptr %t16) + %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str989) %t19 = load ptr, ptr %t15 %t20 = call ptr @lp_str_concat(ptr %t18, ptr %t19) - %t21 = call ptr @lp_str_concat(ptr %t20, ptr @.str987) + %t21 = call ptr @lp_str_concat(ptr %t20, ptr @.str990) %t22 = call ptr @fn_emit_bind(ptr %t21) - %t23 = call ptr @fn_val(ptr %t22, ptr @.str988) + %t23 = call ptr @fn_val(ptr %t22, ptr @.str991) store ptr %t23, ptr %retval br label %ret ifend2: %t24 = load ptr, ptr %t0 - %t25 = call i32 @lp_str_eq(ptr %t24, ptr @.str989) + %t25 = call i32 @lp_str_eq(ptr %t24, ptr @.str992) %t26 = icmp ne i32 %t25, 0 br i1 %t26, label %then3, label %ifend5 then3: @@ -33986,25 +34039,25 @@ then3: %t31 = call ptr @fn_arg_code(ptr %t30, i32 1) store ptr %t31, ptr %t32 %t33 = load ptr, ptr %t29 - %t34 = call ptr @lp_str_concat(ptr @.str990, ptr %t33) - %t35 = call ptr @lp_str_concat(ptr %t34, ptr @.str991) + %t34 = call ptr @lp_str_concat(ptr @.str993, ptr %t33) + %t35 = call ptr @lp_str_concat(ptr %t34, ptr @.str994) %t36 = load ptr, ptr %t32 %t37 = call ptr @lp_str_concat(ptr %t35, ptr %t36) - %t38 = call ptr @lp_str_concat(ptr %t37, ptr @.str992) + %t38 = call ptr @lp_str_concat(ptr %t37, ptr @.str995) %t39 = call ptr @fn_emit_bind(ptr %t38) - %t40 = call ptr @fn_val(ptr %t39, ptr @.str993) + %t40 = call ptr @fn_val(ptr %t39, ptr @.str996) store ptr %t40, ptr %retval br label %ret ifend5: %t42 = load ptr, ptr %t0 - %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str994) + %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str997) %t44 = icmp ne i32 %t43, 0 %t45 = zext i1 %t44 to i32 store i32 %t45, ptr %t41 br i1 %t44, label %scend7, label %sc6 sc6: %t46 = load ptr, ptr %t0 - %t47 = call i32 @lp_str_eq(ptr %t46, ptr @.str995) + %t47 = call i32 @lp_str_eq(ptr %t46, ptr @.str998) %t48 = icmp ne i32 %t47, 0 %t49 = zext i1 %t48 to i32 store i32 %t49, ptr %t41 @@ -34024,43 +34077,43 @@ then8: %t59 = call ptr @fn_arg_code(ptr %t58, i32 2) store ptr %t59, ptr %t60 %t61 = load ptr, ptr %t60 - %t62 = call ptr @lp_str_concat(ptr @.str996, ptr %t61) - %t63 = call ptr @lp_str_concat(ptr %t62, ptr @.str997) + %t62 = call ptr @lp_str_concat(ptr @.str999, ptr %t61) + %t63 = call ptr @lp_str_concat(ptr %t62, ptr @.str1000) %t64 = call ptr @fn_emit_bind(ptr %t63) store ptr %t64, ptr %t65 - store ptr @.str998, ptr %t66 + store ptr @.str1001, ptr %t66 %t67 = load ptr, ptr %t0 - %t68 = call i32 @lp_str_eq(ptr %t67, ptr @.str999) + %t68 = call i32 @lp_str_eq(ptr %t67, ptr @.str1002) %t69 = icmp ne i32 %t68, 0 br i1 %t69, label %then11, label %ifend13 then11: - store ptr @.str1000, ptr %t66 + store ptr @.str1003, ptr %t66 br label %ifend13 ifend13: %t70 = load ptr, ptr %t66 - %t71 = call ptr @lp_str_concat(ptr @.str1001, ptr %t70) - %t72 = call ptr @lp_str_concat(ptr %t71, ptr @.str1002) + %t71 = call ptr @lp_str_concat(ptr @.str1004, ptr %t70) + %t72 = call ptr @lp_str_concat(ptr %t71, ptr @.str1005) %t73 = load ptr, ptr %t57 %t74 = call ptr @lp_str_concat(ptr %t72, ptr %t73) - %t75 = call ptr @lp_str_concat(ptr %t74, ptr @.str1003) + %t75 = call ptr @lp_str_concat(ptr %t74, ptr @.str1006) %t76 = load ptr, ptr %t65 %t77 = call ptr @lp_str_concat(ptr %t75, ptr %t76) - %t78 = call ptr @lp_str_concat(ptr %t77, ptr @.str1004) + %t78 = call ptr @lp_str_concat(ptr %t77, ptr @.str1007) %t79 = load ptr, ptr %t54 %t80 = call ptr @lp_str_concat(ptr %t78, ptr %t79) - %t81 = call ptr @lp_str_concat(ptr %t80, ptr @.str1005) + %t81 = call ptr @lp_str_concat(ptr %t80, ptr @.str1008) %t82 = call ptr @fn_emit_bind(ptr %t81) store ptr %t82, ptr %t83 %t84 = load ptr, ptr %t83 - %t85 = call ptr @lp_str_concat(ptr @.str1006, ptr %t84) - %t86 = call ptr @lp_str_concat(ptr %t85, ptr @.str1007) + %t85 = call ptr @lp_str_concat(ptr @.str1009, ptr %t84) + %t86 = call ptr @lp_str_concat(ptr %t85, ptr @.str1010) %t87 = call ptr @fn_emit_bind(ptr %t86) - %t88 = call ptr @fn_val(ptr %t87, ptr @.str1008) + %t88 = call ptr @fn_val(ptr %t87, ptr @.str1011) store ptr %t88, ptr %retval br label %ret ifend10: %t89 = load ptr, ptr %t0 - %t90 = call i32 @lp_str_eq(ptr %t89, ptr @.str1009) + %t90 = call i32 @lp_str_eq(ptr %t89, ptr @.str1012) %t91 = icmp ne i32 %t90, 0 br i1 %t91, label %then14, label %ifend16 then14: @@ -34074,26 +34127,26 @@ then14: %t99 = call ptr @fn_arg_code(ptr %t98, i32 2) store ptr %t99, ptr %t100 %t101 = load ptr, ptr %t97 - %t102 = call ptr @lp_str_concat(ptr @.str1010, ptr %t101) - %t103 = call ptr @lp_str_concat(ptr %t102, ptr @.str1011) + %t102 = call ptr @lp_str_concat(ptr @.str1013, ptr %t101) + %t103 = call ptr @lp_str_concat(ptr %t102, ptr @.str1014) %t104 = call ptr @fn_emit_bind(ptr %t103) store ptr %t104, ptr %t105 %t106 = load ptr, ptr %t94 - %t107 = call ptr @lp_str_concat(ptr @.str1012, ptr %t106) - %t108 = call ptr @lp_str_concat(ptr %t107, ptr @.str1013) + %t107 = call ptr @lp_str_concat(ptr @.str1015, ptr %t106) + %t108 = call ptr @lp_str_concat(ptr %t107, ptr @.str1016) %t109 = load ptr, ptr %t105 %t110 = call ptr @lp_str_concat(ptr %t108, ptr %t109) - %t111 = call ptr @lp_str_concat(ptr %t110, ptr @.str1014) + %t111 = call ptr @lp_str_concat(ptr %t110, ptr @.str1017) %t112 = load ptr, ptr %t100 %t113 = call ptr @lp_str_concat(ptr %t111, ptr %t112) - %t114 = call ptr @lp_str_concat(ptr %t113, ptr @.str1015) + %t114 = call ptr @lp_str_concat(ptr %t113, ptr @.str1018) %t115 = call ptr @fn_emit_bind(ptr %t114) - %t116 = call ptr @fn_val(ptr %t115, ptr @.str1016) + %t116 = call ptr @fn_val(ptr %t115, ptr @.str1019) store ptr %t116, ptr %retval br label %ret ifend16: %t117 = load ptr, ptr %t0 - %t118 = call i32 @lp_str_eq(ptr %t117, ptr @.str1017) + %t118 = call i32 @lp_str_eq(ptr %t117, ptr @.str1020) %t119 = icmp ne i32 %t118, 0 br i1 %t119, label %then17, label %ifend19 then17: @@ -34101,36 +34154,36 @@ then17: %t121 = call ptr @fn_arg_code(ptr %t120, i32 0) store ptr %t121, ptr %t122 %t123 = load ptr, ptr %t122 - %t124 = call ptr @lp_str_concat(ptr @.str1018, ptr %t123) - %t125 = call ptr @lp_str_concat(ptr %t124, ptr @.str1019) + %t124 = call ptr @lp_str_concat(ptr @.str1021, ptr %t123) + %t125 = call ptr @lp_str_concat(ptr %t124, ptr @.str1022) %t126 = call ptr @fn_emit_bind(ptr %t125) store ptr %t126, ptr %t127 %t128 = load ptr, ptr %t127 - %t129 = call ptr @lp_str_concat(ptr @.str1020, ptr %t128) - %t130 = call ptr @lp_str_concat(ptr %t129, ptr @.str1021) + %t129 = call ptr @lp_str_concat(ptr @.str1023, ptr %t128) + %t130 = call ptr @lp_str_concat(ptr %t129, ptr @.str1024) %t131 = call ptr @fn_emit_bind(ptr %t130) - %t132 = call ptr @fn_val(ptr %t131, ptr @.str1022) + %t132 = call ptr @fn_val(ptr %t131, ptr @.str1025) store ptr %t132, ptr %retval br label %ret ifend19: %t133 = load ptr, ptr %t0 - %t134 = call i32 @lp_str_eq(ptr %t133, ptr @.str1023) + %t134 = call i32 @lp_str_eq(ptr %t133, ptr @.str1026) %t135 = icmp ne i32 %t134, 0 br i1 %t135, label %then20, label %ifend22 then20: %t136 = load ptr, ptr %t1 %t137 = call ptr @fn_arg_code(ptr %t136, i32 0) store ptr %t137, ptr %t138 - call void @fn_emit(ptr @.str1024) + call void @fn_emit(ptr @.str1027) %t139 = load ptr, ptr %t138 call void @fn_emit(ptr %t139) - call void @fn_emit(ptr @.str1025) - %t140 = call ptr @fn_val(ptr @.str1026, ptr @.str1027) + call void @fn_emit(ptr @.str1028) + %t140 = call ptr @fn_val(ptr @.str1029, ptr @.str1030) store ptr %t140, ptr %retval br label %ret ifend22: %t141 = load ptr, ptr %t0 - %t142 = call i32 @lp_str_eq(ptr %t141, ptr @.str1028) + %t142 = call i32 @lp_str_eq(ptr %t141, ptr @.str1031) %t143 = icmp ne i32 %t142, 0 br i1 %t143, label %then23, label %ifend25 then23: @@ -34138,88 +34191,88 @@ then23: %t144 = load ptr, ptr %t1 %t145 = call ptr @fn_arg_code(ptr %t144, i32 0) store ptr %t145, ptr %t146 - call void @fn_emit(ptr @.str1029) + call void @fn_emit(ptr @.str1032) %t147 = load ptr, ptr %t146 call void @fn_emit(ptr %t147) - call void @fn_emit(ptr @.str1030) - %t148 = call ptr @fn_val(ptr @.str1031, ptr @.str1032) + call void @fn_emit(ptr @.str1033) + %t148 = call ptr @fn_val(ptr @.str1034, ptr @.str1035) store ptr %t148, ptr %retval br label %ret ifend25: %t149 = load ptr, ptr %t0 - %t150 = call i32 @lp_str_eq(ptr %t149, ptr @.str1033) + %t150 = call i32 @lp_str_eq(ptr %t149, ptr @.str1036) %t151 = icmp ne i32 %t150, 0 br i1 %t151, label %then26, label %ifend28 then26: - %t152 = call ptr @fn_emit_bind(ptr @.str1034) - %t153 = call ptr @fn_val(ptr %t152, ptr @.str1035) + %t152 = call ptr @fn_emit_bind(ptr @.str1037) + %t153 = call ptr @fn_val(ptr %t152, ptr @.str1038) store ptr %t153, ptr %retval br label %ret ifend28: %t154 = load ptr, ptr %t0 - %t155 = call i32 @lp_str_eq(ptr %t154, ptr @.str1036) + %t155 = call i32 @lp_str_eq(ptr %t154, ptr @.str1039) %t156 = icmp ne i32 %t155, 0 br i1 %t156, label %then29, label %ifend31 then29: %t157 = load ptr, ptr %t1 %t158 = call ptr @fn_arg_code(ptr %t157, i32 0) store ptr %t158, ptr %t159 - %t160 = call ptr @fn_emit_bind(ptr @.str1037) + %t160 = call ptr @fn_emit_bind(ptr @.str1040) store ptr %t160, ptr %t161 %t162 = load ptr, ptr %t161 - %t163 = call ptr @lp_str_concat(ptr @.str1038, ptr %t162) - %t164 = call ptr @lp_str_concat(ptr %t163, ptr @.str1039) + %t163 = call ptr @lp_str_concat(ptr @.str1041, ptr %t162) + %t164 = call ptr @lp_str_concat(ptr %t163, ptr @.str1042) %t165 = load ptr, ptr %t159 %t166 = call ptr @lp_str_concat(ptr %t164, ptr %t165) %t167 = call ptr @fn_emit_bind(ptr %t166) store ptr %t167, ptr %t168 %t169 = load ptr, ptr %t168 - %t170 = call ptr @lp_str_concat(ptr @.str1040, ptr %t169) + %t170 = call ptr @lp_str_concat(ptr @.str1043, ptr %t169) %t171 = call ptr @fn_emit_bind(ptr %t170) - %t172 = call ptr @fn_val(ptr %t171, ptr @.str1041) + %t172 = call ptr @fn_val(ptr %t171, ptr @.str1044) store ptr %t172, ptr %retval br label %ret ifend31: %t173 = load ptr, ptr %t0 - %t174 = call i32 @lp_str_eq(ptr %t173, ptr @.str1042) + %t174 = call i32 @lp_str_eq(ptr %t173, ptr @.str1045) %t175 = icmp ne i32 %t174, 0 br i1 %t175, label %then32, label %ifend34 then32: %t176 = load ptr, ptr %t1 %t177 = call ptr @fn_arg_code(ptr %t176, i32 0) store ptr %t177, ptr %t178 - call void @fn_emit(ptr @.str1043) + call void @fn_emit(ptr @.str1046) %t179 = load ptr, ptr %t178 call void @fn_emit(ptr %t179) - call void @fn_emit(ptr @.str1044) - call void @fn_emit(ptr @.str1045) + call void @fn_emit(ptr @.str1047) + call void @fn_emit(ptr @.str1048) store i32 1, ptr @g_g_term - %t180 = call ptr @fn_val(ptr @.str1046, ptr @.str1047) + %t180 = call ptr @fn_val(ptr @.str1049, ptr @.str1050) store ptr %t180, ptr %retval br label %ret ifend34: %t181 = load ptr, ptr %t0 - %t182 = call i32 @lp_str_eq(ptr %t181, ptr @.str1048) + %t182 = call i32 @lp_str_eq(ptr %t181, ptr @.str1051) %t183 = icmp ne i32 %t182, 0 br i1 %t183, label %then35, label %ifend37 then35: - %t184 = call ptr @fn_emit_bind(ptr @.str1049) - %t185 = call ptr @fn_val(ptr %t184, ptr @.str1050) + %t184 = call ptr @fn_emit_bind(ptr @.str1052) + %t185 = call ptr @fn_val(ptr %t184, ptr @.str1053) store ptr %t185, ptr %retval br label %ret ifend37: %t186 = load ptr, ptr %t0 - %t187 = call i32 @lp_str_eq(ptr %t186, ptr @.str1051) + %t187 = call i32 @lp_str_eq(ptr %t186, ptr @.str1054) %t188 = icmp ne i32 %t187, 0 br i1 %t188, label %then38, label %ifend40 then38: - %t189 = call ptr @fn_emit_bind(ptr @.str1052) - %t190 = call ptr @fn_val(ptr %t189, ptr @.str1053) + %t189 = call ptr @fn_emit_bind(ptr @.str1055) + %t190 = call ptr @fn_val(ptr %t189, ptr @.str1056) store ptr %t190, ptr %retval br label %ret ifend40: %t191 = load ptr, ptr %t0 - %t192 = call i32 @lp_str_eq(ptr %t191, ptr @.str1054) + %t192 = call i32 @lp_str_eq(ptr %t191, ptr @.str1057) %t193 = icmp ne i32 %t192, 0 br i1 %t193, label %then41, label %ifend43 then41: @@ -34227,15 +34280,15 @@ then41: %t195 = call ptr @fn_arg_code(ptr %t194, i32 0) store ptr %t195, ptr %t196 %t197 = load ptr, ptr %t196 - %t198 = call ptr @lp_str_concat(ptr @.str1055, ptr %t197) - %t199 = call ptr @lp_str_concat(ptr %t198, ptr @.str1056) + %t198 = call ptr @lp_str_concat(ptr @.str1058, ptr %t197) + %t199 = call ptr @lp_str_concat(ptr %t198, ptr @.str1059) %t200 = call ptr @fn_emit_bind(ptr %t199) - %t201 = call ptr @fn_val(ptr %t200, ptr @.str1057) + %t201 = call ptr @fn_val(ptr %t200, ptr @.str1060) store ptr %t201, ptr %retval br label %ret ifend43: %t202 = load ptr, ptr %t0 - %t203 = call i32 @lp_str_eq(ptr %t202, ptr @.str1058) + %t203 = call i32 @lp_str_eq(ptr %t202, ptr @.str1061) %t204 = icmp ne i32 %t203, 0 br i1 %t204, label %then44, label %ifend46 then44: @@ -34243,15 +34296,15 @@ then44: %t206 = call ptr @fn_arg_code(ptr %t205, i32 0) store ptr %t206, ptr %t207 %t208 = load ptr, ptr %t207 - %t209 = call ptr @lp_str_concat(ptr @.str1059, ptr %t208) - %t210 = call ptr @lp_str_concat(ptr %t209, ptr @.str1060) + %t209 = call ptr @lp_str_concat(ptr @.str1062, ptr %t208) + %t210 = call ptr @lp_str_concat(ptr %t209, ptr @.str1063) %t211 = call ptr @fn_emit_bind(ptr %t210) - %t212 = call ptr @fn_val(ptr %t211, ptr @.str1061) + %t212 = call ptr @fn_val(ptr %t211, ptr @.str1064) store ptr %t212, ptr %retval br label %ret ifend46: store i32 0, ptr @g_g_intrin_ok - %t213 = call ptr @fn_val(ptr @.str1062, ptr @.str1063) + %t213 = call ptr @fn_val(ptr @.str1065, ptr @.str1066) store ptr %t213, ptr %retval br label %ret ret: @@ -34285,14 +34338,14 @@ entry: %t185 = alloca i32 store ptr %arg_name, ptr %t0 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str1064) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str1067) %t4 = icmp ne i32 %t3, 0 %t5 = zext i1 %t4 to i32 store i32 %t5, ptr %t1 br i1 %t4, label %scend1, label %sc0 sc0: %t6 = load ptr, ptr %t0 - %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str1065) + %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str1068) %t8 = icmp ne i32 %t7, 0 %t9 = zext i1 %t8 to i32 store i32 %t9, ptr %t1 @@ -34306,14 +34359,14 @@ then2: br label %ret ifend4: %t13 = load ptr, ptr %t0 - %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str1066) + %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str1069) %t15 = icmp ne i32 %t14, 0 %t16 = zext i1 %t15 to i32 store i32 %t16, ptr %t12 br i1 %t15, label %scend6, label %sc5 sc5: %t17 = load ptr, ptr %t0 - %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str1067) + %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str1070) %t19 = icmp ne i32 %t18, 0 %t20 = zext i1 %t19 to i32 store i32 %t20, ptr %t12 @@ -34327,14 +34380,14 @@ then7: br label %ret ifend9: %t24 = load ptr, ptr %t0 - %t25 = call i32 @lp_str_eq(ptr %t24, ptr @.str1068) + %t25 = call i32 @lp_str_eq(ptr %t24, ptr @.str1071) %t26 = icmp ne i32 %t25, 0 %t27 = zext i1 %t26 to i32 store i32 %t27, ptr %t23 br i1 %t26, label %scend11, label %sc10 sc10: %t28 = load ptr, ptr %t0 - %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str1069) + %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str1072) %t30 = icmp ne i32 %t29, 0 %t31 = zext i1 %t30 to i32 store i32 %t31, ptr %t23 @@ -34348,14 +34401,14 @@ then12: br label %ret ifend14: %t35 = load ptr, ptr %t0 - %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str1070) + %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str1073) %t37 = icmp ne i32 %t36, 0 %t38 = zext i1 %t37 to i32 store i32 %t38, ptr %t34 br i1 %t37, label %scend16, label %sc15 sc15: %t39 = load ptr, ptr %t0 - %t40 = call i32 @lp_str_eq(ptr %t39, ptr @.str1071) + %t40 = call i32 @lp_str_eq(ptr %t39, ptr @.str1074) %t41 = icmp ne i32 %t40, 0 %t42 = zext i1 %t41 to i32 store i32 %t42, ptr %t34 @@ -34369,14 +34422,14 @@ then17: br label %ret ifend19: %t47 = load ptr, ptr %t0 - %t48 = call i32 @lp_str_eq(ptr %t47, ptr @.str1072) + %t48 = call i32 @lp_str_eq(ptr %t47, ptr @.str1075) %t49 = icmp ne i32 %t48, 0 %t50 = zext i1 %t49 to i32 store i32 %t50, ptr %t46 br i1 %t49, label %scend21, label %sc20 sc20: %t51 = load ptr, ptr %t0 - %t52 = call i32 @lp_str_eq(ptr %t51, ptr @.str1073) + %t52 = call i32 @lp_str_eq(ptr %t51, ptr @.str1076) %t53 = icmp ne i32 %t52, 0 %t54 = zext i1 %t53 to i32 store i32 %t54, ptr %t46 @@ -34389,7 +34442,7 @@ scend21: br i1 %t56, label %scend23, label %sc22 sc22: %t58 = load ptr, ptr %t0 - %t59 = call i32 @lp_str_eq(ptr %t58, ptr @.str1074) + %t59 = call i32 @lp_str_eq(ptr %t58, ptr @.str1077) %t60 = icmp ne i32 %t59, 0 %t61 = zext i1 %t60 to i32 store i32 %t61, ptr %t45 @@ -34403,14 +34456,14 @@ then24: br label %ret ifend26: %t65 = load ptr, ptr %t0 - %t66 = call i32 @lp_str_eq(ptr %t65, ptr @.str1075) + %t66 = call i32 @lp_str_eq(ptr %t65, ptr @.str1078) %t67 = icmp ne i32 %t66, 0 %t68 = zext i1 %t67 to i32 store i32 %t68, ptr %t64 br i1 %t67, label %scend28, label %sc27 sc27: %t69 = load ptr, ptr %t0 - %t70 = call i32 @lp_str_eq(ptr %t69, ptr @.str1076) + %t70 = call i32 @lp_str_eq(ptr %t69, ptr @.str1079) %t71 = icmp ne i32 %t70, 0 %t72 = zext i1 %t71 to i32 store i32 %t72, ptr %t64 @@ -34424,14 +34477,14 @@ then29: br label %ret ifend31: %t76 = load ptr, ptr %t0 - %t77 = call i32 @lp_str_eq(ptr %t76, ptr @.str1077) + %t77 = call i32 @lp_str_eq(ptr %t76, ptr @.str1080) %t78 = icmp ne i32 %t77, 0 %t79 = zext i1 %t78 to i32 store i32 %t79, ptr %t75 br i1 %t78, label %scend33, label %sc32 sc32: %t80 = load ptr, ptr %t0 - %t81 = call i32 @lp_str_eq(ptr %t80, ptr @.str1078) + %t81 = call i32 @lp_str_eq(ptr %t80, ptr @.str1081) %t82 = icmp ne i32 %t81, 0 %t83 = zext i1 %t82 to i32 store i32 %t83, ptr %t75 @@ -34445,14 +34498,14 @@ then34: br label %ret ifend36: %t87 = load ptr, ptr %t0 - %t88 = call i32 @lp_str_eq(ptr %t87, ptr @.str1079) + %t88 = call i32 @lp_str_eq(ptr %t87, ptr @.str1082) %t89 = icmp ne i32 %t88, 0 %t90 = zext i1 %t89 to i32 store i32 %t90, ptr %t86 br i1 %t89, label %scend38, label %sc37 sc37: %t91 = load ptr, ptr %t0 - %t92 = call i32 @lp_str_eq(ptr %t91, ptr @.str1080) + %t92 = call i32 @lp_str_eq(ptr %t91, ptr @.str1083) %t93 = icmp ne i32 %t92, 0 %t94 = zext i1 %t93 to i32 store i32 %t94, ptr %t86 @@ -34466,7 +34519,7 @@ then39: br label %ret ifend41: %t97 = load ptr, ptr %t0 - %t98 = call i32 @lp_str_eq(ptr %t97, ptr @.str1081) + %t98 = call i32 @lp_str_eq(ptr %t97, ptr @.str1084) %t99 = icmp ne i32 %t98, 0 br i1 %t99, label %then42, label %ifend44 then42: @@ -34474,14 +34527,14 @@ then42: br label %ret ifend44: %t102 = load ptr, ptr %t0 - %t103 = call i32 @lp_str_eq(ptr %t102, ptr @.str1082) + %t103 = call i32 @lp_str_eq(ptr %t102, ptr @.str1085) %t104 = icmp ne i32 %t103, 0 %t105 = zext i1 %t104 to i32 store i32 %t105, ptr %t101 br i1 %t104, label %scend46, label %sc45 sc45: %t106 = load ptr, ptr %t0 - %t107 = call i32 @lp_str_eq(ptr %t106, ptr @.str1083) + %t107 = call i32 @lp_str_eq(ptr %t106, ptr @.str1086) %t108 = icmp ne i32 %t107, 0 %t109 = zext i1 %t108 to i32 store i32 %t109, ptr %t101 @@ -34494,7 +34547,7 @@ scend46: br i1 %t111, label %scend48, label %sc47 sc47: %t113 = load ptr, ptr %t0 - %t114 = call i32 @lp_str_eq(ptr %t113, ptr @.str1084) + %t114 = call i32 @lp_str_eq(ptr %t113, ptr @.str1087) %t115 = icmp ne i32 %t114, 0 %t116 = zext i1 %t115 to i32 store i32 %t116, ptr %t100 @@ -34508,14 +34561,14 @@ then49: br label %ret ifend51: %t121 = load ptr, ptr %t0 - %t122 = call i32 @lp_str_eq(ptr %t121, ptr @.str1085) + %t122 = call i32 @lp_str_eq(ptr %t121, ptr @.str1088) %t123 = icmp ne i32 %t122, 0 %t124 = zext i1 %t123 to i32 store i32 %t124, ptr %t120 br i1 %t123, label %scend53, label %sc52 sc52: %t125 = load ptr, ptr %t0 - %t126 = call i32 @lp_str_eq(ptr %t125, ptr @.str1086) + %t126 = call i32 @lp_str_eq(ptr %t125, ptr @.str1089) %t127 = icmp ne i32 %t126, 0 %t128 = zext i1 %t127 to i32 store i32 %t128, ptr %t120 @@ -34528,7 +34581,7 @@ scend53: br i1 %t130, label %scend55, label %sc54 sc54: %t132 = load ptr, ptr %t0 - %t133 = call i32 @lp_str_eq(ptr %t132, ptr @.str1087) + %t133 = call i32 @lp_str_eq(ptr %t132, ptr @.str1090) %t134 = icmp ne i32 %t133, 0 %t135 = zext i1 %t134 to i32 store i32 %t135, ptr %t119 @@ -34542,14 +34595,14 @@ then56: br label %ret ifend58: %t140 = load ptr, ptr %t0 - %t141 = call i32 @lp_str_eq(ptr %t140, ptr @.str1088) + %t141 = call i32 @lp_str_eq(ptr %t140, ptr @.str1091) %t142 = icmp ne i32 %t141, 0 %t143 = zext i1 %t142 to i32 store i32 %t143, ptr %t139 br i1 %t142, label %scend60, label %sc59 sc59: %t144 = load ptr, ptr %t0 - %t145 = call i32 @lp_str_eq(ptr %t144, ptr @.str1089) + %t145 = call i32 @lp_str_eq(ptr %t144, ptr @.str1092) %t146 = icmp ne i32 %t145, 0 %t147 = zext i1 %t146 to i32 store i32 %t147, ptr %t139 @@ -34562,7 +34615,7 @@ scend60: br i1 %t149, label %scend62, label %sc61 sc61: %t151 = load ptr, ptr %t0 - %t152 = call i32 @lp_str_eq(ptr %t151, ptr @.str1090) + %t152 = call i32 @lp_str_eq(ptr %t151, ptr @.str1093) %t153 = icmp ne i32 %t152, 0 %t154 = zext i1 %t153 to i32 store i32 %t154, ptr %t138 @@ -34576,14 +34629,14 @@ then63: br label %ret ifend65: %t160 = load ptr, ptr %t0 - %t161 = call i32 @lp_str_eq(ptr %t160, ptr @.str1091) + %t161 = call i32 @lp_str_eq(ptr %t160, ptr @.str1094) %t162 = icmp ne i32 %t161, 0 %t163 = zext i1 %t162 to i32 store i32 %t163, ptr %t159 br i1 %t162, label %scend67, label %sc66 sc66: %t164 = load ptr, ptr %t0 - %t165 = call i32 @lp_str_eq(ptr %t164, ptr @.str1092) + %t165 = call i32 @lp_str_eq(ptr %t164, ptr @.str1095) %t166 = icmp ne i32 %t165, 0 %t167 = zext i1 %t166 to i32 store i32 %t167, ptr %t159 @@ -34596,7 +34649,7 @@ scend67: br i1 %t169, label %scend69, label %sc68 sc68: %t171 = load ptr, ptr %t0 - %t172 = call i32 @lp_str_eq(ptr %t171, ptr @.str1093) + %t172 = call i32 @lp_str_eq(ptr %t171, ptr @.str1096) %t173 = icmp ne i32 %t172, 0 %t174 = zext i1 %t173 to i32 store i32 %t174, ptr %t158 @@ -34609,7 +34662,7 @@ scend69: br i1 %t176, label %scend71, label %sc70 sc70: %t178 = load ptr, ptr %t0 - %t179 = call i32 @lp_str_eq(ptr %t178, ptr @.str1094) + %t179 = call i32 @lp_str_eq(ptr %t178, ptr @.str1097) %t180 = icmp ne i32 %t179, 0 %t181 = zext i1 %t180 to i32 store i32 %t181, ptr %t157 @@ -34623,14 +34676,14 @@ then72: br label %ret ifend74: %t186 = load ptr, ptr %t0 - %t187 = call i32 @lp_str_eq(ptr %t186, ptr @.str1095) + %t187 = call i32 @lp_str_eq(ptr %t186, ptr @.str1098) %t188 = icmp ne i32 %t187, 0 %t189 = zext i1 %t188 to i32 store i32 %t189, ptr %t185 br i1 %t188, label %scend76, label %sc75 sc75: %t190 = load ptr, ptr %t0 - %t191 = call i32 @lp_str_eq(ptr %t190, ptr @.str1096) + %t191 = call i32 @lp_str_eq(ptr %t190, ptr @.str1099) %t192 = icmp ne i32 %t191, 0 %t193 = zext i1 %t192 to i32 store i32 %t193, ptr %t185 @@ -34643,7 +34696,7 @@ scend76: br i1 %t195, label %scend78, label %sc77 sc77: %t197 = load ptr, ptr %t0 - %t198 = call i32 @lp_str_eq(ptr %t197, ptr @.str1097) + %t198 = call i32 @lp_str_eq(ptr %t197, ptr @.str1100) %t199 = icmp ne i32 %t198, 0 %t200 = zext i1 %t199 to i32 store i32 %t200, ptr %t184 @@ -34721,23 +34774,23 @@ entry: store ptr %arg_name, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str1098) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str1101) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: %t5 = load ptr, ptr %t1 %t6 = call ptr @fn_arg_code(ptr %t5, i32 0) store ptr %t6, ptr %t7 - call void @fn_emit(ptr @.str1099) + call void @fn_emit(ptr @.str1102) %t8 = load ptr, ptr %t7 call void @fn_emit(ptr %t8) - call void @fn_emit(ptr @.str1100) - %t9 = call ptr @fn_val(ptr @.str1101, ptr @.str1102) + call void @fn_emit(ptr @.str1103) + %t9 = call ptr @fn_val(ptr @.str1104, ptr @.str1105) store ptr %t9, ptr %retval br label %ret ifend2: %t10 = load ptr, ptr %t0 - %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str1103) + %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str1106) %t12 = icmp ne i32 %t11, 0 br i1 %t12, label %then3, label %ifend5 then3: @@ -34751,26 +34804,26 @@ then3: %t20 = call ptr @fn_arg_code(ptr %t19, i32 2) store ptr %t20, ptr %t21 %t22 = load ptr, ptr %t21 - %t23 = call ptr @lp_str_concat(ptr @.str1104, ptr %t22) - %t24 = call ptr @lp_str_concat(ptr %t23, ptr @.str1105) + %t23 = call ptr @lp_str_concat(ptr @.str1107, ptr %t22) + %t24 = call ptr @lp_str_concat(ptr %t23, ptr @.str1108) %t25 = call ptr @fn_emit_bind(ptr %t24) store ptr %t25, ptr %t26 - call void @fn_emit(ptr @.str1106) + call void @fn_emit(ptr @.str1109) %t27 = load ptr, ptr %t15 call void @fn_emit(ptr %t27) - call void @fn_emit(ptr @.str1107) + call void @fn_emit(ptr @.str1110) %t28 = load ptr, ptr %t18 call void @fn_emit(ptr %t28) - call void @fn_emit(ptr @.str1108) + call void @fn_emit(ptr @.str1111) %t29 = load ptr, ptr %t26 call void @fn_emit(ptr %t29) - call void @fn_emit(ptr @.str1109) - %t30 = call ptr @fn_val(ptr @.str1110, ptr @.str1111) + call void @fn_emit(ptr @.str1112) + %t30 = call ptr @fn_val(ptr @.str1113, ptr @.str1114) store ptr %t30, ptr %retval br label %ret ifend5: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str1112) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str1115) %t33 = icmp ne i32 %t32, 0 br i1 %t33, label %then6, label %ifend8 then6: @@ -34782,33 +34835,33 @@ then6: store ptr %t38, ptr %t39 %t40 = call ptr @fn_nreg() store ptr %t40, ptr %t41 - call void @fn_emit(ptr @.str1113) + call void @fn_emit(ptr @.str1116) %t42 = load ptr, ptr %t41 call void @fn_emit(ptr %t42) - call void @fn_emit(ptr @.str1114) + call void @fn_emit(ptr @.str1117) %t43 = load ptr, ptr %t36 call void @fn_emit(ptr %t43) - call void @fn_emit(ptr @.str1115) + call void @fn_emit(ptr @.str1118) %t44 = load ptr, ptr %t39 call void @fn_emit(ptr %t44) - call void @fn_emit(ptr @.str1116) + call void @fn_emit(ptr @.str1119) %t45 = load ptr, ptr %t41 - %t46 = call ptr @fn_val(ptr %t45, ptr @.str1117) + %t46 = call ptr @fn_val(ptr %t45, ptr @.str1120) store ptr %t46, ptr %retval br label %ret ifend8: %t47 = load ptr, ptr %t0 - %t48 = call i32 @lp_str_eq(ptr %t47, ptr @.str1118) + %t48 = call i32 @lp_str_eq(ptr %t47, ptr @.str1121) %t49 = icmp ne i32 %t48, 0 br i1 %t49, label %then9, label %ifend11 then9: - %t50 = call ptr @fn_emit_bind(ptr @.str1119) - %t51 = call ptr @fn_val(ptr %t50, ptr @.str1120) + %t50 = call ptr @fn_emit_bind(ptr @.str1122) + %t51 = call ptr @fn_val(ptr %t50, ptr @.str1123) store ptr %t51, ptr %retval br label %ret ifend11: %t52 = load ptr, ptr %t0 - %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str1121) + %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str1124) %t54 = icmp ne i32 %t53, 0 br i1 %t54, label %then12, label %ifend14 then12: @@ -34824,12 +34877,12 @@ then12: %t64 = load ptr, ptr %t63 %t65 = getelementptr inbounds %Cmp_Val, ptr %t64, i32 0, i32 0 %t66 = load ptr, ptr %t65 - %t67 = call ptr @fn_val(ptr %t66, ptr @.str1122) + %t67 = call ptr @fn_val(ptr %t66, ptr @.str1125) store ptr %t67, ptr %retval br label %ret ifend14: %t68 = load ptr, ptr %t0 - %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str1123) + %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str1126) %t70 = icmp ne i32 %t69, 0 br i1 %t70, label %then15, label %ifend17 then15: @@ -34845,12 +34898,12 @@ then15: %t80 = load ptr, ptr %t79 %t81 = getelementptr inbounds %Cmp_Val, ptr %t80, i32 0, i32 0 %t82 = load ptr, ptr %t81 - %t83 = call ptr @fn_val(ptr %t82, ptr @.str1124) + %t83 = call ptr @fn_val(ptr %t82, ptr @.str1127) store ptr %t83, ptr %retval br label %ret ifend17: %t84 = load ptr, ptr %t0 - %t85 = call i32 @lp_str_eq(ptr %t84, ptr @.str1125) + %t85 = call i32 @lp_str_eq(ptr %t84, ptr @.str1128) %t86 = icmp ne i32 %t85, 0 br i1 %t86, label %then18, label %ifend20 then18: @@ -34858,45 +34911,45 @@ then18: %t88 = icmp ne i32 %t87, 0 br i1 %t88, label %then21, label %ifend23 then21: - %t89 = call ptr @fn_val(ptr @.str1126, ptr @.str1127) + %t89 = call ptr @fn_val(ptr @.str1129, ptr @.str1130) store ptr %t89, ptr %retval br label %ret ifend23: - %t90 = call ptr @fn_val(ptr @.str1128, ptr @.str1129) + %t90 = call ptr @fn_val(ptr @.str1131, ptr @.str1132) store ptr %t90, ptr %retval br label %ret ifend20: %t91 = load ptr, ptr %t0 - %t92 = call i32 @lp_str_eq(ptr %t91, ptr @.str1130) + %t92 = call i32 @lp_str_eq(ptr %t91, ptr @.str1133) %t93 = icmp ne i32 %t92, 0 br i1 %t93, label %then24, label %ifend26 then24: - %t94 = call ptr @fn_val(ptr @.str1131, ptr @.str1132) + %t94 = call ptr @fn_val(ptr @.str1134, ptr @.str1135) store ptr %t94, ptr %retval br label %ret ifend26: %t95 = load ptr, ptr %t0 - %t96 = call i32 @lp_str_eq(ptr %t95, ptr @.str1133) + %t96 = call i32 @lp_str_eq(ptr %t95, ptr @.str1136) %t97 = icmp ne i32 %t96, 0 br i1 %t97, label %then27, label %ifend29 then27: - %t98 = call ptr @fn_emit_bind(ptr @.str1134) - %t99 = call ptr @fn_val(ptr %t98, ptr @.str1135) + %t98 = call ptr @fn_emit_bind(ptr @.str1137) + %t99 = call ptr @fn_val(ptr %t98, ptr @.str1138) store ptr %t99, ptr %retval br label %ret ifend29: %t100 = load ptr, ptr %t0 - %t101 = call i32 @lp_str_eq(ptr %t100, ptr @.str1136) + %t101 = call i32 @lp_str_eq(ptr %t100, ptr @.str1139) %t102 = icmp ne i32 %t101, 0 br i1 %t102, label %then30, label %ifend32 then30: - %t103 = call ptr @fn_emit_bind(ptr @.str1137) - %t104 = call ptr @fn_val(ptr %t103, ptr @.str1138) + %t103 = call ptr @fn_emit_bind(ptr @.str1140) + %t104 = call ptr @fn_val(ptr %t103, ptr @.str1141) store ptr %t104, ptr %retval br label %ret ifend32: %t105 = load ptr, ptr %t0 - %t106 = call i32 @lp_str_eq(ptr %t105, ptr @.str1139) + %t106 = call i32 @lp_str_eq(ptr %t105, ptr @.str1142) %t107 = icmp ne i32 %t106, 0 br i1 %t107, label %then33, label %ifend35 then33: @@ -34912,25 +34965,25 @@ then33: %t117 = load ptr, ptr %t1 %t118 = call ptr @fn_arg_code(ptr %t117, i32 3) store ptr %t118, ptr %t119 - call void @fn_emit(ptr @.str1140) + call void @fn_emit(ptr @.str1143) %t120 = load ptr, ptr %t110 call void @fn_emit(ptr %t120) - call void @fn_emit(ptr @.str1141) + call void @fn_emit(ptr @.str1144) %t121 = load ptr, ptr %t113 call void @fn_emit(ptr %t121) - call void @fn_emit(ptr @.str1142) + call void @fn_emit(ptr @.str1145) %t122 = load ptr, ptr %t116 call void @fn_emit(ptr %t122) - call void @fn_emit(ptr @.str1143) + call void @fn_emit(ptr @.str1146) %t123 = load ptr, ptr %t119 call void @fn_emit(ptr %t123) - call void @fn_emit(ptr @.str1144) - %t124 = call ptr @fn_val(ptr @.str1145, ptr @.str1146) + call void @fn_emit(ptr @.str1147) + %t124 = call ptr @fn_val(ptr @.str1148, ptr @.str1149) store ptr %t124, ptr %retval br label %ret ifend35: %t125 = load ptr, ptr %t0 - %t126 = call i32 @lp_str_eq(ptr %t125, ptr @.str1147) + %t126 = call i32 @lp_str_eq(ptr %t125, ptr @.str1150) %t127 = icmp ne i32 %t126, 0 br i1 %t127, label %then36, label %ifend38 then36: @@ -34943,112 +34996,112 @@ then36: %t134 = load ptr, ptr %t1 %t135 = call ptr @fn_arg_code(ptr %t134, i32 2) store ptr %t135, ptr %t136 - call void @fn_emit(ptr @.str1148) + call void @fn_emit(ptr @.str1151) %t137 = load ptr, ptr %t130 call void @fn_emit(ptr %t137) - call void @fn_emit(ptr @.str1149) + call void @fn_emit(ptr @.str1152) %t138 = load ptr, ptr %t133 call void @fn_emit(ptr %t138) - call void @fn_emit(ptr @.str1150) + call void @fn_emit(ptr @.str1153) %t139 = load ptr, ptr %t136 call void @fn_emit(ptr %t139) - call void @fn_emit(ptr @.str1151) - %t140 = call ptr @fn_val(ptr @.str1152, ptr @.str1153) + call void @fn_emit(ptr @.str1154) + %t140 = call ptr @fn_val(ptr @.str1155, ptr @.str1156) store ptr %t140, ptr %retval br label %ret ifend38: %t141 = load ptr, ptr %t0 - %t142 = call i32 @lp_str_eq(ptr %t141, ptr @.str1154) + %t142 = call i32 @lp_str_eq(ptr %t141, ptr @.str1157) %t143 = icmp ne i32 %t142, 0 br i1 %t143, label %then39, label %ifend41 then39: - call void @fn_emit(ptr @.str1155) - %t144 = call ptr @fn_val(ptr @.str1156, ptr @.str1157) + call void @fn_emit(ptr @.str1158) + %t144 = call ptr @fn_val(ptr @.str1159, ptr @.str1160) store ptr %t144, ptr %retval br label %ret ifend41: %t145 = load ptr, ptr %t0 - %t146 = call i32 @lp_str_eq(ptr %t145, ptr @.str1158) + %t146 = call i32 @lp_str_eq(ptr %t145, ptr @.str1161) %t147 = icmp ne i32 %t146, 0 br i1 %t147, label %then42, label %ifend44 then42: %t148 = load ptr, ptr %t1 %t149 = call ptr @fn_arg_code(ptr %t148, i32 0) store ptr %t149, ptr %t150 - call void @fn_emit(ptr @.str1159) + call void @fn_emit(ptr @.str1162) %t151 = load ptr, ptr %t150 call void @fn_emit(ptr %t151) - call void @fn_emit(ptr @.str1160) - %t152 = call ptr @fn_val(ptr @.str1161, ptr @.str1162) + call void @fn_emit(ptr @.str1163) + %t152 = call ptr @fn_val(ptr @.str1164, ptr @.str1165) store ptr %t152, ptr %retval br label %ret ifend44: %t153 = load ptr, ptr %t0 - %t154 = call i32 @lp_str_eq(ptr %t153, ptr @.str1163) + %t154 = call i32 @lp_str_eq(ptr %t153, ptr @.str1166) %t155 = icmp ne i32 %t154, 0 br i1 %t155, label %then45, label %ifend47 then45: %t156 = load ptr, ptr %t1 %t157 = call ptr @fn_arg_code(ptr %t156, i32 0) store ptr %t157, ptr %t158 - call void @fn_emit(ptr @.str1164) + call void @fn_emit(ptr @.str1167) %t159 = load ptr, ptr %t158 call void @fn_emit(ptr %t159) - call void @fn_emit(ptr @.str1165) - %t160 = call ptr @fn_val(ptr @.str1166, ptr @.str1167) + call void @fn_emit(ptr @.str1168) + %t160 = call ptr @fn_val(ptr @.str1169, ptr @.str1170) store ptr %t160, ptr %retval br label %ret ifend47: %t161 = load ptr, ptr %t0 - %t162 = call i32 @lp_str_eq(ptr %t161, ptr @.str1168) + %t162 = call i32 @lp_str_eq(ptr %t161, ptr @.str1171) %t163 = icmp ne i32 %t162, 0 br i1 %t163, label %then48, label %ifend50 then48: %t164 = load ptr, ptr %t1 %t165 = call ptr @fn_arg_code(ptr %t164, i32 0) store ptr %t165, ptr %t166 - call void @fn_emit(ptr @.str1169) + call void @fn_emit(ptr @.str1172) %t167 = load ptr, ptr %t166 call void @fn_emit(ptr %t167) - call void @fn_emit(ptr @.str1170) - %t168 = call ptr @fn_val(ptr @.str1171, ptr @.str1172) + call void @fn_emit(ptr @.str1173) + %t168 = call ptr @fn_val(ptr @.str1174, ptr @.str1175) store ptr %t168, ptr %retval br label %ret ifend50: %t169 = load ptr, ptr %t0 - %t170 = call i32 @lp_str_eq(ptr %t169, ptr @.str1173) + %t170 = call i32 @lp_str_eq(ptr %t169, ptr @.str1176) %t171 = icmp ne i32 %t170, 0 br i1 %t171, label %then51, label %ifend53 then51: %t172 = load ptr, ptr %t1 %t173 = call ptr @fn_arg_code(ptr %t172, i32 0) store ptr %t173, ptr %t174 - call void @fn_emit(ptr @.str1174) + call void @fn_emit(ptr @.str1177) %t175 = load ptr, ptr %t174 call void @fn_emit(ptr %t175) - call void @fn_emit(ptr @.str1175) - %t176 = call ptr @fn_val(ptr @.str1176, ptr @.str1177) + call void @fn_emit(ptr @.str1178) + %t176 = call ptr @fn_val(ptr @.str1179, ptr @.str1180) store ptr %t176, ptr %retval br label %ret ifend53: %t177 = load ptr, ptr %t0 - %t178 = call i32 @lp_str_eq(ptr %t177, ptr @.str1178) + %t178 = call i32 @lp_str_eq(ptr %t177, ptr @.str1181) %t179 = icmp ne i32 %t178, 0 br i1 %t179, label %then54, label %ifend56 then54: %t180 = load ptr, ptr %t1 %t181 = call ptr @fn_arg_code(ptr %t180, i32 0) store ptr %t181, ptr %t182 - call void @fn_emit(ptr @.str1179) + call void @fn_emit(ptr @.str1182) %t183 = load ptr, ptr %t182 call void @fn_emit(ptr %t183) - call void @fn_emit(ptr @.str1180) - %t184 = call ptr @fn_val(ptr @.str1181, ptr @.str1182) + call void @fn_emit(ptr @.str1183) + %t184 = call ptr @fn_val(ptr @.str1184, ptr @.str1185) store ptr %t184, ptr %retval br label %ret ifend56: %t185 = load ptr, ptr %t0 - %t186 = call i32 @lp_str_eq(ptr %t185, ptr @.str1183) + %t186 = call i32 @lp_str_eq(ptr %t185, ptr @.str1186) %t187 = icmp ne i32 %t186, 0 br i1 %t187, label %then57, label %ifend59 then57: @@ -35056,15 +35109,15 @@ then57: %t189 = call ptr @fn_arg_code(ptr %t188, i32 0) store ptr %t189, ptr %t190 %t191 = load ptr, ptr %t190 - %t192 = call ptr @lp_str_concat(ptr @.str1184, ptr %t191) - %t193 = call ptr @lp_str_concat(ptr %t192, ptr @.str1185) + %t192 = call ptr @lp_str_concat(ptr @.str1187, ptr %t191) + %t193 = call ptr @lp_str_concat(ptr %t192, ptr @.str1188) %t194 = call ptr @fn_emit_bind(ptr %t193) - %t195 = call ptr @fn_val(ptr %t194, ptr @.str1186) + %t195 = call ptr @fn_val(ptr %t194, ptr @.str1189) store ptr %t195, ptr %retval br label %ret ifend59: %t196 = load ptr, ptr %t0 - %t197 = call i32 @lp_str_eq(ptr %t196, ptr @.str1187) + %t197 = call i32 @lp_str_eq(ptr %t196, ptr @.str1190) %t198 = icmp ne i32 %t197, 0 br i1 %t198, label %then60, label %ifend62 then60: @@ -35080,41 +35133,41 @@ then60: %t208 = load ptr, ptr %t1 %t209 = call ptr @fn_arg_code(ptr %t208, i32 3) store ptr %t209, ptr %t210 - call void @fn_emit(ptr @.str1188) + call void @fn_emit(ptr @.str1191) %t211 = load ptr, ptr %t201 call void @fn_emit(ptr %t211) - call void @fn_emit(ptr @.str1189) + call void @fn_emit(ptr @.str1192) %t212 = load ptr, ptr %t204 call void @fn_emit(ptr %t212) - call void @fn_emit(ptr @.str1190) + call void @fn_emit(ptr @.str1193) %t213 = load ptr, ptr %t207 call void @fn_emit(ptr %t213) - call void @fn_emit(ptr @.str1191) + call void @fn_emit(ptr @.str1194) %t214 = load ptr, ptr %t210 call void @fn_emit(ptr %t214) - call void @fn_emit(ptr @.str1192) - %t215 = call ptr @fn_val(ptr @.str1193, ptr @.str1194) + call void @fn_emit(ptr @.str1195) + %t215 = call ptr @fn_val(ptr @.str1196, ptr @.str1197) store ptr %t215, ptr %retval br label %ret ifend62: %t216 = load ptr, ptr %t0 - %t217 = call i32 @lp_str_eq(ptr %t216, ptr @.str1195) + %t217 = call i32 @lp_str_eq(ptr %t216, ptr @.str1198) %t218 = icmp ne i32 %t217, 0 br i1 %t218, label %then63, label %ifend65 then63: %t219 = load ptr, ptr %t1 %t220 = call ptr @fn_arg_code(ptr %t219, i32 0) store ptr %t220, ptr %t221 - call void @fn_emit(ptr @.str1196) + call void @fn_emit(ptr @.str1199) %t222 = load ptr, ptr %t221 call void @fn_emit(ptr %t222) - call void @fn_emit(ptr @.str1197) - %t223 = call ptr @fn_val(ptr @.str1198, ptr @.str1199) + call void @fn_emit(ptr @.str1200) + %t223 = call ptr @fn_val(ptr @.str1201, ptr @.str1202) store ptr %t223, ptr %retval br label %ret ifend65: %t224 = load ptr, ptr %t0 - %t225 = call i32 @lp_str_eq(ptr %t224, ptr @.str1200) + %t225 = call i32 @lp_str_eq(ptr %t224, ptr @.str1203) %t226 = icmp ne i32 %t225, 0 br i1 %t226, label %then66, label %ifend68 then66: @@ -35122,15 +35175,15 @@ then66: %t228 = call ptr @fn_arg_code(ptr %t227, i32 0) store ptr %t228, ptr %t229 %t230 = load ptr, ptr %t229 - %t231 = call ptr @lp_str_concat(ptr @.str1201, ptr %t230) - %t232 = call ptr @lp_str_concat(ptr %t231, ptr @.str1202) + %t231 = call ptr @lp_str_concat(ptr @.str1204, ptr %t230) + %t232 = call ptr @lp_str_concat(ptr %t231, ptr @.str1205) %t233 = call ptr @fn_emit_bind(ptr %t232) - %t234 = call ptr @fn_val(ptr %t233, ptr @.str1203) + %t234 = call ptr @fn_val(ptr %t233, ptr @.str1206) store ptr %t234, ptr %retval br label %ret ifend68: %t235 = load ptr, ptr %t0 - %t236 = call i32 @lp_str_eq(ptr %t235, ptr @.str1204) + %t236 = call i32 @lp_str_eq(ptr %t235, ptr @.str1207) %t237 = icmp ne i32 %t236, 0 br i1 %t237, label %then69, label %ifend71 then69: @@ -35140,19 +35193,19 @@ then69: %t241 = load ptr, ptr %t1 %t242 = call ptr @fn_arg_code(ptr %t241, i32 1) store ptr %t242, ptr %t243 - call void @fn_emit(ptr @.str1205) + call void @fn_emit(ptr @.str1208) %t244 = load ptr, ptr %t240 call void @fn_emit(ptr %t244) - call void @fn_emit(ptr @.str1206) + call void @fn_emit(ptr @.str1209) %t245 = load ptr, ptr %t243 call void @fn_emit(ptr %t245) - call void @fn_emit(ptr @.str1207) - %t246 = call ptr @fn_val(ptr @.str1208, ptr @.str1209) + call void @fn_emit(ptr @.str1210) + %t246 = call ptr @fn_val(ptr @.str1211, ptr @.str1212) store ptr %t246, ptr %retval br label %ret ifend71: %t247 = load ptr, ptr %t0 - %t248 = call i32 @lp_str_eq(ptr %t247, ptr @.str1210) + %t248 = call i32 @lp_str_eq(ptr %t247, ptr @.str1213) %t249 = icmp ne i32 %t248, 0 br i1 %t249, label %then72, label %ifend74 then72: @@ -35162,19 +35215,19 @@ then72: %t253 = load ptr, ptr %t1 %t254 = call ptr @fn_arg_code(ptr %t253, i32 1) store ptr %t254, ptr %t255 - call void @fn_emit(ptr @.str1211) + call void @fn_emit(ptr @.str1214) %t256 = load ptr, ptr %t252 call void @fn_emit(ptr %t256) - call void @fn_emit(ptr @.str1212) + call void @fn_emit(ptr @.str1215) %t257 = load ptr, ptr %t255 call void @fn_emit(ptr %t257) - call void @fn_emit(ptr @.str1213) - %t258 = call ptr @fn_val(ptr @.str1214, ptr @.str1215) + call void @fn_emit(ptr @.str1216) + %t258 = call ptr @fn_val(ptr @.str1217, ptr @.str1218) store ptr %t258, ptr %retval br label %ret ifend74: %t259 = load ptr, ptr %t0 - %t260 = call i32 @lp_str_eq(ptr %t259, ptr @.str1216) + %t260 = call i32 @lp_str_eq(ptr %t259, ptr @.str1219) %t261 = icmp ne i32 %t260, 0 br i1 %t261, label %then75, label %ifend77 then75: @@ -35185,18 +35238,18 @@ then75: %t266 = call ptr @fn_arg_code(ptr %t265, i32 1) store ptr %t266, ptr %t267 %t268 = load ptr, ptr %t264 - %t269 = call ptr @lp_str_concat(ptr @.str1217, ptr %t268) - %t270 = call ptr @lp_str_concat(ptr %t269, ptr @.str1218) + %t269 = call ptr @lp_str_concat(ptr @.str1220, ptr %t268) + %t270 = call ptr @lp_str_concat(ptr %t269, ptr @.str1221) %t271 = load ptr, ptr %t267 %t272 = call ptr @lp_str_concat(ptr %t270, ptr %t271) - %t273 = call ptr @lp_str_concat(ptr %t272, ptr @.str1219) + %t273 = call ptr @lp_str_concat(ptr %t272, ptr @.str1222) %t274 = call ptr @fn_emit_bind(ptr %t273) - %t275 = call ptr @fn_val(ptr %t274, ptr @.str1220) + %t275 = call ptr @fn_val(ptr %t274, ptr @.str1223) store ptr %t275, ptr %retval br label %ret ifend77: %t276 = load ptr, ptr %t0 - %t277 = call i32 @lp_str_eq(ptr %t276, ptr @.str1221) + %t277 = call i32 @lp_str_eq(ptr %t276, ptr @.str1224) %t278 = icmp ne i32 %t277, 0 br i1 %t278, label %then78, label %ifend80 then78: @@ -35209,22 +35262,22 @@ then78: %t285 = load ptr, ptr %t1 %t286 = call ptr @fn_arg_code(ptr %t285, i32 2) store ptr %t286, ptr %t287 - call void @fn_emit(ptr @.str1222) + call void @fn_emit(ptr @.str1225) %t288 = load ptr, ptr %t281 call void @fn_emit(ptr %t288) - call void @fn_emit(ptr @.str1223) + call void @fn_emit(ptr @.str1226) %t289 = load ptr, ptr %t284 call void @fn_emit(ptr %t289) - call void @fn_emit(ptr @.str1224) + call void @fn_emit(ptr @.str1227) %t290 = load ptr, ptr %t287 call void @fn_emit(ptr %t290) - call void @fn_emit(ptr @.str1225) - %t291 = call ptr @fn_val(ptr @.str1226, ptr @.str1227) + call void @fn_emit(ptr @.str1228) + %t291 = call ptr @fn_val(ptr @.str1229, ptr @.str1230) store ptr %t291, ptr %retval br label %ret ifend80: %t292 = load ptr, ptr %t0 - %t293 = call i32 @lp_str_eq(ptr %t292, ptr @.str1228) + %t293 = call i32 @lp_str_eq(ptr %t292, ptr @.str1231) %t294 = icmp ne i32 %t293, 0 br i1 %t294, label %then81, label %ifend83 then81: @@ -35237,22 +35290,22 @@ then81: %t301 = load ptr, ptr %t1 %t302 = call ptr @fn_arg_code(ptr %t301, i32 2) store ptr %t302, ptr %t303 - call void @fn_emit(ptr @.str1229) + call void @fn_emit(ptr @.str1232) %t304 = load ptr, ptr %t297 call void @fn_emit(ptr %t304) - call void @fn_emit(ptr @.str1230) + call void @fn_emit(ptr @.str1233) %t305 = load ptr, ptr %t300 call void @fn_emit(ptr %t305) - call void @fn_emit(ptr @.str1231) + call void @fn_emit(ptr @.str1234) %t306 = load ptr, ptr %t303 call void @fn_emit(ptr %t306) - call void @fn_emit(ptr @.str1232) - %t307 = call ptr @fn_val(ptr @.str1233, ptr @.str1234) + call void @fn_emit(ptr @.str1235) + %t307 = call ptr @fn_val(ptr @.str1236, ptr @.str1237) store ptr %t307, ptr %retval br label %ret ifend83: %t308 = load ptr, ptr %t0 - %t309 = call i32 @lp_str_eq(ptr %t308, ptr @.str1235) + %t309 = call i32 @lp_str_eq(ptr %t308, ptr @.str1238) %t310 = icmp ne i32 %t309, 0 br i1 %t310, label %then84, label %ifend86 then84: @@ -35262,19 +35315,19 @@ then84: %t314 = load ptr, ptr %t1 %t315 = call ptr @fn_arg_code(ptr %t314, i32 1) store ptr %t315, ptr %t316 - call void @fn_emit(ptr @.str1236) + call void @fn_emit(ptr @.str1239) %t317 = load ptr, ptr %t313 call void @fn_emit(ptr %t317) - call void @fn_emit(ptr @.str1237) + call void @fn_emit(ptr @.str1240) %t318 = load ptr, ptr %t316 call void @fn_emit(ptr %t318) - call void @fn_emit(ptr @.str1238) - %t319 = call ptr @fn_val(ptr @.str1239, ptr @.str1240) + call void @fn_emit(ptr @.str1241) + %t319 = call ptr @fn_val(ptr @.str1242, ptr @.str1243) store ptr %t319, ptr %retval br label %ret ifend86: %t320 = load ptr, ptr %t0 - %t321 = call i32 @lp_str_eq(ptr %t320, ptr @.str1241) + %t321 = call i32 @lp_str_eq(ptr %t320, ptr @.str1244) %t322 = icmp ne i32 %t321, 0 br i1 %t322, label %then87, label %ifend89 then87: @@ -35282,15 +35335,15 @@ then87: %t324 = call ptr @fn_arg_code(ptr %t323, i32 0) store ptr %t324, ptr %t325 %t326 = load ptr, ptr %t325 - %t327 = call ptr @lp_str_concat(ptr @.str1242, ptr %t326) - %t328 = call ptr @lp_str_concat(ptr %t327, ptr @.str1243) + %t327 = call ptr @lp_str_concat(ptr @.str1245, ptr %t326) + %t328 = call ptr @lp_str_concat(ptr %t327, ptr @.str1246) %t329 = call ptr @fn_emit_bind(ptr %t328) - %t330 = call ptr @fn_val(ptr %t329, ptr @.str1244) + %t330 = call ptr @fn_val(ptr %t329, ptr @.str1247) store ptr %t330, ptr %retval br label %ret ifend89: %t331 = load ptr, ptr %t0 - %t332 = call i32 @lp_str_eq(ptr %t331, ptr @.str1245) + %t332 = call i32 @lp_str_eq(ptr %t331, ptr @.str1248) %t333 = icmp ne i32 %t332, 0 br i1 %t333, label %then90, label %ifend92 then90: @@ -35298,15 +35351,15 @@ then90: %t335 = call ptr @fn_arg_code(ptr %t334, i32 0) store ptr %t335, ptr %t336 %t337 = load ptr, ptr %t336 - %t338 = call ptr @lp_str_concat(ptr @.str1246, ptr %t337) - %t339 = call ptr @lp_str_concat(ptr %t338, ptr @.str1247) + %t338 = call ptr @lp_str_concat(ptr @.str1249, ptr %t337) + %t339 = call ptr @lp_str_concat(ptr %t338, ptr @.str1250) %t340 = call ptr @fn_emit_bind(ptr %t339) - %t341 = call ptr @fn_val(ptr %t340, ptr @.str1248) + %t341 = call ptr @fn_val(ptr %t340, ptr @.str1251) store ptr %t341, ptr %retval br label %ret ifend92: %t342 = load ptr, ptr %t0 - %t343 = call i32 @lp_str_eq(ptr %t342, ptr @.str1249) + %t343 = call i32 @lp_str_eq(ptr %t342, ptr @.str1252) %t344 = icmp ne i32 %t343, 0 br i1 %t344, label %then93, label %ifend95 then93: @@ -35314,15 +35367,15 @@ then93: %t346 = call ptr @fn_arg_code(ptr %t345, i32 0) store ptr %t346, ptr %t347 %t348 = load ptr, ptr %t347 - %t349 = call ptr @lp_str_concat(ptr @.str1250, ptr %t348) - %t350 = call ptr @lp_str_concat(ptr %t349, ptr @.str1251) + %t349 = call ptr @lp_str_concat(ptr @.str1253, ptr %t348) + %t350 = call ptr @lp_str_concat(ptr %t349, ptr @.str1254) %t351 = call ptr @fn_emit_bind(ptr %t350) - %t352 = call ptr @fn_val(ptr %t351, ptr @.str1252) + %t352 = call ptr @fn_val(ptr %t351, ptr @.str1255) store ptr %t352, ptr %retval br label %ret ifend95: %t353 = load ptr, ptr %t0 - %t354 = call i32 @lp_str_eq(ptr %t353, ptr @.str1253) + %t354 = call i32 @lp_str_eq(ptr %t353, ptr @.str1256) %t355 = icmp ne i32 %t354, 0 br i1 %t355, label %then96, label %ifend98 then96: @@ -35330,15 +35383,15 @@ then96: %t357 = call ptr @fn_arg_code(ptr %t356, i32 0) store ptr %t357, ptr %t358 %t359 = load ptr, ptr %t358 - %t360 = call ptr @lp_str_concat(ptr @.str1254, ptr %t359) - %t361 = call ptr @lp_str_concat(ptr %t360, ptr @.str1255) + %t360 = call ptr @lp_str_concat(ptr @.str1257, ptr %t359) + %t361 = call ptr @lp_str_concat(ptr %t360, ptr @.str1258) %t362 = call ptr @fn_emit_bind(ptr %t361) - %t363 = call ptr @fn_val(ptr %t362, ptr @.str1256) + %t363 = call ptr @fn_val(ptr %t362, ptr @.str1259) store ptr %t363, ptr %retval br label %ret ifend98: %t364 = load ptr, ptr %t0 - %t365 = call i32 @lp_str_eq(ptr %t364, ptr @.str1257) + %t365 = call i32 @lp_str_eq(ptr %t364, ptr @.str1260) %t366 = icmp ne i32 %t365, 0 br i1 %t366, label %then99, label %ifend101 then99: @@ -35349,33 +35402,33 @@ then99: %t371 = call ptr @fn_arg_code(ptr %t370, i32 1) store ptr %t371, ptr %t372 %t373 = load ptr, ptr %t369 - %t374 = call ptr @lp_str_concat(ptr @.str1258, ptr %t373) - %t375 = call ptr @lp_str_concat(ptr %t374, ptr @.str1259) + %t374 = call ptr @lp_str_concat(ptr @.str1261, ptr %t373) + %t375 = call ptr @lp_str_concat(ptr %t374, ptr @.str1262) %t376 = load ptr, ptr %t372 %t377 = call ptr @lp_str_concat(ptr %t375, ptr %t376) - %t378 = call ptr @lp_str_concat(ptr %t377, ptr @.str1260) + %t378 = call ptr @lp_str_concat(ptr %t377, ptr @.str1263) %t379 = call ptr @fn_emit_bind(ptr %t378) - %t380 = call ptr @fn_val(ptr %t379, ptr @.str1261) + %t380 = call ptr @fn_val(ptr %t379, ptr @.str1264) store ptr %t380, ptr %retval br label %ret ifend101: %t381 = load ptr, ptr %t0 - %t382 = call i32 @lp_str_eq(ptr %t381, ptr @.str1262) + %t382 = call i32 @lp_str_eq(ptr %t381, ptr @.str1265) %t383 = icmp ne i32 %t382, 0 br i1 %t383, label %then102, label %ifend104 then102: %t384 = load ptr, ptr %t1 %t385 = call ptr @fn_arg_code(ptr %t384, i32 0) store ptr %t385, ptr %t386 - call void @fn_emit(ptr @.str1263) + call void @fn_emit(ptr @.str1266) %t387 = load ptr, ptr %t386 call void @fn_emit(ptr %t387) - call void @fn_emit(ptr @.str1264) - %t388 = call ptr @fn_val(ptr @.str1265, ptr @.str1266) + call void @fn_emit(ptr @.str1267) + %t388 = call ptr @fn_val(ptr @.str1268, ptr @.str1269) store ptr %t388, ptr %retval br label %ret ifend104: - %t389 = call ptr @fn_val(ptr @.str1267, ptr @.str1268) + %t389 = call ptr @fn_val(ptr @.str1270, ptr @.str1271) store ptr %t389, ptr %retval br label %ret ret: @@ -35392,14 +35445,14 @@ entry: %t3 = alloca i32 store ptr %arg_name, ptr %t0 %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str1269) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str1272) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t3 br i1 %t6, label %scend1, label %sc0 sc0: %t8 = load ptr, ptr %t0 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str1270) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str1273) %t10 = icmp ne i32 %t9, 0 %t11 = zext i1 %t10 to i32 store i32 %t11, ptr %t3 @@ -35412,7 +35465,7 @@ scend1: br i1 %t13, label %scend3, label %sc2 sc2: %t15 = load ptr, ptr %t0 - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str1271) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str1274) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t2 @@ -35425,7 +35478,7 @@ scend3: br i1 %t20, label %scend5, label %sc4 sc4: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str1272) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str1275) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t1 @@ -35461,7 +35514,7 @@ entry: store ptr %arg_name, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str1273) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str1276) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -35477,22 +35530,22 @@ then0: %t14 = load ptr, ptr %t13 %t15 = getelementptr inbounds %Cmp_Val, ptr %t14, i32 0, i32 0 %t16 = load ptr, ptr %t15 - %t17 = call ptr @lp_str_concat(ptr @.str1274, ptr %t16) - %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str1275) + %t17 = call ptr @lp_str_concat(ptr @.str1277, ptr %t16) + %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str1278) %t19 = call ptr @fn_emit_bind(ptr %t18) store ptr %t19, ptr %t20 %t21 = load ptr, ptr %t13 %t22 = getelementptr inbounds %Cmp_Val, ptr %t21, i32 0, i32 0 %t23 = load ptr, ptr %t22 - %t24 = call ptr @lp_str_concat(ptr @.str1276, ptr %t23) + %t24 = call ptr @lp_str_concat(ptr @.str1279, ptr %t23) %t25 = call ptr @fn_emit_bind(ptr %t24) store ptr %t25, ptr %t26 %t27 = load ptr, ptr %t20 - %t28 = call ptr @lp_str_concat(ptr @.str1277, ptr %t27) - %t29 = call ptr @lp_str_concat(ptr %t28, ptr @.str1278) + %t28 = call ptr @lp_str_concat(ptr @.str1280, ptr %t27) + %t29 = call ptr @lp_str_concat(ptr %t28, ptr @.str1281) %t30 = load ptr, ptr %t26 %t31 = call ptr @lp_str_concat(ptr %t29, ptr %t30) - %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str1279) + %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str1282) %t33 = load ptr, ptr %t13 %t34 = getelementptr inbounds %Cmp_Val, ptr %t33, i32 0, i32 0 %t35 = load ptr, ptr %t34 @@ -35506,14 +35559,14 @@ then0: br label %ret ifend2: %t43 = load ptr, ptr %t0 - %t44 = call i32 @lp_str_eq(ptr %t43, ptr @.str1280) + %t44 = call i32 @lp_str_eq(ptr %t43, ptr @.str1283) %t45 = icmp ne i32 %t44, 0 %t46 = zext i1 %t45 to i32 store i32 %t46, ptr %t42 br i1 %t45, label %scend4, label %sc3 sc3: %t47 = load ptr, ptr %t0 - %t48 = call i32 @lp_str_eq(ptr %t47, ptr @.str1281) + %t48 = call i32 @lp_str_eq(ptr %t47, ptr @.str1284) %t49 = icmp ne i32 %t48, 0 %t50 = zext i1 %t49 to i32 store i32 %t50, ptr %t42 @@ -35541,23 +35594,23 @@ then5: %t68 = load ptr, ptr %t67 %t69 = call ptr @fn_emit_expr(ptr %t68) store ptr %t69, ptr %t70 - store ptr @.str1282, ptr %t71 + store ptr @.str1285, ptr %t71 %t72 = load ptr, ptr %t0 - %t73 = call i32 @lp_str_eq(ptr %t72, ptr @.str1283) + %t73 = call i32 @lp_str_eq(ptr %t72, ptr @.str1286) %t74 = icmp ne i32 %t73, 0 br i1 %t74, label %then8, label %ifend10 then8: - store ptr @.str1284, ptr %t71 + store ptr @.str1287, ptr %t71 br label %ifend10 ifend10: %t75 = load ptr, ptr %t71 - %t76 = call ptr @lp_str_concat(ptr @.str1285, ptr %t75) - %t77 = call ptr @lp_str_concat(ptr %t76, ptr @.str1286) + %t76 = call ptr @lp_str_concat(ptr @.str1288, ptr %t75) + %t77 = call ptr @lp_str_concat(ptr %t76, ptr @.str1289) %t78 = load ptr, ptr %t61 %t79 = getelementptr inbounds %Cmp_Val, ptr %t78, i32 0, i32 0 %t80 = load ptr, ptr %t79 %t81 = call ptr @lp_str_concat(ptr %t77, ptr %t80) - %t82 = call ptr @lp_str_concat(ptr %t81, ptr @.str1287) + %t82 = call ptr @lp_str_concat(ptr %t81, ptr @.str1290) %t83 = load ptr, ptr %t70 %t84 = getelementptr inbounds %Cmp_Val, ptr %t83, i32 0, i32 0 %t85 = load ptr, ptr %t84 @@ -35565,13 +35618,13 @@ ifend10: %t87 = call ptr @fn_emit_bind(ptr %t86) store ptr %t87, ptr %t88 %t89 = load ptr, ptr %t88 - %t90 = call ptr @lp_str_concat(ptr @.str1288, ptr %t89) - %t91 = call ptr @lp_str_concat(ptr %t90, ptr @.str1289) + %t90 = call ptr @lp_str_concat(ptr @.str1291, ptr %t89) + %t91 = call ptr @lp_str_concat(ptr %t90, ptr @.str1292) %t92 = load ptr, ptr %t61 %t93 = getelementptr inbounds %Cmp_Val, ptr %t92, i32 0, i32 0 %t94 = load ptr, ptr %t93 %t95 = call ptr @lp_str_concat(ptr %t91, ptr %t94) - %t96 = call ptr @lp_str_concat(ptr %t95, ptr @.str1290) + %t96 = call ptr @lp_str_concat(ptr %t95, ptr @.str1293) %t97 = load ptr, ptr %t70 %t98 = getelementptr inbounds %Cmp_Val, ptr %t97, i32 0, i32 0 %t99 = load ptr, ptr %t98 @@ -35614,8 +35667,8 @@ ifend7: %t133 = load ptr, ptr %t114 %t134 = getelementptr inbounds %Cmp_Val, ptr %t133, i32 0, i32 0 %t135 = load ptr, ptr %t134 - %t136 = call ptr @lp_str_concat(ptr @.str1291, ptr %t135) - %t137 = call ptr @lp_str_concat(ptr %t136, ptr @.str1292) + %t136 = call ptr @lp_str_concat(ptr @.str1294, ptr %t135) + %t137 = call ptr @lp_str_concat(ptr %t136, ptr @.str1295) %t138 = load ptr, ptr %t132 %t139 = getelementptr inbounds %Cmp_Val, ptr %t138, i32 0, i32 0 %t140 = load ptr, ptr %t139 @@ -35623,13 +35676,13 @@ ifend7: %t142 = call ptr @fn_emit_bind(ptr %t141) store ptr %t142, ptr %t143 %t144 = load ptr, ptr %t143 - %t145 = call ptr @lp_str_concat(ptr @.str1293, ptr %t144) - %t146 = call ptr @lp_str_concat(ptr %t145, ptr @.str1294) + %t145 = call ptr @lp_str_concat(ptr @.str1296, ptr %t144) + %t146 = call ptr @lp_str_concat(ptr %t145, ptr @.str1297) %t147 = load ptr, ptr %t114 %t148 = getelementptr inbounds %Cmp_Val, ptr %t147, i32 0, i32 0 %t149 = load ptr, ptr %t148 %t150 = call ptr @lp_str_concat(ptr %t146, ptr %t149) - %t151 = call ptr @lp_str_concat(ptr %t150, ptr @.str1295) + %t151 = call ptr @lp_str_concat(ptr %t150, ptr @.str1298) %t152 = load ptr, ptr %t132 %t153 = getelementptr inbounds %Cmp_Val, ptr %t152, i32 0, i32 0 %t154 = load ptr, ptr %t153 @@ -35639,20 +35692,20 @@ ifend7: %t158 = load ptr, ptr %t123 %t159 = getelementptr inbounds %Cmp_Val, ptr %t158, i32 0, i32 0 %t160 = load ptr, ptr %t159 - %t161 = call ptr @lp_str_concat(ptr @.str1296, ptr %t160) - %t162 = call ptr @lp_str_concat(ptr %t161, ptr @.str1297) + %t161 = call ptr @lp_str_concat(ptr @.str1299, ptr %t160) + %t162 = call ptr @lp_str_concat(ptr %t161, ptr @.str1300) %t163 = load ptr, ptr %t157 %t164 = call ptr @lp_str_concat(ptr %t162, ptr %t163) %t165 = call ptr @fn_emit_bind(ptr %t164) store ptr %t165, ptr %t166 %t167 = load ptr, ptr %t166 - %t168 = call ptr @lp_str_concat(ptr @.str1298, ptr %t167) - %t169 = call ptr @lp_str_concat(ptr %t168, ptr @.str1299) + %t168 = call ptr @lp_str_concat(ptr @.str1301, ptr %t167) + %t169 = call ptr @lp_str_concat(ptr %t168, ptr @.str1302) %t170 = load ptr, ptr %t123 %t171 = getelementptr inbounds %Cmp_Val, ptr %t170, i32 0, i32 0 %t172 = load ptr, ptr %t171 %t173 = call ptr @lp_str_concat(ptr %t169, ptr %t172) - %t174 = call ptr @lp_str_concat(ptr %t173, ptr @.str1300) + %t174 = call ptr @lp_str_concat(ptr %t173, ptr @.str1303) %t175 = load ptr, ptr %t157 %t176 = call ptr @lp_str_concat(ptr %t174, ptr %t175) %t177 = call ptr @fn_emit_bind(ptr %t176) @@ -35679,30 +35732,30 @@ entry: store ptr %arg_a, ptr %t0 store ptr %arg_b, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call ptr @lp_str_concat(ptr @.str1301, ptr %t2) - %t4 = call ptr @lp_str_concat(ptr %t3, ptr @.str1302) + %t3 = call ptr @lp_str_concat(ptr @.str1304, ptr %t2) + %t4 = call ptr @lp_str_concat(ptr %t3, ptr @.str1305) %t5 = call ptr @fn_emit_bind(ptr %t4) store ptr %t5, ptr %t6 %t7 = load ptr, ptr %t1 - %t8 = call ptr @lp_str_concat(ptr @.str1303, ptr %t7) - %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str1304) + %t8 = call ptr @lp_str_concat(ptr @.str1306, ptr %t7) + %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str1307) %t10 = call ptr @fn_emit_bind(ptr %t9) store ptr %t10, ptr %t11 %t12 = load ptr, ptr %t6 - %t13 = call ptr @lp_str_concat(ptr @.str1305, ptr %t12) - %t14 = call ptr @lp_str_concat(ptr %t13, ptr @.str1306) + %t13 = call ptr @lp_str_concat(ptr @.str1308, ptr %t12) + %t14 = call ptr @lp_str_concat(ptr %t13, ptr @.str1309) %t15 = load ptr, ptr %t11 %t16 = call ptr @lp_str_concat(ptr %t14, ptr %t15) %t17 = call ptr @fn_emit_bind(ptr %t16) store ptr %t17, ptr %t18 %t19 = load ptr, ptr %t18 - %t20 = call ptr @lp_str_concat(ptr @.str1307, ptr %t19) - %t21 = call ptr @lp_str_concat(ptr %t20, ptr @.str1308) + %t20 = call ptr @lp_str_concat(ptr @.str1310, ptr %t19) + %t21 = call ptr @lp_str_concat(ptr %t20, ptr @.str1311) %t22 = call ptr @fn_emit_bind(ptr %t21) store ptr %t22, ptr %t23 %t24 = load ptr, ptr %t23 - %t25 = call ptr @lp_str_concat(ptr @.str1309, ptr %t24) - %t26 = call ptr @lp_str_concat(ptr %t25, ptr @.str1310) + %t25 = call ptr @lp_str_concat(ptr @.str1312, ptr %t24) + %t26 = call ptr @lp_str_concat(ptr %t25, ptr @.str1313) %t27 = call ptr @fn_emit_bind(ptr %t26) store ptr %t27, ptr %retval br label %ret @@ -35723,30 +35776,30 @@ entry: store ptr %arg_a, ptr %t0 store ptr %arg_b, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call ptr @lp_str_concat(ptr @.str1311, ptr %t2) - %t4 = call ptr @lp_str_concat(ptr %t3, ptr @.str1312) + %t3 = call ptr @lp_str_concat(ptr @.str1314, ptr %t2) + %t4 = call ptr @lp_str_concat(ptr %t3, ptr @.str1315) %t5 = call ptr @fn_emit_bind(ptr %t4) store ptr %t5, ptr %t6 %t7 = load ptr, ptr %t6 - %t8 = call ptr @lp_str_concat(ptr @.str1313, ptr %t7) - %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str1314) + %t8 = call ptr @lp_str_concat(ptr @.str1316, ptr %t7) + %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str1317) %t10 = call ptr @fn_emit_bind(ptr %t9) store ptr %t10, ptr %t11 %t12 = load ptr, ptr %t1 - %t13 = call ptr @lp_str_concat(ptr @.str1315, ptr %t12) - %t14 = call ptr @lp_str_concat(ptr %t13, ptr @.str1316) + %t13 = call ptr @lp_str_concat(ptr @.str1318, ptr %t12) + %t14 = call ptr @lp_str_concat(ptr %t13, ptr @.str1319) %t15 = call ptr @fn_emit_bind(ptr %t14) store ptr %t15, ptr %t16 %t17 = load ptr, ptr %t11 - %t18 = call ptr @lp_str_concat(ptr @.str1317, ptr %t17) - %t19 = call ptr @lp_str_concat(ptr %t18, ptr @.str1318) + %t18 = call ptr @lp_str_concat(ptr @.str1320, ptr %t17) + %t19 = call ptr @lp_str_concat(ptr %t18, ptr @.str1321) %t20 = load ptr, ptr %t16 %t21 = call ptr @lp_str_concat(ptr %t19, ptr %t20) %t22 = call ptr @fn_emit_bind(ptr %t21) store ptr %t22, ptr %t23 %t24 = load ptr, ptr %t23 - %t25 = call ptr @lp_str_concat(ptr @.str1319, ptr %t24) - %t26 = call ptr @lp_str_concat(ptr %t25, ptr @.str1320) + %t25 = call ptr @lp_str_concat(ptr @.str1322, ptr %t24) + %t26 = call ptr @lp_str_concat(ptr %t25, ptr @.str1323) %t27 = call ptr @fn_emit_bind(ptr %t26) store ptr %t27, ptr %retval br label %ret @@ -35767,8 +35820,8 @@ entry: store ptr %arg_b, ptr %t1 store ptr %arg_t, ptr %t2 %t3 = load ptr, ptr %t1 - %t4 = call ptr @lp_str_concat(ptr @.str1321, ptr %t3) - %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str1322) + %t4 = call ptr @lp_str_concat(ptr @.str1324, ptr %t3) + %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str1325) %t6 = load ptr, ptr %t0 %t7 = call ptr @lp_str_concat(ptr %t5, ptr %t6) %t8 = call ptr @fn_emit_bind(ptr %t7) @@ -35778,8 +35831,8 @@ entry: %t12 = call ptr @fn_fx_mul_code(ptr %t10, ptr %t11) store ptr %t12, ptr %t13 %t14 = load ptr, ptr %t0 - %t15 = call ptr @lp_str_concat(ptr @.str1323, ptr %t14) - %t16 = call ptr @lp_str_concat(ptr %t15, ptr @.str1324) + %t15 = call ptr @lp_str_concat(ptr @.str1326, ptr %t14) + %t16 = call ptr @lp_str_concat(ptr %t15, ptr @.str1327) %t17 = load ptr, ptr %t13 %t18 = call ptr @lp_str_concat(ptr %t16, ptr %t17) %t19 = call ptr @fn_emit_bind(ptr %t18) @@ -35802,15 +35855,15 @@ entry: store ptr %arg_b, ptr %t1 store ptr %arg_v, ptr %t2 %t3 = load ptr, ptr %t2 - %t4 = call ptr @lp_str_concat(ptr @.str1325, ptr %t3) - %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str1326) + %t4 = call ptr @lp_str_concat(ptr @.str1328, ptr %t3) + %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str1329) %t6 = load ptr, ptr %t0 %t7 = call ptr @lp_str_concat(ptr %t5, ptr %t6) %t8 = call ptr @fn_emit_bind(ptr %t7) store ptr %t8, ptr %t9 %t10 = load ptr, ptr %t1 - %t11 = call ptr @lp_str_concat(ptr @.str1327, ptr %t10) - %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str1328) + %t11 = call ptr @lp_str_concat(ptr @.str1330, ptr %t10) + %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str1331) %t13 = load ptr, ptr %t0 %t14 = call ptr @lp_str_concat(ptr %t12, ptr %t13) %t15 = call ptr @fn_emit_bind(ptr %t14) @@ -35854,14 +35907,14 @@ entry: %t194 = alloca i32 store ptr %arg_meth, ptr %t0 %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str1329) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str1332) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t3 br i1 %t6, label %scend1, label %sc0 sc0: %t8 = load ptr, ptr %t0 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str1330) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str1333) %t10 = icmp ne i32 %t9, 0 %t11 = zext i1 %t10 to i32 store i32 %t11, ptr %t3 @@ -35874,7 +35927,7 @@ scend1: br i1 %t13, label %scend3, label %sc2 sc2: %t15 = load ptr, ptr %t0 - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str1331) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str1334) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t2 @@ -35887,7 +35940,7 @@ scend3: br i1 %t20, label %scend5, label %sc4 sc4: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str1332) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str1335) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t1 @@ -35901,14 +35954,14 @@ then6: br label %ret ifend8: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str1333) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str1336) %t33 = icmp ne i32 %t32, 0 %t34 = zext i1 %t33 to i32 store i32 %t34, ptr %t30 br i1 %t33, label %scend10, label %sc9 sc9: %t35 = load ptr, ptr %t0 - %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str1334) + %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str1337) %t37 = icmp ne i32 %t36, 0 %t38 = zext i1 %t37 to i32 store i32 %t38, ptr %t30 @@ -35921,7 +35974,7 @@ scend10: br i1 %t40, label %scend12, label %sc11 sc11: %t42 = load ptr, ptr %t0 - %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str1335) + %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str1338) %t44 = icmp ne i32 %t43, 0 %t45 = zext i1 %t44 to i32 store i32 %t45, ptr %t29 @@ -35934,7 +35987,7 @@ scend12: br i1 %t47, label %scend14, label %sc13 sc13: %t49 = load ptr, ptr %t0 - %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str1336) + %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str1339) %t51 = icmp ne i32 %t50, 0 %t52 = zext i1 %t51 to i32 store i32 %t52, ptr %t28 @@ -35948,14 +36001,14 @@ then15: br label %ret ifend17: %t57 = load ptr, ptr %t0 - %t58 = call i32 @lp_str_eq(ptr %t57, ptr @.str1337) + %t58 = call i32 @lp_str_eq(ptr %t57, ptr @.str1340) %t59 = icmp ne i32 %t58, 0 %t60 = zext i1 %t59 to i32 store i32 %t60, ptr %t56 br i1 %t59, label %scend19, label %sc18 sc18: %t61 = load ptr, ptr %t0 - %t62 = call i32 @lp_str_eq(ptr %t61, ptr @.str1338) + %t62 = call i32 @lp_str_eq(ptr %t61, ptr @.str1341) %t63 = icmp ne i32 %t62, 0 %t64 = zext i1 %t63 to i32 store i32 %t64, ptr %t56 @@ -35968,7 +36021,7 @@ scend19: br i1 %t66, label %scend21, label %sc20 sc20: %t68 = load ptr, ptr %t0 - %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str1339) + %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str1342) %t70 = icmp ne i32 %t69, 0 %t71 = zext i1 %t70 to i32 store i32 %t71, ptr %t55 @@ -35982,14 +36035,14 @@ then22: br label %ret ifend24: %t78 = load ptr, ptr %t0 - %t79 = call i32 @lp_str_eq(ptr %t78, ptr @.str1340) + %t79 = call i32 @lp_str_eq(ptr %t78, ptr @.str1343) %t80 = icmp ne i32 %t79, 0 %t81 = zext i1 %t80 to i32 store i32 %t81, ptr %t77 br i1 %t80, label %scend26, label %sc25 sc25: %t82 = load ptr, ptr %t0 - %t83 = call i32 @lp_str_eq(ptr %t82, ptr @.str1341) + %t83 = call i32 @lp_str_eq(ptr %t82, ptr @.str1344) %t84 = icmp ne i32 %t83, 0 %t85 = zext i1 %t84 to i32 store i32 %t85, ptr %t77 @@ -36002,7 +36055,7 @@ scend26: br i1 %t87, label %scend28, label %sc27 sc27: %t89 = load ptr, ptr %t0 - %t90 = call i32 @lp_str_eq(ptr %t89, ptr @.str1342) + %t90 = call i32 @lp_str_eq(ptr %t89, ptr @.str1345) %t91 = icmp ne i32 %t90, 0 %t92 = zext i1 %t91 to i32 store i32 %t92, ptr %t76 @@ -36015,7 +36068,7 @@ scend28: br i1 %t94, label %scend30, label %sc29 sc29: %t96 = load ptr, ptr %t0 - %t97 = call i32 @lp_str_eq(ptr %t96, ptr @.str1343) + %t97 = call i32 @lp_str_eq(ptr %t96, ptr @.str1346) %t98 = icmp ne i32 %t97, 0 %t99 = zext i1 %t98 to i32 store i32 %t99, ptr %t75 @@ -36028,7 +36081,7 @@ scend30: br i1 %t101, label %scend32, label %sc31 sc31: %t103 = load ptr, ptr %t0 - %t104 = call i32 @lp_str_eq(ptr %t103, ptr @.str1344) + %t104 = call i32 @lp_str_eq(ptr %t103, ptr @.str1347) %t105 = icmp ne i32 %t104, 0 %t106 = zext i1 %t105 to i32 store i32 %t106, ptr %t74 @@ -36042,14 +36095,14 @@ then33: br label %ret ifend35: %t111 = load ptr, ptr %t0 - %t112 = call i32 @lp_str_eq(ptr %t111, ptr @.str1345) + %t112 = call i32 @lp_str_eq(ptr %t111, ptr @.str1348) %t113 = icmp ne i32 %t112, 0 %t114 = zext i1 %t113 to i32 store i32 %t114, ptr %t110 br i1 %t113, label %scend37, label %sc36 sc36: %t115 = load ptr, ptr %t0 - %t116 = call i32 @lp_str_eq(ptr %t115, ptr @.str1346) + %t116 = call i32 @lp_str_eq(ptr %t115, ptr @.str1349) %t117 = icmp ne i32 %t116, 0 %t118 = zext i1 %t117 to i32 store i32 %t118, ptr %t110 @@ -36062,7 +36115,7 @@ scend37: br i1 %t120, label %scend39, label %sc38 sc38: %t122 = load ptr, ptr %t0 - %t123 = call i32 @lp_str_eq(ptr %t122, ptr @.str1347) + %t123 = call i32 @lp_str_eq(ptr %t122, ptr @.str1350) %t124 = icmp ne i32 %t123, 0 %t125 = zext i1 %t124 to i32 store i32 %t125, ptr %t109 @@ -36076,14 +36129,14 @@ then40: br label %ret ifend42: %t131 = load ptr, ptr %t0 - %t132 = call i32 @lp_str_eq(ptr %t131, ptr @.str1348) + %t132 = call i32 @lp_str_eq(ptr %t131, ptr @.str1351) %t133 = icmp ne i32 %t132, 0 %t134 = zext i1 %t133 to i32 store i32 %t134, ptr %t130 br i1 %t133, label %scend44, label %sc43 sc43: %t135 = load ptr, ptr %t0 - %t136 = call i32 @lp_str_eq(ptr %t135, ptr @.str1349) + %t136 = call i32 @lp_str_eq(ptr %t135, ptr @.str1352) %t137 = icmp ne i32 %t136, 0 %t138 = zext i1 %t137 to i32 store i32 %t138, ptr %t130 @@ -36096,7 +36149,7 @@ scend44: br i1 %t140, label %scend46, label %sc45 sc45: %t142 = load ptr, ptr %t0 - %t143 = call i32 @lp_str_eq(ptr %t142, ptr @.str1350) + %t143 = call i32 @lp_str_eq(ptr %t142, ptr @.str1353) %t144 = icmp ne i32 %t143, 0 %t145 = zext i1 %t144 to i32 store i32 %t145, ptr %t129 @@ -36109,7 +36162,7 @@ scend46: br i1 %t147, label %scend48, label %sc47 sc47: %t149 = load ptr, ptr %t0 - %t150 = call i32 @lp_str_eq(ptr %t149, ptr @.str1351) + %t150 = call i32 @lp_str_eq(ptr %t149, ptr @.str1354) %t151 = icmp ne i32 %t150, 0 %t152 = zext i1 %t151 to i32 store i32 %t152, ptr %t128 @@ -36123,14 +36176,14 @@ then49: br label %ret ifend51: %t158 = load ptr, ptr %t0 - %t159 = call i32 @lp_str_eq(ptr %t158, ptr @.str1352) + %t159 = call i32 @lp_str_eq(ptr %t158, ptr @.str1355) %t160 = icmp ne i32 %t159, 0 %t161 = zext i1 %t160 to i32 store i32 %t161, ptr %t157 br i1 %t160, label %scend53, label %sc52 sc52: %t162 = load ptr, ptr %t0 - %t163 = call i32 @lp_str_eq(ptr %t162, ptr @.str1353) + %t163 = call i32 @lp_str_eq(ptr %t162, ptr @.str1356) %t164 = icmp ne i32 %t163, 0 %t165 = zext i1 %t164 to i32 store i32 %t165, ptr %t157 @@ -36143,7 +36196,7 @@ scend53: br i1 %t167, label %scend55, label %sc54 sc54: %t169 = load ptr, ptr %t0 - %t170 = call i32 @lp_str_eq(ptr %t169, ptr @.str1354) + %t170 = call i32 @lp_str_eq(ptr %t169, ptr @.str1357) %t171 = icmp ne i32 %t170, 0 %t172 = zext i1 %t171 to i32 store i32 %t172, ptr %t156 @@ -36156,7 +36209,7 @@ scend55: br i1 %t174, label %scend57, label %sc56 sc56: %t176 = load ptr, ptr %t0 - %t177 = call i32 @lp_str_eq(ptr %t176, ptr @.str1355) + %t177 = call i32 @lp_str_eq(ptr %t176, ptr @.str1358) %t178 = icmp ne i32 %t177, 0 %t179 = zext i1 %t178 to i32 store i32 %t179, ptr %t155 @@ -36170,14 +36223,14 @@ then58: br label %ret ifend60: %t183 = load ptr, ptr %t0 - %t184 = call i32 @lp_str_eq(ptr %t183, ptr @.str1356) + %t184 = call i32 @lp_str_eq(ptr %t183, ptr @.str1359) %t185 = icmp ne i32 %t184, 0 %t186 = zext i1 %t185 to i32 store i32 %t186, ptr %t182 br i1 %t185, label %scend62, label %sc61 sc61: %t187 = load ptr, ptr %t0 - %t188 = call i32 @lp_str_eq(ptr %t187, ptr @.str1357) + %t188 = call i32 @lp_str_eq(ptr %t187, ptr @.str1360) %t189 = icmp ne i32 %t188, 0 %t190 = zext i1 %t189 to i32 store i32 %t190, ptr %t182 @@ -36191,14 +36244,14 @@ then63: br label %ret ifend65: %t195 = load ptr, ptr %t0 - %t196 = call i32 @lp_str_eq(ptr %t195, ptr @.str1358) + %t196 = call i32 @lp_str_eq(ptr %t195, ptr @.str1361) %t197 = icmp ne i32 %t196, 0 %t198 = zext i1 %t197 to i32 store i32 %t198, ptr %t194 br i1 %t197, label %scend67, label %sc66 sc66: %t199 = load ptr, ptr %t0 - %t200 = call i32 @lp_str_eq(ptr %t199, ptr @.str1359) + %t200 = call i32 @lp_str_eq(ptr %t199, ptr @.str1362) %t201 = icmp ne i32 %t200, 0 %t202 = zext i1 %t201 to i32 store i32 %t202, ptr %t194 @@ -36211,7 +36264,7 @@ scend67: br i1 %t204, label %scend69, label %sc68 sc68: %t206 = load ptr, ptr %t0 - %t207 = call i32 @lp_str_eq(ptr %t206, ptr @.str1360) + %t207 = call i32 @lp_str_eq(ptr %t206, ptr @.str1363) %t208 = icmp ne i32 %t207, 0 %t209 = zext i1 %t208 to i32 store i32 %t209, ptr %t193 @@ -36365,14 +36418,14 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t5 = load ptr, ptr %t0 - %t6 = call i32 @lp_str_eq(ptr %t5, ptr @.str1361) + %t6 = call i32 @lp_str_eq(ptr %t5, ptr @.str1364) %t7 = icmp ne i32 %t6, 0 %t8 = zext i1 %t7 to i32 store i32 %t8, ptr %t4 br i1 %t7, label %scend1, label %sc0 sc0: %t9 = load ptr, ptr %t0 - %t10 = call i32 @lp_str_eq(ptr %t9, ptr @.str1362) + %t10 = call i32 @lp_str_eq(ptr %t9, ptr @.str1365) %t11 = icmp ne i32 %t10, 0 %t12 = zext i1 %t11 to i32 store i32 %t12, ptr %t4 @@ -36385,7 +36438,7 @@ scend1: br i1 %t14, label %scend3, label %sc2 sc2: %t16 = load ptr, ptr %t0 - %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str1363) + %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str1366) %t18 = icmp ne i32 %t17, 0 %t19 = zext i1 %t18 to i32 store i32 %t19, ptr %t3 @@ -36398,7 +36451,7 @@ scend3: br i1 %t21, label %scend5, label %sc4 sc4: %t23 = load ptr, ptr %t0 - %t24 = call i32 @lp_str_eq(ptr %t23, ptr @.str1364) + %t24 = call i32 @lp_str_eq(ptr %t23, ptr @.str1367) %t25 = icmp ne i32 %t24, 0 %t26 = zext i1 %t25 to i32 store i32 %t26, ptr %t2 @@ -36415,7 +36468,7 @@ then6: br label %ret ifend8: %t32 = load ptr, ptr %t0 - %t33 = call i32 @lp_str_eq(ptr %t32, ptr @.str1365) + %t33 = call i32 @lp_str_eq(ptr %t32, ptr @.str1368) %t34 = icmp ne i32 %t33, 0 br i1 %t34, label %then9, label %ifend11 then9: @@ -36431,34 +36484,34 @@ then9: %t44 = load ptr, ptr %t43 %t45 = getelementptr inbounds %Cmp_Val, ptr %t44, i32 0, i32 0 %t46 = load ptr, ptr %t45 - %t47 = call ptr @lp_str_concat(ptr @.str1366, ptr %t46) - %t48 = call ptr @lp_str_concat(ptr %t47, ptr @.str1367) + %t47 = call ptr @lp_str_concat(ptr @.str1369, ptr %t46) + %t48 = call ptr @lp_str_concat(ptr %t47, ptr @.str1370) %t49 = call ptr @fn_emit_bind(ptr %t48) store ptr %t49, ptr %t50 %t51 = load ptr, ptr %t43 %t52 = getelementptr inbounds %Cmp_Val, ptr %t51, i32 0, i32 0 %t53 = load ptr, ptr %t52 - %t54 = call ptr @lp_str_concat(ptr @.str1368, ptr %t53) - %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str1369) + %t54 = call ptr @lp_str_concat(ptr @.str1371, ptr %t53) + %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str1372) %t56 = call ptr @fn_emit_bind(ptr %t55) store ptr %t56, ptr %t57 %t58 = load ptr, ptr %t57 - %t59 = call ptr @lp_str_concat(ptr @.str1370, ptr %t58) - %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str1371) + %t59 = call ptr @lp_str_concat(ptr @.str1373, ptr %t58) + %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str1374) %t61 = call ptr @fn_emit_bind(ptr %t60) store ptr %t61, ptr %t62 %t63 = load ptr, ptr %t50 - %t64 = call ptr @lp_str_concat(ptr @.str1372, ptr %t63) - %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str1373) + %t64 = call ptr @lp_str_concat(ptr @.str1375, ptr %t63) + %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str1376) %t66 = load ptr, ptr %t62 %t67 = call ptr @lp_str_concat(ptr %t65, ptr %t66) %t68 = call ptr @fn_emit_bind(ptr %t67) - %t69 = call ptr @fn_val(ptr %t68, ptr @.str1374) + %t69 = call ptr @fn_val(ptr %t68, ptr @.str1377) store ptr %t69, ptr %retval br label %ret ifend11: %t70 = load ptr, ptr %t0 - %t71 = call i32 @lp_str_eq(ptr %t70, ptr @.str1375) + %t71 = call i32 @lp_str_eq(ptr %t70, ptr @.str1378) %t72 = icmp ne i32 %t71, 0 br i1 %t72, label %then12, label %ifend14 then12: @@ -36474,15 +36527,15 @@ then12: %t82 = load ptr, ptr %t81 %t83 = getelementptr inbounds %Cmp_Val, ptr %t82, i32 0, i32 0 %t84 = load ptr, ptr %t83 - %t85 = call ptr @lp_str_concat(ptr @.str1376, ptr %t84) - %t86 = call ptr @lp_str_concat(ptr %t85, ptr @.str1377) + %t85 = call ptr @lp_str_concat(ptr @.str1379, ptr %t84) + %t86 = call ptr @lp_str_concat(ptr %t85, ptr @.str1380) %t87 = call ptr @fn_emit_bind(ptr %t86) - %t88 = call ptr @fn_val(ptr %t87, ptr @.str1378) + %t88 = call ptr @fn_val(ptr %t87, ptr @.str1381) store ptr %t88, ptr %retval br label %ret ifend14: %t89 = load ptr, ptr %t0 - %t90 = call i32 @lp_str_eq(ptr %t89, ptr @.str1379) + %t90 = call i32 @lp_str_eq(ptr %t89, ptr @.str1382) %t91 = icmp ne i32 %t90, 0 br i1 %t91, label %then15, label %ifend17 then15: @@ -36498,20 +36551,20 @@ then15: %t101 = load ptr, ptr %t100 %t102 = getelementptr inbounds %Cmp_Val, ptr %t101, i32 0, i32 0 %t103 = load ptr, ptr %t102 - %t104 = call ptr @lp_str_concat(ptr @.str1380, ptr %t103) - %t105 = call ptr @lp_str_concat(ptr %t104, ptr @.str1381) + %t104 = call ptr @lp_str_concat(ptr @.str1383, ptr %t103) + %t105 = call ptr @lp_str_concat(ptr %t104, ptr @.str1384) %t106 = call ptr @fn_emit_bind(ptr %t105) store ptr %t106, ptr %t107 %t108 = load ptr, ptr %t107 - %t109 = call ptr @lp_str_concat(ptr @.str1382, ptr %t108) - %t110 = call ptr @lp_str_concat(ptr %t109, ptr @.str1383) + %t109 = call ptr @lp_str_concat(ptr @.str1385, ptr %t108) + %t110 = call ptr @lp_str_concat(ptr %t109, ptr @.str1386) %t111 = call ptr @fn_emit_bind(ptr %t110) - %t112 = call ptr @fn_val(ptr %t111, ptr @.str1384) + %t112 = call ptr @fn_val(ptr %t111, ptr @.str1387) store ptr %t112, ptr %retval br label %ret ifend17: %t113 = load ptr, ptr %t0 - %t114 = call i32 @lp_str_eq(ptr %t113, ptr @.str1385) + %t114 = call i32 @lp_str_eq(ptr %t113, ptr @.str1388) %t115 = icmp ne i32 %t114, 0 br i1 %t115, label %then18, label %ifend20 then18: @@ -36527,20 +36580,20 @@ then18: %t125 = load ptr, ptr %t124 %t126 = getelementptr inbounds %Cmp_Val, ptr %t125, i32 0, i32 0 %t127 = load ptr, ptr %t126 - %t128 = call ptr @lp_str_concat(ptr @.str1386, ptr %t127) - %t129 = call ptr @lp_str_concat(ptr %t128, ptr @.str1387) + %t128 = call ptr @lp_str_concat(ptr @.str1389, ptr %t127) + %t129 = call ptr @lp_str_concat(ptr %t128, ptr @.str1390) %t130 = call ptr @fn_emit_bind(ptr %t129) store ptr %t130, ptr %t131 %t132 = load ptr, ptr %t131 - %t133 = call ptr @lp_str_concat(ptr @.str1388, ptr %t132) - %t134 = call ptr @lp_str_concat(ptr %t133, ptr @.str1389) + %t133 = call ptr @lp_str_concat(ptr @.str1391, ptr %t132) + %t134 = call ptr @lp_str_concat(ptr %t133, ptr @.str1392) %t135 = call ptr @fn_emit_bind(ptr %t134) - %t136 = call ptr @fn_val(ptr %t135, ptr @.str1390) + %t136 = call ptr @fn_val(ptr %t135, ptr @.str1393) store ptr %t136, ptr %retval br label %ret ifend20: %t137 = load ptr, ptr %t0 - %t138 = call i32 @lp_str_eq(ptr %t137, ptr @.str1391) + %t138 = call i32 @lp_str_eq(ptr %t137, ptr @.str1394) %t139 = icmp ne i32 %t138, 0 br i1 %t139, label %then21, label %ifend23 then21: @@ -36581,12 +36634,12 @@ then21: %t174 = getelementptr inbounds %Cmp_Val, ptr %t173, i32 0, i32 0 %t175 = load ptr, ptr %t174 %t176 = call ptr @fn_fx_lerp_code(ptr %t169, ptr %t172, ptr %t175) - %t177 = call ptr @fn_val(ptr %t176, ptr @.str1392) + %t177 = call ptr @fn_val(ptr %t176, ptr @.str1395) store ptr %t177, ptr %retval br label %ret ifend23: %t178 = load ptr, ptr %t0 - %t179 = call i32 @lp_str_eq(ptr %t178, ptr @.str1393) + %t179 = call i32 @lp_str_eq(ptr %t178, ptr @.str1396) %t180 = icmp ne i32 %t179, 0 br i1 %t180, label %then24, label %ifend26 then24: @@ -36627,12 +36680,12 @@ then24: %t215 = getelementptr inbounds %Cmp_Val, ptr %t214, i32 0, i32 0 %t216 = load ptr, ptr %t215 %t217 = call ptr @fn_fx_inv_lerp_code(ptr %t210, ptr %t213, ptr %t216) - %t218 = call ptr @fn_val(ptr %t217, ptr @.str1394) + %t218 = call ptr @fn_val(ptr %t217, ptr @.str1397) store ptr %t218, ptr %retval br label %ret ifend26: %t219 = load ptr, ptr %t0 - %t220 = call i32 @lp_str_eq(ptr %t219, ptr @.str1395) + %t220 = call i32 @lp_str_eq(ptr %t219, ptr @.str1398) %t221 = icmp ne i32 %t220, 0 br i1 %t221, label %then27, label %ifend29 then27: @@ -36649,15 +36702,15 @@ then27: %t231 = load ptr, ptr %t230 %t232 = getelementptr inbounds %Cmp_Val, ptr %t231, i32 0, i32 0 %t233 = load ptr, ptr %t232 - %t234 = call ptr @lp_str_concat(ptr @.str1396, ptr %t233) - %t235 = call ptr @lp_str_concat(ptr %t234, ptr @.str1397) + %t234 = call ptr @lp_str_concat(ptr @.str1399, ptr %t233) + %t235 = call ptr @lp_str_concat(ptr %t234, ptr @.str1400) %t236 = call ptr @fn_emit_bind(ptr %t235) - %t237 = call ptr @fn_val(ptr %t236, ptr @.str1398) + %t237 = call ptr @fn_val(ptr %t236, ptr @.str1401) store ptr %t237, ptr %retval br label %ret ifend29: %t238 = load ptr, ptr %t0 - %t239 = call i32 @lp_str_eq(ptr %t238, ptr @.str1399) + %t239 = call i32 @lp_str_eq(ptr %t238, ptr @.str1402) %t240 = icmp ne i32 %t239, 0 br i1 %t240, label %then30, label %ifend32 then30: @@ -36674,15 +36727,15 @@ then30: %t250 = load ptr, ptr %t249 %t251 = getelementptr inbounds %Cmp_Val, ptr %t250, i32 0, i32 0 %t252 = load ptr, ptr %t251 - %t253 = call ptr @lp_str_concat(ptr @.str1400, ptr %t252) - %t254 = call ptr @lp_str_concat(ptr %t253, ptr @.str1401) + %t253 = call ptr @lp_str_concat(ptr @.str1403, ptr %t252) + %t254 = call ptr @lp_str_concat(ptr %t253, ptr @.str1404) %t255 = call ptr @fn_emit_bind(ptr %t254) - %t256 = call ptr @fn_val(ptr %t255, ptr @.str1402) + %t256 = call ptr @fn_val(ptr %t255, ptr @.str1405) store ptr %t256, ptr %retval br label %ret ifend32: %t257 = load ptr, ptr %t0 - %t258 = call i32 @lp_str_eq(ptr %t257, ptr @.str1403) + %t258 = call i32 @lp_str_eq(ptr %t257, ptr @.str1406) %t259 = icmp ne i32 %t258, 0 br i1 %t259, label %then33, label %ifend35 then33: @@ -36699,20 +36752,20 @@ then33: %t269 = load ptr, ptr %t268 %t270 = getelementptr inbounds %Cmp_Val, ptr %t269, i32 0, i32 0 %t271 = load ptr, ptr %t270 - %t272 = call ptr @lp_str_concat(ptr @.str1404, ptr %t271) - %t273 = call ptr @lp_str_concat(ptr %t272, ptr @.str1405) + %t272 = call ptr @lp_str_concat(ptr @.str1407, ptr %t271) + %t273 = call ptr @lp_str_concat(ptr %t272, ptr @.str1408) %t274 = call ptr @fn_emit_bind(ptr %t273) store ptr %t274, ptr %t275 %t276 = load ptr, ptr %t275 - %t277 = call ptr @lp_str_concat(ptr @.str1406, ptr %t276) - %t278 = call ptr @lp_str_concat(ptr %t277, ptr @.str1407) + %t277 = call ptr @lp_str_concat(ptr @.str1409, ptr %t276) + %t278 = call ptr @lp_str_concat(ptr %t277, ptr @.str1410) %t279 = call ptr @fn_emit_bind(ptr %t278) - %t280 = call ptr @fn_val(ptr %t279, ptr @.str1408) + %t280 = call ptr @fn_val(ptr %t279, ptr @.str1411) store ptr %t280, ptr %retval br label %ret ifend35: %t281 = load ptr, ptr %t0 - %t282 = call i32 @lp_str_eq(ptr %t281, ptr @.str1409) + %t282 = call i32 @lp_str_eq(ptr %t281, ptr @.str1412) %t283 = icmp ne i32 %t282, 0 br i1 %t283, label %then36, label %ifend38 then36: @@ -36729,31 +36782,31 @@ then36: %t293 = load ptr, ptr %t292 %t294 = getelementptr inbounds %Cmp_Val, ptr %t293, i32 0, i32 0 %t295 = load ptr, ptr %t294 - %t296 = call ptr @lp_str_concat(ptr @.str1410, ptr %t295) - %t297 = call ptr @lp_str_concat(ptr %t296, ptr @.str1411) + %t296 = call ptr @lp_str_concat(ptr @.str1413, ptr %t295) + %t297 = call ptr @lp_str_concat(ptr %t296, ptr @.str1414) %t298 = call ptr @fn_emit_bind(ptr %t297) store ptr %t298, ptr %t299 %t300 = load ptr, ptr %t292 %t301 = getelementptr inbounds %Cmp_Val, ptr %t300, i32 0, i32 0 %t302 = load ptr, ptr %t301 - %t303 = call ptr @lp_str_concat(ptr @.str1412, ptr %t302) - %t304 = call ptr @lp_str_concat(ptr %t303, ptr @.str1413) + %t303 = call ptr @lp_str_concat(ptr @.str1415, ptr %t302) + %t304 = call ptr @lp_str_concat(ptr %t303, ptr @.str1416) %t305 = call ptr @fn_emit_bind(ptr %t304) store ptr %t305, ptr %t306 %t307 = load ptr, ptr %t306 - %t308 = call ptr @lp_str_concat(ptr @.str1414, ptr %t307) - %t309 = call ptr @lp_str_concat(ptr %t308, ptr @.str1415) + %t308 = call ptr @lp_str_concat(ptr @.str1417, ptr %t307) + %t309 = call ptr @lp_str_concat(ptr %t308, ptr @.str1418) %t310 = call ptr @fn_emit_bind(ptr %t309) store ptr %t310, ptr %t311 %t312 = load ptr, ptr %t299 %t313 = load ptr, ptr %t311 %t314 = call ptr @fn_fx_div_code(ptr %t312, ptr %t313) - %t315 = call ptr @fn_val(ptr %t314, ptr @.str1416) + %t315 = call ptr @fn_val(ptr %t314, ptr @.str1419) store ptr %t315, ptr %retval br label %ret ifend38: %t316 = load ptr, ptr %t0 - %t317 = call i32 @lp_str_eq(ptr %t316, ptr @.str1417) + %t317 = call i32 @lp_str_eq(ptr %t316, ptr @.str1420) %t318 = icmp ne i32 %t317, 0 br i1 %t318, label %then39, label %ifend41 then39: @@ -36779,20 +36832,20 @@ then39: %t337 = load ptr, ptr %t327 %t338 = getelementptr inbounds %Cmp_Val, ptr %t337, i32 0, i32 0 %t339 = load ptr, ptr %t338 - %t340 = call ptr @lp_str_concat(ptr @.str1418, ptr %t339) - %t341 = call ptr @lp_str_concat(ptr %t340, ptr @.str1419) + %t340 = call ptr @lp_str_concat(ptr @.str1421, ptr %t339) + %t341 = call ptr @lp_str_concat(ptr %t340, ptr @.str1422) %t342 = load ptr, ptr %t336 %t343 = getelementptr inbounds %Cmp_Val, ptr %t342, i32 0, i32 0 %t344 = load ptr, ptr %t343 %t345 = call ptr @lp_str_concat(ptr %t341, ptr %t344) - %t346 = call ptr @lp_str_concat(ptr %t345, ptr @.str1420) + %t346 = call ptr @lp_str_concat(ptr %t345, ptr @.str1423) %t347 = call ptr @fn_emit_bind(ptr %t346) - %t348 = call ptr @fn_val(ptr %t347, ptr @.str1421) + %t348 = call ptr @fn_val(ptr %t347, ptr @.str1424) store ptr %t348, ptr %retval br label %ret ifend41: %t349 = load ptr, ptr %t0 - %t350 = call i32 @lp_str_eq(ptr %t349, ptr @.str1422) + %t350 = call i32 @lp_str_eq(ptr %t349, ptr @.str1425) %t351 = icmp ne i32 %t350, 0 br i1 %t351, label %then42, label %ifend44 then42: @@ -36815,29 +36868,29 @@ then42: %t367 = call ptr @fn_fx_mul_code(ptr %t363, ptr %t366) store ptr %t367, ptr %t368 %t369 = load ptr, ptr %t368 - %t370 = call ptr @lp_str_concat(ptr @.str1423, ptr %t369) + %t370 = call ptr @lp_str_concat(ptr @.str1426, ptr %t369) %t371 = call ptr @fn_emit_bind(ptr %t370) store ptr %t371, ptr %t372 %t373 = load ptr, ptr %t372 - %t374 = call ptr @lp_str_concat(ptr @.str1424, ptr %t373) - %t375 = call ptr @lp_str_concat(ptr %t374, ptr @.str1425) + %t374 = call ptr @lp_str_concat(ptr @.str1427, ptr %t373) + %t375 = call ptr @lp_str_concat(ptr %t374, ptr @.str1428) %t376 = call ptr @fn_emit_bind(ptr %t375) store ptr %t376, ptr %t377 %t378 = load ptr, ptr %t360 %t379 = getelementptr inbounds %Cmp_Val, ptr %t378, i32 0, i32 0 %t380 = load ptr, ptr %t379 - %t381 = call ptr @lp_str_concat(ptr @.str1426, ptr %t380) - %t382 = call ptr @lp_str_concat(ptr %t381, ptr @.str1427) + %t381 = call ptr @lp_str_concat(ptr @.str1429, ptr %t380) + %t382 = call ptr @lp_str_concat(ptr %t381, ptr @.str1430) %t383 = load ptr, ptr %t377 %t384 = call ptr @lp_str_concat(ptr %t382, ptr %t383) - %t385 = call ptr @lp_str_concat(ptr %t384, ptr @.str1428) + %t385 = call ptr @lp_str_concat(ptr %t384, ptr @.str1431) %t386 = call ptr @fn_emit_bind(ptr %t385) - %t387 = call ptr @fn_val(ptr %t386, ptr @.str1429) + %t387 = call ptr @fn_val(ptr %t386, ptr @.str1432) store ptr %t387, ptr %retval br label %ret ifend44: %t388 = load ptr, ptr %t0 - %t389 = call i32 @lp_str_eq(ptr %t388, ptr @.str1430) + %t389 = call i32 @lp_str_eq(ptr %t388, ptr @.str1433) %t390 = icmp ne i32 %t389, 0 br i1 %t390, label %then45, label %ifend47 then45: @@ -36860,29 +36913,29 @@ then45: %t406 = call ptr @fn_fx_mul_code(ptr %t402, ptr %t405) store ptr %t406, ptr %t407 %t408 = load ptr, ptr %t407 - %t409 = call ptr @lp_str_concat(ptr @.str1431, ptr %t408) + %t409 = call ptr @lp_str_concat(ptr @.str1434, ptr %t408) %t410 = call ptr @fn_emit_bind(ptr %t409) store ptr %t410, ptr %t411 %t412 = load ptr, ptr %t411 - %t413 = call ptr @lp_str_concat(ptr @.str1432, ptr %t412) - %t414 = call ptr @lp_str_concat(ptr %t413, ptr @.str1433) + %t413 = call ptr @lp_str_concat(ptr @.str1435, ptr %t412) + %t414 = call ptr @lp_str_concat(ptr %t413, ptr @.str1436) %t415 = call ptr @fn_emit_bind(ptr %t414) store ptr %t415, ptr %t416 %t417 = load ptr, ptr %t416 - %t418 = call ptr @lp_str_concat(ptr @.str1434, ptr %t417) - %t419 = call ptr @lp_str_concat(ptr %t418, ptr @.str1435) + %t418 = call ptr @lp_str_concat(ptr @.str1437, ptr %t417) + %t419 = call ptr @lp_str_concat(ptr %t418, ptr @.str1438) %t420 = load ptr, ptr %t399 %t421 = getelementptr inbounds %Cmp_Val, ptr %t420, i32 0, i32 0 %t422 = load ptr, ptr %t421 %t423 = call ptr @lp_str_concat(ptr %t419, ptr %t422) - %t424 = call ptr @lp_str_concat(ptr %t423, ptr @.str1436) + %t424 = call ptr @lp_str_concat(ptr %t423, ptr @.str1439) %t425 = call ptr @fn_emit_bind(ptr %t424) - %t426 = call ptr @fn_val(ptr %t425, ptr @.str1437) + %t426 = call ptr @fn_val(ptr %t425, ptr @.str1440) store ptr %t426, ptr %retval br label %ret ifend47: %t427 = load ptr, ptr %t0 - %t428 = call i32 @lp_str_eq(ptr %t427, ptr @.str1438) + %t428 = call i32 @lp_str_eq(ptr %t427, ptr @.str1441) %t429 = icmp ne i32 %t428, 0 br i1 %t429, label %then48, label %ifend50 then48: @@ -36922,22 +36975,22 @@ then48: %t462 = call ptr @fn_fx_mul_code(ptr %t458, ptr %t461) store ptr %t462, ptr %t463 %t464 = load ptr, ptr %t455 - %t465 = call ptr @lp_str_concat(ptr @.str1439, ptr %t464) - %t466 = call ptr @lp_str_concat(ptr %t465, ptr @.str1440) + %t465 = call ptr @lp_str_concat(ptr @.str1442, ptr %t464) + %t466 = call ptr @lp_str_concat(ptr %t465, ptr @.str1443) %t467 = load ptr, ptr %t463 %t468 = call ptr @lp_str_concat(ptr %t466, ptr %t467) %t469 = call ptr @fn_emit_bind(ptr %t468) store ptr %t469, ptr %t470 %t471 = load ptr, ptr %t470 - %t472 = call ptr @lp_str_concat(ptr @.str1441, ptr %t471) - %t473 = call ptr @lp_str_concat(ptr %t472, ptr @.str1442) + %t472 = call ptr @lp_str_concat(ptr @.str1444, ptr %t471) + %t473 = call ptr @lp_str_concat(ptr %t472, ptr @.str1445) %t474 = call ptr @fn_emit_bind(ptr %t473) - %t475 = call ptr @fn_val(ptr %t474, ptr @.str1443) + %t475 = call ptr @fn_val(ptr %t474, ptr @.str1446) store ptr %t475, ptr %retval br label %ret ifend50: %t476 = load ptr, ptr %t0 - %t477 = call i32 @lp_str_eq(ptr %t476, ptr @.str1444) + %t477 = call i32 @lp_str_eq(ptr %t476, ptr @.str1447) %t478 = icmp ne i32 %t477, 0 br i1 %t478, label %then51, label %ifend53 then51: @@ -36980,8 +37033,8 @@ then51: %t515 = load ptr, ptr %t505 %t516 = getelementptr inbounds %Cmp_Val, ptr %t515, i32 0, i32 0 %t517 = load ptr, ptr %t516 - %t518 = call ptr @lp_str_concat(ptr @.str1445, ptr %t517) - %t519 = call ptr @lp_str_concat(ptr %t518, ptr @.str1446) + %t518 = call ptr @lp_str_concat(ptr @.str1448, ptr %t517) + %t519 = call ptr @lp_str_concat(ptr %t518, ptr @.str1449) %t520 = load ptr, ptr %t487 %t521 = getelementptr inbounds %Cmp_Val, ptr %t520, i32 0, i32 0 %t522 = load ptr, ptr %t521 @@ -36991,8 +37044,8 @@ then51: %t526 = load ptr, ptr %t514 %t527 = getelementptr inbounds %Cmp_Val, ptr %t526, i32 0, i32 0 %t528 = load ptr, ptr %t527 - %t529 = call ptr @lp_str_concat(ptr @.str1447, ptr %t528) - %t530 = call ptr @lp_str_concat(ptr %t529, ptr @.str1448) + %t529 = call ptr @lp_str_concat(ptr @.str1450, ptr %t528) + %t530 = call ptr @lp_str_concat(ptr %t529, ptr @.str1451) %t531 = load ptr, ptr %t496 %t532 = getelementptr inbounds %Cmp_Val, ptr %t531, i32 0, i32 0 %t533 = load ptr, ptr %t532 @@ -37008,17 +37061,17 @@ then51: %t543 = call ptr @fn_fx_mul_code(ptr %t541, ptr %t542) store ptr %t543, ptr %t544 %t545 = load ptr, ptr %t540 - %t546 = call ptr @lp_str_concat(ptr @.str1449, ptr %t545) - %t547 = call ptr @lp_str_concat(ptr %t546, ptr @.str1450) + %t546 = call ptr @lp_str_concat(ptr @.str1452, ptr %t545) + %t547 = call ptr @lp_str_concat(ptr %t546, ptr @.str1453) %t548 = load ptr, ptr %t544 %t549 = call ptr @lp_str_concat(ptr %t547, ptr %t548) %t550 = call ptr @fn_emit_bind(ptr %t549) - %t551 = call ptr @fn_val(ptr %t550, ptr @.str1451) + %t551 = call ptr @fn_val(ptr %t550, ptr @.str1454) store ptr %t551, ptr %retval br label %ret ifend53: %t552 = load ptr, ptr %t0 - %t553 = call i32 @lp_str_eq(ptr %t552, ptr @.str1452) + %t553 = call i32 @lp_str_eq(ptr %t552, ptr @.str1455) %t554 = icmp ne i32 %t553, 0 br i1 %t554, label %then54, label %ifend56 then54: @@ -37062,8 +37115,8 @@ then54: %t591 = load ptr, ptr %t581 %t592 = getelementptr inbounds %Cmp_Val, ptr %t591, i32 0, i32 0 %t593 = load ptr, ptr %t592 - %t594 = call ptr @lp_str_concat(ptr @.str1453, ptr %t593) - %t595 = call ptr @lp_str_concat(ptr %t594, ptr @.str1454) + %t594 = call ptr @lp_str_concat(ptr @.str1456, ptr %t593) + %t595 = call ptr @lp_str_concat(ptr %t594, ptr @.str1457) %t596 = load ptr, ptr %t563 %t597 = getelementptr inbounds %Cmp_Val, ptr %t596, i32 0, i32 0 %t598 = load ptr, ptr %t597 @@ -37073,8 +37126,8 @@ then54: %t602 = load ptr, ptr %t590 %t603 = getelementptr inbounds %Cmp_Val, ptr %t602, i32 0, i32 0 %t604 = load ptr, ptr %t603 - %t605 = call ptr @lp_str_concat(ptr @.str1455, ptr %t604) - %t606 = call ptr @lp_str_concat(ptr %t605, ptr @.str1456) + %t605 = call ptr @lp_str_concat(ptr @.str1458, ptr %t604) + %t606 = call ptr @lp_str_concat(ptr %t605, ptr @.str1459) %t607 = load ptr, ptr %t572 %t608 = getelementptr inbounds %Cmp_Val, ptr %t607, i32 0, i32 0 %t609 = load ptr, ptr %t608 @@ -37090,22 +37143,22 @@ then54: %t619 = call ptr @fn_fx_mul_code(ptr %t617, ptr %t618) store ptr %t619, ptr %t620 %t621 = load ptr, ptr %t616 - %t622 = call ptr @lp_str_concat(ptr @.str1457, ptr %t621) - %t623 = call ptr @lp_str_concat(ptr %t622, ptr @.str1458) + %t622 = call ptr @lp_str_concat(ptr @.str1460, ptr %t621) + %t623 = call ptr @lp_str_concat(ptr %t622, ptr @.str1461) %t624 = load ptr, ptr %t620 %t625 = call ptr @lp_str_concat(ptr %t623, ptr %t624) %t626 = call ptr @fn_emit_bind(ptr %t625) store ptr %t626, ptr %t627 %t628 = load ptr, ptr %t627 - %t629 = call ptr @lp_str_concat(ptr @.str1459, ptr %t628) - %t630 = call ptr @lp_str_concat(ptr %t629, ptr @.str1460) + %t629 = call ptr @lp_str_concat(ptr @.str1462, ptr %t628) + %t630 = call ptr @lp_str_concat(ptr %t629, ptr @.str1463) %t631 = call ptr @fn_emit_bind(ptr %t630) - %t632 = call ptr @fn_val(ptr %t631, ptr @.str1461) + %t632 = call ptr @fn_val(ptr %t631, ptr @.str1464) store ptr %t632, ptr %retval br label %ret ifend56: %t633 = load ptr, ptr %t0 - %t634 = call i32 @lp_str_eq(ptr %t633, ptr @.str1462) + %t634 = call i32 @lp_str_eq(ptr %t633, ptr @.str1465) %t635 = icmp ne i32 %t634, 0 br i1 %t635, label %then57, label %ifend59 then57: @@ -37122,18 +37175,18 @@ then57: %t645 = load ptr, ptr %t644 %t646 = getelementptr inbounds %Cmp_Val, ptr %t645, i32 0, i32 0 %t647 = load ptr, ptr %t646 - %t648 = call ptr @fn_fx_mul_code(ptr %t647, ptr @.str1463) + %t648 = call ptr @fn_fx_mul_code(ptr %t647, ptr @.str1466) store ptr %t648, ptr %t649 %t650 = load ptr, ptr %t649 - %t651 = call ptr @lp_str_concat(ptr @.str1464, ptr %t650) - %t652 = call ptr @lp_str_concat(ptr %t651, ptr @.str1465) + %t651 = call ptr @lp_str_concat(ptr @.str1467, ptr %t650) + %t652 = call ptr @lp_str_concat(ptr %t651, ptr @.str1468) %t653 = call ptr @fn_emit_bind(ptr %t652) - %t654 = call ptr @fn_val(ptr %t653, ptr @.str1466) + %t654 = call ptr @fn_val(ptr %t653, ptr @.str1469) store ptr %t654, ptr %retval br label %ret ifend59: %t655 = load ptr, ptr %t0 - %t656 = call i32 @lp_str_eq(ptr %t655, ptr @.str1467) + %t656 = call i32 @lp_str_eq(ptr %t655, ptr @.str1470) %t657 = icmp ne i32 %t656, 0 br i1 %t657, label %then60, label %ifend62 then60: @@ -37150,18 +37203,18 @@ then60: %t667 = load ptr, ptr %t666 %t668 = getelementptr inbounds %Cmp_Val, ptr %t667, i32 0, i32 0 %t669 = load ptr, ptr %t668 - %t670 = call ptr @lp_str_concat(ptr @.str1468, ptr %t669) - %t671 = call ptr @lp_str_concat(ptr %t670, ptr @.str1469) + %t670 = call ptr @lp_str_concat(ptr @.str1471, ptr %t669) + %t671 = call ptr @lp_str_concat(ptr %t670, ptr @.str1472) %t672 = call ptr @fn_emit_bind(ptr %t671) store ptr %t672, ptr %t673 %t674 = load ptr, ptr %t673 - %t675 = call ptr @fn_fx_mul_code(ptr %t674, ptr @.str1470) - %t676 = call ptr @fn_val(ptr %t675, ptr @.str1471) + %t675 = call ptr @fn_fx_mul_code(ptr %t674, ptr @.str1473) + %t676 = call ptr @fn_val(ptr %t675, ptr @.str1474) store ptr %t676, ptr %retval br label %ret ifend62: %t677 = load ptr, ptr %t0 - %t678 = call i32 @lp_str_eq(ptr %t677, ptr @.str1472) + %t678 = call i32 @lp_str_eq(ptr %t677, ptr @.str1475) %t679 = icmp ne i32 %t678, 0 br i1 %t679, label %then63, label %ifend65 then63: @@ -37187,8 +37240,8 @@ then63: %t698 = load ptr, ptr %t688 %t699 = getelementptr inbounds %Cmp_Val, ptr %t698, i32 0, i32 0 %t700 = load ptr, ptr %t699 - %t701 = call ptr @lp_str_concat(ptr @.str1473, ptr %t700) - %t702 = call ptr @lp_str_concat(ptr %t701, ptr @.str1474) + %t701 = call ptr @lp_str_concat(ptr @.str1476, ptr %t700) + %t702 = call ptr @lp_str_concat(ptr %t701, ptr @.str1477) %t703 = call ptr @fn_emit_bind(ptr %t702) store ptr %t703, ptr %t704 %t705 = load ptr, ptr %t697 @@ -37198,15 +37251,15 @@ then63: %t709 = call ptr @fn_fx_mul_code(ptr %t707, ptr %t708) store ptr %t709, ptr %t710 %t711 = load ptr, ptr %t710 - %t712 = call ptr @lp_str_concat(ptr @.str1475, ptr %t711) - %t713 = call ptr @lp_str_concat(ptr %t712, ptr @.str1476) + %t712 = call ptr @lp_str_concat(ptr @.str1478, ptr %t711) + %t713 = call ptr @lp_str_concat(ptr %t712, ptr @.str1479) %t714 = call ptr @fn_emit_bind(ptr %t713) - %t715 = call ptr @fn_val(ptr %t714, ptr @.str1477) + %t715 = call ptr @fn_val(ptr %t714, ptr @.str1480) store ptr %t715, ptr %retval br label %ret ifend65: %t716 = load ptr, ptr %t0 - %t717 = call i32 @lp_str_eq(ptr %t716, ptr @.str1478) + %t717 = call i32 @lp_str_eq(ptr %t716, ptr @.str1481) %t718 = icmp ne i32 %t717, 0 br i1 %t718, label %then66, label %ifend68 then66: @@ -37222,13 +37275,13 @@ then66: %t728 = load ptr, ptr %t727 %t729 = getelementptr inbounds %Cmp_Val, ptr %t728, i32 0, i32 0 %t730 = load ptr, ptr %t729 - %t731 = call ptr @fn_fx_mul_code(ptr %t730, ptr @.str1479) - %t732 = call ptr @fn_val(ptr %t731, ptr @.str1480) + %t731 = call ptr @fn_fx_mul_code(ptr %t730, ptr @.str1482) + %t732 = call ptr @fn_val(ptr %t731, ptr @.str1483) store ptr %t732, ptr %retval br label %ret ifend68: %t733 = load ptr, ptr %t0 - %t734 = call i32 @lp_str_eq(ptr %t733, ptr @.str1481) + %t734 = call i32 @lp_str_eq(ptr %t733, ptr @.str1484) %t735 = icmp ne i32 %t734, 0 br i1 %t735, label %then69, label %ifend71 then69: @@ -37244,13 +37297,13 @@ then69: %t745 = load ptr, ptr %t744 %t746 = getelementptr inbounds %Cmp_Val, ptr %t745, i32 0, i32 0 %t747 = load ptr, ptr %t746 - %t748 = call ptr @fn_fx_mul_code(ptr %t747, ptr @.str1482) - %t749 = call ptr @fn_val(ptr %t748, ptr @.str1483) + %t748 = call ptr @fn_fx_mul_code(ptr %t747, ptr @.str1485) + %t749 = call ptr @fn_val(ptr %t748, ptr @.str1486) store ptr %t749, ptr %retval br label %ret ifend71: %t750 = load ptr, ptr %t0 - %t751 = call i32 @lp_str_eq(ptr %t750, ptr @.str1484) + %t751 = call i32 @lp_str_eq(ptr %t750, ptr @.str1487) %t752 = icmp ne i32 %t751, 0 br i1 %t752, label %then72, label %ifend74 then72: @@ -37275,8 +37328,8 @@ then72: %t771 = load ptr, ptr %t761 %t772 = getelementptr inbounds %Cmp_Val, ptr %t771, i32 0, i32 0 %t773 = load ptr, ptr %t772 - %t774 = call ptr @lp_str_concat(ptr @.str1485, ptr %t773) - %t775 = call ptr @lp_str_concat(ptr %t774, ptr @.str1486) + %t774 = call ptr @lp_str_concat(ptr @.str1488, ptr %t773) + %t775 = call ptr @lp_str_concat(ptr %t774, ptr @.str1489) %t776 = load ptr, ptr %t770 %t777 = getelementptr inbounds %Cmp_Val, ptr %t776, i32 0, i32 0 %t778 = load ptr, ptr %t777 @@ -37284,8 +37337,8 @@ then72: %t780 = call ptr @fn_emit_bind(ptr %t779) store ptr %t780, ptr %t781 %t782 = load ptr, ptr %t781 - %t783 = call ptr @lp_str_concat(ptr @.str1487, ptr %t782) - %t784 = call ptr @lp_str_concat(ptr %t783, ptr @.str1488) + %t783 = call ptr @lp_str_concat(ptr @.str1490, ptr %t782) + %t784 = call ptr @lp_str_concat(ptr %t783, ptr @.str1491) %t785 = load ptr, ptr %t770 %t786 = getelementptr inbounds %Cmp_Val, ptr %t785, i32 0, i32 0 %t787 = load ptr, ptr %t786 @@ -37293,19 +37346,19 @@ then72: %t789 = call ptr @fn_emit_bind(ptr %t788) store ptr %t789, ptr %t790 %t791 = load ptr, ptr %t790 - %t792 = call ptr @lp_str_concat(ptr @.str1489, ptr %t791) - %t793 = call ptr @lp_str_concat(ptr %t792, ptr @.str1490) + %t792 = call ptr @lp_str_concat(ptr @.str1492, ptr %t791) + %t793 = call ptr @lp_str_concat(ptr %t792, ptr @.str1493) %t794 = load ptr, ptr %t770 %t795 = getelementptr inbounds %Cmp_Val, ptr %t794, i32 0, i32 0 %t796 = load ptr, ptr %t795 %t797 = call ptr @lp_str_concat(ptr %t793, ptr %t796) %t798 = call ptr @fn_emit_bind(ptr %t797) - %t799 = call ptr @fn_val(ptr %t798, ptr @.str1491) + %t799 = call ptr @fn_val(ptr %t798, ptr @.str1494) store ptr %t799, ptr %retval br label %ret ifend74: %t800 = load ptr, ptr %t0 - %t801 = call i32 @lp_str_eq(ptr %t800, ptr @.str1492) + %t801 = call i32 @lp_str_eq(ptr %t800, ptr @.str1495) %t802 = icmp ne i32 %t801, 0 br i1 %t802, label %then75, label %ifend77 then75: @@ -37339,8 +37392,8 @@ then75: %t830 = load ptr, ptr %t829 %t831 = getelementptr inbounds %Cmp_Val, ptr %t830, i32 0, i32 0 %t832 = load ptr, ptr %t831 - %t833 = call ptr @lp_str_concat(ptr @.str1493, ptr %t832) - %t834 = call ptr @lp_str_concat(ptr %t833, ptr @.str1494) + %t833 = call ptr @lp_str_concat(ptr @.str1496, ptr %t832) + %t834 = call ptr @lp_str_concat(ptr %t833, ptr @.str1497) %t835 = load ptr, ptr %t820 %t836 = getelementptr inbounds %Cmp_Val, ptr %t835, i32 0, i32 0 %t837 = load ptr, ptr %t836 @@ -37350,8 +37403,8 @@ then75: %t841 = load ptr, ptr %t811 %t842 = getelementptr inbounds %Cmp_Val, ptr %t841, i32 0, i32 0 %t843 = load ptr, ptr %t842 - %t844 = call ptr @lp_str_concat(ptr @.str1495, ptr %t843) - %t845 = call ptr @lp_str_concat(ptr %t844, ptr @.str1496) + %t844 = call ptr @lp_str_concat(ptr @.str1498, ptr %t843) + %t845 = call ptr @lp_str_concat(ptr %t844, ptr @.str1499) %t846 = load ptr, ptr %t820 %t847 = getelementptr inbounds %Cmp_Val, ptr %t846, i32 0, i32 0 %t848 = load ptr, ptr %t847 @@ -37359,22 +37412,22 @@ then75: %t850 = call ptr @fn_emit_bind(ptr %t849) store ptr %t850, ptr %t851 %t852 = load ptr, ptr %t851 - %t853 = call ptr @lp_str_concat(ptr @.str1497, ptr %t852) - %t854 = call ptr @lp_str_concat(ptr %t853, ptr @.str1498) + %t853 = call ptr @lp_str_concat(ptr @.str1500, ptr %t852) + %t854 = call ptr @lp_str_concat(ptr %t853, ptr @.str1501) %t855 = load ptr, ptr %t840 %t856 = call ptr @lp_str_concat(ptr %t854, ptr %t855) %t857 = call ptr @fn_emit_bind(ptr %t856) store ptr %t857, ptr %t858 %t859 = load ptr, ptr %t858 - %t860 = call ptr @lp_str_concat(ptr @.str1499, ptr %t859) - %t861 = call ptr @lp_str_concat(ptr %t860, ptr @.str1500) + %t860 = call ptr @lp_str_concat(ptr @.str1502, ptr %t859) + %t861 = call ptr @lp_str_concat(ptr %t860, ptr @.str1503) %t862 = load ptr, ptr %t840 %t863 = call ptr @lp_str_concat(ptr %t861, ptr %t862) %t864 = call ptr @fn_emit_bind(ptr %t863) store ptr %t864, ptr %t865 %t866 = load ptr, ptr %t865 - %t867 = call ptr @lp_str_concat(ptr @.str1501, ptr %t866) - %t868 = call ptr @lp_str_concat(ptr %t867, ptr @.str1502) + %t867 = call ptr @lp_str_concat(ptr @.str1504, ptr %t866) + %t868 = call ptr @lp_str_concat(ptr %t867, ptr @.str1505) %t869 = load ptr, ptr %t840 %t870 = call ptr @lp_str_concat(ptr %t868, ptr %t869) %t871 = call ptr @fn_emit_bind(ptr %t870) @@ -37382,17 +37435,17 @@ then75: %t873 = load ptr, ptr %t820 %t874 = getelementptr inbounds %Cmp_Val, ptr %t873, i32 0, i32 0 %t875 = load ptr, ptr %t874 - %t876 = call ptr @lp_str_concat(ptr @.str1503, ptr %t875) - %t877 = call ptr @lp_str_concat(ptr %t876, ptr @.str1504) + %t876 = call ptr @lp_str_concat(ptr @.str1506, ptr %t875) + %t877 = call ptr @lp_str_concat(ptr %t876, ptr @.str1507) %t878 = load ptr, ptr %t872 %t879 = call ptr @lp_str_concat(ptr %t877, ptr %t878) %t880 = call ptr @fn_emit_bind(ptr %t879) - %t881 = call ptr @fn_val(ptr %t880, ptr @.str1505) + %t881 = call ptr @fn_val(ptr %t880, ptr @.str1508) store ptr %t881, ptr %retval br label %ret ifend77: %t882 = load ptr, ptr %t0 - %t883 = call i32 @lp_str_eq(ptr %t882, ptr @.str1506) + %t883 = call i32 @lp_str_eq(ptr %t882, ptr @.str1509) %t884 = icmp ne i32 %t883, 0 br i1 %t884, label %then78, label %ifend80 then78: @@ -37417,36 +37470,36 @@ then78: %t903 = load ptr, ptr %t902 %t904 = getelementptr inbounds %Cmp_Val, ptr %t903, i32 0, i32 0 %t905 = load ptr, ptr %t904 - %t906 = call ptr @lp_str_concat(ptr @.str1507, ptr %t905) - %t907 = call ptr @lp_str_concat(ptr %t906, ptr @.str1508) + %t906 = call ptr @lp_str_concat(ptr @.str1510, ptr %t905) + %t907 = call ptr @lp_str_concat(ptr %t906, ptr @.str1511) %t908 = call ptr @fn_emit_bind(ptr %t907) store ptr %t908, ptr %t909 %t910 = load ptr, ptr %t893 %t911 = getelementptr inbounds %Cmp_Val, ptr %t910, i32 0, i32 0 %t912 = load ptr, ptr %t911 - %t913 = call ptr @lp_str_concat(ptr @.str1509, ptr %t912) - %t914 = call ptr @lp_str_concat(ptr %t913, ptr @.str1510) + %t913 = call ptr @lp_str_concat(ptr @.str1512, ptr %t912) + %t914 = call ptr @lp_str_concat(ptr %t913, ptr @.str1513) %t915 = load ptr, ptr %t909 %t916 = call ptr @lp_str_concat(ptr %t914, ptr %t915) %t917 = call ptr @fn_emit_bind(ptr %t916) store ptr %t917, ptr %t918 %t919 = load ptr, ptr %t918 - %t920 = call ptr @lp_str_concat(ptr @.str1511, ptr %t919) - %t921 = call ptr @lp_str_concat(ptr %t920, ptr @.str1512) + %t920 = call ptr @lp_str_concat(ptr @.str1514, ptr %t919) + %t921 = call ptr @lp_str_concat(ptr %t920, ptr @.str1515) %t922 = load ptr, ptr %t909 %t923 = call ptr @lp_str_concat(ptr %t921, ptr %t922) %t924 = call ptr @fn_emit_bind(ptr %t923) store ptr %t924, ptr %t925 %t926 = load ptr, ptr %t925 - %t927 = call ptr @lp_str_concat(ptr @.str1513, ptr %t926) - %t928 = call ptr @lp_str_concat(ptr %t927, ptr @.str1514) + %t927 = call ptr @lp_str_concat(ptr @.str1516, ptr %t926) + %t928 = call ptr @lp_str_concat(ptr %t927, ptr @.str1517) %t929 = load ptr, ptr %t909 %t930 = call ptr @lp_str_concat(ptr %t928, ptr %t929) %t931 = call ptr @fn_emit_bind(ptr %t930) store ptr %t931, ptr %t932 %t933 = load ptr, ptr %t932 - %t934 = call ptr @lp_str_concat(ptr @.str1515, ptr %t933) - %t935 = call ptr @lp_str_concat(ptr %t934, ptr @.str1516) + %t934 = call ptr @lp_str_concat(ptr @.str1518, ptr %t933) + %t935 = call ptr @lp_str_concat(ptr %t934, ptr @.str1519) %t936 = load ptr, ptr %t902 %t937 = getelementptr inbounds %Cmp_Val, ptr %t936, i32 0, i32 0 %t938 = load ptr, ptr %t937 @@ -37454,20 +37507,20 @@ then78: %t940 = call ptr @fn_emit_bind(ptr %t939) store ptr %t940, ptr %t941 %t942 = load ptr, ptr %t941 - %t943 = call ptr @lp_str_concat(ptr @.str1517, ptr %t942) + %t943 = call ptr @lp_str_concat(ptr @.str1520, ptr %t942) %t944 = call ptr @fn_emit_bind(ptr %t943) store ptr %t944, ptr %t945 %t946 = load ptr, ptr %t941 - %t947 = call ptr @lp_str_concat(ptr @.str1518, ptr %t946) - %t948 = call ptr @lp_str_concat(ptr %t947, ptr @.str1519) + %t947 = call ptr @lp_str_concat(ptr @.str1521, ptr %t946) + %t948 = call ptr @lp_str_concat(ptr %t947, ptr @.str1522) %t949 = call ptr @fn_emit_bind(ptr %t948) store ptr %t949, ptr %t950 %t951 = load ptr, ptr %t950 - %t952 = call ptr @lp_str_concat(ptr @.str1520, ptr %t951) - %t953 = call ptr @lp_str_concat(ptr %t952, ptr @.str1521) + %t952 = call ptr @lp_str_concat(ptr @.str1523, ptr %t951) + %t953 = call ptr @lp_str_concat(ptr %t952, ptr @.str1524) %t954 = load ptr, ptr %t945 %t955 = call ptr @lp_str_concat(ptr %t953, ptr %t954) - %t956 = call ptr @lp_str_concat(ptr %t955, ptr @.str1522) + %t956 = call ptr @lp_str_concat(ptr %t955, ptr @.str1525) %t957 = load ptr, ptr %t941 %t958 = call ptr @lp_str_concat(ptr %t956, ptr %t957) %t959 = call ptr @fn_emit_bind(ptr %t958) @@ -37475,17 +37528,17 @@ then78: %t961 = load ptr, ptr %t902 %t962 = getelementptr inbounds %Cmp_Val, ptr %t961, i32 0, i32 0 %t963 = load ptr, ptr %t962 - %t964 = call ptr @lp_str_concat(ptr @.str1523, ptr %t963) - %t965 = call ptr @lp_str_concat(ptr %t964, ptr @.str1524) + %t964 = call ptr @lp_str_concat(ptr @.str1526, ptr %t963) + %t965 = call ptr @lp_str_concat(ptr %t964, ptr @.str1527) %t966 = load ptr, ptr %t960 %t967 = call ptr @lp_str_concat(ptr %t965, ptr %t966) %t968 = call ptr @fn_emit_bind(ptr %t967) - %t969 = call ptr @fn_val(ptr %t968, ptr @.str1525) + %t969 = call ptr @fn_val(ptr %t968, ptr @.str1528) store ptr %t969, ptr %retval br label %ret ifend80: %t970 = load ptr, ptr %t0 - %t971 = call i32 @lp_str_eq(ptr %t970, ptr @.str1526) + %t971 = call i32 @lp_str_eq(ptr %t970, ptr @.str1529) %t972 = icmp ne i32 %t971, 0 br i1 %t972, label %then81, label %ifend83 then81: @@ -37516,29 +37569,29 @@ then81: %t997 = call ptr @fn_fx_div_code(ptr %t993, ptr %t996) store ptr %t997, ptr %t998 %t999 = load ptr, ptr %t998 - %t1000 = call ptr @lp_str_concat(ptr @.str1527, ptr %t999) - %t1001 = call ptr @lp_str_concat(ptr %t1000, ptr @.str1528) + %t1000 = call ptr @lp_str_concat(ptr @.str1530, ptr %t999) + %t1001 = call ptr @lp_str_concat(ptr %t1000, ptr @.str1531) %t1002 = call ptr @fn_emit_bind(ptr %t1001) store ptr %t1002, ptr %t1003 %t1004 = load ptr, ptr %t1003 - %t1005 = call ptr @lp_str_concat(ptr @.str1529, ptr %t1004) - %t1006 = call ptr @lp_str_concat(ptr %t1005, ptr @.str1530) + %t1005 = call ptr @lp_str_concat(ptr @.str1532, ptr %t1004) + %t1006 = call ptr @lp_str_concat(ptr %t1005, ptr @.str1533) %t1007 = call ptr @fn_emit_bind(ptr %t1006) store ptr %t1007, ptr %t1008 %t1009 = load ptr, ptr %t1008 - %t1010 = call ptr @lp_str_concat(ptr @.str1531, ptr %t1009) - %t1011 = call ptr @lp_str_concat(ptr %t1010, ptr @.str1532) + %t1010 = call ptr @lp_str_concat(ptr @.str1534, ptr %t1009) + %t1011 = call ptr @lp_str_concat(ptr %t1010, ptr @.str1535) %t1012 = load ptr, ptr %t990 %t1013 = getelementptr inbounds %Cmp_Val, ptr %t1012, i32 0, i32 0 %t1014 = load ptr, ptr %t1013 %t1015 = call ptr @lp_str_concat(ptr %t1011, ptr %t1014) %t1016 = call ptr @fn_emit_bind(ptr %t1015) - %t1017 = call ptr @fn_val(ptr %t1016, ptr @.str1533) + %t1017 = call ptr @fn_val(ptr %t1016, ptr @.str1536) store ptr %t1017, ptr %retval br label %ret ifend83: %t1018 = load ptr, ptr %t0 - %t1019 = call i32 @lp_str_eq(ptr %t1018, ptr @.str1534) + %t1019 = call i32 @lp_str_eq(ptr %t1018, ptr @.str1537) %t1020 = icmp ne i32 %t1019, 0 br i1 %t1020, label %then84, label %ifend86 then84: @@ -37572,8 +37625,8 @@ then84: %t1048 = load ptr, ptr %t1038 %t1049 = getelementptr inbounds %Cmp_Val, ptr %t1048, i32 0, i32 0 %t1050 = load ptr, ptr %t1049 - %t1051 = call ptr @lp_str_concat(ptr @.str1535, ptr %t1050) - %t1052 = call ptr @lp_str_concat(ptr %t1051, ptr @.str1536) + %t1051 = call ptr @lp_str_concat(ptr @.str1538, ptr %t1050) + %t1052 = call ptr @lp_str_concat(ptr %t1051, ptr @.str1539) %t1053 = load ptr, ptr %t1029 %t1054 = getelementptr inbounds %Cmp_Val, ptr %t1053, i32 0, i32 0 %t1055 = load ptr, ptr %t1054 @@ -37581,49 +37634,49 @@ then84: %t1057 = call ptr @fn_emit_bind(ptr %t1056) store ptr %t1057, ptr %t1058 %t1059 = load ptr, ptr %t1058 - %t1060 = call ptr @lp_str_concat(ptr @.str1537, ptr %t1059) + %t1060 = call ptr @lp_str_concat(ptr @.str1540, ptr %t1059) %t1061 = call ptr @fn_emit_bind(ptr %t1060) store ptr %t1061, ptr %t1062 %t1063 = load ptr, ptr %t1058 - %t1064 = call ptr @lp_str_concat(ptr @.str1538, ptr %t1063) - %t1065 = call ptr @lp_str_concat(ptr %t1064, ptr @.str1539) + %t1064 = call ptr @lp_str_concat(ptr @.str1541, ptr %t1063) + %t1065 = call ptr @lp_str_concat(ptr %t1064, ptr @.str1542) %t1066 = call ptr @fn_emit_bind(ptr %t1065) store ptr %t1066, ptr %t1067 %t1068 = load ptr, ptr %t1067 - %t1069 = call ptr @lp_str_concat(ptr @.str1540, ptr %t1068) - %t1070 = call ptr @lp_str_concat(ptr %t1069, ptr @.str1541) + %t1069 = call ptr @lp_str_concat(ptr @.str1543, ptr %t1068) + %t1070 = call ptr @lp_str_concat(ptr %t1069, ptr @.str1544) %t1071 = load ptr, ptr %t1062 %t1072 = call ptr @lp_str_concat(ptr %t1070, ptr %t1071) - %t1073 = call ptr @lp_str_concat(ptr %t1072, ptr @.str1542) + %t1073 = call ptr @lp_str_concat(ptr %t1072, ptr @.str1545) %t1074 = load ptr, ptr %t1058 %t1075 = call ptr @lp_str_concat(ptr %t1073, ptr %t1074) %t1076 = call ptr @fn_emit_bind(ptr %t1075) store ptr %t1076, ptr %t1077 %t1078 = load ptr, ptr %t1058 - %t1079 = call ptr @lp_str_concat(ptr @.str1543, ptr %t1078) - %t1080 = call ptr @lp_str_concat(ptr %t1079, ptr @.str1544) + %t1079 = call ptr @lp_str_concat(ptr @.str1546, ptr %t1078) + %t1080 = call ptr @lp_str_concat(ptr %t1079, ptr @.str1547) %t1081 = call ptr @fn_emit_bind(ptr %t1080) store ptr %t1081, ptr %t1082 %t1083 = load ptr, ptr %t1058 - %t1084 = call ptr @lp_str_concat(ptr @.str1545, ptr %t1083) - %t1085 = call ptr @lp_str_concat(ptr %t1084, ptr @.str1546) + %t1084 = call ptr @lp_str_concat(ptr @.str1548, ptr %t1083) + %t1085 = call ptr @lp_str_concat(ptr %t1084, ptr @.str1549) %t1086 = call ptr @fn_emit_bind(ptr %t1085) store ptr %t1086, ptr %t1087 %t1088 = load ptr, ptr %t1087 - %t1089 = call ptr @lp_str_concat(ptr @.str1547, ptr %t1088) - %t1090 = call ptr @lp_str_concat(ptr %t1089, ptr @.str1548) + %t1089 = call ptr @lp_str_concat(ptr @.str1550, ptr %t1088) + %t1090 = call ptr @lp_str_concat(ptr %t1089, ptr @.str1551) %t1091 = call ptr @fn_emit_bind(ptr %t1090) store ptr %t1091, ptr %t1092 %t1093 = load ptr, ptr %t1082 - %t1094 = call ptr @lp_str_concat(ptr @.str1549, ptr %t1093) - %t1095 = call ptr @lp_str_concat(ptr %t1094, ptr @.str1550) + %t1094 = call ptr @lp_str_concat(ptr @.str1552, ptr %t1093) + %t1095 = call ptr @lp_str_concat(ptr %t1094, ptr @.str1553) %t1096 = load ptr, ptr %t1092 %t1097 = call ptr @lp_str_concat(ptr %t1095, ptr %t1096) %t1098 = call ptr @fn_emit_bind(ptr %t1097) store ptr %t1098, ptr %t1099 %t1100 = load ptr, ptr %t1099 - %t1101 = call ptr @lp_str_concat(ptr @.str1551, ptr %t1100) - %t1102 = call ptr @lp_str_concat(ptr %t1101, ptr @.str1552) + %t1101 = call ptr @lp_str_concat(ptr @.str1554, ptr %t1100) + %t1102 = call ptr @lp_str_concat(ptr %t1101, ptr @.str1555) %t1103 = load ptr, ptr %t1047 %t1104 = getelementptr inbounds %Cmp_Val, ptr %t1103, i32 0, i32 0 %t1105 = load ptr, ptr %t1104 @@ -37633,15 +37686,15 @@ then84: %t1109 = load ptr, ptr %t1029 %t1110 = getelementptr inbounds %Cmp_Val, ptr %t1109, i32 0, i32 0 %t1111 = load ptr, ptr %t1110 - %t1112 = call ptr @lp_str_concat(ptr @.str1553, ptr %t1111) - %t1113 = call ptr @lp_str_concat(ptr %t1112, ptr @.str1554) + %t1112 = call ptr @lp_str_concat(ptr @.str1556, ptr %t1111) + %t1113 = call ptr @lp_str_concat(ptr %t1112, ptr @.str1557) %t1114 = load ptr, ptr %t1108 %t1115 = call ptr @lp_str_concat(ptr %t1113, ptr %t1114) %t1116 = call ptr @fn_emit_bind(ptr %t1115) store ptr %t1116, ptr %t1117 %t1118 = load ptr, ptr %t1077 - %t1119 = call ptr @lp_str_concat(ptr @.str1555, ptr %t1118) - %t1120 = call ptr @lp_str_concat(ptr %t1119, ptr @.str1556) + %t1119 = call ptr @lp_str_concat(ptr @.str1558, ptr %t1118) + %t1120 = call ptr @lp_str_concat(ptr %t1119, ptr @.str1559) %t1121 = load ptr, ptr %t1047 %t1122 = getelementptr inbounds %Cmp_Val, ptr %t1121, i32 0, i32 0 %t1123 = load ptr, ptr %t1122 @@ -37649,22 +37702,22 @@ then84: %t1125 = call ptr @fn_emit_bind(ptr %t1124) store ptr %t1125, ptr %t1126 %t1127 = load ptr, ptr %t1126 - %t1128 = call ptr @lp_str_concat(ptr @.str1557, ptr %t1127) - %t1129 = call ptr @lp_str_concat(ptr %t1128, ptr @.str1558) + %t1128 = call ptr @lp_str_concat(ptr @.str1560, ptr %t1127) + %t1129 = call ptr @lp_str_concat(ptr %t1128, ptr @.str1561) %t1130 = load ptr, ptr %t1038 %t1131 = getelementptr inbounds %Cmp_Val, ptr %t1130, i32 0, i32 0 %t1132 = load ptr, ptr %t1131 %t1133 = call ptr @lp_str_concat(ptr %t1129, ptr %t1132) - %t1134 = call ptr @lp_str_concat(ptr %t1133, ptr @.str1559) + %t1134 = call ptr @lp_str_concat(ptr %t1133, ptr @.str1562) %t1135 = load ptr, ptr %t1117 %t1136 = call ptr @lp_str_concat(ptr %t1134, ptr %t1135) %t1137 = call ptr @fn_emit_bind(ptr %t1136) - %t1138 = call ptr @fn_val(ptr %t1137, ptr @.str1560) + %t1138 = call ptr @fn_val(ptr %t1137, ptr @.str1563) store ptr %t1138, ptr %retval br label %ret ifend86: %t1139 = load ptr, ptr %t0 - %t1140 = call i32 @lp_str_eq(ptr %t1139, ptr @.str1561) + %t1140 = call i32 @lp_str_eq(ptr %t1139, ptr @.str1564) %t1141 = icmp ne i32 %t1140, 0 br i1 %t1141, label %then87, label %ifend89 then87: @@ -37707,36 +37760,36 @@ then87: %t1178 = call ptr @fn_fx_inv_lerp_code(ptr %t1171, ptr %t1174, ptr %t1177) store ptr %t1178, ptr %t1179 %t1180 = load ptr, ptr %t1179 - %t1181 = call ptr @lp_str_concat(ptr @.str1562, ptr %t1180) - %t1182 = call ptr @lp_str_concat(ptr %t1181, ptr @.str1563) + %t1181 = call ptr @lp_str_concat(ptr @.str1565, ptr %t1180) + %t1182 = call ptr @lp_str_concat(ptr %t1181, ptr @.str1566) %t1183 = call ptr @fn_emit_bind(ptr %t1182) store ptr %t1183, ptr %t1184 %t1185 = load ptr, ptr %t1184 - %t1186 = call ptr @lp_str_concat(ptr @.str1564, ptr %t1185) - %t1187 = call ptr @lp_str_concat(ptr %t1186, ptr @.str1565) + %t1186 = call ptr @lp_str_concat(ptr @.str1567, ptr %t1185) + %t1187 = call ptr @lp_str_concat(ptr %t1186, ptr @.str1568) %t1188 = load ptr, ptr %t1179 %t1189 = call ptr @lp_str_concat(ptr %t1187, ptr %t1188) %t1190 = call ptr @fn_emit_bind(ptr %t1189) store ptr %t1190, ptr %t1191 %t1192 = load ptr, ptr %t1191 - %t1193 = call ptr @lp_str_concat(ptr @.str1566, ptr %t1192) - %t1194 = call ptr @lp_str_concat(ptr %t1193, ptr @.str1567) + %t1193 = call ptr @lp_str_concat(ptr @.str1569, ptr %t1192) + %t1194 = call ptr @lp_str_concat(ptr %t1193, ptr @.str1570) %t1195 = call ptr @fn_emit_bind(ptr %t1194) store ptr %t1195, ptr %t1196 %t1197 = load ptr, ptr %t1196 - %t1198 = call ptr @lp_str_concat(ptr @.str1568, ptr %t1197) - %t1199 = call ptr @lp_str_concat(ptr %t1198, ptr @.str1569) + %t1198 = call ptr @lp_str_concat(ptr @.str1571, ptr %t1197) + %t1199 = call ptr @lp_str_concat(ptr %t1198, ptr @.str1572) %t1200 = load ptr, ptr %t1191 %t1201 = call ptr @lp_str_concat(ptr %t1199, ptr %t1200) %t1202 = call ptr @fn_emit_bind(ptr %t1201) store ptr %t1202, ptr %t1203 %t1204 = load ptr, ptr %t1203 - %t1205 = call ptr @lp_str_concat(ptr @.str1570, ptr %t1204) - %t1206 = call ptr @lp_str_concat(ptr %t1205, ptr @.str1571) + %t1205 = call ptr @lp_str_concat(ptr @.str1573, ptr %t1204) + %t1206 = call ptr @lp_str_concat(ptr %t1205, ptr @.str1574) %t1207 = call ptr @fn_emit_bind(ptr %t1206) store ptr %t1207, ptr %t1208 %t1209 = load ptr, ptr %t1208 - %t1210 = call ptr @lp_str_concat(ptr @.str1572, ptr %t1209) + %t1210 = call ptr @lp_str_concat(ptr @.str1575, ptr %t1209) %t1211 = call ptr @fn_emit_bind(ptr %t1210) store ptr %t1211, ptr %t1212 %t1213 = load ptr, ptr %t1203 @@ -37746,7 +37799,7 @@ then87: %t1217 = load ptr, ptr %t1216 %t1218 = load ptr, ptr %t1212 %t1219 = call ptr @fn_fx_mul_code(ptr %t1217, ptr %t1218) - %t1220 = call ptr @fn_val(ptr %t1219, ptr @.str1573) + %t1220 = call ptr @fn_val(ptr %t1219, ptr @.str1576) store ptr %t1220, ptr %retval br label %ret ifend89: @@ -37814,7 +37867,7 @@ ifend89: %t1282 = load ptr, ptr %t1281 %t1283 = load ptr, ptr %t1276 %t1284 = call ptr @fn_fx_lerp_code(ptr %t1279, ptr %t1282, ptr %t1283) - %t1285 = call ptr @fn_val(ptr %t1284, ptr @.str1574) + %t1285 = call ptr @fn_val(ptr %t1284, ptr @.str1577) store ptr %t1285, ptr %retval br label %ret ret: @@ -37824,9 +37877,6 @@ ret: define void @fn_emit_math_prelude() { entry: - call void @fn_emith(ptr @.str1575) - call void @fn_emith(ptr @.str1576) - call void @fn_emith(ptr @.str1577) call void @fn_emith(ptr @.str1578) call void @fn_emith(ptr @.str1579) call void @fn_emith(ptr @.str1580) @@ -37933,6 +37983,9 @@ entry: call void @fn_emith(ptr @.str1681) call void @fn_emith(ptr @.str1682) call void @fn_emith(ptr @.str1683) + call void @fn_emith(ptr @.str1684) + call void @fn_emith(ptr @.str1685) + call void @fn_emith(ptr @.str1686) br label %ret ret: ret void @@ -37949,23 +38002,23 @@ entry: store ptr %arg_x, ptr %t0 store ptr %arg_y, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call ptr @lp_str_concat(ptr @.str1684, ptr %t2) - %t4 = call ptr @lp_str_concat(ptr %t3, ptr @.str1685) + %t3 = call ptr @lp_str_concat(ptr @.str1687, ptr %t2) + %t4 = call ptr @lp_str_concat(ptr %t3, ptr @.str1688) %t5 = call ptr @fn_emit_bind(ptr %t4) store ptr %t5, ptr %t6 %t7 = load ptr, ptr %t6 - %t8 = call ptr @lp_str_concat(ptr @.str1686, ptr %t7) - %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str1687) + %t8 = call ptr @lp_str_concat(ptr @.str1689, ptr %t7) + %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str1690) %t10 = call ptr @fn_emit_bind(ptr %t9) store ptr %t10, ptr %t11 %t12 = load ptr, ptr %t1 - %t13 = call ptr @lp_str_concat(ptr @.str1688, ptr %t12) - %t14 = call ptr @lp_str_concat(ptr %t13, ptr @.str1689) + %t13 = call ptr @lp_str_concat(ptr @.str1691, ptr %t12) + %t14 = call ptr @lp_str_concat(ptr %t13, ptr @.str1692) %t15 = call ptr @fn_emit_bind(ptr %t14) store ptr %t15, ptr %t16 %t17 = load ptr, ptr %t11 - %t18 = call ptr @lp_str_concat(ptr @.str1690, ptr %t17) - %t19 = call ptr @lp_str_concat(ptr %t18, ptr @.str1691) + %t18 = call ptr @lp_str_concat(ptr @.str1693, ptr %t17) + %t19 = call ptr @lp_str_concat(ptr %t18, ptr @.str1694) %t20 = load ptr, ptr %t16 %t21 = call ptr @lp_str_concat(ptr %t19, ptr %t20) %t22 = call ptr @fn_emit_bind(ptr %t21) @@ -37983,13 +38036,13 @@ entry: %t5 = alloca ptr store ptr %arg_v, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call ptr @lp_str_concat(ptr @.str1692, ptr %t1) - %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str1693) + %t2 = call ptr @lp_str_concat(ptr @.str1695, ptr %t1) + %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str1696) %t4 = call ptr @fn_emit_bind(ptr %t3) store ptr %t4, ptr %t5 %t6 = load ptr, ptr %t5 - %t7 = call ptr @lp_str_concat(ptr @.str1694, ptr %t6) - %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str1695) + %t7 = call ptr @lp_str_concat(ptr @.str1697, ptr %t6) + %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str1698) %t9 = call ptr @fn_emit_bind(ptr %t8) store ptr %t9, ptr %retval br label %ret @@ -38004,8 +38057,8 @@ entry: %t0 = alloca ptr store ptr %arg_v, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call ptr @lp_str_concat(ptr @.str1696, ptr %t1) - %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str1697) + %t2 = call ptr @lp_str_concat(ptr @.str1699, ptr %t1) + %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str1700) %t4 = call ptr @fn_emit_bind(ptr %t3) store ptr %t4, ptr %retval br label %ret @@ -38031,14 +38084,14 @@ entry: %t83 = alloca i32 store ptr %arg_meth, ptr %t0 %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str1698) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str1701) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t3 br i1 %t6, label %scend1, label %sc0 sc0: %t8 = load ptr, ptr %t0 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str1699) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str1702) %t10 = icmp ne i32 %t9, 0 %t11 = zext i1 %t10 to i32 store i32 %t11, ptr %t3 @@ -38051,7 +38104,7 @@ scend1: br i1 %t13, label %scend3, label %sc2 sc2: %t15 = load ptr, ptr %t0 - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str1700) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str1703) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t2 @@ -38064,7 +38117,7 @@ scend3: br i1 %t20, label %scend5, label %sc4 sc4: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str1701) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str1704) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t1 @@ -38078,14 +38131,14 @@ then6: br label %ret ifend8: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str1702) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str1705) %t33 = icmp ne i32 %t32, 0 %t34 = zext i1 %t33 to i32 store i32 %t34, ptr %t30 br i1 %t33, label %scend10, label %sc9 sc9: %t35 = load ptr, ptr %t0 - %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str1703) + %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str1706) %t37 = icmp ne i32 %t36, 0 %t38 = zext i1 %t37 to i32 store i32 %t38, ptr %t30 @@ -38098,7 +38151,7 @@ scend10: br i1 %t40, label %scend12, label %sc11 sc11: %t42 = load ptr, ptr %t0 - %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str1704) + %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str1707) %t44 = icmp ne i32 %t43, 0 %t45 = zext i1 %t44 to i32 store i32 %t45, ptr %t29 @@ -38111,7 +38164,7 @@ scend12: br i1 %t47, label %scend14, label %sc13 sc13: %t49 = load ptr, ptr %t0 - %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str1705) + %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str1708) %t51 = icmp ne i32 %t50, 0 %t52 = zext i1 %t51 to i32 store i32 %t52, ptr %t28 @@ -38125,14 +38178,14 @@ then15: br label %ret ifend17: %t58 = load ptr, ptr %t0 - %t59 = call i32 @lp_str_eq(ptr %t58, ptr @.str1706) + %t59 = call i32 @lp_str_eq(ptr %t58, ptr @.str1709) %t60 = icmp ne i32 %t59, 0 %t61 = zext i1 %t60 to i32 store i32 %t61, ptr %t57 br i1 %t60, label %scend19, label %sc18 sc18: %t62 = load ptr, ptr %t0 - %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str1707) + %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str1710) %t64 = icmp ne i32 %t63, 0 %t65 = zext i1 %t64 to i32 store i32 %t65, ptr %t57 @@ -38145,7 +38198,7 @@ scend19: br i1 %t67, label %scend21, label %sc20 sc20: %t69 = load ptr, ptr %t0 - %t70 = call i32 @lp_str_eq(ptr %t69, ptr @.str1708) + %t70 = call i32 @lp_str_eq(ptr %t69, ptr @.str1711) %t71 = icmp ne i32 %t70, 0 %t72 = zext i1 %t71 to i32 store i32 %t72, ptr %t56 @@ -38158,7 +38211,7 @@ scend21: br i1 %t74, label %scend23, label %sc22 sc22: %t76 = load ptr, ptr %t0 - %t77 = call i32 @lp_str_eq(ptr %t76, ptr @.str1709) + %t77 = call i32 @lp_str_eq(ptr %t76, ptr @.str1712) %t78 = icmp ne i32 %t77, 0 %t79 = zext i1 %t78 to i32 store i32 %t79, ptr %t55 @@ -38172,14 +38225,14 @@ then24: br label %ret ifend26: %t84 = load ptr, ptr %t0 - %t85 = call i32 @lp_str_eq(ptr %t84, ptr @.str1710) + %t85 = call i32 @lp_str_eq(ptr %t84, ptr @.str1713) %t86 = icmp ne i32 %t85, 0 %t87 = zext i1 %t86 to i32 store i32 %t87, ptr %t83 br i1 %t86, label %scend28, label %sc27 sc27: %t88 = load ptr, ptr %t0 - %t89 = call i32 @lp_str_eq(ptr %t88, ptr @.str1711) + %t89 = call i32 @lp_str_eq(ptr %t88, ptr @.str1714) %t90 = icmp ne i32 %t89, 0 %t91 = zext i1 %t90 to i32 store i32 %t91, ptr %t83 @@ -38192,7 +38245,7 @@ scend28: br i1 %t93, label %scend30, label %sc29 sc29: %t95 = load ptr, ptr %t0 - %t96 = call i32 @lp_str_eq(ptr %t95, ptr @.str1712) + %t96 = call i32 @lp_str_eq(ptr %t95, ptr @.str1715) %t97 = icmp ne i32 %t96, 0 %t98 = zext i1 %t97 to i32 store i32 %t98, ptr %t82 @@ -38312,16 +38365,16 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str1713) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str1716) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: - %t5 = call ptr @fn_val(ptr @.str1714, ptr @.str1715) + %t5 = call ptr @fn_val(ptr @.str1717, ptr @.str1718) store ptr %t5, ptr %retval br label %ret ifend2: %t6 = load ptr, ptr %t0 - %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str1716) + %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str1719) %t8 = icmp ne i32 %t7, 0 br i1 %t8, label %then3, label %ifend5 then3: @@ -38350,12 +38403,12 @@ then3: %t31 = getelementptr inbounds %Cmp_Val, ptr %t30, i32 0, i32 0 %t32 = load ptr, ptr %t31 %t33 = call ptr @fn_vec_pack(ptr %t29, ptr %t32) - %t34 = call ptr @fn_val(ptr %t33, ptr @.str1717) + %t34 = call ptr @fn_val(ptr %t33, ptr @.str1720) store ptr %t34, ptr %retval br label %ret ifend5: %t35 = load ptr, ptr %t0 - %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str1718) + %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str1721) %t37 = icmp ne i32 %t36, 0 br i1 %t37, label %then6, label %ifend8 then6: @@ -38372,12 +38425,12 @@ then6: %t48 = getelementptr inbounds %Cmp_Val, ptr %t47, i32 0, i32 0 %t49 = load ptr, ptr %t48 %t50 = call ptr @fn_vec_x(ptr %t49) - %t51 = call ptr @fn_val(ptr %t50, ptr @.str1719) + %t51 = call ptr @fn_val(ptr %t50, ptr @.str1722) store ptr %t51, ptr %retval br label %ret ifend8: %t52 = load ptr, ptr %t0 - %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str1720) + %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str1723) %t54 = icmp ne i32 %t53, 0 br i1 %t54, label %then9, label %ifend11 then9: @@ -38394,12 +38447,12 @@ then9: %t65 = getelementptr inbounds %Cmp_Val, ptr %t64, i32 0, i32 0 %t66 = load ptr, ptr %t65 %t67 = call ptr @fn_vec_y(ptr %t66) - %t68 = call ptr @fn_val(ptr %t67, ptr @.str1721) + %t68 = call ptr @fn_val(ptr %t67, ptr @.str1724) store ptr %t68, ptr %retval br label %ret ifend11: %t69 = load ptr, ptr %t0 - %t70 = call i32 @lp_str_eq(ptr %t69, ptr @.str1722) + %t70 = call i32 @lp_str_eq(ptr %t69, ptr @.str1725) %t71 = icmp ne i32 %t70, 0 br i1 %t71, label %then12, label %ifend14 then12: @@ -38442,15 +38495,15 @@ then12: %t108 = call ptr @fn_vec_y(ptr %t107) store ptr %t108, ptr %t109 %t110 = load ptr, ptr %t94 - %t111 = call ptr @lp_str_concat(ptr @.str1723, ptr %t110) - %t112 = call ptr @lp_str_concat(ptr %t111, ptr @.str1724) + %t111 = call ptr @lp_str_concat(ptr @.str1726, ptr %t110) + %t112 = call ptr @lp_str_concat(ptr %t111, ptr @.str1727) %t113 = load ptr, ptr %t104 %t114 = call ptr @lp_str_concat(ptr %t112, ptr %t113) %t115 = call ptr @fn_emit_bind(ptr %t114) store ptr %t115, ptr %t116 %t117 = load ptr, ptr %t99 - %t118 = call ptr @lp_str_concat(ptr @.str1725, ptr %t117) - %t119 = call ptr @lp_str_concat(ptr %t118, ptr @.str1726) + %t118 = call ptr @lp_str_concat(ptr @.str1728, ptr %t117) + %t119 = call ptr @lp_str_concat(ptr %t118, ptr @.str1729) %t120 = load ptr, ptr %t109 %t121 = call ptr @lp_str_concat(ptr %t119, ptr %t120) %t122 = call ptr @fn_emit_bind(ptr %t121) @@ -38458,12 +38511,12 @@ then12: %t124 = load ptr, ptr %t116 %t125 = load ptr, ptr %t123 %t126 = call ptr @fn_vec_pack(ptr %t124, ptr %t125) - %t127 = call ptr @fn_val(ptr %t126, ptr @.str1727) + %t127 = call ptr @fn_val(ptr %t126, ptr @.str1730) store ptr %t127, ptr %retval br label %ret ifend14: %t128 = load ptr, ptr %t0 - %t129 = call i32 @lp_str_eq(ptr %t128, ptr @.str1728) + %t129 = call i32 @lp_str_eq(ptr %t128, ptr @.str1731) %t130 = icmp ne i32 %t129, 0 br i1 %t130, label %then15, label %ifend17 then15: @@ -38506,15 +38559,15 @@ then15: %t167 = call ptr @fn_vec_y(ptr %t166) store ptr %t167, ptr %t168 %t169 = load ptr, ptr %t153 - %t170 = call ptr @lp_str_concat(ptr @.str1729, ptr %t169) - %t171 = call ptr @lp_str_concat(ptr %t170, ptr @.str1730) + %t170 = call ptr @lp_str_concat(ptr @.str1732, ptr %t169) + %t171 = call ptr @lp_str_concat(ptr %t170, ptr @.str1733) %t172 = load ptr, ptr %t163 %t173 = call ptr @lp_str_concat(ptr %t171, ptr %t172) %t174 = call ptr @fn_emit_bind(ptr %t173) store ptr %t174, ptr %t175 %t176 = load ptr, ptr %t158 - %t177 = call ptr @lp_str_concat(ptr @.str1731, ptr %t176) - %t178 = call ptr @lp_str_concat(ptr %t177, ptr @.str1732) + %t177 = call ptr @lp_str_concat(ptr @.str1734, ptr %t176) + %t178 = call ptr @lp_str_concat(ptr %t177, ptr @.str1735) %t179 = load ptr, ptr %t168 %t180 = call ptr @lp_str_concat(ptr %t178, ptr %t179) %t181 = call ptr @fn_emit_bind(ptr %t180) @@ -38522,12 +38575,12 @@ then15: %t183 = load ptr, ptr %t175 %t184 = load ptr, ptr %t182 %t185 = call ptr @fn_vec_pack(ptr %t183, ptr %t184) - %t186 = call ptr @fn_val(ptr %t185, ptr @.str1733) + %t186 = call ptr @fn_val(ptr %t185, ptr @.str1736) store ptr %t186, ptr %retval br label %ret ifend17: %t187 = load ptr, ptr %t0 - %t188 = call i32 @lp_str_eq(ptr %t187, ptr @.str1734) + %t188 = call i32 @lp_str_eq(ptr %t187, ptr @.str1737) %t189 = icmp ne i32 %t188, 0 br i1 %t189, label %then18, label %ifend20 then18: @@ -38574,12 +38627,12 @@ then18: %t230 = load ptr, ptr %t223 %t231 = load ptr, ptr %t229 %t232 = call ptr @fn_vec_pack(ptr %t230, ptr %t231) - %t233 = call ptr @fn_val(ptr %t232, ptr @.str1735) + %t233 = call ptr @fn_val(ptr %t232, ptr @.str1738) store ptr %t233, ptr %retval br label %ret ifend20: %t234 = load ptr, ptr %t0 - %t235 = call i32 @lp_str_eq(ptr %t234, ptr @.str1736) + %t235 = call i32 @lp_str_eq(ptr %t234, ptr @.str1739) %t236 = icmp ne i32 %t235, 0 br i1 %t236, label %then21, label %ifend23 then21: @@ -38630,17 +38683,17 @@ then21: %t281 = call ptr @fn_fx_mul_code(ptr %t279, ptr %t280) store ptr %t281, ptr %t282 %t283 = load ptr, ptr %t278 - %t284 = call ptr @lp_str_concat(ptr @.str1737, ptr %t283) - %t285 = call ptr @lp_str_concat(ptr %t284, ptr @.str1738) + %t284 = call ptr @lp_str_concat(ptr @.str1740, ptr %t283) + %t285 = call ptr @lp_str_concat(ptr %t284, ptr @.str1741) %t286 = load ptr, ptr %t282 %t287 = call ptr @lp_str_concat(ptr %t285, ptr %t286) %t288 = call ptr @fn_emit_bind(ptr %t287) - %t289 = call ptr @fn_val(ptr %t288, ptr @.str1739) + %t289 = call ptr @fn_val(ptr %t288, ptr @.str1742) store ptr %t289, ptr %retval br label %ret ifend23: %t290 = load ptr, ptr %t0 - %t291 = call i32 @lp_str_eq(ptr %t290, ptr @.str1740) + %t291 = call i32 @lp_str_eq(ptr %t290, ptr @.str1743) %t292 = icmp ne i32 %t291, 0 br i1 %t292, label %then24, label %ifend26 then24: @@ -38673,22 +38726,22 @@ then24: %t318 = call ptr @fn_fx_mul_code(ptr %t316, ptr %t317) store ptr %t318, ptr %t319 %t320 = load ptr, ptr %t315 - %t321 = call ptr @lp_str_concat(ptr @.str1741, ptr %t320) - %t322 = call ptr @lp_str_concat(ptr %t321, ptr @.str1742) + %t321 = call ptr @lp_str_concat(ptr @.str1744, ptr %t320) + %t322 = call ptr @lp_str_concat(ptr %t321, ptr @.str1745) %t323 = load ptr, ptr %t319 %t324 = call ptr @lp_str_concat(ptr %t322, ptr %t323) %t325 = call ptr @fn_emit_bind(ptr %t324) store ptr %t325, ptr %t326 %t327 = load ptr, ptr %t326 - %t328 = call ptr @lp_str_concat(ptr @.str1743, ptr %t327) - %t329 = call ptr @lp_str_concat(ptr %t328, ptr @.str1744) + %t328 = call ptr @lp_str_concat(ptr @.str1746, ptr %t327) + %t329 = call ptr @lp_str_concat(ptr %t328, ptr @.str1747) %t330 = call ptr @fn_emit_bind(ptr %t329) - %t331 = call ptr @fn_val(ptr %t330, ptr @.str1745) + %t331 = call ptr @fn_val(ptr %t330, ptr @.str1748) store ptr %t331, ptr %retval br label %ret ifend26: %t332 = load ptr, ptr %t0 - %t333 = call i32 @lp_str_eq(ptr %t332, ptr @.str1746) + %t333 = call i32 @lp_str_eq(ptr %t332, ptr @.str1749) %t334 = icmp ne i32 %t333, 0 br i1 %t334, label %then27, label %ifend29 then27: @@ -38732,15 +38785,15 @@ then27: %t371 = call ptr @fn_vec_y(ptr %t370) store ptr %t371, ptr %t372 %t373 = load ptr, ptr %t357 - %t374 = call ptr @lp_str_concat(ptr @.str1747, ptr %t373) - %t375 = call ptr @lp_str_concat(ptr %t374, ptr @.str1748) + %t374 = call ptr @lp_str_concat(ptr @.str1750, ptr %t373) + %t375 = call ptr @lp_str_concat(ptr %t374, ptr @.str1751) %t376 = load ptr, ptr %t367 %t377 = call ptr @lp_str_concat(ptr %t375, ptr %t376) %t378 = call ptr @fn_emit_bind(ptr %t377) store ptr %t378, ptr %t379 %t380 = load ptr, ptr %t362 - %t381 = call ptr @lp_str_concat(ptr @.str1749, ptr %t380) - %t382 = call ptr @lp_str_concat(ptr %t381, ptr @.str1750) + %t381 = call ptr @lp_str_concat(ptr @.str1752, ptr %t380) + %t382 = call ptr @lp_str_concat(ptr %t381, ptr @.str1753) %t383 = load ptr, ptr %t372 %t384 = call ptr @lp_str_concat(ptr %t382, ptr %t383) %t385 = call ptr @fn_emit_bind(ptr %t384) @@ -38754,22 +38807,22 @@ then27: %t393 = call ptr @fn_fx_mul_code(ptr %t391, ptr %t392) store ptr %t393, ptr %t394 %t395 = load ptr, ptr %t390 - %t396 = call ptr @lp_str_concat(ptr @.str1751, ptr %t395) - %t397 = call ptr @lp_str_concat(ptr %t396, ptr @.str1752) + %t396 = call ptr @lp_str_concat(ptr @.str1754, ptr %t395) + %t397 = call ptr @lp_str_concat(ptr %t396, ptr @.str1755) %t398 = load ptr, ptr %t394 %t399 = call ptr @lp_str_concat(ptr %t397, ptr %t398) %t400 = call ptr @fn_emit_bind(ptr %t399) store ptr %t400, ptr %t401 %t402 = load ptr, ptr %t401 - %t403 = call ptr @lp_str_concat(ptr @.str1753, ptr %t402) - %t404 = call ptr @lp_str_concat(ptr %t403, ptr @.str1754) + %t403 = call ptr @lp_str_concat(ptr @.str1756, ptr %t402) + %t404 = call ptr @lp_str_concat(ptr %t403, ptr @.str1757) %t405 = call ptr @fn_emit_bind(ptr %t404) - %t406 = call ptr @fn_val(ptr %t405, ptr @.str1755) + %t406 = call ptr @fn_val(ptr %t405, ptr @.str1758) store ptr %t406, ptr %retval br label %ret ifend29: %t407 = load ptr, ptr %t0 - %t408 = call i32 @lp_str_eq(ptr %t407, ptr @.str1756) + %t408 = call i32 @lp_str_eq(ptr %t407, ptr @.str1759) %t409 = icmp ne i32 %t408, 0 br i1 %t409, label %then30, label %ifend32 then30: @@ -38802,31 +38855,31 @@ then30: %t435 = call ptr @fn_fx_mul_code(ptr %t433, ptr %t434) store ptr %t435, ptr %t436 %t437 = load ptr, ptr %t432 - %t438 = call ptr @lp_str_concat(ptr @.str1757, ptr %t437) - %t439 = call ptr @lp_str_concat(ptr %t438, ptr @.str1758) + %t438 = call ptr @lp_str_concat(ptr @.str1760, ptr %t437) + %t439 = call ptr @lp_str_concat(ptr %t438, ptr @.str1761) %t440 = load ptr, ptr %t436 %t441 = call ptr @lp_str_concat(ptr %t439, ptr %t440) %t442 = call ptr @fn_emit_bind(ptr %t441) store ptr %t442, ptr %t443 %t444 = load ptr, ptr %t443 - %t445 = call ptr @lp_str_concat(ptr @.str1759, ptr %t444) - %t446 = call ptr @lp_str_concat(ptr %t445, ptr @.str1760) + %t445 = call ptr @lp_str_concat(ptr @.str1762, ptr %t444) + %t446 = call ptr @lp_str_concat(ptr %t445, ptr @.str1763) %t447 = call ptr @fn_emit_bind(ptr %t446) store ptr %t447, ptr %t448 %t449 = load ptr, ptr %t448 - %t450 = call ptr @lp_str_concat(ptr @.str1761, ptr %t449) - %t451 = call ptr @lp_str_concat(ptr %t450, ptr @.str1762) + %t450 = call ptr @lp_str_concat(ptr @.str1764, ptr %t449) + %t451 = call ptr @lp_str_concat(ptr %t450, ptr @.str1765) %t452 = call ptr @fn_emit_bind(ptr %t451) store ptr %t452, ptr %t453 %t454 = load ptr, ptr %t453 - %t455 = call ptr @lp_str_concat(ptr @.str1763, ptr %t454) - %t456 = call ptr @lp_str_concat(ptr %t455, ptr @.str1764) + %t455 = call ptr @lp_str_concat(ptr @.str1766, ptr %t454) + %t456 = call ptr @lp_str_concat(ptr %t455, ptr @.str1767) %t457 = load ptr, ptr %t448 %t458 = call ptr @lp_str_concat(ptr %t456, ptr %t457) %t459 = call ptr @fn_emit_bind(ptr %t458) store ptr %t459, ptr %t460 %t461 = load ptr, ptr %t460 - %t462 = call ptr @fn_fx_div_code(ptr @.str1765, ptr %t461) + %t462 = call ptr @fn_fx_div_code(ptr @.str1768, ptr %t461) store ptr %t462, ptr %t463 %t464 = load ptr, ptr %t423 %t465 = load ptr, ptr %t463 @@ -38839,12 +38892,12 @@ then30: %t472 = load ptr, ptr %t467 %t473 = load ptr, ptr %t471 %t474 = call ptr @fn_vec_pack(ptr %t472, ptr %t473) - %t475 = call ptr @fn_val(ptr %t474, ptr @.str1766) + %t475 = call ptr @fn_val(ptr %t474, ptr @.str1769) store ptr %t475, ptr %retval br label %ret ifend32: %t476 = load ptr, ptr %t0 - %t477 = call i32 @lp_str_eq(ptr %t476, ptr @.str1767) + %t477 = call i32 @lp_str_eq(ptr %t476, ptr @.str1770) %t478 = icmp ne i32 %t477, 0 br i1 %t478, label %then33, label %ifend35 then33: @@ -38870,20 +38923,20 @@ then33: %t497 = load ptr, ptr %t496 %t498 = getelementptr inbounds %Cmp_Val, ptr %t497, i32 0, i32 0 %t499 = load ptr, ptr %t498 - %t500 = call ptr @lp_str_concat(ptr @.str1768, ptr %t499) - %t501 = call ptr @lp_str_concat(ptr %t500, ptr @.str1769) + %t500 = call ptr @lp_str_concat(ptr @.str1771, ptr %t499) + %t501 = call ptr @lp_str_concat(ptr %t500, ptr @.str1772) %t502 = call ptr @fn_emit_bind(ptr %t501) store ptr %t502, ptr %t503 %t504 = load ptr, ptr %t496 %t505 = getelementptr inbounds %Cmp_Val, ptr %t504, i32 0, i32 0 %t506 = load ptr, ptr %t505 - %t507 = call ptr @lp_str_concat(ptr @.str1770, ptr %t506) - %t508 = call ptr @lp_str_concat(ptr %t507, ptr @.str1771) + %t507 = call ptr @lp_str_concat(ptr @.str1773, ptr %t506) + %t508 = call ptr @lp_str_concat(ptr %t507, ptr @.str1774) %t509 = call ptr @fn_emit_bind(ptr %t508) store ptr %t509, ptr %t510 %t511 = load ptr, ptr %t510 - %t512 = call ptr @lp_str_concat(ptr @.str1772, ptr %t511) - %t513 = call ptr @lp_str_concat(ptr %t512, ptr @.str1773) + %t512 = call ptr @lp_str_concat(ptr @.str1775, ptr %t511) + %t513 = call ptr @lp_str_concat(ptr %t512, ptr @.str1776) %t514 = call ptr @fn_emit_bind(ptr %t513) store ptr %t514, ptr %t515 %t516 = load ptr, ptr %t487 @@ -38913,15 +38966,15 @@ then33: %t540 = call ptr @fn_fx_mul_code(ptr %t538, ptr %t539) store ptr %t540, ptr %t541 %t542 = load ptr, ptr %t529 - %t543 = call ptr @lp_str_concat(ptr @.str1774, ptr %t542) - %t544 = call ptr @lp_str_concat(ptr %t543, ptr @.str1775) + %t543 = call ptr @lp_str_concat(ptr @.str1777, ptr %t542) + %t544 = call ptr @lp_str_concat(ptr %t543, ptr @.str1778) %t545 = load ptr, ptr %t533 %t546 = call ptr @lp_str_concat(ptr %t544, ptr %t545) %t547 = call ptr @fn_emit_bind(ptr %t546) store ptr %t547, ptr %t548 %t549 = load ptr, ptr %t537 - %t550 = call ptr @lp_str_concat(ptr @.str1776, ptr %t549) - %t551 = call ptr @lp_str_concat(ptr %t550, ptr @.str1777) + %t550 = call ptr @lp_str_concat(ptr @.str1779, ptr %t549) + %t551 = call ptr @lp_str_concat(ptr %t550, ptr @.str1780) %t552 = load ptr, ptr %t541 %t553 = call ptr @lp_str_concat(ptr %t551, ptr %t552) %t554 = call ptr @fn_emit_bind(ptr %t553) @@ -38929,12 +38982,12 @@ then33: %t556 = load ptr, ptr %t548 %t557 = load ptr, ptr %t555 %t558 = call ptr @fn_vec_pack(ptr %t556, ptr %t557) - %t559 = call ptr @fn_val(ptr %t558, ptr @.str1778) + %t559 = call ptr @fn_val(ptr %t558, ptr @.str1781) store ptr %t559, ptr %retval br label %ret ifend35: %t560 = load ptr, ptr %t0 - %t561 = call i32 @lp_str_eq(ptr %t560, ptr @.str1779) + %t561 = call i32 @lp_str_eq(ptr %t560, ptr @.str1782) %t562 = icmp ne i32 %t561, 0 br i1 %t562, label %then36, label %ifend38 then36: @@ -38959,18 +39012,18 @@ then36: %t580 = call ptr @fn_vec_y(ptr %t579) store ptr %t580, ptr %t581 %t582 = load ptr, ptr %t581 - %t583 = call ptr @lp_str_concat(ptr @.str1780, ptr %t582) - %t584 = call ptr @lp_str_concat(ptr %t583, ptr @.str1781) + %t583 = call ptr @lp_str_concat(ptr @.str1783, ptr %t582) + %t584 = call ptr @lp_str_concat(ptr %t583, ptr @.str1784) %t585 = load ptr, ptr %t576 %t586 = call ptr @lp_str_concat(ptr %t584, ptr %t585) - %t587 = call ptr @lp_str_concat(ptr %t586, ptr @.str1782) + %t587 = call ptr @lp_str_concat(ptr %t586, ptr @.str1785) %t588 = call ptr @fn_emit_bind(ptr %t587) - %t589 = call ptr @fn_val(ptr %t588, ptr @.str1783) + %t589 = call ptr @fn_val(ptr %t588, ptr @.str1786) store ptr %t589, ptr %retval br label %ret ifend38: %t590 = load ptr, ptr %t0 - %t591 = call i32 @lp_str_eq(ptr %t590, ptr @.str1784) + %t591 = call i32 @lp_str_eq(ptr %t590, ptr @.str1787) %t592 = icmp ne i32 %t591, 0 br i1 %t592, label %then39, label %ifend41 then39: @@ -38987,26 +39040,26 @@ then39: %t602 = load ptr, ptr %t601 %t603 = getelementptr inbounds %Cmp_Val, ptr %t602, i32 0, i32 0 %t604 = load ptr, ptr %t603 - %t605 = call ptr @lp_str_concat(ptr @.str1785, ptr %t604) - %t606 = call ptr @lp_str_concat(ptr %t605, ptr @.str1786) + %t605 = call ptr @lp_str_concat(ptr @.str1788, ptr %t604) + %t606 = call ptr @lp_str_concat(ptr %t605, ptr @.str1789) %t607 = call ptr @fn_emit_bind(ptr %t606) store ptr %t607, ptr %t608 %t609 = load ptr, ptr %t601 %t610 = getelementptr inbounds %Cmp_Val, ptr %t609, i32 0, i32 0 %t611 = load ptr, ptr %t610 - %t612 = call ptr @lp_str_concat(ptr @.str1787, ptr %t611) - %t613 = call ptr @lp_str_concat(ptr %t612, ptr @.str1788) + %t612 = call ptr @lp_str_concat(ptr @.str1790, ptr %t611) + %t613 = call ptr @lp_str_concat(ptr %t612, ptr @.str1791) %t614 = call ptr @fn_emit_bind(ptr %t613) store ptr %t614, ptr %t615 %t616 = load ptr, ptr %t615 - %t617 = call ptr @lp_str_concat(ptr @.str1789, ptr %t616) - %t618 = call ptr @lp_str_concat(ptr %t617, ptr @.str1790) + %t617 = call ptr @lp_str_concat(ptr @.str1792, ptr %t616) + %t618 = call ptr @lp_str_concat(ptr %t617, ptr @.str1793) %t619 = call ptr @fn_emit_bind(ptr %t618) store ptr %t619, ptr %t620 %t621 = load ptr, ptr %t620 %t622 = load ptr, ptr %t608 %t623 = call ptr @fn_vec_pack(ptr %t621, ptr %t622) - %t624 = call ptr @fn_val(ptr %t623, ptr @.str1791) + %t624 = call ptr @fn_val(ptr %t623, ptr @.str1794) store ptr %t624, ptr %retval br label %ret ifend41: @@ -39074,7 +39127,7 @@ ifend41: %t686 = load ptr, ptr %t678 %t687 = load ptr, ptr %t685 %t688 = call ptr @fn_vec_pack(ptr %t686, ptr %t687) - %t689 = call ptr @fn_val(ptr %t688, ptr @.str1792) + %t689 = call ptr @fn_val(ptr %t688, ptr @.str1795) store ptr %t689, ptr %retval br label %ret ret: @@ -39090,20 +39143,20 @@ entry: %t9 = alloca ptr store ptr %arg_d, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call ptr @lp_str_concat(ptr @.str1793, ptr %t1) + %t2 = call ptr @lp_str_concat(ptr @.str1796, ptr %t1) %t3 = call ptr @fn_emit_bind(ptr %t2) store ptr %t3, ptr %t4 %t5 = load ptr, ptr %t0 - %t6 = call ptr @lp_str_concat(ptr @.str1794, ptr %t5) - %t7 = call ptr @lp_str_concat(ptr %t6, ptr @.str1795) + %t6 = call ptr @lp_str_concat(ptr @.str1797, ptr %t5) + %t7 = call ptr @lp_str_concat(ptr %t6, ptr @.str1798) %t8 = call ptr @fn_emit_bind(ptr %t7) store ptr %t8, ptr %t9 %t10 = load ptr, ptr %t9 - %t11 = call ptr @lp_str_concat(ptr @.str1796, ptr %t10) - %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str1797) + %t11 = call ptr @lp_str_concat(ptr @.str1799, ptr %t10) + %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str1800) %t13 = load ptr, ptr %t4 %t14 = call ptr @lp_str_concat(ptr %t12, ptr %t13) - %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str1798) + %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str1801) %t16 = load ptr, ptr %t0 %t17 = call ptr @lp_str_concat(ptr %t15, ptr %t16) %t18 = call ptr @fn_emit_bind(ptr %t17) @@ -39132,14 +39185,14 @@ entry: %t77 = alloca i32 store ptr %arg_meth, ptr %t0 %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str1799) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str1802) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t3 br i1 %t6, label %scend1, label %sc0 sc0: %t8 = load ptr, ptr %t0 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str1800) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str1803) %t10 = icmp ne i32 %t9, 0 %t11 = zext i1 %t10 to i32 store i32 %t11, ptr %t3 @@ -39152,7 +39205,7 @@ scend1: br i1 %t13, label %scend3, label %sc2 sc2: %t15 = load ptr, ptr %t0 - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str1801) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str1804) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t2 @@ -39165,7 +39218,7 @@ scend3: br i1 %t20, label %scend5, label %sc4 sc4: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str1802) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str1805) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t1 @@ -39179,14 +39232,14 @@ then6: br label %ret ifend8: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str1803) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str1806) %t33 = icmp ne i32 %t32, 0 %t34 = zext i1 %t33 to i32 store i32 %t34, ptr %t30 br i1 %t33, label %scend10, label %sc9 sc9: %t35 = load ptr, ptr %t0 - %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str1804) + %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str1807) %t37 = icmp ne i32 %t36, 0 %t38 = zext i1 %t37 to i32 store i32 %t38, ptr %t30 @@ -39199,7 +39252,7 @@ scend10: br i1 %t40, label %scend12, label %sc11 sc11: %t42 = load ptr, ptr %t0 - %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str1805) + %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str1808) %t44 = icmp ne i32 %t43, 0 %t45 = zext i1 %t44 to i32 store i32 %t45, ptr %t29 @@ -39212,7 +39265,7 @@ scend12: br i1 %t47, label %scend14, label %sc13 sc13: %t49 = load ptr, ptr %t0 - %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str1806) + %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str1809) %t51 = icmp ne i32 %t50, 0 %t52 = zext i1 %t51 to i32 store i32 %t52, ptr %t28 @@ -39226,14 +39279,14 @@ then15: br label %ret ifend17: %t57 = load ptr, ptr %t0 - %t58 = call i32 @lp_str_eq(ptr %t57, ptr @.str1807) + %t58 = call i32 @lp_str_eq(ptr %t57, ptr @.str1810) %t59 = icmp ne i32 %t58, 0 %t60 = zext i1 %t59 to i32 store i32 %t60, ptr %t56 br i1 %t59, label %scend19, label %sc18 sc18: %t61 = load ptr, ptr %t0 - %t62 = call i32 @lp_str_eq(ptr %t61, ptr @.str1808) + %t62 = call i32 @lp_str_eq(ptr %t61, ptr @.str1811) %t63 = icmp ne i32 %t62, 0 %t64 = zext i1 %t63 to i32 store i32 %t64, ptr %t56 @@ -39246,7 +39299,7 @@ scend19: br i1 %t66, label %scend21, label %sc20 sc20: %t68 = load ptr, ptr %t0 - %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str1809) + %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str1812) %t70 = icmp ne i32 %t69, 0 %t71 = zext i1 %t70 to i32 store i32 %t71, ptr %t55 @@ -39260,14 +39313,14 @@ then22: br label %ret ifend24: %t78 = load ptr, ptr %t0 - %t79 = call i32 @lp_str_eq(ptr %t78, ptr @.str1810) + %t79 = call i32 @lp_str_eq(ptr %t78, ptr @.str1813) %t80 = icmp ne i32 %t79, 0 %t81 = zext i1 %t80 to i32 store i32 %t81, ptr %t77 br i1 %t80, label %scend26, label %sc25 sc25: %t82 = load ptr, ptr %t0 - %t83 = call i32 @lp_str_eq(ptr %t82, ptr @.str1811) + %t83 = call i32 @lp_str_eq(ptr %t82, ptr @.str1814) %t84 = icmp ne i32 %t83, 0 %t85 = zext i1 %t84 to i32 store i32 %t85, ptr %t77 @@ -39280,7 +39333,7 @@ scend26: br i1 %t87, label %scend28, label %sc27 sc27: %t89 = load ptr, ptr %t0 - %t90 = call i32 @lp_str_eq(ptr %t89, ptr @.str1812) + %t90 = call i32 @lp_str_eq(ptr %t89, ptr @.str1815) %t91 = icmp ne i32 %t90, 0 %t92 = zext i1 %t91 to i32 store i32 %t92, ptr %t76 @@ -39293,7 +39346,7 @@ scend28: br i1 %t94, label %scend30, label %sc29 sc29: %t96 = load ptr, ptr %t0 - %t97 = call i32 @lp_str_eq(ptr %t96, ptr @.str1813) + %t97 = call i32 @lp_str_eq(ptr %t96, ptr @.str1816) %t98 = icmp ne i32 %t97, 0 %t99 = zext i1 %t98 to i32 store i32 %t99, ptr %t75 @@ -39306,7 +39359,7 @@ scend30: br i1 %t101, label %scend32, label %sc31 sc31: %t103 = load ptr, ptr %t0 - %t104 = call i32 @lp_str_eq(ptr %t103, ptr @.str1814) + %t104 = call i32 @lp_str_eq(ptr %t103, ptr @.str1817) %t105 = icmp ne i32 %t104, 0 %t106 = zext i1 %t105 to i32 store i32 %t106, ptr %t74 @@ -39403,16 +39456,16 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str1815) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str1818) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: - %t5 = call ptr @fn_val(ptr @.str1816, ptr @.str1817) + %t5 = call ptr @fn_val(ptr @.str1819, ptr @.str1820) store ptr %t5, ptr %retval br label %ret ifend2: %t6 = load ptr, ptr %t0 - %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str1818) + %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str1821) %t8 = icmp ne i32 %t7, 0 br i1 %t8, label %then3, label %ifend5 then3: @@ -39441,12 +39494,12 @@ then3: %t31 = getelementptr inbounds %Cmp_Val, ptr %t30, i32 0, i32 0 %t32 = load ptr, ptr %t31 %t33 = call ptr @fn_vec_pack(ptr %t29, ptr %t32) - %t34 = call ptr @fn_val(ptr %t33, ptr @.str1819) + %t34 = call ptr @fn_val(ptr %t33, ptr @.str1822) store ptr %t34, ptr %retval br label %ret ifend5: %t35 = load ptr, ptr %t0 - %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str1820) + %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str1823) %t37 = icmp ne i32 %t36, 0 br i1 %t37, label %then6, label %ifend8 then6: @@ -39463,12 +39516,12 @@ then6: %t48 = getelementptr inbounds %Cmp_Val, ptr %t47, i32 0, i32 0 %t49 = load ptr, ptr %t48 %t50 = call ptr @fn_vec_x(ptr %t49) - %t51 = call ptr @fn_val(ptr %t50, ptr @.str1821) + %t51 = call ptr @fn_val(ptr %t50, ptr @.str1824) store ptr %t51, ptr %retval br label %ret ifend8: %t52 = load ptr, ptr %t0 - %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str1822) + %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str1825) %t54 = icmp ne i32 %t53, 0 br i1 %t54, label %then9, label %ifend11 then9: @@ -39485,19 +39538,19 @@ then9: %t65 = getelementptr inbounds %Cmp_Val, ptr %t64, i32 0, i32 0 %t66 = load ptr, ptr %t65 %t67 = call ptr @fn_vec_y(ptr %t66) - %t68 = call ptr @fn_val(ptr %t67, ptr @.str1823) + %t68 = call ptr @fn_val(ptr %t67, ptr @.str1826) store ptr %t68, ptr %retval br label %ret ifend11: %t70 = load ptr, ptr %t0 - %t71 = call i32 @lp_str_eq(ptr %t70, ptr @.str1824) + %t71 = call i32 @lp_str_eq(ptr %t70, ptr @.str1827) %t72 = icmp ne i32 %t71, 0 %t73 = zext i1 %t72 to i32 store i32 %t73, ptr %t69 br i1 %t72, label %scend13, label %sc12 sc12: %t74 = load ptr, ptr %t0 - %t75 = call i32 @lp_str_eq(ptr %t74, ptr @.str1825) + %t75 = call i32 @lp_str_eq(ptr %t74, ptr @.str1828) %t76 = icmp ne i32 %t75, 0 %t77 = zext i1 %t76 to i32 store i32 %t77, ptr %t69 @@ -39529,8 +39582,8 @@ then14: %t99 = getelementptr inbounds %Cmp_Val, ptr %t98, i32 0, i32 0 %t100 = load ptr, ptr %t99 %t101 = call ptr @fn_vec_x(ptr %t100) - %t102 = call ptr @lp_str_concat(ptr @.str1826, ptr %t101) - %t103 = call ptr @lp_str_concat(ptr %t102, ptr @.str1827) + %t102 = call ptr @lp_str_concat(ptr @.str1829, ptr %t101) + %t103 = call ptr @lp_str_concat(ptr %t102, ptr @.str1830) %t104 = load ptr, ptr %t88 %t105 = getelementptr inbounds %Cmp_Val, ptr %t104, i32 0, i32 0 %t106 = load ptr, ptr %t105 @@ -39542,8 +39595,8 @@ then14: %t112 = getelementptr inbounds %Cmp_Val, ptr %t111, i32 0, i32 0 %t113 = load ptr, ptr %t112 %t114 = call ptr @fn_vec_y(ptr %t113) - %t115 = call ptr @lp_str_concat(ptr @.str1828, ptr %t114) - %t116 = call ptr @lp_str_concat(ptr %t115, ptr @.str1829) + %t115 = call ptr @lp_str_concat(ptr @.str1831, ptr %t114) + %t116 = call ptr @lp_str_concat(ptr %t115, ptr @.str1832) %t117 = load ptr, ptr %t88 %t118 = getelementptr inbounds %Cmp_Val, ptr %t117, i32 0, i32 0 %t119 = load ptr, ptr %t118 @@ -39552,33 +39605,33 @@ then14: %t122 = call ptr @fn_emit_bind(ptr %t121) store ptr %t122, ptr %t123 %t124 = load ptr, ptr %t110 - %t125 = call ptr @lp_str_concat(ptr @.str1830, ptr %t124) - %t126 = call ptr @lp_str_concat(ptr %t125, ptr @.str1831) + %t125 = call ptr @lp_str_concat(ptr @.str1833, ptr %t124) + %t126 = call ptr @lp_str_concat(ptr %t125, ptr @.str1834) %t127 = load ptr, ptr %t110 %t128 = call ptr @lp_str_concat(ptr %t126, ptr %t127) %t129 = call ptr @fn_emit_bind(ptr %t128) store ptr %t129, ptr %t130 %t131 = load ptr, ptr %t123 - %t132 = call ptr @lp_str_concat(ptr @.str1832, ptr %t131) - %t133 = call ptr @lp_str_concat(ptr %t132, ptr @.str1833) + %t132 = call ptr @lp_str_concat(ptr @.str1835, ptr %t131) + %t133 = call ptr @lp_str_concat(ptr %t132, ptr @.str1836) %t134 = load ptr, ptr %t123 %t135 = call ptr @lp_str_concat(ptr %t133, ptr %t134) %t136 = call ptr @fn_emit_bind(ptr %t135) store ptr %t136, ptr %t137 %t138 = load ptr, ptr %t130 - %t139 = call ptr @lp_str_concat(ptr @.str1834, ptr %t138) - %t140 = call ptr @lp_str_concat(ptr %t139, ptr @.str1835) + %t139 = call ptr @lp_str_concat(ptr @.str1837, ptr %t138) + %t140 = call ptr @lp_str_concat(ptr %t139, ptr @.str1838) %t141 = load ptr, ptr %t137 %t142 = call ptr @lp_str_concat(ptr %t140, ptr %t141) %t143 = call ptr @fn_emit_bind(ptr %t142) store ptr %t143, ptr %t144 %t145 = load ptr, ptr %t0 - %t146 = call i32 @lp_str_eq(ptr %t145, ptr @.str1836) + %t146 = call i32 @lp_str_eq(ptr %t145, ptr @.str1839) %t147 = icmp ne i32 %t146, 0 br i1 %t147, label %then17, label %ifend19 then17: %t148 = load ptr, ptr %t144 - %t149 = call ptr @fn_val(ptr %t148, ptr @.str1837) + %t149 = call ptr @fn_val(ptr %t148, ptr @.str1840) store ptr %t149, ptr %retval br label %ret ifend19: @@ -39594,8 +39647,8 @@ ifend19: %t159 = load ptr, ptr %t158 %t160 = getelementptr inbounds %Cmp_Val, ptr %t159, i32 0, i32 0 %t161 = load ptr, ptr %t160 - %t162 = call ptr @lp_str_concat(ptr @.str1838, ptr %t161) - %t163 = call ptr @lp_str_concat(ptr %t162, ptr @.str1839) + %t162 = call ptr @lp_str_concat(ptr @.str1841, ptr %t161) + %t163 = call ptr @lp_str_concat(ptr %t162, ptr @.str1842) %t164 = load ptr, ptr %t158 %t165 = getelementptr inbounds %Cmp_Val, ptr %t164, i32 0, i32 0 %t166 = load ptr, ptr %t165 @@ -39603,32 +39656,32 @@ ifend19: %t168 = call ptr @fn_emit_bind(ptr %t167) store ptr %t168, ptr %t169 %t170 = load ptr, ptr %t144 - %t171 = call ptr @lp_str_concat(ptr @.str1840, ptr %t170) - %t172 = call ptr @lp_str_concat(ptr %t171, ptr @.str1841) + %t171 = call ptr @lp_str_concat(ptr @.str1843, ptr %t170) + %t172 = call ptr @lp_str_concat(ptr %t171, ptr @.str1844) %t173 = load ptr, ptr %t169 %t174 = call ptr @lp_str_concat(ptr %t172, ptr %t173) %t175 = call ptr @fn_emit_bind(ptr %t174) store ptr %t175, ptr %t176 %t177 = load ptr, ptr %t176 - %t178 = call ptr @lp_str_concat(ptr @.str1842, ptr %t177) - %t179 = call ptr @lp_str_concat(ptr %t178, ptr @.str1843) + %t178 = call ptr @lp_str_concat(ptr @.str1845, ptr %t177) + %t179 = call ptr @lp_str_concat(ptr %t178, ptr @.str1846) %t180 = call ptr @fn_emit_bind(ptr %t179) - %t181 = call ptr @fn_val(ptr %t180, ptr @.str1844) + %t181 = call ptr @fn_val(ptr %t180, ptr @.str1847) store ptr %t181, ptr %retval br label %ret ifend16: %t182 = load ptr, ptr %t0 - %t183 = call i32 @lp_str_eq(ptr %t182, ptr @.str1845) + %t183 = call i32 @lp_str_eq(ptr %t182, ptr @.str1848) %t184 = icmp ne i32 %t183, 0 br i1 %t184, label %then20, label %ifend22 then20: - %t185 = call ptr @fn_find_fn(ptr @.str1846) + %t185 = call ptr @fn_find_fn(ptr @.str1849) %t186 = icmp eq ptr %t185, null %t187 = zext i1 %t186 to i32 %t188 = icmp ne i32 %t187, 0 br i1 %t188, label %then23, label %ifend25 then23: - call void @fn_perr(ptr @.str1847) + call void @fn_perr(ptr @.str1850) br label %ifend25 ifend25: %t189 = load ptr, ptr %t1 @@ -39652,30 +39705,30 @@ ifend25: %t207 = load ptr, ptr %t197 %t208 = getelementptr inbounds %Cmp_Val, ptr %t207, i32 0, i32 0 %t209 = load ptr, ptr %t208 - %t210 = call ptr @lp_str_concat(ptr @.str1848, ptr %t209) - %t211 = call ptr @lp_str_concat(ptr %t210, ptr @.str1849) + %t210 = call ptr @lp_str_concat(ptr @.str1851, ptr %t209) + %t211 = call ptr @lp_str_concat(ptr %t210, ptr @.str1852) %t212 = load ptr, ptr %t206 %t213 = getelementptr inbounds %Cmp_Val, ptr %t212, i32 0, i32 0 %t214 = load ptr, ptr %t213 %t215 = call ptr @lp_str_concat(ptr %t211, ptr %t214) - %t216 = call ptr @lp_str_concat(ptr %t215, ptr @.str1850) + %t216 = call ptr @lp_str_concat(ptr %t215, ptr @.str1853) %t217 = call ptr @fn_emit_bind(ptr %t216) - %t218 = call ptr @fn_val(ptr %t217, ptr @.str1851) + %t218 = call ptr @fn_val(ptr %t217, ptr @.str1854) store ptr %t218, ptr %retval br label %ret ifend22: %t219 = load ptr, ptr %t0 - %t220 = call i32 @lp_str_eq(ptr %t219, ptr @.str1852) + %t220 = call i32 @lp_str_eq(ptr %t219, ptr @.str1855) %t221 = icmp ne i32 %t220, 0 br i1 %t221, label %then26, label %ifend28 then26: - %t222 = call ptr @fn_find_fn(ptr @.str1853) + %t222 = call ptr @fn_find_fn(ptr @.str1856) %t223 = icmp eq ptr %t222, null %t224 = zext i1 %t223 to i32 %t225 = icmp ne i32 %t224, 0 br i1 %t225, label %then29, label %ifend31 then29: - call void @fn_perr(ptr @.str1854) + call void @fn_perr(ptr @.str1857) br label %ifend31 ifend31: %t226 = load ptr, ptr %t1 @@ -39708,35 +39761,35 @@ ifend31: %t253 = load ptr, ptr %t234 %t254 = getelementptr inbounds %Cmp_Val, ptr %t253, i32 0, i32 0 %t255 = load ptr, ptr %t254 - %t256 = call ptr @lp_str_concat(ptr @.str1855, ptr %t255) - %t257 = call ptr @lp_str_concat(ptr %t256, ptr @.str1856) + %t256 = call ptr @lp_str_concat(ptr @.str1858, ptr %t255) + %t257 = call ptr @lp_str_concat(ptr %t256, ptr @.str1859) %t258 = load ptr, ptr %t243 %t259 = getelementptr inbounds %Cmp_Val, ptr %t258, i32 0, i32 0 %t260 = load ptr, ptr %t259 %t261 = call ptr @lp_str_concat(ptr %t257, ptr %t260) - %t262 = call ptr @lp_str_concat(ptr %t261, ptr @.str1857) + %t262 = call ptr @lp_str_concat(ptr %t261, ptr @.str1860) %t263 = load ptr, ptr %t252 %t264 = getelementptr inbounds %Cmp_Val, ptr %t263, i32 0, i32 0 %t265 = load ptr, ptr %t264 %t266 = call ptr @lp_str_concat(ptr %t262, ptr %t265) - %t267 = call ptr @lp_str_concat(ptr %t266, ptr @.str1858) + %t267 = call ptr @lp_str_concat(ptr %t266, ptr @.str1861) %t268 = call ptr @fn_emit_bind(ptr %t267) - %t269 = call ptr @fn_val(ptr %t268, ptr @.str1859) + %t269 = call ptr @fn_val(ptr %t268, ptr @.str1862) store ptr %t269, ptr %retval br label %ret ifend28: %t270 = load ptr, ptr %t0 - %t271 = call i32 @lp_str_eq(ptr %t270, ptr @.str1860) + %t271 = call i32 @lp_str_eq(ptr %t270, ptr @.str1863) %t272 = icmp ne i32 %t271, 0 br i1 %t272, label %then32, label %ifend34 then32: - %t273 = call ptr @fn_find_fn(ptr @.str1861) + %t273 = call ptr @fn_find_fn(ptr @.str1864) %t274 = icmp eq ptr %t273, null %t275 = zext i1 %t274 to i32 %t276 = icmp ne i32 %t275, 0 br i1 %t276, label %then35, label %ifend37 then35: - call void @fn_perr(ptr @.str1862) + call void @fn_perr(ptr @.str1865) br label %ifend37 ifend37: %t277 = load ptr, ptr %t1 @@ -39751,15 +39804,15 @@ ifend37: %t286 = load ptr, ptr %t285 %t287 = getelementptr inbounds %Cmp_Val, ptr %t286, i32 0, i32 0 %t288 = load ptr, ptr %t287 - %t289 = call ptr @lp_str_concat(ptr @.str1863, ptr %t288) - %t290 = call ptr @lp_str_concat(ptr %t289, ptr @.str1864) + %t289 = call ptr @lp_str_concat(ptr @.str1866, ptr %t288) + %t290 = call ptr @lp_str_concat(ptr %t289, ptr @.str1867) %t291 = call ptr @fn_emit_bind(ptr %t290) - %t292 = call ptr @fn_val(ptr %t291, ptr @.str1865) + %t292 = call ptr @fn_val(ptr %t291, ptr @.str1868) store ptr %t292, ptr %retval br label %ret ifend34: %t293 = load ptr, ptr %t0 - %t294 = call i32 @lp_str_eq(ptr %t293, ptr @.str1866) + %t294 = call i32 @lp_str_eq(ptr %t293, ptr @.str1869) %t295 = icmp ne i32 %t294, 0 br i1 %t295, label %then38, label %ifend40 then38: @@ -39802,15 +39855,15 @@ then38: %t332 = call ptr @fn_vec_y(ptr %t331) store ptr %t332, ptr %t333 %t334 = load ptr, ptr %t318 - %t335 = call ptr @lp_str_concat(ptr @.str1867, ptr %t334) - %t336 = call ptr @lp_str_concat(ptr %t335, ptr @.str1868) + %t335 = call ptr @lp_str_concat(ptr @.str1870, ptr %t334) + %t336 = call ptr @lp_str_concat(ptr %t335, ptr @.str1871) %t337 = load ptr, ptr %t328 %t338 = call ptr @lp_str_concat(ptr %t336, ptr %t337) %t339 = call ptr @fn_emit_bind(ptr %t338) store ptr %t339, ptr %t340 %t341 = load ptr, ptr %t323 - %t342 = call ptr @lp_str_concat(ptr @.str1869, ptr %t341) - %t343 = call ptr @lp_str_concat(ptr %t342, ptr @.str1870) + %t342 = call ptr @lp_str_concat(ptr @.str1872, ptr %t341) + %t343 = call ptr @lp_str_concat(ptr %t342, ptr @.str1873) %t344 = load ptr, ptr %t333 %t345 = call ptr @lp_str_concat(ptr %t343, ptr %t344) %t346 = call ptr @fn_emit_bind(ptr %t345) @@ -39818,12 +39871,12 @@ then38: %t348 = load ptr, ptr %t340 %t349 = load ptr, ptr %t347 %t350 = call ptr @fn_vec_pack(ptr %t348, ptr %t349) - %t351 = call ptr @fn_val(ptr %t350, ptr @.str1871) + %t351 = call ptr @fn_val(ptr %t350, ptr @.str1874) store ptr %t351, ptr %retval br label %ret ifend40: %t352 = load ptr, ptr %t0 - %t353 = call i32 @lp_str_eq(ptr %t352, ptr @.str1872) + %t353 = call i32 @lp_str_eq(ptr %t352, ptr @.str1875) %t354 = icmp ne i32 %t353, 0 br i1 %t354, label %then41, label %ifend43 then41: @@ -39866,15 +39919,15 @@ then41: %t391 = call ptr @fn_vec_y(ptr %t390) store ptr %t391, ptr %t392 %t393 = load ptr, ptr %t377 - %t394 = call ptr @lp_str_concat(ptr @.str1873, ptr %t393) - %t395 = call ptr @lp_str_concat(ptr %t394, ptr @.str1874) + %t394 = call ptr @lp_str_concat(ptr @.str1876, ptr %t393) + %t395 = call ptr @lp_str_concat(ptr %t394, ptr @.str1877) %t396 = load ptr, ptr %t387 %t397 = call ptr @lp_str_concat(ptr %t395, ptr %t396) %t398 = call ptr @fn_emit_bind(ptr %t397) store ptr %t398, ptr %t399 %t400 = load ptr, ptr %t382 - %t401 = call ptr @lp_str_concat(ptr @.str1875, ptr %t400) - %t402 = call ptr @lp_str_concat(ptr %t401, ptr @.str1876) + %t401 = call ptr @lp_str_concat(ptr @.str1878, ptr %t400) + %t402 = call ptr @lp_str_concat(ptr %t401, ptr @.str1879) %t403 = load ptr, ptr %t392 %t404 = call ptr @lp_str_concat(ptr %t402, ptr %t403) %t405 = call ptr @fn_emit_bind(ptr %t404) @@ -39882,12 +39935,12 @@ then41: %t407 = load ptr, ptr %t399 %t408 = load ptr, ptr %t406 %t409 = call ptr @fn_vec_pack(ptr %t407, ptr %t408) - %t410 = call ptr @fn_val(ptr %t409, ptr @.str1877) + %t410 = call ptr @fn_val(ptr %t409, ptr @.str1880) store ptr %t410, ptr %retval br label %ret ifend43: %t411 = load ptr, ptr %t0 - %t412 = call i32 @lp_str_eq(ptr %t411, ptr @.str1878) + %t412 = call i32 @lp_str_eq(ptr %t411, ptr @.str1881) %t413 = icmp ne i32 %t412, 0 br i1 %t413, label %then44, label %ifend46 then44: @@ -39920,8 +39973,8 @@ then44: %t440 = call ptr @fn_vec_y(ptr %t439) store ptr %t440, ptr %t441 %t442 = load ptr, ptr %t436 - %t443 = call ptr @lp_str_concat(ptr @.str1879, ptr %t442) - %t444 = call ptr @lp_str_concat(ptr %t443, ptr @.str1880) + %t443 = call ptr @lp_str_concat(ptr @.str1882, ptr %t442) + %t444 = call ptr @lp_str_concat(ptr %t443, ptr @.str1883) %t445 = load ptr, ptr %t431 %t446 = getelementptr inbounds %Cmp_Val, ptr %t445, i32 0, i32 0 %t447 = load ptr, ptr %t446 @@ -39929,8 +39982,8 @@ then44: %t449 = call ptr @fn_emit_bind(ptr %t448) store ptr %t449, ptr %t450 %t451 = load ptr, ptr %t441 - %t452 = call ptr @lp_str_concat(ptr @.str1881, ptr %t451) - %t453 = call ptr @lp_str_concat(ptr %t452, ptr @.str1882) + %t452 = call ptr @lp_str_concat(ptr @.str1884, ptr %t451) + %t453 = call ptr @lp_str_concat(ptr %t452, ptr @.str1885) %t454 = load ptr, ptr %t431 %t455 = getelementptr inbounds %Cmp_Val, ptr %t454, i32 0, i32 0 %t456 = load ptr, ptr %t455 @@ -39940,12 +39993,12 @@ then44: %t460 = load ptr, ptr %t450 %t461 = load ptr, ptr %t459 %t462 = call ptr @fn_vec_pack(ptr %t460, ptr %t461) - %t463 = call ptr @fn_val(ptr %t462, ptr @.str1883) + %t463 = call ptr @fn_val(ptr %t462, ptr @.str1886) store ptr %t463, ptr %retval br label %ret ifend46: %t464 = load ptr, ptr %t0 - %t465 = call i32 @lp_str_eq(ptr %t464, ptr @.str1884) + %t465 = call i32 @lp_str_eq(ptr %t464, ptr @.str1887) %t466 = icmp ne i32 %t465, 0 br i1 %t466, label %then47, label %ifend49 then47: @@ -39988,31 +40041,31 @@ then47: %t503 = call ptr @fn_vec_y(ptr %t502) store ptr %t503, ptr %t504 %t505 = load ptr, ptr %t489 - %t506 = call ptr @lp_str_concat(ptr @.str1885, ptr %t505) - %t507 = call ptr @lp_str_concat(ptr %t506, ptr @.str1886) + %t506 = call ptr @lp_str_concat(ptr @.str1888, ptr %t505) + %t507 = call ptr @lp_str_concat(ptr %t506, ptr @.str1889) %t508 = load ptr, ptr %t499 %t509 = call ptr @lp_str_concat(ptr %t507, ptr %t508) %t510 = call ptr @fn_emit_bind(ptr %t509) store ptr %t510, ptr %t511 %t512 = load ptr, ptr %t494 - %t513 = call ptr @lp_str_concat(ptr @.str1887, ptr %t512) - %t514 = call ptr @lp_str_concat(ptr %t513, ptr @.str1888) + %t513 = call ptr @lp_str_concat(ptr @.str1890, ptr %t512) + %t514 = call ptr @lp_str_concat(ptr %t513, ptr @.str1891) %t515 = load ptr, ptr %t504 %t516 = call ptr @lp_str_concat(ptr %t514, ptr %t515) %t517 = call ptr @fn_emit_bind(ptr %t516) store ptr %t517, ptr %t518 %t519 = load ptr, ptr %t511 - %t520 = call ptr @lp_str_concat(ptr @.str1889, ptr %t519) - %t521 = call ptr @lp_str_concat(ptr %t520, ptr @.str1890) + %t520 = call ptr @lp_str_concat(ptr @.str1892, ptr %t519) + %t521 = call ptr @lp_str_concat(ptr %t520, ptr @.str1893) %t522 = load ptr, ptr %t518 %t523 = call ptr @lp_str_concat(ptr %t521, ptr %t522) %t524 = call ptr @fn_emit_bind(ptr %t523) - %t525 = call ptr @fn_val(ptr %t524, ptr @.str1891) + %t525 = call ptr @fn_val(ptr %t524, ptr @.str1894) store ptr %t525, ptr %retval br label %ret ifend49: %t526 = load ptr, ptr %t0 - %t527 = call i32 @lp_str_eq(ptr %t526, ptr @.str1892) + %t527 = call i32 @lp_str_eq(ptr %t526, ptr @.str1895) %t528 = icmp ne i32 %t527, 0 br i1 %t528, label %then50, label %ifend52 then50: @@ -40037,8 +40090,8 @@ then50: %t547 = load ptr, ptr %t537 %t548 = getelementptr inbounds %Cmp_Val, ptr %t547, i32 0, i32 0 %t549 = load ptr, ptr %t548 - %t550 = call ptr @lp_str_concat(ptr @.str1893, ptr %t549) - %t551 = call ptr @lp_str_concat(ptr %t550, ptr @.str1894) + %t550 = call ptr @lp_str_concat(ptr @.str1896, ptr %t549) + %t551 = call ptr @lp_str_concat(ptr %t550, ptr @.str1897) %t552 = load ptr, ptr %t546 %t553 = getelementptr inbounds %Cmp_Val, ptr %t552, i32 0, i32 0 %t554 = load ptr, ptr %t553 @@ -40046,15 +40099,15 @@ then50: %t556 = call ptr @fn_emit_bind(ptr %t555) store ptr %t556, ptr %t557 %t558 = load ptr, ptr %t557 - %t559 = call ptr @lp_str_concat(ptr @.str1895, ptr %t558) - %t560 = call ptr @lp_str_concat(ptr %t559, ptr @.str1896) + %t559 = call ptr @lp_str_concat(ptr @.str1898, ptr %t558) + %t560 = call ptr @lp_str_concat(ptr %t559, ptr @.str1899) %t561 = call ptr @fn_emit_bind(ptr %t560) - %t562 = call ptr @fn_val(ptr %t561, ptr @.str1897) + %t562 = call ptr @fn_val(ptr %t561, ptr @.str1900) store ptr %t562, ptr %retval br label %ret ifend52: %t563 = load ptr, ptr %t0 - %t564 = call i32 @lp_str_eq(ptr %t563, ptr @.str1898) + %t564 = call i32 @lp_str_eq(ptr %t563, ptr @.str1901) %t565 = icmp ne i32 %t564, 0 br i1 %t565, label %then53, label %ifend55 then53: @@ -40097,15 +40150,15 @@ then53: %t602 = call ptr @fn_vec_y(ptr %t601) store ptr %t602, ptr %t603 %t604 = load ptr, ptr %t588 - %t605 = call ptr @lp_str_concat(ptr @.str1899, ptr %t604) - %t606 = call ptr @lp_str_concat(ptr %t605, ptr @.str1900) + %t605 = call ptr @lp_str_concat(ptr @.str1902, ptr %t604) + %t606 = call ptr @lp_str_concat(ptr %t605, ptr @.str1903) %t607 = load ptr, ptr %t598 %t608 = call ptr @lp_str_concat(ptr %t606, ptr %t607) %t609 = call ptr @fn_emit_bind(ptr %t608) store ptr %t609, ptr %t610 %t611 = load ptr, ptr %t593 - %t612 = call ptr @lp_str_concat(ptr @.str1901, ptr %t611) - %t613 = call ptr @lp_str_concat(ptr %t612, ptr @.str1902) + %t612 = call ptr @lp_str_concat(ptr @.str1904, ptr %t611) + %t613 = call ptr @lp_str_concat(ptr %t612, ptr @.str1905) %t614 = load ptr, ptr %t603 %t615 = call ptr @lp_str_concat(ptr %t613, ptr %t614) %t616 = call ptr @fn_emit_bind(ptr %t615) @@ -40117,12 +40170,12 @@ then53: %t622 = call ptr @fn_ivec_abs(ptr %t621) store ptr %t622, ptr %t623 %t624 = load ptr, ptr %t620 - %t625 = call ptr @lp_str_concat(ptr @.str1903, ptr %t624) - %t626 = call ptr @lp_str_concat(ptr %t625, ptr @.str1904) + %t625 = call ptr @lp_str_concat(ptr @.str1906, ptr %t624) + %t626 = call ptr @lp_str_concat(ptr %t625, ptr @.str1907) %t627 = load ptr, ptr %t623 %t628 = call ptr @lp_str_concat(ptr %t626, ptr %t627) %t629 = call ptr @fn_emit_bind(ptr %t628) - %t630 = call ptr @fn_val(ptr %t629, ptr @.str1905) + %t630 = call ptr @fn_val(ptr %t629, ptr @.str1908) store ptr %t630, ptr %retval br label %ret ifend55: @@ -40146,19 +40199,19 @@ ifend55: %t648 = call ptr @fn_vec_y(ptr %t647) store ptr %t648, ptr %t649 %t650 = load ptr, ptr %t644 - %t651 = call ptr @lp_str_concat(ptr @.str1906, ptr %t650) - %t652 = call ptr @lp_str_concat(ptr %t651, ptr @.str1907) + %t651 = call ptr @lp_str_concat(ptr @.str1909, ptr %t650) + %t652 = call ptr @lp_str_concat(ptr %t651, ptr @.str1910) %t653 = call ptr @fn_emit_bind(ptr %t652) store ptr %t653, ptr %t654 %t655 = load ptr, ptr %t649 - %t656 = call ptr @lp_str_concat(ptr @.str1908, ptr %t655) - %t657 = call ptr @lp_str_concat(ptr %t656, ptr @.str1909) + %t656 = call ptr @lp_str_concat(ptr @.str1911, ptr %t655) + %t657 = call ptr @lp_str_concat(ptr %t656, ptr @.str1912) %t658 = call ptr @fn_emit_bind(ptr %t657) store ptr %t658, ptr %t659 %t660 = load ptr, ptr %t654 %t661 = load ptr, ptr %t659 %t662 = call ptr @fn_vec_pack(ptr %t660, ptr %t661) - %t663 = call ptr @fn_val(ptr %t662, ptr @.str1910) + %t663 = call ptr @fn_val(ptr %t662, ptr @.str1913) store ptr %t663, ptr %retval br label %ret ret: @@ -40187,57 +40240,57 @@ entry: store ptr %arg_w, ptr %t2 store ptr %arg_h, ptr %t3 %t4 = load ptr, ptr %t0 - %t5 = call ptr @lp_str_concat(ptr @.str1911, ptr %t4) - %t6 = call ptr @lp_str_concat(ptr %t5, ptr @.str1912) + %t5 = call ptr @lp_str_concat(ptr @.str1914, ptr %t4) + %t6 = call ptr @lp_str_concat(ptr %t5, ptr @.str1915) %t7 = call ptr @fn_emit_bind(ptr %t6) store ptr %t7, ptr %t8 %t9 = load ptr, ptr %t8 - %t10 = call ptr @lp_str_concat(ptr @.str1913, ptr %t9) - %t11 = call ptr @lp_str_concat(ptr %t10, ptr @.str1914) + %t10 = call ptr @lp_str_concat(ptr @.str1916, ptr %t9) + %t11 = call ptr @lp_str_concat(ptr %t10, ptr @.str1917) %t12 = call ptr @fn_emit_bind(ptr %t11) store ptr %t12, ptr %t13 %t14 = load ptr, ptr %t1 - %t15 = call ptr @lp_str_concat(ptr @.str1915, ptr %t14) - %t16 = call ptr @lp_str_concat(ptr %t15, ptr @.str1916) + %t15 = call ptr @lp_str_concat(ptr @.str1918, ptr %t14) + %t16 = call ptr @lp_str_concat(ptr %t15, ptr @.str1919) %t17 = call ptr @fn_emit_bind(ptr %t16) store ptr %t17, ptr %t18 %t19 = load ptr, ptr %t18 - %t20 = call ptr @lp_str_concat(ptr @.str1917, ptr %t19) - %t21 = call ptr @lp_str_concat(ptr %t20, ptr @.str1918) + %t20 = call ptr @lp_str_concat(ptr @.str1920, ptr %t19) + %t21 = call ptr @lp_str_concat(ptr %t20, ptr @.str1921) %t22 = call ptr @fn_emit_bind(ptr %t21) store ptr %t22, ptr %t23 %t24 = load ptr, ptr %t2 - %t25 = call ptr @lp_str_concat(ptr @.str1919, ptr %t24) - %t26 = call ptr @lp_str_concat(ptr %t25, ptr @.str1920) + %t25 = call ptr @lp_str_concat(ptr @.str1922, ptr %t24) + %t26 = call ptr @lp_str_concat(ptr %t25, ptr @.str1923) %t27 = call ptr @fn_emit_bind(ptr %t26) store ptr %t27, ptr %t28 %t29 = load ptr, ptr %t28 - %t30 = call ptr @lp_str_concat(ptr @.str1921, ptr %t29) - %t31 = call ptr @lp_str_concat(ptr %t30, ptr @.str1922) + %t30 = call ptr @lp_str_concat(ptr @.str1924, ptr %t29) + %t31 = call ptr @lp_str_concat(ptr %t30, ptr @.str1925) %t32 = call ptr @fn_emit_bind(ptr %t31) store ptr %t32, ptr %t33 %t34 = load ptr, ptr %t3 - %t35 = call ptr @lp_str_concat(ptr @.str1923, ptr %t34) - %t36 = call ptr @lp_str_concat(ptr %t35, ptr @.str1924) + %t35 = call ptr @lp_str_concat(ptr @.str1926, ptr %t34) + %t36 = call ptr @lp_str_concat(ptr %t35, ptr @.str1927) %t37 = call ptr @fn_emit_bind(ptr %t36) store ptr %t37, ptr %t38 %t39 = load ptr, ptr %t13 - %t40 = call ptr @lp_str_concat(ptr @.str1925, ptr %t39) - %t41 = call ptr @lp_str_concat(ptr %t40, ptr @.str1926) + %t40 = call ptr @lp_str_concat(ptr @.str1928, ptr %t39) + %t41 = call ptr @lp_str_concat(ptr %t40, ptr @.str1929) %t42 = load ptr, ptr %t23 %t43 = call ptr @lp_str_concat(ptr %t41, ptr %t42) %t44 = call ptr @fn_emit_bind(ptr %t43) store ptr %t44, ptr %t45 %t46 = load ptr, ptr %t45 - %t47 = call ptr @lp_str_concat(ptr @.str1927, ptr %t46) - %t48 = call ptr @lp_str_concat(ptr %t47, ptr @.str1928) + %t47 = call ptr @lp_str_concat(ptr @.str1930, ptr %t46) + %t48 = call ptr @lp_str_concat(ptr %t47, ptr @.str1931) %t49 = load ptr, ptr %t33 %t50 = call ptr @lp_str_concat(ptr %t48, ptr %t49) %t51 = call ptr @fn_emit_bind(ptr %t50) store ptr %t51, ptr %t52 %t53 = load ptr, ptr %t52 - %t54 = call ptr @lp_str_concat(ptr @.str1929, ptr %t53) - %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str1930) + %t54 = call ptr @lp_str_concat(ptr @.str1932, ptr %t53) + %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str1933) %t56 = load ptr, ptr %t38 %t57 = call ptr @lp_str_concat(ptr %t55, ptr %t56) %t58 = call ptr @fn_emit_bind(ptr %t57) @@ -40263,23 +40316,23 @@ entry: br i1 %t5, label %then0, label %ifend2 then0: %t6 = load ptr, ptr %t0 - %t7 = call ptr @lp_str_concat(ptr @.str1931, ptr %t6) - %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str1932) + %t7 = call ptr @lp_str_concat(ptr @.str1934, ptr %t6) + %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str1935) %t9 = call ptr @fn_emit_bind(ptr %t8) store ptr %t9, ptr %retval br label %ret ifend2: %t10 = load ptr, ptr %t0 - %t11 = call ptr @lp_str_concat(ptr @.str1933, ptr %t10) - %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str1934) + %t11 = call ptr @lp_str_concat(ptr @.str1936, ptr %t10) + %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str1937) %t13 = load i32, ptr %t1 %t14 = call ptr @fn_itoa(i32 %t13) %t15 = call ptr @lp_str_concat(ptr %t12, ptr %t14) %t16 = call ptr @fn_emit_bind(ptr %t15) store ptr %t16, ptr %t17 %t18 = load ptr, ptr %t17 - %t19 = call ptr @lp_str_concat(ptr @.str1935, ptr %t18) - %t20 = call ptr @lp_str_concat(ptr %t19, ptr @.str1936) + %t19 = call ptr @lp_str_concat(ptr @.str1938, ptr %t18) + %t20 = call ptr @lp_str_concat(ptr %t19, ptr @.str1939) %t21 = call ptr @fn_emit_bind(ptr %t20) store ptr %t21, ptr %retval br label %ret @@ -40299,18 +40352,18 @@ entry: store ptr %arg_a, ptr %t1 store ptr %arg_b, ptr %t2 %t3 = load ptr, ptr %t0 - %t4 = call ptr @lp_str_concat(ptr @.str1937, ptr %t3) - %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str1938) + %t4 = call ptr @lp_str_concat(ptr @.str1940, ptr %t3) + %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str1941) %t6 = load ptr, ptr %t1 %t7 = call ptr @lp_str_concat(ptr %t5, ptr %t6) - %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str1939) + %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str1942) %t9 = load ptr, ptr %t2 %t10 = call ptr @lp_str_concat(ptr %t8, ptr %t9) %t11 = call ptr @fn_emit_bind(ptr %t10) store ptr %t11, ptr %t12 %t13 = load ptr, ptr %t12 - %t14 = call ptr @lp_str_concat(ptr @.str1940, ptr %t13) - %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str1941) + %t14 = call ptr @lp_str_concat(ptr @.str1943, ptr %t13) + %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str1944) %t16 = call ptr @fn_emit_bind(ptr %t15) store ptr %t16, ptr %retval br label %ret @@ -40332,14 +40385,14 @@ entry: %t55 = alloca i32 store ptr %arg_meth, ptr %t0 %t5 = load ptr, ptr %t0 - %t6 = call i32 @lp_str_eq(ptr %t5, ptr @.str1942) + %t6 = call i32 @lp_str_eq(ptr %t5, ptr @.str1945) %t7 = icmp ne i32 %t6, 0 %t8 = zext i1 %t7 to i32 store i32 %t8, ptr %t4 br i1 %t7, label %scend1, label %sc0 sc0: %t9 = load ptr, ptr %t0 - %t10 = call i32 @lp_str_eq(ptr %t9, ptr @.str1943) + %t10 = call i32 @lp_str_eq(ptr %t9, ptr @.str1946) %t11 = icmp ne i32 %t10, 0 %t12 = zext i1 %t11 to i32 store i32 %t12, ptr %t4 @@ -40352,7 +40405,7 @@ scend1: br i1 %t14, label %scend3, label %sc2 sc2: %t16 = load ptr, ptr %t0 - %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str1944) + %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str1947) %t18 = icmp ne i32 %t17, 0 %t19 = zext i1 %t18 to i32 store i32 %t19, ptr %t3 @@ -40365,7 +40418,7 @@ scend3: br i1 %t21, label %scend5, label %sc4 sc4: %t23 = load ptr, ptr %t0 - %t24 = call i32 @lp_str_eq(ptr %t23, ptr @.str1945) + %t24 = call i32 @lp_str_eq(ptr %t23, ptr @.str1948) %t25 = icmp ne i32 %t24, 0 %t26 = zext i1 %t25 to i32 store i32 %t26, ptr %t2 @@ -40378,7 +40431,7 @@ scend5: br i1 %t28, label %scend7, label %sc6 sc6: %t30 = load ptr, ptr %t0 - %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str1946) + %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str1949) %t32 = icmp ne i32 %t31, 0 %t33 = zext i1 %t32 to i32 store i32 %t33, ptr %t1 @@ -40392,14 +40445,14 @@ then8: br label %ret ifend10: %t38 = load ptr, ptr %t0 - %t39 = call i32 @lp_str_eq(ptr %t38, ptr @.str1947) + %t39 = call i32 @lp_str_eq(ptr %t38, ptr @.str1950) %t40 = icmp ne i32 %t39, 0 %t41 = zext i1 %t40 to i32 store i32 %t41, ptr %t37 br i1 %t40, label %scend12, label %sc11 sc11: %t42 = load ptr, ptr %t0 - %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str1948) + %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str1951) %t44 = icmp ne i32 %t43, 0 %t45 = zext i1 %t44 to i32 store i32 %t45, ptr %t37 @@ -40412,7 +40465,7 @@ scend12: br i1 %t47, label %scend14, label %sc13 sc13: %t49 = load ptr, ptr %t0 - %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str1949) + %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str1952) %t51 = icmp ne i32 %t50, 0 %t52 = zext i1 %t51 to i32 store i32 %t52, ptr %t36 @@ -40426,14 +40479,14 @@ then15: br label %ret ifend17: %t56 = load ptr, ptr %t0 - %t57 = call i32 @lp_str_eq(ptr %t56, ptr @.str1950) + %t57 = call i32 @lp_str_eq(ptr %t56, ptr @.str1953) %t58 = icmp ne i32 %t57, 0 %t59 = zext i1 %t58 to i32 store i32 %t59, ptr %t55 br i1 %t58, label %scend19, label %sc18 sc18: %t60 = load ptr, ptr %t0 - %t61 = call i32 @lp_str_eq(ptr %t60, ptr @.str1951) + %t61 = call i32 @lp_str_eq(ptr %t60, ptr @.str1954) %t62 = icmp ne i32 %t61, 0 %t63 = zext i1 %t62 to i32 store i32 %t63, ptr %t55 @@ -40519,7 +40572,7 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str1952) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str1955) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -40572,12 +40625,12 @@ then0: %t51 = getelementptr inbounds %Cmp_Val, ptr %t50, i32 0, i32 0 %t52 = load ptr, ptr %t51 %t53 = call ptr @fn_rect_pack(ptr %t43, ptr %t46, ptr %t49, ptr %t52) - %t54 = call ptr @fn_val(ptr %t53, ptr @.str1953) + %t54 = call ptr @fn_val(ptr %t53, ptr @.str1956) store ptr %t54, ptr %retval br label %ret ifend2: %t55 = load ptr, ptr %t0 - %t56 = call i32 @lp_str_eq(ptr %t55, ptr @.str1954) + %t56 = call i32 @lp_str_eq(ptr %t55, ptr @.str1957) %t57 = icmp ne i32 %t56, 0 br i1 %t57, label %then3, label %ifend5 then3: @@ -40594,12 +40647,12 @@ then3: %t68 = getelementptr inbounds %Cmp_Val, ptr %t67, i32 0, i32 0 %t69 = load ptr, ptr %t68 %t70 = call ptr @fn_rect_field(ptr %t69, i32 96) - %t71 = call ptr @fn_val(ptr %t70, ptr @.str1955) + %t71 = call ptr @fn_val(ptr %t70, ptr @.str1958) store ptr %t71, ptr %retval br label %ret ifend5: %t72 = load ptr, ptr %t0 - %t73 = call i32 @lp_str_eq(ptr %t72, ptr @.str1956) + %t73 = call i32 @lp_str_eq(ptr %t72, ptr @.str1959) %t74 = icmp ne i32 %t73, 0 br i1 %t74, label %then6, label %ifend8 then6: @@ -40616,12 +40669,12 @@ then6: %t85 = getelementptr inbounds %Cmp_Val, ptr %t84, i32 0, i32 0 %t86 = load ptr, ptr %t85 %t87 = call ptr @fn_rect_field(ptr %t86, i32 64) - %t88 = call ptr @fn_val(ptr %t87, ptr @.str1957) + %t88 = call ptr @fn_val(ptr %t87, ptr @.str1960) store ptr %t88, ptr %retval br label %ret ifend8: %t89 = load ptr, ptr %t0 - %t90 = call i32 @lp_str_eq(ptr %t89, ptr @.str1958) + %t90 = call i32 @lp_str_eq(ptr %t89, ptr @.str1961) %t91 = icmp ne i32 %t90, 0 br i1 %t91, label %then9, label %ifend11 then9: @@ -40638,12 +40691,12 @@ then9: %t102 = getelementptr inbounds %Cmp_Val, ptr %t101, i32 0, i32 0 %t103 = load ptr, ptr %t102 %t104 = call ptr @fn_rect_field(ptr %t103, i32 32) - %t105 = call ptr @fn_val(ptr %t104, ptr @.str1959) + %t105 = call ptr @fn_val(ptr %t104, ptr @.str1962) store ptr %t105, ptr %retval br label %ret ifend11: %t106 = load ptr, ptr %t0 - %t107 = call i32 @lp_str_eq(ptr %t106, ptr @.str1960) + %t107 = call i32 @lp_str_eq(ptr %t106, ptr @.str1963) %t108 = icmp ne i32 %t107, 0 br i1 %t108, label %then12, label %ifend14 then12: @@ -40660,12 +40713,12 @@ then12: %t119 = getelementptr inbounds %Cmp_Val, ptr %t118, i32 0, i32 0 %t120 = load ptr, ptr %t119 %t121 = call ptr @fn_rect_field(ptr %t120, i32 0) - %t122 = call ptr @fn_val(ptr %t121, ptr @.str1961) + %t122 = call ptr @fn_val(ptr %t121, ptr @.str1964) store ptr %t122, ptr %retval br label %ret ifend14: %t123 = load ptr, ptr %t0 - %t124 = call i32 @lp_str_eq(ptr %t123, ptr @.str1962) + %t124 = call i32 @lp_str_eq(ptr %t123, ptr @.str1965) %t125 = icmp ne i32 %t124, 0 br i1 %t125, label %then15, label %ifend17 then15: @@ -40689,17 +40742,17 @@ then15: %t143 = call ptr @fn_rect_field(ptr %t142, i32 32) store ptr %t143, ptr %t144 %t145 = load ptr, ptr %t139 - %t146 = call ptr @lp_str_concat(ptr @.str1963, ptr %t145) - %t147 = call ptr @lp_str_concat(ptr %t146, ptr @.str1964) + %t146 = call ptr @lp_str_concat(ptr @.str1966, ptr %t145) + %t147 = call ptr @lp_str_concat(ptr %t146, ptr @.str1967) %t148 = load ptr, ptr %t144 %t149 = call ptr @lp_str_concat(ptr %t147, ptr %t148) %t150 = call ptr @fn_emit_bind(ptr %t149) - %t151 = call ptr @fn_val(ptr %t150, ptr @.str1965) + %t151 = call ptr @fn_val(ptr %t150, ptr @.str1968) store ptr %t151, ptr %retval br label %ret ifend17: %t152 = load ptr, ptr %t0 - %t153 = call i32 @lp_str_eq(ptr %t152, ptr @.str1966) + %t153 = call i32 @lp_str_eq(ptr %t152, ptr @.str1969) %t154 = icmp ne i32 %t153, 0 br i1 %t154, label %then18, label %ifend20 then18: @@ -40723,17 +40776,17 @@ then18: %t172 = call ptr @fn_rect_field(ptr %t171, i32 0) store ptr %t172, ptr %t173 %t174 = load ptr, ptr %t168 - %t175 = call ptr @lp_str_concat(ptr @.str1967, ptr %t174) - %t176 = call ptr @lp_str_concat(ptr %t175, ptr @.str1968) + %t175 = call ptr @lp_str_concat(ptr @.str1970, ptr %t174) + %t176 = call ptr @lp_str_concat(ptr %t175, ptr @.str1971) %t177 = load ptr, ptr %t173 %t178 = call ptr @lp_str_concat(ptr %t176, ptr %t177) %t179 = call ptr @fn_emit_bind(ptr %t178) - %t180 = call ptr @fn_val(ptr %t179, ptr @.str1969) + %t180 = call ptr @fn_val(ptr %t179, ptr @.str1972) store ptr %t180, ptr %retval br label %ret ifend20: %t181 = load ptr, ptr %t0 - %t182 = call i32 @lp_str_eq(ptr %t181, ptr @.str1970) + %t182 = call i32 @lp_str_eq(ptr %t181, ptr @.str1973) %t183 = icmp ne i32 %t182, 0 br i1 %t183, label %then21, label %ifend23 then21: @@ -40767,25 +40820,25 @@ then21: %t211 = call ptr @fn_rect_field(ptr %t210, i32 0) store ptr %t211, ptr %t212 %t213 = load ptr, ptr %t207 - %t214 = call ptr @lp_str_concat(ptr @.str1971, ptr %t213) - %t215 = call ptr @lp_str_concat(ptr %t214, ptr @.str1972) + %t214 = call ptr @lp_str_concat(ptr @.str1974, ptr %t213) + %t215 = call ptr @lp_str_concat(ptr %t214, ptr @.str1975) %t216 = call ptr @fn_emit_bind(ptr %t215) store ptr %t216, ptr %t217 %t218 = load ptr, ptr %t212 - %t219 = call ptr @lp_str_concat(ptr @.str1973, ptr %t218) - %t220 = call ptr @lp_str_concat(ptr %t219, ptr @.str1974) + %t219 = call ptr @lp_str_concat(ptr @.str1976, ptr %t218) + %t220 = call ptr @lp_str_concat(ptr %t219, ptr @.str1977) %t221 = call ptr @fn_emit_bind(ptr %t220) store ptr %t221, ptr %t222 %t223 = load ptr, ptr %t197 - %t224 = call ptr @lp_str_concat(ptr @.str1975, ptr %t223) - %t225 = call ptr @lp_str_concat(ptr %t224, ptr @.str1976) + %t224 = call ptr @lp_str_concat(ptr @.str1978, ptr %t223) + %t225 = call ptr @lp_str_concat(ptr %t224, ptr @.str1979) %t226 = load ptr, ptr %t217 %t227 = call ptr @lp_str_concat(ptr %t225, ptr %t226) %t228 = call ptr @fn_emit_bind(ptr %t227) store ptr %t228, ptr %t229 %t230 = load ptr, ptr %t202 - %t231 = call ptr @lp_str_concat(ptr @.str1977, ptr %t230) - %t232 = call ptr @lp_str_concat(ptr %t231, ptr @.str1978) + %t231 = call ptr @lp_str_concat(ptr @.str1980, ptr %t230) + %t232 = call ptr @lp_str_concat(ptr %t231, ptr @.str1981) %t233 = load ptr, ptr %t222 %t234 = call ptr @lp_str_concat(ptr %t232, ptr %t233) %t235 = call ptr @fn_emit_bind(ptr %t234) @@ -40793,12 +40846,12 @@ then21: %t237 = load ptr, ptr %t229 %t238 = load ptr, ptr %t236 %t239 = call ptr @fn_vec_pack(ptr %t237, ptr %t238) - %t240 = call ptr @fn_val(ptr %t239, ptr @.str1979) + %t240 = call ptr @fn_val(ptr %t239, ptr @.str1982) store ptr %t240, ptr %retval br label %ret ifend23: %t241 = load ptr, ptr %t0 - %t242 = call i32 @lp_str_eq(ptr %t241, ptr @.str1980) + %t242 = call i32 @lp_str_eq(ptr %t241, ptr @.str1983) %t243 = icmp ne i32 %t242, 0 br i1 %t243, label %then24, label %ifend26 then24: @@ -40850,15 +40903,15 @@ then24: %t289 = call ptr @fn_rect_field(ptr %t288, i32 0) store ptr %t289, ptr %t290 %t291 = load ptr, ptr %t275 - %t292 = call ptr @lp_str_concat(ptr @.str1981, ptr %t291) - %t293 = call ptr @lp_str_concat(ptr %t292, ptr @.str1982) + %t292 = call ptr @lp_str_concat(ptr @.str1984, ptr %t291) + %t293 = call ptr @lp_str_concat(ptr %t292, ptr @.str1985) %t294 = load ptr, ptr %t285 %t295 = call ptr @lp_str_concat(ptr %t293, ptr %t294) %t296 = call ptr @fn_emit_bind(ptr %t295) store ptr %t296, ptr %t297 %t298 = load ptr, ptr %t280 - %t299 = call ptr @lp_str_concat(ptr @.str1983, ptr %t298) - %t300 = call ptr @lp_str_concat(ptr %t299, ptr @.str1984) + %t299 = call ptr @lp_str_concat(ptr @.str1986, ptr %t298) + %t300 = call ptr @lp_str_concat(ptr %t299, ptr @.str1987) %t301 = load ptr, ptr %t290 %t302 = call ptr @lp_str_concat(ptr %t300, ptr %t301) %t303 = call ptr @fn_emit_bind(ptr %t302) @@ -40867,47 +40920,47 @@ then24: %t306 = getelementptr inbounds %Cmp_Val, ptr %t305, i32 0, i32 0 %t307 = load ptr, ptr %t306 %t308 = load ptr, ptr %t275 - %t309 = call ptr @fn_rect_cmp(ptr @.str1985, ptr %t307, ptr %t308) + %t309 = call ptr @fn_rect_cmp(ptr @.str1988, ptr %t307, ptr %t308) store ptr %t309, ptr %t310 %t311 = load ptr, ptr %t261 %t312 = getelementptr inbounds %Cmp_Val, ptr %t311, i32 0, i32 0 %t313 = load ptr, ptr %t312 %t314 = load ptr, ptr %t297 - %t315 = call ptr @fn_rect_cmp(ptr @.str1986, ptr %t313, ptr %t314) + %t315 = call ptr @fn_rect_cmp(ptr @.str1989, ptr %t313, ptr %t314) store ptr %t315, ptr %t316 %t317 = load ptr, ptr %t270 %t318 = getelementptr inbounds %Cmp_Val, ptr %t317, i32 0, i32 0 %t319 = load ptr, ptr %t318 %t320 = load ptr, ptr %t280 - %t321 = call ptr @fn_rect_cmp(ptr @.str1987, ptr %t319, ptr %t320) + %t321 = call ptr @fn_rect_cmp(ptr @.str1990, ptr %t319, ptr %t320) store ptr %t321, ptr %t322 %t323 = load ptr, ptr %t270 %t324 = getelementptr inbounds %Cmp_Val, ptr %t323, i32 0, i32 0 %t325 = load ptr, ptr %t324 %t326 = load ptr, ptr %t304 - %t327 = call ptr @fn_rect_cmp(ptr @.str1988, ptr %t325, ptr %t326) + %t327 = call ptr @fn_rect_cmp(ptr @.str1991, ptr %t325, ptr %t326) store ptr %t327, ptr %t328 %t329 = load ptr, ptr %t310 - %t330 = call ptr @lp_str_concat(ptr @.str1989, ptr %t329) - %t331 = call ptr @lp_str_concat(ptr %t330, ptr @.str1990) + %t330 = call ptr @lp_str_concat(ptr @.str1992, ptr %t329) + %t331 = call ptr @lp_str_concat(ptr %t330, ptr @.str1993) %t332 = load ptr, ptr %t316 %t333 = call ptr @lp_str_concat(ptr %t331, ptr %t332) %t334 = call ptr @fn_emit_bind(ptr %t333) store ptr %t334, ptr %t335 %t336 = load ptr, ptr %t322 - %t337 = call ptr @lp_str_concat(ptr @.str1991, ptr %t336) - %t338 = call ptr @lp_str_concat(ptr %t337, ptr @.str1992) + %t337 = call ptr @lp_str_concat(ptr @.str1994, ptr %t336) + %t338 = call ptr @lp_str_concat(ptr %t337, ptr @.str1995) %t339 = load ptr, ptr %t328 %t340 = call ptr @lp_str_concat(ptr %t338, ptr %t339) %t341 = call ptr @fn_emit_bind(ptr %t340) store ptr %t341, ptr %t342 %t343 = load ptr, ptr %t335 - %t344 = call ptr @lp_str_concat(ptr @.str1993, ptr %t343) - %t345 = call ptr @lp_str_concat(ptr %t344, ptr @.str1994) + %t344 = call ptr @lp_str_concat(ptr @.str1996, ptr %t343) + %t345 = call ptr @lp_str_concat(ptr %t344, ptr @.str1997) %t346 = load ptr, ptr %t342 %t347 = call ptr @lp_str_concat(ptr %t345, ptr %t346) %t348 = call ptr @fn_emit_bind(ptr %t347) - %t349 = call ptr @fn_val(ptr %t348, ptr @.str1995) + %t349 = call ptr @fn_val(ptr %t348, ptr @.str1998) store ptr %t349, ptr %retval br label %ret ifend26: @@ -40970,70 +41023,70 @@ ifend26: %t406 = call ptr @fn_rect_field(ptr %t405, i32 0) store ptr %t406, ptr %t407 %t408 = load ptr, ptr %t372 - %t409 = call ptr @lp_str_concat(ptr @.str1996, ptr %t408) - %t410 = call ptr @lp_str_concat(ptr %t409, ptr @.str1997) + %t409 = call ptr @lp_str_concat(ptr @.str1999, ptr %t408) + %t410 = call ptr @lp_str_concat(ptr %t409, ptr @.str2000) %t411 = load ptr, ptr %t382 %t412 = call ptr @lp_str_concat(ptr %t410, ptr %t411) %t413 = call ptr @fn_emit_bind(ptr %t412) store ptr %t413, ptr %t414 %t415 = load ptr, ptr %t377 - %t416 = call ptr @lp_str_concat(ptr @.str1998, ptr %t415) - %t417 = call ptr @lp_str_concat(ptr %t416, ptr @.str1999) + %t416 = call ptr @lp_str_concat(ptr @.str2001, ptr %t415) + %t417 = call ptr @lp_str_concat(ptr %t416, ptr @.str2002) %t418 = load ptr, ptr %t387 %t419 = call ptr @lp_str_concat(ptr %t417, ptr %t418) %t420 = call ptr @fn_emit_bind(ptr %t419) store ptr %t420, ptr %t421 %t422 = load ptr, ptr %t392 - %t423 = call ptr @lp_str_concat(ptr @.str2000, ptr %t422) - %t424 = call ptr @lp_str_concat(ptr %t423, ptr @.str2001) + %t423 = call ptr @lp_str_concat(ptr @.str2003, ptr %t422) + %t424 = call ptr @lp_str_concat(ptr %t423, ptr @.str2004) %t425 = load ptr, ptr %t402 %t426 = call ptr @lp_str_concat(ptr %t424, ptr %t425) %t427 = call ptr @fn_emit_bind(ptr %t426) store ptr %t427, ptr %t428 %t429 = load ptr, ptr %t397 - %t430 = call ptr @lp_str_concat(ptr @.str2002, ptr %t429) - %t431 = call ptr @lp_str_concat(ptr %t430, ptr @.str2003) + %t430 = call ptr @lp_str_concat(ptr @.str2005, ptr %t429) + %t431 = call ptr @lp_str_concat(ptr %t430, ptr @.str2006) %t432 = load ptr, ptr %t407 %t433 = call ptr @lp_str_concat(ptr %t431, ptr %t432) %t434 = call ptr @fn_emit_bind(ptr %t433) store ptr %t434, ptr %t435 %t436 = load ptr, ptr %t372 %t437 = load ptr, ptr %t428 - %t438 = call ptr @fn_rect_cmp(ptr @.str2004, ptr %t436, ptr %t437) + %t438 = call ptr @fn_rect_cmp(ptr @.str2007, ptr %t436, ptr %t437) store ptr %t438, ptr %t439 %t440 = load ptr, ptr %t392 %t441 = load ptr, ptr %t414 - %t442 = call ptr @fn_rect_cmp(ptr @.str2005, ptr %t440, ptr %t441) + %t442 = call ptr @fn_rect_cmp(ptr @.str2008, ptr %t440, ptr %t441) store ptr %t442, ptr %t443 %t444 = load ptr, ptr %t377 %t445 = load ptr, ptr %t435 - %t446 = call ptr @fn_rect_cmp(ptr @.str2006, ptr %t444, ptr %t445) + %t446 = call ptr @fn_rect_cmp(ptr @.str2009, ptr %t444, ptr %t445) store ptr %t446, ptr %t447 %t448 = load ptr, ptr %t397 %t449 = load ptr, ptr %t421 - %t450 = call ptr @fn_rect_cmp(ptr @.str2007, ptr %t448, ptr %t449) + %t450 = call ptr @fn_rect_cmp(ptr @.str2010, ptr %t448, ptr %t449) store ptr %t450, ptr %t451 %t452 = load ptr, ptr %t439 - %t453 = call ptr @lp_str_concat(ptr @.str2008, ptr %t452) - %t454 = call ptr @lp_str_concat(ptr %t453, ptr @.str2009) + %t453 = call ptr @lp_str_concat(ptr @.str2011, ptr %t452) + %t454 = call ptr @lp_str_concat(ptr %t453, ptr @.str2012) %t455 = load ptr, ptr %t443 %t456 = call ptr @lp_str_concat(ptr %t454, ptr %t455) %t457 = call ptr @fn_emit_bind(ptr %t456) store ptr %t457, ptr %t458 %t459 = load ptr, ptr %t447 - %t460 = call ptr @lp_str_concat(ptr @.str2010, ptr %t459) - %t461 = call ptr @lp_str_concat(ptr %t460, ptr @.str2011) + %t460 = call ptr @lp_str_concat(ptr @.str2013, ptr %t459) + %t461 = call ptr @lp_str_concat(ptr %t460, ptr @.str2014) %t462 = load ptr, ptr %t451 %t463 = call ptr @lp_str_concat(ptr %t461, ptr %t462) %t464 = call ptr @fn_emit_bind(ptr %t463) store ptr %t464, ptr %t465 %t466 = load ptr, ptr %t458 - %t467 = call ptr @lp_str_concat(ptr @.str2012, ptr %t466) - %t468 = call ptr @lp_str_concat(ptr %t467, ptr @.str2013) + %t467 = call ptr @lp_str_concat(ptr @.str2015, ptr %t466) + %t468 = call ptr @lp_str_concat(ptr %t467, ptr @.str2016) %t469 = load ptr, ptr %t465 %t470 = call ptr @lp_str_concat(ptr %t468, ptr %t469) %t471 = call ptr @fn_emit_bind(ptr %t470) - %t472 = call ptr @fn_val(ptr %t471, ptr @.str2014) + %t472 = call ptr @fn_val(ptr %t471, ptr @.str2017) store ptr %t472, ptr %retval br label %ret ret: @@ -41060,14 +41113,14 @@ entry: %t108 = alloca i32 store ptr %arg_meth, ptr %t0 %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str2015) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str2018) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str2016) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str2019) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -41080,7 +41133,7 @@ scend1: br i1 %t12, label %scend3, label %sc2 sc2: %t14 = load ptr, ptr %t0 - %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str2017) + %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str2020) %t16 = icmp ne i32 %t15, 0 %t17 = zext i1 %t16 to i32 store i32 %t17, ptr %t1 @@ -41094,14 +41147,14 @@ then4: br label %ret ifend6: %t23 = load ptr, ptr %t0 - %t24 = call i32 @lp_str_eq(ptr %t23, ptr @.str2018) + %t24 = call i32 @lp_str_eq(ptr %t23, ptr @.str2021) %t25 = icmp ne i32 %t24, 0 %t26 = zext i1 %t25 to i32 store i32 %t26, ptr %t22 br i1 %t25, label %scend8, label %sc7 sc7: %t27 = load ptr, ptr %t0 - %t28 = call i32 @lp_str_eq(ptr %t27, ptr @.str2019) + %t28 = call i32 @lp_str_eq(ptr %t27, ptr @.str2022) %t29 = icmp ne i32 %t28, 0 %t30 = zext i1 %t29 to i32 store i32 %t30, ptr %t22 @@ -41114,7 +41167,7 @@ scend8: br i1 %t32, label %scend10, label %sc9 sc9: %t34 = load ptr, ptr %t0 - %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str2020) + %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str2023) %t36 = icmp ne i32 %t35, 0 %t37 = zext i1 %t36 to i32 store i32 %t37, ptr %t21 @@ -41127,7 +41180,7 @@ scend10: br i1 %t39, label %scend12, label %sc11 sc11: %t41 = load ptr, ptr %t0 - %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str2021) + %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str2024) %t43 = icmp ne i32 %t42, 0 %t44 = zext i1 %t43 to i32 store i32 %t44, ptr %t20 @@ -41141,14 +41194,14 @@ then13: br label %ret ifend15: %t48 = load ptr, ptr %t0 - %t49 = call i32 @lp_str_eq(ptr %t48, ptr @.str2022) + %t49 = call i32 @lp_str_eq(ptr %t48, ptr @.str2025) %t50 = icmp ne i32 %t49, 0 %t51 = zext i1 %t50 to i32 store i32 %t51, ptr %t47 br i1 %t50, label %scend17, label %sc16 sc16: %t52 = load ptr, ptr %t0 - %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str2023) + %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str2026) %t54 = icmp ne i32 %t53, 0 %t55 = zext i1 %t54 to i32 store i32 %t55, ptr %t47 @@ -41162,14 +41215,14 @@ then18: br label %ret ifend20: %t59 = load ptr, ptr %t0 - %t60 = call i32 @lp_str_eq(ptr %t59, ptr @.str2024) + %t60 = call i32 @lp_str_eq(ptr %t59, ptr @.str2027) %t61 = icmp ne i32 %t60, 0 %t62 = zext i1 %t61 to i32 store i32 %t62, ptr %t58 br i1 %t61, label %scend22, label %sc21 sc21: %t63 = load ptr, ptr %t0 - %t64 = call i32 @lp_str_eq(ptr %t63, ptr @.str2025) + %t64 = call i32 @lp_str_eq(ptr %t63, ptr @.str2028) %t65 = icmp ne i32 %t64, 0 %t66 = zext i1 %t65 to i32 store i32 %t66, ptr %t58 @@ -41183,14 +41236,14 @@ then23: br label %ret ifend25: %t72 = load ptr, ptr %t0 - %t73 = call i32 @lp_str_eq(ptr %t72, ptr @.str2026) + %t73 = call i32 @lp_str_eq(ptr %t72, ptr @.str2029) %t74 = icmp ne i32 %t73, 0 %t75 = zext i1 %t74 to i32 store i32 %t75, ptr %t71 br i1 %t74, label %scend27, label %sc26 sc26: %t76 = load ptr, ptr %t0 - %t77 = call i32 @lp_str_eq(ptr %t76, ptr @.str2027) + %t77 = call i32 @lp_str_eq(ptr %t76, ptr @.str2030) %t78 = icmp ne i32 %t77, 0 %t79 = zext i1 %t78 to i32 store i32 %t79, ptr %t71 @@ -41203,7 +41256,7 @@ scend27: br i1 %t81, label %scend29, label %sc28 sc28: %t83 = load ptr, ptr %t0 - %t84 = call i32 @lp_str_eq(ptr %t83, ptr @.str2028) + %t84 = call i32 @lp_str_eq(ptr %t83, ptr @.str2031) %t85 = icmp ne i32 %t84, 0 %t86 = zext i1 %t85 to i32 store i32 %t86, ptr %t70 @@ -41216,7 +41269,7 @@ scend29: br i1 %t88, label %scend31, label %sc30 sc30: %t90 = load ptr, ptr %t0 - %t91 = call i32 @lp_str_eq(ptr %t90, ptr @.str2029) + %t91 = call i32 @lp_str_eq(ptr %t90, ptr @.str2032) %t92 = icmp ne i32 %t91, 0 %t93 = zext i1 %t92 to i32 store i32 %t93, ptr %t69 @@ -41230,14 +41283,14 @@ then32: br label %ret ifend34: %t97 = load ptr, ptr %t0 - %t98 = call i32 @lp_str_eq(ptr %t97, ptr @.str2030) + %t98 = call i32 @lp_str_eq(ptr %t97, ptr @.str2033) %t99 = icmp ne i32 %t98, 0 %t100 = zext i1 %t99 to i32 store i32 %t100, ptr %t96 br i1 %t99, label %scend36, label %sc35 sc35: %t101 = load ptr, ptr %t0 - %t102 = call i32 @lp_str_eq(ptr %t101, ptr @.str2031) + %t102 = call i32 @lp_str_eq(ptr %t101, ptr @.str2034) %t103 = icmp ne i32 %t102, 0 %t104 = zext i1 %t103 to i32 store i32 %t104, ptr %t96 @@ -41251,14 +41304,14 @@ then37: br label %ret ifend39: %t109 = load ptr, ptr %t0 - %t110 = call i32 @lp_str_eq(ptr %t109, ptr @.str2032) + %t110 = call i32 @lp_str_eq(ptr %t109, ptr @.str2035) %t111 = icmp ne i32 %t110, 0 %t112 = zext i1 %t111 to i32 store i32 %t112, ptr %t108 br i1 %t111, label %scend41, label %sc40 sc40: %t113 = load ptr, ptr %t0 - %t114 = call i32 @lp_str_eq(ptr %t113, ptr @.str2033) + %t114 = call i32 @lp_str_eq(ptr %t113, ptr @.str2036) %t115 = icmp ne i32 %t114, 0 %t116 = zext i1 %t115 to i32 store i32 %t116, ptr %t108 @@ -41271,7 +41324,7 @@ scend41: br i1 %t118, label %scend43, label %sc42 sc42: %t120 = load ptr, ptr %t0 - %t121 = call i32 @lp_str_eq(ptr %t120, ptr @.str2034) + %t121 = call i32 @lp_str_eq(ptr %t120, ptr @.str2037) %t122 = icmp ne i32 %t121, 0 %t123 = zext i1 %t122 to i32 store i32 %t123, ptr %t107 @@ -41342,7 +41395,7 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str2035) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str2038) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -41359,15 +41412,15 @@ then0: %t14 = load ptr, ptr %t13 %t15 = getelementptr inbounds %Cmp_Val, ptr %t14, i32 0, i32 0 %t16 = load ptr, ptr %t15 - %t17 = call ptr @lp_str_concat(ptr @.str2036, ptr %t16) - %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str2037) + %t17 = call ptr @lp_str_concat(ptr @.str2039, ptr %t16) + %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str2040) %t19 = call ptr @fn_emit_bind(ptr %t18) - %t20 = call ptr @fn_val(ptr %t19, ptr @.str2038) + %t20 = call ptr @fn_val(ptr %t19, ptr @.str2041) store ptr %t20, ptr %retval br label %ret ifend2: %t21 = load ptr, ptr %t0 - %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str2039) + %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str2042) %t23 = icmp ne i32 %t22, 0 br i1 %t23, label %then3, label %ifend5 then3: @@ -41402,25 +41455,25 @@ then3: %t51 = load ptr, ptr %t32 %t52 = getelementptr inbounds %Cmp_Val, ptr %t51, i32 0, i32 0 %t53 = load ptr, ptr %t52 - %t54 = call ptr @lp_str_concat(ptr @.str2040, ptr %t53) - %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str2041) + %t54 = call ptr @lp_str_concat(ptr @.str2043, ptr %t53) + %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str2044) %t56 = load ptr, ptr %t41 %t57 = getelementptr inbounds %Cmp_Val, ptr %t56, i32 0, i32 0 %t58 = load ptr, ptr %t57 %t59 = call ptr @lp_str_concat(ptr %t55, ptr %t58) - %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str2042) + %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str2045) %t61 = load ptr, ptr %t50 %t62 = getelementptr inbounds %Cmp_Val, ptr %t61, i32 0, i32 0 %t63 = load ptr, ptr %t62 %t64 = call ptr @lp_str_concat(ptr %t60, ptr %t63) - %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str2043) + %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str2046) %t66 = call ptr @fn_emit_bind(ptr %t65) - %t67 = call ptr @fn_val(ptr %t66, ptr @.str2044) + %t67 = call ptr @fn_val(ptr %t66, ptr @.str2047) store ptr %t67, ptr %retval br label %ret ifend5: %t68 = load ptr, ptr %t0 - %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str2045) + %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str2048) %t70 = icmp ne i32 %t69, 0 br i1 %t70, label %then6, label %ifend8 then6: @@ -41446,20 +41499,20 @@ then6: %t89 = load ptr, ptr %t79 %t90 = getelementptr inbounds %Cmp_Val, ptr %t89, i32 0, i32 0 %t91 = load ptr, ptr %t90 - %t92 = call ptr @lp_str_concat(ptr @.str2046, ptr %t91) - %t93 = call ptr @lp_str_concat(ptr %t92, ptr @.str2047) + %t92 = call ptr @lp_str_concat(ptr @.str2049, ptr %t91) + %t93 = call ptr @lp_str_concat(ptr %t92, ptr @.str2050) %t94 = load ptr, ptr %t88 %t95 = getelementptr inbounds %Cmp_Val, ptr %t94, i32 0, i32 0 %t96 = load ptr, ptr %t95 %t97 = call ptr @lp_str_concat(ptr %t93, ptr %t96) - %t98 = call ptr @lp_str_concat(ptr %t97, ptr @.str2048) + %t98 = call ptr @lp_str_concat(ptr %t97, ptr @.str2051) %t99 = call ptr @fn_emit_bind(ptr %t98) - %t100 = call ptr @fn_val(ptr %t99, ptr @.str2049) + %t100 = call ptr @fn_val(ptr %t99, ptr @.str2052) store ptr %t100, ptr %retval br label %ret ifend8: %t101 = load ptr, ptr %t0 - %t102 = call i32 @lp_str_eq(ptr %t101, ptr @.str2050) + %t102 = call i32 @lp_str_eq(ptr %t101, ptr @.str2053) %t103 = icmp ne i32 %t102, 0 br i1 %t103, label %then9, label %ifend11 then9: @@ -41485,15 +41538,15 @@ then9: %t122 = load ptr, ptr %t112 %t123 = getelementptr inbounds %Cmp_Val, ptr %t122, i32 0, i32 0 %t124 = load ptr, ptr %t123 - %t125 = call ptr @lp_str_concat(ptr @.str2051, ptr %t124) - %t126 = call ptr @lp_str_concat(ptr %t125, ptr @.str2052) + %t125 = call ptr @lp_str_concat(ptr @.str2054, ptr %t124) + %t126 = call ptr @lp_str_concat(ptr %t125, ptr @.str2055) %t127 = load ptr, ptr %t121 %t128 = getelementptr inbounds %Cmp_Val, ptr %t127, i32 0, i32 0 %t129 = load ptr, ptr %t128 %t130 = call ptr @lp_str_concat(ptr %t126, ptr %t129) - %t131 = call ptr @lp_str_concat(ptr %t130, ptr @.str2053) + %t131 = call ptr @lp_str_concat(ptr %t130, ptr @.str2056) %t132 = call ptr @fn_emit_bind(ptr %t131) - %t133 = call ptr @fn_val(ptr %t132, ptr @.str2054) + %t133 = call ptr @fn_val(ptr %t132, ptr @.str2057) store ptr %t133, ptr %retval br label %ret ifend11: @@ -41507,27 +41560,27 @@ ifend11: %t141 = call ptr @fn_emit_expr(ptr %t140) store ptr %t141, ptr %t142 %t143 = load ptr, ptr %t0 - %t144 = call i32 @lp_str_eq(ptr %t143, ptr @.str2055) + %t144 = call i32 @lp_str_eq(ptr %t143, ptr @.str2058) %t145 = icmp ne i32 %t144, 0 br i1 %t145, label %then12, label %ifend14 then12: %t146 = load ptr, ptr %t142 %t147 = getelementptr inbounds %Cmp_Val, ptr %t146, i32 0, i32 0 %t148 = load ptr, ptr %t147 - %t149 = call ptr @lp_str_concat(ptr @.str2056, ptr %t148) - %t150 = call ptr @lp_str_concat(ptr %t149, ptr @.str2057) + %t149 = call ptr @lp_str_concat(ptr @.str2059, ptr %t148) + %t150 = call ptr @lp_str_concat(ptr %t149, ptr @.str2060) %t151 = call ptr @fn_emit_bind(ptr %t150) store ptr %t151, ptr %t152 %t153 = load ptr, ptr %t152 - %t154 = call ptr @lp_str_concat(ptr @.str2058, ptr %t153) - %t155 = call ptr @lp_str_concat(ptr %t154, ptr @.str2059) + %t154 = call ptr @lp_str_concat(ptr @.str2061, ptr %t153) + %t155 = call ptr @lp_str_concat(ptr %t154, ptr @.str2062) %t156 = call ptr @fn_emit_bind(ptr %t155) - %t157 = call ptr @fn_val(ptr %t156, ptr @.str2060) + %t157 = call ptr @fn_val(ptr %t156, ptr @.str2063) store ptr %t157, ptr %retval br label %ret ifend14: %t158 = load ptr, ptr %t0 - %t159 = call i32 @lp_str_eq(ptr %t158, ptr @.str2061) + %t159 = call i32 @lp_str_eq(ptr %t158, ptr @.str2064) %t160 = icmp ne i32 %t159, 0 br i1 %t160, label %then15, label %ifend17 then15: @@ -41543,8 +41596,8 @@ then15: %t170 = load ptr, ptr %t142 %t171 = getelementptr inbounds %Cmp_Val, ptr %t170, i32 0, i32 0 %t172 = load ptr, ptr %t171 - %t173 = call ptr @lp_str_concat(ptr @.str2062, ptr %t172) - %t174 = call ptr @lp_str_concat(ptr %t173, ptr @.str2063) + %t173 = call ptr @lp_str_concat(ptr @.str2065, ptr %t172) + %t174 = call ptr @lp_str_concat(ptr %t173, ptr @.str2066) %t175 = load ptr, ptr %t169 %t176 = getelementptr inbounds %Cmp_Val, ptr %t175, i32 0, i32 0 %t177 = load ptr, ptr %t176 @@ -41552,34 +41605,34 @@ then15: %t179 = call ptr @fn_emit_bind(ptr %t178) store ptr %t179, ptr %t180 %t181 = load ptr, ptr %t180 - %t182 = call ptr @lp_str_concat(ptr @.str2064, ptr %t181) + %t182 = call ptr @lp_str_concat(ptr @.str2067, ptr %t181) %t183 = call ptr @fn_emit_bind(ptr %t182) store ptr %t183, ptr %t184 %t185 = load ptr, ptr %t184 - %t186 = call ptr @lp_str_concat(ptr @.str2065, ptr %t185) - %t187 = call ptr @lp_str_concat(ptr %t186, ptr @.str2066) + %t186 = call ptr @lp_str_concat(ptr @.str2068, ptr %t185) + %t187 = call ptr @lp_str_concat(ptr %t186, ptr @.str2069) %t188 = call ptr @fn_emit_bind(ptr %t187) - %t189 = call ptr @fn_val(ptr %t188, ptr @.str2067) + %t189 = call ptr @fn_val(ptr %t188, ptr @.str2070) store ptr %t189, ptr %retval br label %ret ifend17: %t190 = load ptr, ptr %t0 - %t191 = call i32 @lp_str_eq(ptr %t190, ptr @.str2068) + %t191 = call i32 @lp_str_eq(ptr %t190, ptr @.str2071) %t192 = icmp ne i32 %t191, 0 br i1 %t192, label %then18, label %ifend20 then18: %t193 = load ptr, ptr %t142 %t194 = getelementptr inbounds %Cmp_Val, ptr %t193, i32 0, i32 0 %t195 = load ptr, ptr %t194 - %t196 = call ptr @lp_str_concat(ptr @.str2069, ptr %t195) - %t197 = call ptr @lp_str_concat(ptr %t196, ptr @.str2070) + %t196 = call ptr @lp_str_concat(ptr @.str2072, ptr %t195) + %t197 = call ptr @lp_str_concat(ptr %t196, ptr @.str2073) %t198 = call ptr @fn_emit_bind(ptr %t197) - %t199 = call ptr @fn_val(ptr %t198, ptr @.str2071) + %t199 = call ptr @fn_val(ptr %t198, ptr @.str2074) store ptr %t199, ptr %retval br label %ret ifend20: %t200 = load ptr, ptr %t0 - %t201 = call i32 @lp_str_eq(ptr %t200, ptr @.str2072) + %t201 = call i32 @lp_str_eq(ptr %t200, ptr @.str2075) %t202 = icmp ne i32 %t201, 0 br i1 %t202, label %then21, label %ifend23 then21: @@ -41587,15 +41640,15 @@ then21: %t203 = load ptr, ptr %t142 %t204 = getelementptr inbounds %Cmp_Val, ptr %t203, i32 0, i32 0 %t205 = load ptr, ptr %t204 - %t206 = call ptr @lp_str_concat(ptr @.str2073, ptr %t205) - %t207 = call ptr @lp_str_concat(ptr %t206, ptr @.str2074) + %t206 = call ptr @lp_str_concat(ptr @.str2076, ptr %t205) + %t207 = call ptr @lp_str_concat(ptr %t206, ptr @.str2077) %t208 = call ptr @fn_emit_bind(ptr %t207) - %t209 = call ptr @fn_val(ptr %t208, ptr @.str2075) + %t209 = call ptr @fn_val(ptr %t208, ptr @.str2078) store ptr %t209, ptr %retval br label %ret ifend23: %t210 = load ptr, ptr %t0 - %t211 = call i32 @lp_str_eq(ptr %t210, ptr @.str2076) + %t211 = call i32 @lp_str_eq(ptr %t210, ptr @.str2079) %t212 = icmp ne i32 %t211, 0 br i1 %t212, label %then24, label %ifend26 then24: @@ -41603,15 +41656,15 @@ then24: %t213 = load ptr, ptr %t142 %t214 = getelementptr inbounds %Cmp_Val, ptr %t213, i32 0, i32 0 %t215 = load ptr, ptr %t214 - %t216 = call ptr @lp_str_concat(ptr @.str2077, ptr %t215) - %t217 = call ptr @lp_str_concat(ptr %t216, ptr @.str2078) + %t216 = call ptr @lp_str_concat(ptr @.str2080, ptr %t215) + %t217 = call ptr @lp_str_concat(ptr %t216, ptr @.str2081) %t218 = call ptr @fn_emit_bind(ptr %t217) - %t219 = call ptr @fn_val(ptr %t218, ptr @.str2079) + %t219 = call ptr @fn_val(ptr %t218, ptr @.str2082) store ptr %t219, ptr %retval br label %ret ifend26: %t220 = load ptr, ptr %t0 - %t221 = call i32 @lp_str_eq(ptr %t220, ptr @.str2080) + %t221 = call i32 @lp_str_eq(ptr %t220, ptr @.str2083) %t222 = icmp ne i32 %t221, 0 br i1 %t222, label %then27, label %ifend29 then27: @@ -41619,15 +41672,15 @@ then27: %t223 = load ptr, ptr %t142 %t224 = getelementptr inbounds %Cmp_Val, ptr %t223, i32 0, i32 0 %t225 = load ptr, ptr %t224 - %t226 = call ptr @lp_str_concat(ptr @.str2081, ptr %t225) - %t227 = call ptr @lp_str_concat(ptr %t226, ptr @.str2082) + %t226 = call ptr @lp_str_concat(ptr @.str2084, ptr %t225) + %t227 = call ptr @lp_str_concat(ptr %t226, ptr @.str2085) %t228 = call ptr @fn_emit_bind(ptr %t227) - %t229 = call ptr @fn_val(ptr %t228, ptr @.str2083) + %t229 = call ptr @fn_val(ptr %t228, ptr @.str2086) store ptr %t229, ptr %retval br label %ret ifend29: %t230 = load ptr, ptr %t0 - %t231 = call i32 @lp_str_eq(ptr %t230, ptr @.str2084) + %t231 = call i32 @lp_str_eq(ptr %t230, ptr @.str2087) %t232 = icmp ne i32 %t231, 0 br i1 %t232, label %then30, label %ifend32 then30: @@ -41644,20 +41697,20 @@ then30: %t242 = load ptr, ptr %t142 %t243 = getelementptr inbounds %Cmp_Val, ptr %t242, i32 0, i32 0 %t244 = load ptr, ptr %t243 - %t245 = call ptr @lp_str_concat(ptr @.str2085, ptr %t244) - %t246 = call ptr @lp_str_concat(ptr %t245, ptr @.str2086) + %t245 = call ptr @lp_str_concat(ptr @.str2088, ptr %t244) + %t246 = call ptr @lp_str_concat(ptr %t245, ptr @.str2089) %t247 = load ptr, ptr %t241 %t248 = getelementptr inbounds %Cmp_Val, ptr %t247, i32 0, i32 0 %t249 = load ptr, ptr %t248 %t250 = call ptr @lp_str_concat(ptr %t246, ptr %t249) - %t251 = call ptr @lp_str_concat(ptr %t250, ptr @.str2087) + %t251 = call ptr @lp_str_concat(ptr %t250, ptr @.str2090) %t252 = call ptr @fn_emit_bind(ptr %t251) - %t253 = call ptr @fn_val(ptr %t252, ptr @.str2088) + %t253 = call ptr @fn_val(ptr %t252, ptr @.str2091) store ptr %t253, ptr %retval br label %ret ifend32: %t254 = load ptr, ptr %t0 - %t255 = call i32 @lp_str_eq(ptr %t254, ptr @.str2089) + %t255 = call i32 @lp_str_eq(ptr %t254, ptr @.str2092) %t256 = icmp ne i32 %t255, 0 br i1 %t256, label %then33, label %ifend35 then33: @@ -41674,20 +41727,20 @@ then33: %t266 = load ptr, ptr %t142 %t267 = getelementptr inbounds %Cmp_Val, ptr %t266, i32 0, i32 0 %t268 = load ptr, ptr %t267 - %t269 = call ptr @lp_str_concat(ptr @.str2090, ptr %t268) - %t270 = call ptr @lp_str_concat(ptr %t269, ptr @.str2091) + %t269 = call ptr @lp_str_concat(ptr @.str2093, ptr %t268) + %t270 = call ptr @lp_str_concat(ptr %t269, ptr @.str2094) %t271 = load ptr, ptr %t265 %t272 = getelementptr inbounds %Cmp_Val, ptr %t271, i32 0, i32 0 %t273 = load ptr, ptr %t272 %t274 = call ptr @lp_str_concat(ptr %t270, ptr %t273) - %t275 = call ptr @lp_str_concat(ptr %t274, ptr @.str2092) + %t275 = call ptr @lp_str_concat(ptr %t274, ptr @.str2095) %t276 = call ptr @fn_emit_bind(ptr %t275) - %t277 = call ptr @fn_val(ptr %t276, ptr @.str2093) + %t277 = call ptr @fn_val(ptr %t276, ptr @.str2096) store ptr %t277, ptr %retval br label %ret ifend35: %t278 = load ptr, ptr %t0 - %t279 = call i32 @lp_str_eq(ptr %t278, ptr @.str2094) + %t279 = call i32 @lp_str_eq(ptr %t278, ptr @.str2097) %t280 = icmp ne i32 %t279, 0 br i1 %t280, label %then36, label %ifend38 then36: @@ -41704,20 +41757,20 @@ then36: %t290 = load ptr, ptr %t142 %t291 = getelementptr inbounds %Cmp_Val, ptr %t290, i32 0, i32 0 %t292 = load ptr, ptr %t291 - %t293 = call ptr @lp_str_concat(ptr @.str2095, ptr %t292) - %t294 = call ptr @lp_str_concat(ptr %t293, ptr @.str2096) + %t293 = call ptr @lp_str_concat(ptr @.str2098, ptr %t292) + %t294 = call ptr @lp_str_concat(ptr %t293, ptr @.str2099) %t295 = load ptr, ptr %t289 %t296 = getelementptr inbounds %Cmp_Val, ptr %t295, i32 0, i32 0 %t297 = load ptr, ptr %t296 %t298 = call ptr @lp_str_concat(ptr %t294, ptr %t297) - %t299 = call ptr @lp_str_concat(ptr %t298, ptr @.str2097) + %t299 = call ptr @lp_str_concat(ptr %t298, ptr @.str2100) %t300 = call ptr @fn_emit_bind(ptr %t299) - %t301 = call ptr @fn_val(ptr %t300, ptr @.str2098) + %t301 = call ptr @fn_val(ptr %t300, ptr @.str2101) store ptr %t301, ptr %retval br label %ret ifend38: %t302 = load ptr, ptr %t0 - %t303 = call i32 @lp_str_eq(ptr %t302, ptr @.str2099) + %t303 = call i32 @lp_str_eq(ptr %t302, ptr @.str2102) %t304 = icmp ne i32 %t303, 0 br i1 %t304, label %then39, label %ifend41 then39: @@ -41743,25 +41796,25 @@ then39: %t323 = load ptr, ptr %t142 %t324 = getelementptr inbounds %Cmp_Val, ptr %t323, i32 0, i32 0 %t325 = load ptr, ptr %t324 - %t326 = call ptr @lp_str_concat(ptr @.str2100, ptr %t325) - %t327 = call ptr @lp_str_concat(ptr %t326, ptr @.str2101) + %t326 = call ptr @lp_str_concat(ptr @.str2103, ptr %t325) + %t327 = call ptr @lp_str_concat(ptr %t326, ptr @.str2104) %t328 = load ptr, ptr %t313 %t329 = getelementptr inbounds %Cmp_Val, ptr %t328, i32 0, i32 0 %t330 = load ptr, ptr %t329 %t331 = call ptr @lp_str_concat(ptr %t327, ptr %t330) - %t332 = call ptr @lp_str_concat(ptr %t331, ptr @.str2102) + %t332 = call ptr @lp_str_concat(ptr %t331, ptr @.str2105) %t333 = load ptr, ptr %t322 %t334 = getelementptr inbounds %Cmp_Val, ptr %t333, i32 0, i32 0 %t335 = load ptr, ptr %t334 %t336 = call ptr @lp_str_concat(ptr %t332, ptr %t335) - %t337 = call ptr @lp_str_concat(ptr %t336, ptr @.str2103) + %t337 = call ptr @lp_str_concat(ptr %t336, ptr @.str2106) %t338 = call ptr @fn_emit_bind(ptr %t337) - %t339 = call ptr @fn_val(ptr %t338, ptr @.str2104) + %t339 = call ptr @fn_val(ptr %t338, ptr @.str2107) store ptr %t339, ptr %retval br label %ret ifend41: %t340 = load ptr, ptr %t0 - %t341 = call i32 @lp_str_eq(ptr %t340, ptr @.str2105) + %t341 = call i32 @lp_str_eq(ptr %t340, ptr @.str2108) %t342 = icmp ne i32 %t341, 0 br i1 %t342, label %then42, label %ifend44 then42: @@ -41778,20 +41831,20 @@ then42: %t352 = load ptr, ptr %t142 %t353 = getelementptr inbounds %Cmp_Val, ptr %t352, i32 0, i32 0 %t354 = load ptr, ptr %t353 - %t355 = call ptr @lp_str_concat(ptr @.str2106, ptr %t354) - %t356 = call ptr @lp_str_concat(ptr %t355, ptr @.str2107) + %t355 = call ptr @lp_str_concat(ptr @.str2109, ptr %t354) + %t356 = call ptr @lp_str_concat(ptr %t355, ptr @.str2110) %t357 = load ptr, ptr %t351 %t358 = getelementptr inbounds %Cmp_Val, ptr %t357, i32 0, i32 0 %t359 = load ptr, ptr %t358 %t360 = call ptr @lp_str_concat(ptr %t356, ptr %t359) - %t361 = call ptr @lp_str_concat(ptr %t360, ptr @.str2108) + %t361 = call ptr @lp_str_concat(ptr %t360, ptr @.str2111) %t362 = call ptr @fn_emit_bind(ptr %t361) - %t363 = call ptr @fn_val(ptr %t362, ptr @.str2109) + %t363 = call ptr @fn_val(ptr %t362, ptr @.str2112) store ptr %t363, ptr %retval br label %ret ifend44: %t364 = load ptr, ptr %t0 - %t365 = call i32 @lp_str_eq(ptr %t364, ptr @.str2110) + %t365 = call i32 @lp_str_eq(ptr %t364, ptr @.str2113) %t366 = icmp ne i32 %t365, 0 br i1 %t366, label %then45, label %ifend47 then45: @@ -41808,27 +41861,27 @@ then45: %t376 = load ptr, ptr %t142 %t377 = getelementptr inbounds %Cmp_Val, ptr %t376, i32 0, i32 0 %t378 = load ptr, ptr %t377 - %t379 = call ptr @lp_str_concat(ptr @.str2111, ptr %t378) - %t380 = call ptr @lp_str_concat(ptr %t379, ptr @.str2112) + %t379 = call ptr @lp_str_concat(ptr @.str2114, ptr %t378) + %t380 = call ptr @lp_str_concat(ptr %t379, ptr @.str2115) %t381 = load ptr, ptr %t375 %t382 = getelementptr inbounds %Cmp_Val, ptr %t381, i32 0, i32 0 %t383 = load ptr, ptr %t382 %t384 = call ptr @lp_str_concat(ptr %t380, ptr %t383) - %t385 = call ptr @lp_str_concat(ptr %t384, ptr @.str2113) + %t385 = call ptr @lp_str_concat(ptr %t384, ptr @.str2116) %t386 = call ptr @fn_emit_bind(ptr %t385) - %t387 = call ptr @fn_val(ptr %t386, ptr @.str2114) + %t387 = call ptr @fn_val(ptr %t386, ptr @.str2117) store ptr %t387, ptr %retval br label %ret ifend47: %t389 = load ptr, ptr %t0 - %t390 = call i32 @lp_str_eq(ptr %t389, ptr @.str2115) + %t390 = call i32 @lp_str_eq(ptr %t389, ptr @.str2118) %t391 = icmp ne i32 %t390, 0 %t392 = zext i1 %t391 to i32 store i32 %t392, ptr %t388 br i1 %t391, label %scend49, label %sc48 sc48: %t393 = load ptr, ptr %t0 - %t394 = call i32 @lp_str_eq(ptr %t393, ptr @.str2116) + %t394 = call i32 @lp_str_eq(ptr %t393, ptr @.str2119) %t395 = icmp ne i32 %t394, 0 %t396 = zext i1 %t395 to i32 store i32 %t396, ptr %t388 @@ -41850,69 +41903,69 @@ then50: %t408 = load ptr, ptr %t142 %t409 = getelementptr inbounds %Cmp_Val, ptr %t408, i32 0, i32 0 %t410 = load ptr, ptr %t409 - %t411 = call ptr @lp_str_concat(ptr @.str2117, ptr %t410) - %t412 = call ptr @lp_str_concat(ptr %t411, ptr @.str2118) + %t411 = call ptr @lp_str_concat(ptr @.str2120, ptr %t410) + %t412 = call ptr @lp_str_concat(ptr %t411, ptr @.str2121) %t413 = load ptr, ptr %t407 %t414 = getelementptr inbounds %Cmp_Val, ptr %t413, i32 0, i32 0 %t415 = load ptr, ptr %t414 %t416 = call ptr @lp_str_concat(ptr %t412, ptr %t415) - %t417 = call ptr @lp_str_concat(ptr %t416, ptr @.str2119) + %t417 = call ptr @lp_str_concat(ptr %t416, ptr @.str2122) %t418 = call ptr @fn_emit_bind(ptr %t417) store ptr %t418, ptr %t419 %t420 = load ptr, ptr %t0 - %t421 = call i32 @lp_str_eq(ptr %t420, ptr @.str2120) + %t421 = call i32 @lp_str_eq(ptr %t420, ptr @.str2123) %t422 = icmp ne i32 %t421, 0 br i1 %t422, label %then53, label %ifend55 then53: %t423 = load ptr, ptr %t419 - %t424 = call ptr @lp_str_concat(ptr @.str2121, ptr %t423) - %t425 = call ptr @lp_str_concat(ptr %t424, ptr @.str2122) + %t424 = call ptr @lp_str_concat(ptr @.str2124, ptr %t423) + %t425 = call ptr @lp_str_concat(ptr %t424, ptr @.str2125) %t426 = call ptr @fn_emit_bind(ptr %t425) store ptr %t426, ptr %t427 %t428 = load ptr, ptr %t427 - %t429 = call ptr @lp_str_concat(ptr @.str2123, ptr %t428) - %t430 = call ptr @lp_str_concat(ptr %t429, ptr @.str2124) + %t429 = call ptr @lp_str_concat(ptr @.str2126, ptr %t428) + %t430 = call ptr @lp_str_concat(ptr %t429, ptr @.str2127) %t431 = call ptr @fn_emit_bind(ptr %t430) - %t432 = call ptr @fn_val(ptr %t431, ptr @.str2125) + %t432 = call ptr @fn_val(ptr %t431, ptr @.str2128) store ptr %t432, ptr %retval br label %ret ifend55: %t433 = load ptr, ptr %t419 - %t434 = call ptr @lp_str_concat(ptr @.str2126, ptr %t433) - %t435 = call ptr @lp_str_concat(ptr %t434, ptr @.str2127) + %t434 = call ptr @lp_str_concat(ptr @.str2129, ptr %t433) + %t435 = call ptr @lp_str_concat(ptr %t434, ptr @.str2130) %t436 = call ptr @fn_emit_bind(ptr %t435) store ptr %t436, ptr %t437 %t438 = load ptr, ptr %t419 - %t439 = call ptr @lp_str_concat(ptr @.str2128, ptr %t438) - %t440 = call ptr @lp_str_concat(ptr %t439, ptr @.str2129) + %t439 = call ptr @lp_str_concat(ptr @.str2131, ptr %t438) + %t440 = call ptr @lp_str_concat(ptr %t439, ptr @.str2132) %t441 = call ptr @fn_emit_bind(ptr %t440) store ptr %t441, ptr %t442 %t443 = load ptr, ptr %t142 %t444 = getelementptr inbounds %Cmp_Val, ptr %t443, i32 0, i32 0 %t445 = load ptr, ptr %t444 - %t446 = call ptr @lp_str_concat(ptr @.str2130, ptr %t445) - %t447 = call ptr @lp_str_concat(ptr %t446, ptr @.str2131) + %t446 = call ptr @lp_str_concat(ptr @.str2133, ptr %t445) + %t447 = call ptr @lp_str_concat(ptr %t446, ptr @.str2134) %t448 = call ptr @fn_emit_bind(ptr %t447) store ptr %t448, ptr %t449 %t450 = load ptr, ptr %t442 - %t451 = call ptr @lp_str_concat(ptr @.str2132, ptr %t450) - %t452 = call ptr @lp_str_concat(ptr %t451, ptr @.str2133) + %t451 = call ptr @lp_str_concat(ptr @.str2135, ptr %t450) + %t452 = call ptr @lp_str_concat(ptr %t451, ptr @.str2136) %t453 = load ptr, ptr %t449 %t454 = call ptr @lp_str_concat(ptr %t452, ptr %t453) %t455 = call ptr @fn_emit_bind(ptr %t454) store ptr %t455, ptr %t456 %t457 = load ptr, ptr %t456 - %t458 = call ptr @lp_str_concat(ptr @.str2134, ptr %t457) - %t459 = call ptr @lp_str_concat(ptr %t458, ptr @.str2135) + %t458 = call ptr @lp_str_concat(ptr @.str2137, ptr %t457) + %t459 = call ptr @lp_str_concat(ptr %t458, ptr @.str2138) %t460 = call ptr @fn_emit_bind(ptr %t459) store ptr %t460, ptr %t461 %t462 = load ptr, ptr %t437 - %t463 = call ptr @lp_str_concat(ptr @.str2136, ptr %t462) - %t464 = call ptr @lp_str_concat(ptr %t463, ptr @.str2137) + %t463 = call ptr @lp_str_concat(ptr @.str2139, ptr %t462) + %t464 = call ptr @lp_str_concat(ptr %t463, ptr @.str2140) %t465 = load ptr, ptr %t461 %t466 = call ptr @lp_str_concat(ptr %t464, ptr %t465) %t467 = call ptr @fn_emit_bind(ptr %t466) - %t468 = call ptr @fn_val(ptr %t467, ptr @.str2138) + %t468 = call ptr @fn_val(ptr %t467, ptr @.str2141) store ptr %t468, ptr %retval br label %ret ifend52: @@ -41928,129 +41981,129 @@ ifend52: %t478 = load ptr, ptr %t477 %t479 = getelementptr inbounds %Cmp_Val, ptr %t478, i32 0, i32 0 %t480 = load ptr, ptr %t479 - %t481 = call ptr @lp_str_concat(ptr @.str2139, ptr %t480) - %t482 = call ptr @lp_str_concat(ptr %t481, ptr @.str2140) + %t481 = call ptr @lp_str_concat(ptr @.str2142, ptr %t480) + %t482 = call ptr @lp_str_concat(ptr %t481, ptr @.str2143) %t483 = call ptr @fn_emit_bind(ptr %t482) store ptr %t483, ptr %t484 %t485 = load ptr, ptr %t0 - %t486 = call i32 @lp_str_eq(ptr %t485, ptr @.str2141) + %t486 = call i32 @lp_str_eq(ptr %t485, ptr @.str2144) %t487 = icmp ne i32 %t486, 0 br i1 %t487, label %then56, label %ifend58 then56: %t488 = load ptr, ptr %t142 %t489 = getelementptr inbounds %Cmp_Val, ptr %t488, i32 0, i32 0 %t490 = load ptr, ptr %t489 - %t491 = call ptr @lp_str_concat(ptr @.str2142, ptr %t490) - %t492 = call ptr @lp_str_concat(ptr %t491, ptr @.str2143) + %t491 = call ptr @lp_str_concat(ptr @.str2145, ptr %t490) + %t492 = call ptr @lp_str_concat(ptr %t491, ptr @.str2146) %t493 = load ptr, ptr %t477 %t494 = getelementptr inbounds %Cmp_Val, ptr %t493, i32 0, i32 0 %t495 = load ptr, ptr %t494 %t496 = call ptr @lp_str_concat(ptr %t492, ptr %t495) - %t497 = call ptr @lp_str_concat(ptr %t496, ptr @.str2144) + %t497 = call ptr @lp_str_concat(ptr %t496, ptr @.str2147) %t498 = load ptr, ptr %t484 %t499 = call ptr @lp_str_concat(ptr %t497, ptr %t498) - %t500 = call ptr @lp_str_concat(ptr %t499, ptr @.str2145) + %t500 = call ptr @lp_str_concat(ptr %t499, ptr @.str2148) %t501 = call ptr @fn_emit_bind(ptr %t500) store ptr %t501, ptr %t502 %t503 = load ptr, ptr %t502 - %t504 = call ptr @lp_str_concat(ptr @.str2146, ptr %t503) - %t505 = call ptr @lp_str_concat(ptr %t504, ptr @.str2147) + %t504 = call ptr @lp_str_concat(ptr @.str2149, ptr %t503) + %t505 = call ptr @lp_str_concat(ptr %t504, ptr @.str2150) %t506 = call ptr @fn_emit_bind(ptr %t505) store ptr %t506, ptr %t507 %t508 = load ptr, ptr %t507 - %t509 = call ptr @lp_str_concat(ptr @.str2148, ptr %t508) - %t510 = call ptr @lp_str_concat(ptr %t509, ptr @.str2149) + %t509 = call ptr @lp_str_concat(ptr @.str2151, ptr %t508) + %t510 = call ptr @lp_str_concat(ptr %t509, ptr @.str2152) %t511 = call ptr @fn_emit_bind(ptr %t510) - %t512 = call ptr @fn_val(ptr %t511, ptr @.str2150) + %t512 = call ptr @fn_val(ptr %t511, ptr @.str2153) store ptr %t512, ptr %retval br label %ret ifend58: %t513 = load ptr, ptr %t142 %t514 = getelementptr inbounds %Cmp_Val, ptr %t513, i32 0, i32 0 %t515 = load ptr, ptr %t514 - %t516 = call ptr @lp_str_concat(ptr @.str2151, ptr %t515) - %t517 = call ptr @lp_str_concat(ptr %t516, ptr @.str2152) + %t516 = call ptr @lp_str_concat(ptr @.str2154, ptr %t515) + %t517 = call ptr @lp_str_concat(ptr %t516, ptr @.str2155) %t518 = call ptr @fn_emit_bind(ptr %t517) store ptr %t518, ptr %t519 %t520 = load ptr, ptr %t519 - %t521 = call ptr @lp_str_concat(ptr @.str2153, ptr %t520) - %t522 = call ptr @lp_str_concat(ptr %t521, ptr @.str2154) + %t521 = call ptr @lp_str_concat(ptr @.str2156, ptr %t520) + %t522 = call ptr @lp_str_concat(ptr %t521, ptr @.str2157) %t523 = load ptr, ptr %t484 %t524 = call ptr @lp_str_concat(ptr %t522, ptr %t523) %t525 = call ptr @fn_emit_bind(ptr %t524) store ptr %t525, ptr %t526 - %t527 = call ptr @fn_emit_alloca(ptr @.str2155) + %t527 = call ptr @fn_emit_alloca(ptr @.str2158) store ptr %t527, ptr %t528 %t529 = load ptr, ptr %t528 - call void @fn_store_at(ptr @.str2156, ptr @.str2157, ptr %t529) + call void @fn_store_at(ptr @.str2159, ptr @.str2160, ptr %t529) %t530 = load ptr, ptr %t526 - %t531 = call ptr @lp_str_concat(ptr @.str2158, ptr %t530) - %t532 = call ptr @lp_str_concat(ptr %t531, ptr @.str2159) + %t531 = call ptr @lp_str_concat(ptr @.str2161, ptr %t530) + %t532 = call ptr @lp_str_concat(ptr %t531, ptr @.str2162) %t533 = call ptr @fn_emit_bind(ptr %t532) store ptr %t533, ptr %t534 - %t535 = call ptr @fn_lbl(ptr @.str2160) + %t535 = call ptr @fn_lbl(ptr @.str2163) store ptr %t535, ptr %t536 - %t537 = call ptr @fn_lbl(ptr @.str2161) + %t537 = call ptr @fn_lbl(ptr @.str2164) store ptr %t537, ptr %t538 - call void @fn_emit(ptr @.str2162) + call void @fn_emit(ptr @.str2165) %t539 = load ptr, ptr %t534 call void @fn_emit(ptr %t539) - call void @fn_emit(ptr @.str2163) + call void @fn_emit(ptr @.str2166) %t540 = load ptr, ptr %t538 call void @fn_emit(ptr %t540) - call void @fn_emit(ptr @.str2164) + call void @fn_emit(ptr @.str2167) %t541 = load ptr, ptr %t536 call void @fn_emit(ptr %t541) - call void @fn_emit(ptr @.str2165) + call void @fn_emit(ptr @.str2168) %t542 = load ptr, ptr %t536 call void @fn_emit(ptr %t542) - call void @fn_emit(ptr @.str2166) + call void @fn_emit(ptr @.str2169) %t543 = load ptr, ptr %t142 %t544 = getelementptr inbounds %Cmp_Val, ptr %t543, i32 0, i32 0 %t545 = load ptr, ptr %t544 - %t546 = call ptr @lp_str_concat(ptr @.str2167, ptr %t545) - %t547 = call ptr @lp_str_concat(ptr %t546, ptr @.str2168) + %t546 = call ptr @lp_str_concat(ptr @.str2170, ptr %t545) + %t547 = call ptr @lp_str_concat(ptr %t546, ptr @.str2171) %t548 = load ptr, ptr %t526 %t549 = call ptr @lp_str_concat(ptr %t547, ptr %t548) %t550 = call ptr @fn_emit_bind(ptr %t549) store ptr %t550, ptr %t551 %t552 = load ptr, ptr %t551 - %t553 = call ptr @lp_str_concat(ptr @.str2169, ptr %t552) - %t554 = call ptr @lp_str_concat(ptr %t553, ptr @.str2170) + %t553 = call ptr @lp_str_concat(ptr @.str2172, ptr %t552) + %t554 = call ptr @lp_str_concat(ptr %t553, ptr @.str2173) %t555 = load ptr, ptr %t477 %t556 = getelementptr inbounds %Cmp_Val, ptr %t555, i32 0, i32 0 %t557 = load ptr, ptr %t556 %t558 = call ptr @lp_str_concat(ptr %t554, ptr %t557) - %t559 = call ptr @lp_str_concat(ptr %t558, ptr @.str2171) + %t559 = call ptr @lp_str_concat(ptr %t558, ptr @.str2174) %t560 = load ptr, ptr %t484 %t561 = call ptr @lp_str_concat(ptr %t559, ptr %t560) - %t562 = call ptr @lp_str_concat(ptr %t561, ptr @.str2172) + %t562 = call ptr @lp_str_concat(ptr %t561, ptr @.str2175) %t563 = call ptr @fn_emit_bind(ptr %t562) store ptr %t563, ptr %t564 %t565 = load ptr, ptr %t564 - %t566 = call ptr @lp_str_concat(ptr @.str2173, ptr %t565) - %t567 = call ptr @lp_str_concat(ptr %t566, ptr @.str2174) + %t566 = call ptr @lp_str_concat(ptr @.str2176, ptr %t565) + %t567 = call ptr @lp_str_concat(ptr %t566, ptr @.str2177) %t568 = call ptr @fn_emit_bind(ptr %t567) store ptr %t568, ptr %t569 %t570 = load ptr, ptr %t569 - %t571 = call ptr @lp_str_concat(ptr @.str2175, ptr %t570) - %t572 = call ptr @lp_str_concat(ptr %t571, ptr @.str2176) + %t571 = call ptr @lp_str_concat(ptr @.str2178, ptr %t570) + %t572 = call ptr @lp_str_concat(ptr %t571, ptr @.str2179) %t573 = call ptr @fn_emit_bind(ptr %t572) store ptr %t573, ptr %t574 %t575 = load ptr, ptr %t574 %t576 = load ptr, ptr %t528 - call void @fn_store_at(ptr @.str2177, ptr %t575, ptr %t576) - call void @fn_emit(ptr @.str2178) + call void @fn_store_at(ptr @.str2180, ptr %t575, ptr %t576) + call void @fn_emit(ptr @.str2181) %t577 = load ptr, ptr %t538 call void @fn_emit(ptr %t577) - call void @fn_emit(ptr @.str2179) + call void @fn_emit(ptr @.str2182) %t578 = load ptr, ptr %t538 call void @fn_emit(ptr %t578) - call void @fn_emit(ptr @.str2180) + call void @fn_emit(ptr @.str2183) %t579 = load ptr, ptr %t528 - %t580 = call ptr @lp_str_concat(ptr @.str2181, ptr %t579) + %t580 = call ptr @lp_str_concat(ptr @.str2184, ptr %t579) %t581 = call ptr @fn_emit_bind(ptr %t580) - %t582 = call ptr @fn_val(ptr %t581, ptr @.str2182) + %t582 = call ptr @fn_val(ptr %t581, ptr @.str2185) store ptr %t582, ptr %retval br label %ret ret: @@ -42060,9 +42113,6 @@ ret: define void @fn_emit_text_prelude() { entry: - call void @fn_emith(ptr @.str2183) - call void @fn_emith(ptr @.str2184) - call void @fn_emith(ptr @.str2185) call void @fn_emith(ptr @.str2186) call void @fn_emith(ptr @.str2187) call void @fn_emith(ptr @.str2188) @@ -42258,6 +42308,9 @@ entry: call void @fn_emith(ptr @.str2378) call void @fn_emith(ptr @.str2379) call void @fn_emith(ptr @.str2380) + call void @fn_emith(ptr @.str2381) + call void @fn_emith(ptr @.str2382) + call void @fn_emith(ptr @.str2383) br label %ret ret: ret void @@ -42265,9 +42318,6 @@ ret: define void @fn_emit_text2_prelude() { entry: - call void @fn_emith(ptr @.str2381) - call void @fn_emith(ptr @.str2382) - call void @fn_emith(ptr @.str2383) call void @fn_emith(ptr @.str2384) call void @fn_emith(ptr @.str2385) call void @fn_emith(ptr @.str2386) @@ -42476,6 +42526,9 @@ entry: call void @fn_emith(ptr @.str2589) call void @fn_emith(ptr @.str2590) call void @fn_emith(ptr @.str2591) + call void @fn_emith(ptr @.str2592) + call void @fn_emith(ptr @.str2593) + call void @fn_emith(ptr @.str2594) br label %ret ret: ret void @@ -42492,14 +42545,14 @@ entry: %t32 = alloca i32 store ptr %arg_meth, ptr %t0 %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str2592) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str2595) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str2593) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str2596) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -42512,7 +42565,7 @@ scend1: br i1 %t12, label %scend3, label %sc2 sc2: %t14 = load ptr, ptr %t0 - %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str2594) + %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str2597) %t16 = icmp ne i32 %t15, 0 %t17 = zext i1 %t16 to i32 store i32 %t17, ptr %t1 @@ -42526,14 +42579,14 @@ then4: br label %ret ifend6: %t21 = load ptr, ptr %t0 - %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str2595) + %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str2598) %t23 = icmp ne i32 %t22, 0 %t24 = zext i1 %t23 to i32 store i32 %t24, ptr %t20 br i1 %t23, label %scend8, label %sc7 sc7: %t25 = load ptr, ptr %t0 - %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str2596) + %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str2599) %t27 = icmp ne i32 %t26, 0 %t28 = zext i1 %t27 to i32 store i32 %t28, ptr %t20 @@ -42547,14 +42600,14 @@ then9: br label %ret ifend11: %t33 = load ptr, ptr %t0 - %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str2597) + %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str2600) %t35 = icmp ne i32 %t34, 0 %t36 = zext i1 %t35 to i32 store i32 %t36, ptr %t32 br i1 %t35, label %scend13, label %sc12 sc12: %t37 = load ptr, ptr %t0 - %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str2598) + %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str2601) %t39 = icmp ne i32 %t38, 0 %t40 = zext i1 %t39 to i32 store i32 %t40, ptr %t32 @@ -42567,7 +42620,7 @@ scend13: br i1 %t42, label %scend15, label %sc14 sc14: %t44 = load ptr, ptr %t0 - %t45 = call i32 @lp_str_eq(ptr %t44, ptr @.str2599) + %t45 = call i32 @lp_str_eq(ptr %t44, ptr @.str2602) %t46 = icmp ne i32 %t45, 0 %t47 = zext i1 %t46 to i32 store i32 %t47, ptr %t31 @@ -42600,47 +42653,47 @@ entry: %t39 = alloca ptr store ptr %arg_x, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call ptr @lp_str_concat(ptr @.str2600, ptr %t1) - %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str2601) + %t2 = call ptr @lp_str_concat(ptr @.str2603, ptr %t1) + %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str2604) %t4 = call ptr @fn_emit_bind(ptr %t3) store ptr %t4, ptr %t5 %t6 = load ptr, ptr %t0 - %t7 = call ptr @lp_str_concat(ptr @.str2602, ptr %t6) - %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str2603) + %t7 = call ptr @lp_str_concat(ptr @.str2605, ptr %t6) + %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str2606) %t9 = load ptr, ptr %t5 %t10 = call ptr @lp_str_concat(ptr %t8, ptr %t9) %t11 = call ptr @fn_emit_bind(ptr %t10) store ptr %t11, ptr %t12 %t13 = load ptr, ptr %t12 - %t14 = call ptr @lp_str_concat(ptr @.str2604, ptr %t13) - %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str2605) + %t14 = call ptr @lp_str_concat(ptr @.str2607, ptr %t13) + %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str2608) %t16 = call ptr @fn_emit_bind(ptr %t15) store ptr %t16, ptr %t17 %t18 = load ptr, ptr %t17 - %t19 = call ptr @lp_str_concat(ptr @.str2606, ptr %t18) - %t20 = call ptr @lp_str_concat(ptr %t19, ptr @.str2607) + %t19 = call ptr @lp_str_concat(ptr @.str2609, ptr %t18) + %t20 = call ptr @lp_str_concat(ptr %t19, ptr @.str2610) %t21 = call ptr @fn_emit_bind(ptr %t20) store ptr %t21, ptr %t22 %t23 = load ptr, ptr %t17 - %t24 = call ptr @lp_str_concat(ptr @.str2608, ptr %t23) - %t25 = call ptr @lp_str_concat(ptr %t24, ptr @.str2609) + %t24 = call ptr @lp_str_concat(ptr @.str2611, ptr %t23) + %t25 = call ptr @lp_str_concat(ptr %t24, ptr @.str2612) %t26 = load ptr, ptr %t22 %t27 = call ptr @lp_str_concat(ptr %t25, ptr %t26) %t28 = call ptr @fn_emit_bind(ptr %t27) store ptr %t28, ptr %t29 %t30 = load ptr, ptr %t29 - %t31 = call ptr @lp_str_concat(ptr @.str2610, ptr %t30) - %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str2611) + %t31 = call ptr @lp_str_concat(ptr @.str2613, ptr %t30) + %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str2614) %t33 = call ptr @fn_emit_bind(ptr %t32) store ptr %t33, ptr %t34 %t35 = load ptr, ptr %t34 - %t36 = call ptr @lp_str_concat(ptr @.str2612, ptr %t35) - %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str2613) + %t36 = call ptr @lp_str_concat(ptr @.str2615, ptr %t35) + %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str2616) %t38 = call ptr @fn_emit_bind(ptr %t37) store ptr %t38, ptr %t39 %t40 = load ptr, ptr %t34 - %t41 = call ptr @lp_str_concat(ptr @.str2614, ptr %t40) - %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str2615) + %t41 = call ptr @lp_str_concat(ptr @.str2617, ptr %t40) + %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str2618) %t43 = load ptr, ptr %t39 %t44 = call ptr @lp_str_concat(ptr %t42, ptr %t43) %t45 = call ptr @fn_emit_bind(ptr %t44) @@ -42664,47 +42717,47 @@ entry: %t39 = alloca ptr store ptr %arg_x, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call ptr @lp_str_concat(ptr @.str2616, ptr %t1) - %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str2617) + %t2 = call ptr @lp_str_concat(ptr @.str2619, ptr %t1) + %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str2620) %t4 = call ptr @fn_emit_bind(ptr %t3) store ptr %t4, ptr %t5 %t6 = load ptr, ptr %t0 - %t7 = call ptr @lp_str_concat(ptr @.str2618, ptr %t6) - %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str2619) + %t7 = call ptr @lp_str_concat(ptr @.str2621, ptr %t6) + %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str2622) %t9 = load ptr, ptr %t5 %t10 = call ptr @lp_str_concat(ptr %t8, ptr %t9) %t11 = call ptr @fn_emit_bind(ptr %t10) store ptr %t11, ptr %t12 %t13 = load ptr, ptr %t12 - %t14 = call ptr @lp_str_concat(ptr @.str2620, ptr %t13) - %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str2621) + %t14 = call ptr @lp_str_concat(ptr @.str2623, ptr %t13) + %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str2624) %t16 = call ptr @fn_emit_bind(ptr %t15) store ptr %t16, ptr %t17 %t18 = load ptr, ptr %t17 - %t19 = call ptr @lp_str_concat(ptr @.str2622, ptr %t18) - %t20 = call ptr @lp_str_concat(ptr %t19, ptr @.str2623) + %t19 = call ptr @lp_str_concat(ptr @.str2625, ptr %t18) + %t20 = call ptr @lp_str_concat(ptr %t19, ptr @.str2626) %t21 = call ptr @fn_emit_bind(ptr %t20) store ptr %t21, ptr %t22 %t23 = load ptr, ptr %t17 - %t24 = call ptr @lp_str_concat(ptr @.str2624, ptr %t23) - %t25 = call ptr @lp_str_concat(ptr %t24, ptr @.str2625) + %t24 = call ptr @lp_str_concat(ptr @.str2627, ptr %t23) + %t25 = call ptr @lp_str_concat(ptr %t24, ptr @.str2628) %t26 = load ptr, ptr %t22 %t27 = call ptr @lp_str_concat(ptr %t25, ptr %t26) %t28 = call ptr @fn_emit_bind(ptr %t27) store ptr %t28, ptr %t29 %t30 = load ptr, ptr %t29 - %t31 = call ptr @lp_str_concat(ptr @.str2626, ptr %t30) - %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str2627) + %t31 = call ptr @lp_str_concat(ptr @.str2629, ptr %t30) + %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str2630) %t33 = call ptr @fn_emit_bind(ptr %t32) store ptr %t33, ptr %t34 %t35 = load ptr, ptr %t34 - %t36 = call ptr @lp_str_concat(ptr @.str2628, ptr %t35) - %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str2629) + %t36 = call ptr @lp_str_concat(ptr @.str2631, ptr %t35) + %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str2632) %t38 = call ptr @fn_emit_bind(ptr %t37) store ptr %t38, ptr %t39 %t40 = load ptr, ptr %t34 - %t41 = call ptr @lp_str_concat(ptr @.str2630, ptr %t40) - %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str2631) + %t41 = call ptr @lp_str_concat(ptr @.str2633, ptr %t40) + %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str2634) %t43 = load ptr, ptr %t39 %t44 = call ptr @lp_str_concat(ptr %t42, ptr %t43) %t45 = call ptr @fn_emit_bind(ptr %t44) @@ -42738,14 +42791,14 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str2632) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str2635) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str2633) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str2636) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -42768,22 +42821,22 @@ then2: %t22 = load ptr, ptr %t21 %t23 = getelementptr inbounds %Cmp_Val, ptr %t22, i32 0, i32 0 %t24 = load ptr, ptr %t23 - %t25 = call ptr @lp_str_concat(ptr @.str2634, ptr %t24) - %t26 = call ptr @lp_str_concat(ptr %t25, ptr @.str2635) + %t25 = call ptr @lp_str_concat(ptr @.str2637, ptr %t24) + %t26 = call ptr @lp_str_concat(ptr %t25, ptr @.str2638) %t27 = call ptr @fn_emit_bind(ptr %t26) - %t28 = call ptr @fn_val(ptr %t27, ptr @.str2636) + %t28 = call ptr @fn_val(ptr %t27, ptr @.str2639) store ptr %t28, ptr %retval br label %ret ifend4: %t30 = load ptr, ptr %t0 - %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str2637) + %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str2640) %t32 = icmp ne i32 %t31, 0 %t33 = zext i1 %t32 to i32 store i32 %t33, ptr %t29 br i1 %t32, label %scend6, label %sc5 sc5: %t34 = load ptr, ptr %t0 - %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str2638) + %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str2641) %t36 = icmp ne i32 %t35, 0 %t37 = zext i1 %t36 to i32 store i32 %t37, ptr %t29 @@ -42806,15 +42859,15 @@ then7: %t49 = load ptr, ptr %t48 %t50 = getelementptr inbounds %Cmp_Val, ptr %t49, i32 0, i32 0 %t51 = load ptr, ptr %t50 - %t52 = call ptr @lp_str_concat(ptr @.str2639, ptr %t51) - %t53 = call ptr @lp_str_concat(ptr %t52, ptr @.str2640) + %t52 = call ptr @lp_str_concat(ptr @.str2642, ptr %t51) + %t53 = call ptr @lp_str_concat(ptr %t52, ptr @.str2643) %t54 = call ptr @fn_emit_bind(ptr %t53) - %t55 = call ptr @fn_val(ptr %t54, ptr @.str2641) + %t55 = call ptr @fn_val(ptr %t54, ptr @.str2644) store ptr %t55, ptr %retval br label %ret ifend9: %t56 = load ptr, ptr %t0 - %t57 = call i32 @lp_str_eq(ptr %t56, ptr @.str2642) + %t57 = call i32 @lp_str_eq(ptr %t56, ptr @.str2645) %t58 = icmp ne i32 %t57, 0 br i1 %t58, label %then10, label %ifend12 then10: @@ -42830,12 +42883,12 @@ then10: %t68 = load ptr, ptr %t67 %t69 = call ptr @fn_to_long(ptr %t68) %t70 = call ptr @fn_hash_mix64_code(ptr %t69) - %t71 = call ptr @fn_val(ptr %t70, ptr @.str2643) + %t71 = call ptr @fn_val(ptr %t70, ptr @.str2646) store ptr %t71, ptr %retval br label %ret ifend12: %t72 = load ptr, ptr %t0 - %t73 = call i32 @lp_str_eq(ptr %t72, ptr @.str2644) + %t73 = call i32 @lp_str_eq(ptr %t72, ptr @.str2647) %t74 = icmp ne i32 %t73, 0 br i1 %t74, label %then13, label %ifend15 then13: @@ -42852,15 +42905,15 @@ then13: %t84 = load ptr, ptr %t83 %t85 = getelementptr inbounds %Cmp_Val, ptr %t84, i32 0, i32 0 %t86 = load ptr, ptr %t85 - %t87 = call ptr @lp_str_concat(ptr @.str2645, ptr %t86) - %t88 = call ptr @lp_str_concat(ptr %t87, ptr @.str2646) + %t87 = call ptr @lp_str_concat(ptr @.str2648, ptr %t86) + %t88 = call ptr @lp_str_concat(ptr %t87, ptr @.str2649) %t89 = call ptr @fn_emit_bind(ptr %t88) - %t90 = call ptr @fn_val(ptr %t89, ptr @.str2647) + %t90 = call ptr @fn_val(ptr %t89, ptr @.str2650) store ptr %t90, ptr %retval br label %ret ifend15: %t91 = load ptr, ptr %t0 - %t92 = call i32 @lp_str_eq(ptr %t91, ptr @.str2648) + %t92 = call i32 @lp_str_eq(ptr %t91, ptr @.str2651) %t93 = icmp ne i32 %t92, 0 br i1 %t93, label %then16, label %ifend18 then16: @@ -42877,11 +42930,11 @@ then16: %t104 = getelementptr inbounds %Cmp_Val, ptr %t103, i32 0, i32 0 %t105 = load ptr, ptr %t104 %t106 = call ptr @fn_hash_mix_code(ptr %t105) - %t107 = call ptr @fn_val(ptr %t106, ptr @.str2649) + %t107 = call ptr @fn_val(ptr %t106, ptr @.str2652) store ptr %t107, ptr %retval br label %ret ifend18: - store ptr @.str2650, ptr %t108 + store ptr @.str2653, ptr %t108 store i32 0, ptr %t109 br label %wcond19 wcond19: @@ -42909,37 +42962,37 @@ wbody20: %t129 = load ptr, ptr %t128 %t130 = getelementptr inbounds %Cmp_Val, ptr %t129, i32 0, i32 0 %t131 = load ptr, ptr %t130 - %t132 = call ptr @lp_str_concat(ptr @.str2651, ptr %t131) - %t133 = call ptr @lp_str_concat(ptr %t132, ptr @.str2652) + %t132 = call ptr @lp_str_concat(ptr @.str2654, ptr %t131) + %t133 = call ptr @lp_str_concat(ptr %t132, ptr @.str2655) %t134 = call ptr @fn_emit_bind(ptr %t133) store ptr %t134, ptr %t135 %t136 = load ptr, ptr %t108 - %t137 = call ptr @lp_str_concat(ptr @.str2653, ptr %t136) - %t138 = call ptr @lp_str_concat(ptr %t137, ptr @.str2654) + %t137 = call ptr @lp_str_concat(ptr @.str2656, ptr %t136) + %t138 = call ptr @lp_str_concat(ptr %t137, ptr @.str2657) %t139 = call ptr @fn_emit_bind(ptr %t138) store ptr %t139, ptr %t140 %t141 = load ptr, ptr %t108 - %t142 = call ptr @lp_str_concat(ptr @.str2655, ptr %t141) - %t143 = call ptr @lp_str_concat(ptr %t142, ptr @.str2656) + %t142 = call ptr @lp_str_concat(ptr @.str2658, ptr %t141) + %t143 = call ptr @lp_str_concat(ptr %t142, ptr @.str2659) %t144 = call ptr @fn_emit_bind(ptr %t143) store ptr %t144, ptr %t145 %t146 = load ptr, ptr %t135 - %t147 = call ptr @lp_str_concat(ptr @.str2657, ptr %t146) - %t148 = call ptr @lp_str_concat(ptr %t147, ptr @.str2658) + %t147 = call ptr @lp_str_concat(ptr @.str2660, ptr %t146) + %t148 = call ptr @lp_str_concat(ptr %t147, ptr @.str2661) %t149 = load ptr, ptr %t140 %t150 = call ptr @lp_str_concat(ptr %t148, ptr %t149) %t151 = call ptr @fn_emit_bind(ptr %t150) store ptr %t151, ptr %t152 %t153 = load ptr, ptr %t152 - %t154 = call ptr @lp_str_concat(ptr @.str2659, ptr %t153) - %t155 = call ptr @lp_str_concat(ptr %t154, ptr @.str2660) + %t154 = call ptr @lp_str_concat(ptr @.str2662, ptr %t153) + %t155 = call ptr @lp_str_concat(ptr %t154, ptr @.str2663) %t156 = load ptr, ptr %t145 %t157 = call ptr @lp_str_concat(ptr %t155, ptr %t156) %t158 = call ptr @fn_emit_bind(ptr %t157) store ptr %t158, ptr %t159 %t160 = load ptr, ptr %t108 - %t161 = call ptr @lp_str_concat(ptr @.str2661, ptr %t160) - %t162 = call ptr @lp_str_concat(ptr %t161, ptr @.str2662) + %t161 = call ptr @lp_str_concat(ptr @.str2664, ptr %t160) + %t162 = call ptr @lp_str_concat(ptr %t161, ptr @.str2665) %t163 = load ptr, ptr %t159 %t164 = call ptr @lp_str_concat(ptr %t162, ptr %t163) %t165 = call ptr @fn_emit_bind(ptr %t164) @@ -42950,7 +43003,7 @@ wbody20: br label %wcond19 wend21: %t168 = load ptr, ptr %t108 - %t169 = call ptr @fn_val(ptr %t168, ptr @.str2663) + %t169 = call ptr @fn_val(ptr %t168, ptr @.str2666) store ptr %t169, ptr %retval br label %ret ret: @@ -42960,9 +43013,6 @@ ret: define void @fn_emit_hash_prelude() { entry: - call void @fn_emith(ptr @.str2664) - call void @fn_emith(ptr @.str2665) - call void @fn_emith(ptr @.str2666) call void @fn_emith(ptr @.str2667) call void @fn_emith(ptr @.str2668) call void @fn_emith(ptr @.str2669) @@ -43057,6 +43107,9 @@ entry: call void @fn_emith(ptr @.str2758) call void @fn_emith(ptr @.str2759) call void @fn_emith(ptr @.str2760) + call void @fn_emith(ptr @.str2761) + call void @fn_emith(ptr @.str2762) + call void @fn_emith(ptr @.str2763) br label %ret ret: ret void @@ -43073,14 +43126,14 @@ entry: %t32 = alloca i32 store ptr %arg_meth, ptr %t0 %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str2761) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str2764) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str2762) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str2765) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -43093,7 +43146,7 @@ scend1: br i1 %t12, label %scend3, label %sc2 sc2: %t14 = load ptr, ptr %t0 - %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str2763) + %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str2766) %t16 = icmp ne i32 %t15, 0 %t17 = zext i1 %t16 to i32 store i32 %t17, ptr %t1 @@ -43107,14 +43160,14 @@ then4: br label %ret ifend6: %t21 = load ptr, ptr %t0 - %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str2764) + %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str2767) %t23 = icmp ne i32 %t22, 0 %t24 = zext i1 %t23 to i32 store i32 %t24, ptr %t20 br i1 %t23, label %scend8, label %sc7 sc7: %t25 = load ptr, ptr %t0 - %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str2765) + %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str2768) %t27 = icmp ne i32 %t26, 0 %t28 = zext i1 %t27 to i32 store i32 %t28, ptr %t20 @@ -43128,14 +43181,14 @@ then9: br label %ret ifend11: %t33 = load ptr, ptr %t0 - %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str2766) + %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str2769) %t35 = icmp ne i32 %t34, 0 %t36 = zext i1 %t35 to i32 store i32 %t36, ptr %t32 br i1 %t35, label %scend13, label %sc12 sc12: %t37 = load ptr, ptr %t0 - %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str2767) + %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str2770) %t39 = icmp ne i32 %t38, 0 %t40 = zext i1 %t39 to i32 store i32 %t40, ptr %t32 @@ -43148,7 +43201,7 @@ scend13: br i1 %t42, label %scend15, label %sc14 sc14: %t44 = load ptr, ptr %t0 - %t45 = call i32 @lp_str_eq(ptr %t44, ptr @.str2768) + %t45 = call i32 @lp_str_eq(ptr %t44, ptr @.str2771) %t46 = icmp ne i32 %t45, 0 %t47 = zext i1 %t46 to i32 store i32 %t47, ptr %t31 @@ -43162,7 +43215,7 @@ then16: br label %ret ifend18: %t50 = load ptr, ptr %t0 - %t51 = call i32 @lp_str_eq(ptr %t50, ptr @.str2769) + %t51 = call i32 @lp_str_eq(ptr %t50, ptr @.str2772) %t52 = icmp ne i32 %t51, 0 br i1 %t52, label %then19, label %ifend21 then19: @@ -43199,7 +43252,7 @@ entry: store ptr %arg_e, ptr %t1 store i32 1, ptr @g_g_uses_cryptort %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str2770) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str2773) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -43215,15 +43268,15 @@ then0: %t14 = load ptr, ptr %t13 %t15 = getelementptr inbounds %Cmp_Val, ptr %t14, i32 0, i32 0 %t16 = load ptr, ptr %t15 - %t17 = call ptr @lp_str_concat(ptr @.str2771, ptr %t16) - %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str2772) + %t17 = call ptr @lp_str_concat(ptr @.str2774, ptr %t16) + %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str2775) %t19 = call ptr @fn_emit_bind(ptr %t18) - %t20 = call ptr @fn_val(ptr %t19, ptr @.str2773) + %t20 = call ptr @fn_val(ptr %t19, ptr @.str2776) store ptr %t20, ptr %retval br label %ret ifend2: %t21 = load ptr, ptr %t0 - %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str2774) + %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str2777) %t23 = icmp ne i32 %t22, 0 br i1 %t23, label %then3, label %ifend5 then3: @@ -43248,20 +43301,20 @@ then3: %t42 = load ptr, ptr %t32 %t43 = getelementptr inbounds %Cmp_Val, ptr %t42, i32 0, i32 0 %t44 = load ptr, ptr %t43 - %t45 = call ptr @lp_str_concat(ptr @.str2775, ptr %t44) - %t46 = call ptr @lp_str_concat(ptr %t45, ptr @.str2776) + %t45 = call ptr @lp_str_concat(ptr @.str2778, ptr %t44) + %t46 = call ptr @lp_str_concat(ptr %t45, ptr @.str2779) %t47 = load ptr, ptr %t41 %t48 = getelementptr inbounds %Cmp_Val, ptr %t47, i32 0, i32 0 %t49 = load ptr, ptr %t48 %t50 = call ptr @lp_str_concat(ptr %t46, ptr %t49) - %t51 = call ptr @lp_str_concat(ptr %t50, ptr @.str2777) + %t51 = call ptr @lp_str_concat(ptr %t50, ptr @.str2780) %t52 = call ptr @fn_emit_bind(ptr %t51) - %t53 = call ptr @fn_val(ptr %t52, ptr @.str2778) + %t53 = call ptr @fn_val(ptr %t52, ptr @.str2781) store ptr %t53, ptr %retval br label %ret ifend5: %t54 = load ptr, ptr %t0 - %t55 = call i32 @lp_str_eq(ptr %t54, ptr @.str2779) + %t55 = call i32 @lp_str_eq(ptr %t54, ptr @.str2782) %t56 = icmp ne i32 %t55, 0 br i1 %t56, label %then6, label %ifend8 then6: @@ -43277,15 +43330,15 @@ then6: %t66 = load ptr, ptr %t65 %t67 = getelementptr inbounds %Cmp_Val, ptr %t66, i32 0, i32 0 %t68 = load ptr, ptr %t67 - %t69 = call ptr @lp_str_concat(ptr @.str2780, ptr %t68) - %t70 = call ptr @lp_str_concat(ptr %t69, ptr @.str2781) + %t69 = call ptr @lp_str_concat(ptr @.str2783, ptr %t68) + %t70 = call ptr @lp_str_concat(ptr %t69, ptr @.str2784) %t71 = call ptr @fn_emit_bind(ptr %t70) - %t72 = call ptr @fn_val(ptr %t71, ptr @.str2782) + %t72 = call ptr @fn_val(ptr %t71, ptr @.str2785) store ptr %t72, ptr %retval br label %ret ifend8: %t73 = load ptr, ptr %t0 - %t74 = call i32 @lp_str_eq(ptr %t73, ptr @.str2783) + %t74 = call i32 @lp_str_eq(ptr %t73, ptr @.str2786) %t75 = icmp ne i32 %t74, 0 br i1 %t75, label %then9, label %ifend11 then9: @@ -43310,27 +43363,27 @@ then9: %t94 = load ptr, ptr %t84 %t95 = getelementptr inbounds %Cmp_Val, ptr %t94, i32 0, i32 0 %t96 = load ptr, ptr %t95 - %t97 = call ptr @lp_str_concat(ptr @.str2784, ptr %t96) - %t98 = call ptr @lp_str_concat(ptr %t97, ptr @.str2785) + %t97 = call ptr @lp_str_concat(ptr @.str2787, ptr %t96) + %t98 = call ptr @lp_str_concat(ptr %t97, ptr @.str2788) %t99 = load ptr, ptr %t93 %t100 = getelementptr inbounds %Cmp_Val, ptr %t99, i32 0, i32 0 %t101 = load ptr, ptr %t100 %t102 = call ptr @lp_str_concat(ptr %t98, ptr %t101) - %t103 = call ptr @lp_str_concat(ptr %t102, ptr @.str2786) + %t103 = call ptr @lp_str_concat(ptr %t102, ptr @.str2789) %t104 = call ptr @fn_emit_bind(ptr %t103) - %t105 = call ptr @fn_val(ptr %t104, ptr @.str2787) + %t105 = call ptr @fn_val(ptr %t104, ptr @.str2790) store ptr %t105, ptr %retval br label %ret ifend11: %t107 = load ptr, ptr %t0 - %t108 = call i32 @lp_str_eq(ptr %t107, ptr @.str2788) + %t108 = call i32 @lp_str_eq(ptr %t107, ptr @.str2791) %t109 = icmp ne i32 %t108, 0 %t110 = zext i1 %t109 to i32 store i32 %t110, ptr %t106 br i1 %t109, label %scend13, label %sc12 sc12: %t111 = load ptr, ptr %t0 - %t112 = call i32 @lp_str_eq(ptr %t111, ptr @.str2789) + %t112 = call i32 @lp_str_eq(ptr %t111, ptr @.str2792) %t113 = icmp ne i32 %t112, 0 %t114 = zext i1 %t113 to i32 store i32 %t114, ptr %t106 @@ -43352,30 +43405,30 @@ then14: %t126 = load ptr, ptr %t125 %t127 = getelementptr inbounds %Cmp_Val, ptr %t126, i32 0, i32 0 %t128 = load ptr, ptr %t127 - %t129 = call ptr @lp_str_concat(ptr @.str2790, ptr %t128) - %t130 = call ptr @lp_str_concat(ptr %t129, ptr @.str2791) + %t129 = call ptr @lp_str_concat(ptr @.str2793, ptr %t128) + %t130 = call ptr @lp_str_concat(ptr %t129, ptr @.str2794) %t131 = call ptr @fn_emit_bind(ptr %t130) store ptr %t131, ptr %t132 %t133 = load ptr, ptr %t132 - %t134 = call ptr @lp_str_concat(ptr @.str2792, ptr %t133) - %t135 = call ptr @lp_str_concat(ptr %t134, ptr @.str2793) + %t134 = call ptr @lp_str_concat(ptr @.str2795, ptr %t133) + %t135 = call ptr @lp_str_concat(ptr %t134, ptr @.str2796) %t136 = call ptr @fn_emit_bind(ptr %t135) - %t137 = call ptr @fn_val(ptr %t136, ptr @.str2794) + %t137 = call ptr @fn_val(ptr %t136, ptr @.str2797) store ptr %t137, ptr %retval br label %ret ifend16: %t138 = load ptr, ptr %t0 - %t139 = call i32 @lp_str_eq(ptr %t138, ptr @.str2795) + %t139 = call i32 @lp_str_eq(ptr %t138, ptr @.str2798) %t140 = icmp ne i32 %t139, 0 br i1 %t140, label %then17, label %ifend19 then17: - %t141 = call ptr @fn_emit_bind(ptr @.str2796) - %t142 = call ptr @fn_val(ptr %t141, ptr @.str2797) + %t141 = call ptr @fn_emit_bind(ptr @.str2799) + %t142 = call ptr @fn_val(ptr %t141, ptr @.str2800) store ptr %t142, ptr %retval br label %ret ifend19: %t143 = load ptr, ptr %t0 - %t144 = call i32 @lp_str_eq(ptr %t143, ptr @.str2798) + %t144 = call i32 @lp_str_eq(ptr %t143, ptr @.str2801) %t145 = icmp ne i32 %t144, 0 br i1 %t145, label %then20, label %ifend22 then20: @@ -43391,10 +43444,10 @@ then20: %t155 = load ptr, ptr %t154 %t156 = getelementptr inbounds %Cmp_Val, ptr %t155, i32 0, i32 0 %t157 = load ptr, ptr %t156 - %t158 = call ptr @lp_str_concat(ptr @.str2799, ptr %t157) - %t159 = call ptr @lp_str_concat(ptr %t158, ptr @.str2800) + %t158 = call ptr @lp_str_concat(ptr @.str2802, ptr %t157) + %t159 = call ptr @lp_str_concat(ptr %t158, ptr @.str2803) %t160 = call ptr @fn_emit_bind(ptr %t159) - %t161 = call ptr @fn_val(ptr %t160, ptr @.str2801) + %t161 = call ptr @fn_val(ptr %t160, ptr @.str2804) store ptr %t161, ptr %retval br label %ret ifend22: @@ -43428,25 +43481,25 @@ ifend22: %t189 = load ptr, ptr %t170 %t190 = getelementptr inbounds %Cmp_Val, ptr %t189, i32 0, i32 0 %t191 = load ptr, ptr %t190 - %t192 = call ptr @lp_str_concat(ptr @.str2802, ptr %t191) - %t193 = call ptr @lp_str_concat(ptr %t192, ptr @.str2803) + %t192 = call ptr @lp_str_concat(ptr @.str2805, ptr %t191) + %t193 = call ptr @lp_str_concat(ptr %t192, ptr @.str2806) %t194 = load ptr, ptr %t179 %t195 = getelementptr inbounds %Cmp_Val, ptr %t194, i32 0, i32 0 %t196 = load ptr, ptr %t195 %t197 = call ptr @lp_str_concat(ptr %t193, ptr %t196) - %t198 = call ptr @lp_str_concat(ptr %t197, ptr @.str2804) + %t198 = call ptr @lp_str_concat(ptr %t197, ptr @.str2807) %t199 = call ptr @fn_emit_bind(ptr %t198) store ptr %t199, ptr %t200 %t201 = load ptr, ptr %t200 - %t202 = call ptr @lp_str_concat(ptr @.str2805, ptr %t201) - %t203 = call ptr @lp_str_concat(ptr %t202, ptr @.str2806) + %t202 = call ptr @lp_str_concat(ptr @.str2808, ptr %t201) + %t203 = call ptr @lp_str_concat(ptr %t202, ptr @.str2809) %t204 = load ptr, ptr %t188 %t205 = getelementptr inbounds %Cmp_Val, ptr %t204, i32 0, i32 0 %t206 = load ptr, ptr %t205 %t207 = call ptr @lp_str_concat(ptr %t203, ptr %t206) - %t208 = call ptr @lp_str_concat(ptr %t207, ptr @.str2807) + %t208 = call ptr @lp_str_concat(ptr %t207, ptr @.str2810) %t209 = call ptr @fn_emit_bind(ptr %t208) - %t210 = call ptr @fn_val(ptr %t209, ptr @.str2808) + %t210 = call ptr @fn_val(ptr %t209, ptr @.str2811) store ptr %t210, ptr %retval br label %ret ret: @@ -43456,9 +43509,6 @@ ret: define void @fn_emit_crypto_prelude() { entry: - call void @fn_emith(ptr @.str2809) - call void @fn_emith(ptr @.str2810) - call void @fn_emith(ptr @.str2811) call void @fn_emith(ptr @.str2812) call void @fn_emith(ptr @.str2813) call void @fn_emith(ptr @.str2814) @@ -43608,6 +43658,9 @@ entry: call void @fn_emith(ptr @.str2958) call void @fn_emith(ptr @.str2959) call void @fn_emith(ptr @.str2960) + call void @fn_emith(ptr @.str2961) + call void @fn_emith(ptr @.str2962) + call void @fn_emith(ptr @.str2963) call void @fn_emit_secure_rand_prelude() br label %ret ret: @@ -43616,9 +43669,6 @@ ret: define void @fn_emit_secure_rand_prelude() { entry: - call void @fn_emith(ptr @.str2961) - call void @fn_emith(ptr @.str2962) - call void @fn_emith(ptr @.str2963) call void @fn_emith(ptr @.str2964) call void @fn_emith(ptr @.str2965) call void @fn_emith(ptr @.str2966) @@ -43664,6 +43714,9 @@ entry: call void @fn_emith(ptr @.str3006) call void @fn_emith(ptr @.str3007) call void @fn_emith(ptr @.str3008) + call void @fn_emith(ptr @.str3009) + call void @fn_emith(ptr @.str3010) + call void @fn_emith(ptr @.str3011) br label %ret ret: ret void @@ -43681,14 +43734,14 @@ entry: %t47 = alloca i32 store ptr %arg_meth, ptr %t0 %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str3009) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str3012) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t3 br i1 %t6, label %scend1, label %sc0 sc0: %t8 = load ptr, ptr %t0 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str3010) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str3013) %t10 = icmp ne i32 %t9, 0 %t11 = zext i1 %t10 to i32 store i32 %t11, ptr %t3 @@ -43701,7 +43754,7 @@ scend1: br i1 %t13, label %scend3, label %sc2 sc2: %t15 = load ptr, ptr %t0 - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str3011) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str3014) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t2 @@ -43714,7 +43767,7 @@ scend3: br i1 %t20, label %scend5, label %sc4 sc4: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str3012) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str3015) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t1 @@ -43728,14 +43781,14 @@ then6: br label %ret ifend8: %t30 = load ptr, ptr %t0 - %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str3013) + %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str3016) %t32 = icmp ne i32 %t31, 0 %t33 = zext i1 %t32 to i32 store i32 %t33, ptr %t29 br i1 %t32, label %scend10, label %sc9 sc9: %t34 = load ptr, ptr %t0 - %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str3014) + %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str3017) %t36 = icmp ne i32 %t35, 0 %t37 = zext i1 %t36 to i32 store i32 %t37, ptr %t29 @@ -43748,7 +43801,7 @@ scend10: br i1 %t39, label %scend12, label %sc11 sc11: %t41 = load ptr, ptr %t0 - %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str3015) + %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str3018) %t43 = icmp ne i32 %t42, 0 %t44 = zext i1 %t43 to i32 store i32 %t44, ptr %t28 @@ -43762,14 +43815,14 @@ then13: br label %ret ifend15: %t48 = load ptr, ptr %t0 - %t49 = call i32 @lp_str_eq(ptr %t48, ptr @.str3016) + %t49 = call i32 @lp_str_eq(ptr %t48, ptr @.str3019) %t50 = icmp ne i32 %t49, 0 %t51 = zext i1 %t50 to i32 store i32 %t51, ptr %t47 br i1 %t50, label %scend17, label %sc16 sc16: %t52 = load ptr, ptr %t0 - %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str3017) + %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str3020) %t54 = icmp ne i32 %t53, 0 %t55 = zext i1 %t54 to i32 store i32 %t55, ptr %t47 @@ -43806,14 +43859,14 @@ entry: store i32 1, ptr @g_g_uses_cryptort store i32 1, ptr @g_g_uses_uuidrt %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str3018) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str3021) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3019) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3022) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -43823,20 +43876,20 @@ scend1: %t12 = icmp ne i32 %t11, 0 br i1 %t12, label %then2, label %ifend4 then2: - %t13 = call ptr @fn_emit_bind(ptr @.str3020) - %t14 = call ptr @fn_val(ptr %t13, ptr @.str3021) + %t13 = call ptr @fn_emit_bind(ptr @.str3023) + %t14 = call ptr @fn_val(ptr %t13, ptr @.str3024) store ptr %t14, ptr %retval br label %ret ifend4: %t16 = load ptr, ptr %t0 - %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str3022) + %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str3025) %t18 = icmp ne i32 %t17, 0 %t19 = zext i1 %t18 to i32 store i32 %t19, ptr %t15 br i1 %t18, label %scend6, label %sc5 sc5: %t20 = load ptr, ptr %t0 - %t21 = call i32 @lp_str_eq(ptr %t20, ptr @.str3023) + %t21 = call i32 @lp_str_eq(ptr %t20, ptr @.str3026) %t22 = icmp ne i32 %t21, 0 %t23 = zext i1 %t22 to i32 store i32 %t23, ptr %t15 @@ -43846,23 +43899,23 @@ scend6: %t25 = icmp ne i32 %t24, 0 br i1 %t25, label %then7, label %ifend9 then7: - %t26 = call ptr @fn_emit_bind(ptr @.str3024) - %t27 = call ptr @fn_val(ptr %t26, ptr @.str3025) + %t26 = call ptr @fn_emit_bind(ptr @.str3027) + %t27 = call ptr @fn_val(ptr %t26, ptr @.str3028) store ptr %t27, ptr %retval br label %ret ifend9: %t28 = load ptr, ptr %t0 - %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str3026) + %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str3029) %t30 = icmp ne i32 %t29, 0 br i1 %t30, label %then10, label %ifend12 then10: - %t31 = call ptr @fn_emit_bind(ptr @.str3027) - %t32 = call ptr @fn_val(ptr %t31, ptr @.str3028) + %t31 = call ptr @fn_emit_bind(ptr @.str3030) + %t32 = call ptr @fn_val(ptr %t31, ptr @.str3031) store ptr %t32, ptr %retval br label %ret ifend12: %t33 = load ptr, ptr %t0 - %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str3029) + %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str3032) %t35 = icmp ne i32 %t34, 0 br i1 %t35, label %then13, label %ifend15 then13: @@ -43878,15 +43931,15 @@ then13: %t45 = load ptr, ptr %t44 %t46 = getelementptr inbounds %Cmp_Val, ptr %t45, i32 0, i32 0 %t47 = load ptr, ptr %t46 - %t48 = call ptr @lp_str_concat(ptr @.str3030, ptr %t47) - %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str3031) + %t48 = call ptr @lp_str_concat(ptr @.str3033, ptr %t47) + %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str3034) %t50 = call ptr @fn_emit_bind(ptr %t49) - %t51 = call ptr @fn_val(ptr %t50, ptr @.str3032) + %t51 = call ptr @fn_val(ptr %t50, ptr @.str3035) store ptr %t51, ptr %retval br label %ret ifend15: %t52 = load ptr, ptr %t0 - %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str3033) + %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str3036) %t54 = icmp ne i32 %t53, 0 br i1 %t54, label %then16, label %ifend18 then16: @@ -43902,12 +43955,12 @@ then16: %t64 = load ptr, ptr %t63 %t65 = getelementptr inbounds %Cmp_Val, ptr %t64, i32 0, i32 0 %t66 = load ptr, ptr %t65 - %t67 = call ptr @fn_val(ptr %t66, ptr @.str3034) + %t67 = call ptr @fn_val(ptr %t66, ptr @.str3037) store ptr %t67, ptr %retval br label %ret ifend18: %t68 = load ptr, ptr %t0 - %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str3035) + %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str3038) %t70 = icmp ne i32 %t69, 0 br i1 %t70, label %then19, label %ifend21 then19: @@ -43932,15 +43985,15 @@ then19: %t89 = load ptr, ptr %t79 %t90 = getelementptr inbounds %Cmp_Val, ptr %t89, i32 0, i32 0 %t91 = load ptr, ptr %t90 - %t92 = call ptr @lp_str_concat(ptr @.str3036, ptr %t91) - %t93 = call ptr @lp_str_concat(ptr %t92, ptr @.str3037) + %t92 = call ptr @lp_str_concat(ptr @.str3039, ptr %t91) + %t93 = call ptr @lp_str_concat(ptr %t92, ptr @.str3040) %t94 = load ptr, ptr %t88 %t95 = getelementptr inbounds %Cmp_Val, ptr %t94, i32 0, i32 0 %t96 = load ptr, ptr %t95 %t97 = call ptr @lp_str_concat(ptr %t93, ptr %t96) - %t98 = call ptr @lp_str_concat(ptr %t97, ptr @.str3038) + %t98 = call ptr @lp_str_concat(ptr %t97, ptr @.str3041) %t99 = call ptr @fn_emit_bind(ptr %t98) - %t100 = call ptr @fn_val(ptr %t99, ptr @.str3039) + %t100 = call ptr @fn_val(ptr %t99, ptr @.str3042) store ptr %t100, ptr %retval br label %ret ifend21: @@ -43956,10 +44009,10 @@ ifend21: %t110 = load ptr, ptr %t109 %t111 = getelementptr inbounds %Cmp_Val, ptr %t110, i32 0, i32 0 %t112 = load ptr, ptr %t111 - %t113 = call ptr @lp_str_concat(ptr @.str3040, ptr %t112) - %t114 = call ptr @lp_str_concat(ptr %t113, ptr @.str3041) + %t113 = call ptr @lp_str_concat(ptr @.str3043, ptr %t112) + %t114 = call ptr @lp_str_concat(ptr %t113, ptr @.str3044) %t115 = call ptr @fn_emit_bind(ptr %t114) - %t116 = call ptr @fn_val(ptr %t115, ptr @.str3042) + %t116 = call ptr @fn_val(ptr %t115, ptr @.str3045) store ptr %t116, ptr %retval br label %ret ret: @@ -43969,9 +44022,6 @@ ret: define void @fn_emit_uuid_prelude() { entry: - call void @fn_emith(ptr @.str3043) - call void @fn_emith(ptr @.str3044) - call void @fn_emith(ptr @.str3045) call void @fn_emith(ptr @.str3046) call void @fn_emith(ptr @.str3047) call void @fn_emith(ptr @.str3048) @@ -44043,6 +44093,9 @@ entry: call void @fn_emith(ptr @.str3114) call void @fn_emith(ptr @.str3115) call void @fn_emith(ptr @.str3116) + call void @fn_emith(ptr @.str3117) + call void @fn_emith(ptr @.str3118) + call void @fn_emith(ptr @.str3119) br label %ret ret: ret void @@ -44058,14 +44111,14 @@ entry: %t21 = alloca i32 store ptr %arg_meth, ptr %t0 %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str3117) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str3120) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3118) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3121) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -44078,7 +44131,7 @@ scend1: br i1 %t12, label %scend3, label %sc2 sc2: %t14 = load ptr, ptr %t0 - %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str3119) + %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str3122) %t16 = icmp ne i32 %t15, 0 %t17 = zext i1 %t16 to i32 store i32 %t17, ptr %t1 @@ -44092,14 +44145,14 @@ then4: br label %ret ifend6: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str3120) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str3123) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t21 br i1 %t24, label %scend8, label %sc7 sc7: %t26 = load ptr, ptr %t0 - %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str3121) + %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str3124) %t28 = icmp ne i32 %t27, 0 %t29 = zext i1 %t28 to i32 store i32 %t29, ptr %t21 @@ -44112,7 +44165,7 @@ scend8: br i1 %t31, label %scend10, label %sc9 sc9: %t33 = load ptr, ptr %t0 - %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str3122) + %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str3125) %t35 = icmp ne i32 %t34, 0 %t36 = zext i1 %t35 to i32 store i32 %t36, ptr %t20 @@ -44126,7 +44179,7 @@ then11: br label %ret ifend13: %t39 = load ptr, ptr %t0 - %t40 = call i32 @lp_str_eq(ptr %t39, ptr @.str3123) + %t40 = call i32 @lp_str_eq(ptr %t39, ptr @.str3126) %t41 = icmp ne i32 %t40, 0 br i1 %t41, label %then14, label %ifend16 then14: @@ -44169,7 +44222,7 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str3124) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str3127) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -44185,21 +44238,21 @@ then0: %t14 = load ptr, ptr %t13 %t15 = getelementptr inbounds %Cmp_Val, ptr %t14, i32 0, i32 0 %t16 = load ptr, ptr %t15 - %t17 = call ptr @lp_str_concat(ptr @.str3125, ptr %t16) - %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str3126) + %t17 = call ptr @lp_str_concat(ptr @.str3128, ptr %t16) + %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str3129) %t19 = call ptr @fn_emit_bind(ptr %t18) store ptr %t19, ptr %t20 %t21 = load ptr, ptr %t20 - %t22 = call ptr @lp_str_concat(ptr @.str3127, ptr %t21) - %t23 = call ptr @lp_str_concat(ptr %t22, ptr @.str3128) + %t22 = call ptr @lp_str_concat(ptr @.str3130, ptr %t21) + %t23 = call ptr @lp_str_concat(ptr %t22, ptr @.str3131) %t24 = call ptr @fn_emit_bind(ptr %t23) - %t25 = call ptr @fn_val(ptr %t24, ptr @.str3129) + %t25 = call ptr @fn_val(ptr %t24, ptr @.str3132) store ptr %t25, ptr %retval br label %ret ifend2: store i32 1, ptr @g_g_uses_noisert %t26 = load ptr, ptr %t0 - %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str3130) + %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str3133) %t28 = icmp ne i32 %t27, 0 br i1 %t28, label %then3, label %ifend5 then3: @@ -44233,25 +44286,25 @@ then3: %t56 = load ptr, ptr %t37 %t57 = getelementptr inbounds %Cmp_Val, ptr %t56, i32 0, i32 0 %t58 = load ptr, ptr %t57 - %t59 = call ptr @lp_str_concat(ptr @.str3131, ptr %t58) - %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str3132) + %t59 = call ptr @lp_str_concat(ptr @.str3134, ptr %t58) + %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str3135) %t61 = load ptr, ptr %t46 %t62 = getelementptr inbounds %Cmp_Val, ptr %t61, i32 0, i32 0 %t63 = load ptr, ptr %t62 %t64 = call ptr @lp_str_concat(ptr %t60, ptr %t63) - %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str3133) + %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str3136) %t66 = load ptr, ptr %t55 %t67 = getelementptr inbounds %Cmp_Val, ptr %t66, i32 0, i32 0 %t68 = load ptr, ptr %t67 %t69 = call ptr @lp_str_concat(ptr %t65, ptr %t68) - %t70 = call ptr @lp_str_concat(ptr %t69, ptr @.str3134) + %t70 = call ptr @lp_str_concat(ptr %t69, ptr @.str3137) %t71 = call ptr @fn_emit_bind(ptr %t70) - %t72 = call ptr @fn_val(ptr %t71, ptr @.str3135) + %t72 = call ptr @fn_val(ptr %t71, ptr @.str3138) store ptr %t72, ptr %retval br label %ret ifend5: %t73 = load ptr, ptr %t0 - %t74 = call i32 @lp_str_eq(ptr %t73, ptr @.str3136) + %t74 = call i32 @lp_str_eq(ptr %t73, ptr @.str3139) %t75 = icmp ne i32 %t74, 0 br i1 %t75, label %then6, label %ifend8 then6: @@ -44285,25 +44338,25 @@ then6: %t103 = load ptr, ptr %t84 %t104 = getelementptr inbounds %Cmp_Val, ptr %t103, i32 0, i32 0 %t105 = load ptr, ptr %t104 - %t106 = call ptr @lp_str_concat(ptr @.str3137, ptr %t105) - %t107 = call ptr @lp_str_concat(ptr %t106, ptr @.str3138) + %t106 = call ptr @lp_str_concat(ptr @.str3140, ptr %t105) + %t107 = call ptr @lp_str_concat(ptr %t106, ptr @.str3141) %t108 = load ptr, ptr %t93 %t109 = getelementptr inbounds %Cmp_Val, ptr %t108, i32 0, i32 0 %t110 = load ptr, ptr %t109 %t111 = call ptr @lp_str_concat(ptr %t107, ptr %t110) - %t112 = call ptr @lp_str_concat(ptr %t111, ptr @.str3139) + %t112 = call ptr @lp_str_concat(ptr %t111, ptr @.str3142) %t113 = load ptr, ptr %t102 %t114 = getelementptr inbounds %Cmp_Val, ptr %t113, i32 0, i32 0 %t115 = load ptr, ptr %t114 %t116 = call ptr @lp_str_concat(ptr %t112, ptr %t115) - %t117 = call ptr @lp_str_concat(ptr %t116, ptr @.str3140) + %t117 = call ptr @lp_str_concat(ptr %t116, ptr @.str3143) %t118 = call ptr @fn_emit_bind(ptr %t117) - %t119 = call ptr @fn_val(ptr %t118, ptr @.str3141) + %t119 = call ptr @fn_val(ptr %t118, ptr @.str3144) store ptr %t119, ptr %retval br label %ret ifend8: %t120 = load ptr, ptr %t0 - %t121 = call i32 @lp_str_eq(ptr %t120, ptr @.str3142) + %t121 = call i32 @lp_str_eq(ptr %t120, ptr @.str3145) %t122 = icmp ne i32 %t121, 0 br i1 %t122, label %then9, label %ifend11 then9: @@ -44337,25 +44390,25 @@ then9: %t150 = load ptr, ptr %t131 %t151 = getelementptr inbounds %Cmp_Val, ptr %t150, i32 0, i32 0 %t152 = load ptr, ptr %t151 - %t153 = call ptr @lp_str_concat(ptr @.str3143, ptr %t152) - %t154 = call ptr @lp_str_concat(ptr %t153, ptr @.str3144) + %t153 = call ptr @lp_str_concat(ptr @.str3146, ptr %t152) + %t154 = call ptr @lp_str_concat(ptr %t153, ptr @.str3147) %t155 = load ptr, ptr %t140 %t156 = getelementptr inbounds %Cmp_Val, ptr %t155, i32 0, i32 0 %t157 = load ptr, ptr %t156 %t158 = call ptr @lp_str_concat(ptr %t154, ptr %t157) - %t159 = call ptr @lp_str_concat(ptr %t158, ptr @.str3145) + %t159 = call ptr @lp_str_concat(ptr %t158, ptr @.str3148) %t160 = load ptr, ptr %t149 %t161 = getelementptr inbounds %Cmp_Val, ptr %t160, i32 0, i32 0 %t162 = load ptr, ptr %t161 %t163 = call ptr @lp_str_concat(ptr %t159, ptr %t162) - %t164 = call ptr @lp_str_concat(ptr %t163, ptr @.str3146) + %t164 = call ptr @lp_str_concat(ptr %t163, ptr @.str3149) %t165 = call ptr @fn_emit_bind(ptr %t164) - %t166 = call ptr @fn_val(ptr %t165, ptr @.str3147) + %t166 = call ptr @fn_val(ptr %t165, ptr @.str3150) store ptr %t166, ptr %retval br label %ret ifend11: %t167 = load ptr, ptr %t0 - %t168 = call i32 @lp_str_eq(ptr %t167, ptr @.str3148) + %t168 = call i32 @lp_str_eq(ptr %t167, ptr @.str3151) %t169 = icmp ne i32 %t168, 0 br i1 %t169, label %then12, label %ifend14 then12: @@ -44399,30 +44452,30 @@ then12: %t206 = load ptr, ptr %t178 %t207 = getelementptr inbounds %Cmp_Val, ptr %t206, i32 0, i32 0 %t208 = load ptr, ptr %t207 - %t209 = call ptr @lp_str_concat(ptr @.str3149, ptr %t208) - %t210 = call ptr @lp_str_concat(ptr %t209, ptr @.str3150) + %t209 = call ptr @lp_str_concat(ptr @.str3152, ptr %t208) + %t210 = call ptr @lp_str_concat(ptr %t209, ptr @.str3153) %t211 = load ptr, ptr %t187 %t212 = getelementptr inbounds %Cmp_Val, ptr %t211, i32 0, i32 0 %t213 = load ptr, ptr %t212 %t214 = call ptr @lp_str_concat(ptr %t210, ptr %t213) - %t215 = call ptr @lp_str_concat(ptr %t214, ptr @.str3151) + %t215 = call ptr @lp_str_concat(ptr %t214, ptr @.str3154) %t216 = load ptr, ptr %t196 %t217 = getelementptr inbounds %Cmp_Val, ptr %t216, i32 0, i32 0 %t218 = load ptr, ptr %t217 %t219 = call ptr @lp_str_concat(ptr %t215, ptr %t218) - %t220 = call ptr @lp_str_concat(ptr %t219, ptr @.str3152) + %t220 = call ptr @lp_str_concat(ptr %t219, ptr @.str3155) %t221 = load ptr, ptr %t205 %t222 = getelementptr inbounds %Cmp_Val, ptr %t221, i32 0, i32 0 %t223 = load ptr, ptr %t222 %t224 = call ptr @lp_str_concat(ptr %t220, ptr %t223) - %t225 = call ptr @lp_str_concat(ptr %t224, ptr @.str3153) + %t225 = call ptr @lp_str_concat(ptr %t224, ptr @.str3156) %t226 = call ptr @fn_emit_bind(ptr %t225) - %t227 = call ptr @fn_val(ptr %t226, ptr @.str3154) + %t227 = call ptr @fn_val(ptr %t226, ptr @.str3157) store ptr %t227, ptr %retval br label %ret ifend14: %t228 = load ptr, ptr %t0 - %t229 = call i32 @lp_str_eq(ptr %t228, ptr @.str3155) + %t229 = call i32 @lp_str_eq(ptr %t228, ptr @.str3158) %t230 = icmp ne i32 %t229, 0 br i1 %t230, label %then15, label %ifend17 then15: @@ -44457,20 +44510,20 @@ then15: %t258 = load ptr, ptr %t239 %t259 = getelementptr inbounds %Cmp_Val, ptr %t258, i32 0, i32 0 %t260 = load ptr, ptr %t259 - %t261 = call ptr @lp_str_concat(ptr @.str3156, ptr %t260) - %t262 = call ptr @lp_str_concat(ptr %t261, ptr @.str3157) + %t261 = call ptr @lp_str_concat(ptr @.str3159, ptr %t260) + %t262 = call ptr @lp_str_concat(ptr %t261, ptr @.str3160) %t263 = load ptr, ptr %t248 %t264 = getelementptr inbounds %Cmp_Val, ptr %t263, i32 0, i32 0 %t265 = load ptr, ptr %t264 %t266 = call ptr @lp_str_concat(ptr %t262, ptr %t265) - %t267 = call ptr @lp_str_concat(ptr %t266, ptr @.str3158) + %t267 = call ptr @lp_str_concat(ptr %t266, ptr @.str3161) %t268 = load ptr, ptr %t257 %t269 = getelementptr inbounds %Cmp_Val, ptr %t268, i32 0, i32 0 %t270 = load ptr, ptr %t269 %t271 = call ptr @lp_str_concat(ptr %t267, ptr %t270) - %t272 = call ptr @lp_str_concat(ptr %t271, ptr @.str3159) + %t272 = call ptr @lp_str_concat(ptr %t271, ptr @.str3162) %t273 = call ptr @fn_emit_bind(ptr %t272) - %t274 = call ptr @fn_val(ptr %t273, ptr @.str3160) + %t274 = call ptr @fn_val(ptr %t273, ptr @.str3163) store ptr %t274, ptr %retval br label %ret ifend17: @@ -44504,20 +44557,20 @@ ifend17: %t302 = load ptr, ptr %t283 %t303 = getelementptr inbounds %Cmp_Val, ptr %t302, i32 0, i32 0 %t304 = load ptr, ptr %t303 - %t305 = call ptr @lp_str_concat(ptr @.str3161, ptr %t304) - %t306 = call ptr @lp_str_concat(ptr %t305, ptr @.str3162) + %t305 = call ptr @lp_str_concat(ptr @.str3164, ptr %t304) + %t306 = call ptr @lp_str_concat(ptr %t305, ptr @.str3165) %t307 = load ptr, ptr %t292 %t308 = getelementptr inbounds %Cmp_Val, ptr %t307, i32 0, i32 0 %t309 = load ptr, ptr %t308 %t310 = call ptr @lp_str_concat(ptr %t306, ptr %t309) - %t311 = call ptr @lp_str_concat(ptr %t310, ptr @.str3163) + %t311 = call ptr @lp_str_concat(ptr %t310, ptr @.str3166) %t312 = load ptr, ptr %t301 %t313 = getelementptr inbounds %Cmp_Val, ptr %t312, i32 0, i32 0 %t314 = load ptr, ptr %t313 %t315 = call ptr @lp_str_concat(ptr %t311, ptr %t314) - %t316 = call ptr @lp_str_concat(ptr %t315, ptr @.str3164) + %t316 = call ptr @lp_str_concat(ptr %t315, ptr @.str3167) %t317 = call ptr @fn_emit_bind(ptr %t316) - %t318 = call ptr @fn_val(ptr %t317, ptr @.str3165) + %t318 = call ptr @fn_val(ptr %t317, ptr @.str3168) store ptr %t318, ptr %retval br label %ret ret: @@ -44527,9 +44580,6 @@ ret: define void @fn_emit_noise_prelude() { entry: - call void @fn_emith(ptr @.str3166) - call void @fn_emith(ptr @.str3167) - call void @fn_emith(ptr @.str3168) call void @fn_emith(ptr @.str3169) call void @fn_emith(ptr @.str3170) call void @fn_emith(ptr @.str3171) @@ -44611,6 +44661,9 @@ entry: call void @fn_emith(ptr @.str3247) call void @fn_emith(ptr @.str3248) call void @fn_emith(ptr @.str3249) + call void @fn_emith(ptr @.str3250) + call void @fn_emith(ptr @.str3251) + call void @fn_emith(ptr @.str3252) call void @fn_emit_noise_cellular() br label %ret ret: @@ -44619,9 +44672,6 @@ ret: define void @fn_emit_noise_cellular() { entry: - call void @fn_emith(ptr @.str3250) - call void @fn_emith(ptr @.str3251) - call void @fn_emith(ptr @.str3252) call void @fn_emith(ptr @.str3253) call void @fn_emith(ptr @.str3254) call void @fn_emith(ptr @.str3255) @@ -44643,6 +44693,9 @@ entry: call void @fn_emith(ptr @.str3271) call void @fn_emith(ptr @.str3272) call void @fn_emith(ptr @.str3273) + call void @fn_emith(ptr @.str3274) + call void @fn_emith(ptr @.str3275) + call void @fn_emith(ptr @.str3276) br label %ret ret: ret void @@ -44658,14 +44711,14 @@ entry: %t31 = alloca i32 store ptr %arg_meth, ptr %t0 %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str3274) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str3277) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3275) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3278) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -44678,7 +44731,7 @@ scend1: br i1 %t12, label %scend3, label %sc2 sc2: %t14 = load ptr, ptr %t0 - %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str3276) + %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str3279) %t16 = icmp ne i32 %t15, 0 %t17 = zext i1 %t16 to i32 store i32 %t17, ptr %t1 @@ -44692,14 +44745,14 @@ then4: br label %ret ifend6: %t21 = load ptr, ptr %t0 - %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str3277) + %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str3280) %t23 = icmp ne i32 %t22, 0 %t24 = zext i1 %t23 to i32 store i32 %t24, ptr %t20 br i1 %t23, label %scend8, label %sc7 sc7: %t25 = load ptr, ptr %t0 - %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str3278) + %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str3281) %t27 = icmp ne i32 %t26, 0 %t28 = zext i1 %t27 to i32 store i32 %t28, ptr %t20 @@ -44713,14 +44766,14 @@ then9: br label %ret ifend11: %t32 = load ptr, ptr %t0 - %t33 = call i32 @lp_str_eq(ptr %t32, ptr @.str3279) + %t33 = call i32 @lp_str_eq(ptr %t32, ptr @.str3282) %t34 = icmp ne i32 %t33, 0 %t35 = zext i1 %t34 to i32 store i32 %t35, ptr %t31 br i1 %t34, label %scend13, label %sc12 sc12: %t36 = load ptr, ptr %t0 - %t37 = call i32 @lp_str_eq(ptr %t36, ptr @.str3280) + %t37 = call i32 @lp_str_eq(ptr %t36, ptr @.str3283) %t38 = icmp ne i32 %t37, 0 %t39 = zext i1 %t38 to i32 store i32 %t39, ptr %t31 @@ -44749,7 +44802,7 @@ entry: %t2 = getelementptr inbounds %Cmp_Val, ptr %t1, i32 0, i32 1 %t3 = load ptr, ptr %t2 %t4 = call ptr @fn_llty(ptr %t3) - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str3281) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str3284) %t6 = icmp ne i32 %t5, 0 br i1 %t6, label %then0, label %ifend2 then0: @@ -44763,7 +44816,7 @@ ifend2: %t11 = getelementptr inbounds %Cmp_Val, ptr %t10, i32 0, i32 1 %t12 = load ptr, ptr %t11 %t13 = call ptr @fn_llty(ptr %t12) - %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str3282) + %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str3285) %t15 = icmp ne i32 %t14, 0 br i1 %t15, label %then3, label %ifend5 then3: @@ -44771,8 +44824,8 @@ then3: %t16 = load ptr, ptr %t0 %t17 = getelementptr inbounds %Cmp_Val, ptr %t16, i32 0, i32 0 %t18 = load ptr, ptr %t17 - %t19 = call ptr @lp_str_concat(ptr @.str3283, ptr %t18) - %t20 = call ptr @lp_str_concat(ptr %t19, ptr @.str3284) + %t19 = call ptr @lp_str_concat(ptr @.str3286, ptr %t18) + %t20 = call ptr @lp_str_concat(ptr %t19, ptr @.str3287) %t21 = call ptr @fn_emit_bind(ptr %t20) store ptr %t21, ptr %retval br label %ret @@ -44781,8 +44834,8 @@ ifend5: %t22 = load ptr, ptr %t0 %t23 = getelementptr inbounds %Cmp_Val, ptr %t22, i32 0, i32 0 %t24 = load ptr, ptr %t23 - %t25 = call ptr @lp_str_concat(ptr @.str3285, ptr %t24) - %t26 = call ptr @lp_str_concat(ptr %t25, ptr @.str3286) + %t25 = call ptr @lp_str_concat(ptr @.str3288, ptr %t24) + %t26 = call ptr @lp_str_concat(ptr %t25, ptr @.str3289) %t27 = call ptr @fn_emit_bind(ptr %t26) store ptr %t27, ptr %retval br label %ret @@ -44808,7 +44861,7 @@ entry: store ptr %arg_e, ptr %t1 store i32 1, ptr @g_g_uses_logrt %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str3287) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str3290) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -44824,65 +44877,65 @@ then0: %t14 = load ptr, ptr %t13 %t15 = getelementptr inbounds %Cmp_Val, ptr %t14, i32 0, i32 0 %t16 = load ptr, ptr %t15 - %t17 = call ptr @lp_str_concat(ptr @.str3288, ptr %t16) - %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str3289) + %t17 = call ptr @lp_str_concat(ptr @.str3291, ptr %t16) + %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str3292) call void @fn_emit(ptr %t18) - %t19 = call ptr @fn_val(ptr @.str3290, ptr @.str3291) + %t19 = call ptr @fn_val(ptr @.str3293, ptr @.str3294) store ptr %t19, ptr %retval br label %ret ifend2: %t20 = load ptr, ptr %t0 - %t21 = call i32 @lp_str_eq(ptr %t20, ptr @.str3292) + %t21 = call i32 @lp_str_eq(ptr %t20, ptr @.str3295) %t22 = icmp ne i32 %t21, 0 br i1 %t22, label %then3, label %ifend5 then3: - %t23 = call ptr @fn_emit_bind(ptr @.str3293) - %t24 = call ptr @fn_val(ptr %t23, ptr @.str3294) + %t23 = call ptr @fn_emit_bind(ptr @.str3296) + %t24 = call ptr @fn_val(ptr %t23, ptr @.str3297) store ptr %t24, ptr %retval br label %ret ifend5: - store ptr @.str3295, ptr %t25 - store ptr @.str3296, ptr %t26 + store ptr @.str3298, ptr %t25 + store ptr @.str3299, ptr %t26 %t27 = load ptr, ptr %t0 - %t28 = call i32 @lp_str_eq(ptr %t27, ptr @.str3297) + %t28 = call i32 @lp_str_eq(ptr %t27, ptr @.str3300) %t29 = icmp ne i32 %t28, 0 br i1 %t29, label %then6, label %ifend8 then6: - store ptr @.str3298, ptr %t25 - store ptr @.str3299, ptr %t26 + store ptr @.str3301, ptr %t25 + store ptr @.str3302, ptr %t26 br label %ifend8 ifend8: %t30 = load ptr, ptr %t0 - %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str3300) + %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str3303) %t32 = icmp ne i32 %t31, 0 br i1 %t32, label %then9, label %ifend11 then9: - store ptr @.str3301, ptr %t25 - store ptr @.str3302, ptr %t26 + store ptr @.str3304, ptr %t25 + store ptr @.str3305, ptr %t26 br label %ifend11 ifend11: %t33 = load ptr, ptr %t0 - %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str3303) + %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str3306) %t35 = icmp ne i32 %t34, 0 br i1 %t35, label %then12, label %ifend14 then12: - store ptr @.str3304, ptr %t25 - store ptr @.str3305, ptr %t26 + store ptr @.str3307, ptr %t25 + store ptr @.str3308, ptr %t26 br label %ifend14 ifend14: %t36 = load ptr, ptr %t0 - %t37 = call i32 @lp_str_eq(ptr %t36, ptr @.str3306) + %t37 = call i32 @lp_str_eq(ptr %t36, ptr @.str3309) %t38 = icmp ne i32 %t37, 0 br i1 %t38, label %then15, label %ifend17 then15: - store ptr @.str3307, ptr %t25 - store ptr @.str3308, ptr %t26 + store ptr @.str3310, ptr %t25 + store ptr @.str3311, ptr %t26 br label %ifend17 ifend17: store i32 1, ptr @g_g_uses_str %t39 = load ptr, ptr %t26 %t40 = call ptr @fn_emit_str_const(ptr %t39) - %t41 = call ptr @fn_val(ptr %t40, ptr @.str3309) + %t41 = call ptr @fn_val(ptr %t40, ptr @.str3312) store ptr %t41, ptr %t42 %t43 = load ptr, ptr %t1 %t44 = getelementptr inbounds %Cmp_Node, ptr %t43, i32 0, i32 7 @@ -44896,8 +44949,8 @@ ifend17: %t52 = load ptr, ptr %t42 %t53 = load ptr, ptr %t51 %t54 = call ptr @fn_log_stringify(ptr %t53) - %t55 = call ptr @fn_val(ptr %t54, ptr @.str3311) - %t56 = call ptr @fn_emit_str_op(ptr @.str3310, ptr %t52, ptr %t55) + %t55 = call ptr @fn_val(ptr %t54, ptr @.str3314) + %t56 = call ptr @fn_emit_str_op(ptr @.str3313, ptr %t52, ptr %t55) store ptr %t56, ptr %t42 store i32 1, ptr %t57 br label %wcond18 @@ -44936,26 +44989,26 @@ wbody19: %t87 = call ptr @fn_emit_expr(ptr %t86) store ptr %t87, ptr %t88 %t89 = load ptr, ptr %t42 - %t90 = call ptr @fn_emit_str_const(ptr @.str3313) - %t91 = call ptr @fn_val(ptr %t90, ptr @.str3314) - %t92 = call ptr @fn_emit_str_op(ptr @.str3312, ptr %t89, ptr %t91) + %t90 = call ptr @fn_emit_str_const(ptr @.str3316) + %t91 = call ptr @fn_val(ptr %t90, ptr @.str3317) + %t92 = call ptr @fn_emit_str_op(ptr @.str3315, ptr %t89, ptr %t91) store ptr %t92, ptr %t42 %t93 = load ptr, ptr %t42 %t94 = load ptr, ptr %t77 %t95 = call ptr @fn_log_stringify(ptr %t94) - %t96 = call ptr @fn_val(ptr %t95, ptr @.str3316) - %t97 = call ptr @fn_emit_str_op(ptr @.str3315, ptr %t93, ptr %t96) + %t96 = call ptr @fn_val(ptr %t95, ptr @.str3319) + %t97 = call ptr @fn_emit_str_op(ptr @.str3318, ptr %t93, ptr %t96) store ptr %t97, ptr %t42 %t98 = load ptr, ptr %t42 - %t99 = call ptr @fn_emit_str_const(ptr @.str3318) - %t100 = call ptr @fn_val(ptr %t99, ptr @.str3319) - %t101 = call ptr @fn_emit_str_op(ptr @.str3317, ptr %t98, ptr %t100) + %t99 = call ptr @fn_emit_str_const(ptr @.str3321) + %t100 = call ptr @fn_val(ptr %t99, ptr @.str3322) + %t101 = call ptr @fn_emit_str_op(ptr @.str3320, ptr %t98, ptr %t100) store ptr %t101, ptr %t42 %t102 = load ptr, ptr %t42 %t103 = load ptr, ptr %t88 %t104 = call ptr @fn_log_stringify(ptr %t103) - %t105 = call ptr @fn_val(ptr %t104, ptr @.str3321) - %t106 = call ptr @fn_emit_str_op(ptr @.str3320, ptr %t102, ptr %t105) + %t105 = call ptr @fn_val(ptr %t104, ptr @.str3324) + %t106 = call ptr @fn_emit_str_op(ptr @.str3323, ptr %t102, ptr %t105) store ptr %t106, ptr %t42 %t107 = load i32, ptr %t57 %t108 = add i32 %t107, 2 @@ -44963,15 +45016,15 @@ wbody19: br label %wcond18 wend20: %t109 = load ptr, ptr %t25 - %t110 = call ptr @lp_str_concat(ptr @.str3322, ptr %t109) - %t111 = call ptr @lp_str_concat(ptr %t110, ptr @.str3323) + %t110 = call ptr @lp_str_concat(ptr @.str3325, ptr %t109) + %t111 = call ptr @lp_str_concat(ptr %t110, ptr @.str3326) %t112 = load ptr, ptr %t42 %t113 = getelementptr inbounds %Cmp_Val, ptr %t112, i32 0, i32 0 %t114 = load ptr, ptr %t113 %t115 = call ptr @lp_str_concat(ptr %t111, ptr %t114) - %t116 = call ptr @lp_str_concat(ptr %t115, ptr @.str3324) + %t116 = call ptr @lp_str_concat(ptr %t115, ptr @.str3327) call void @fn_emit(ptr %t116) - %t117 = call ptr @fn_val(ptr @.str3325, ptr @.str3326) + %t117 = call ptr @fn_val(ptr @.str3328, ptr @.str3329) store ptr %t117, ptr %retval br label %ret ret: @@ -44981,13 +45034,13 @@ ret: define void @fn_emit_log_prelude() { entry: - call void @fn_emith(ptr @.str3327) - call void @fn_emith(ptr @.str3328) - call void @fn_emith(ptr @.str3329) call void @fn_emith(ptr @.str3330) call void @fn_emith(ptr @.str3331) call void @fn_emith(ptr @.str3332) call void @fn_emith(ptr @.str3333) + call void @fn_emith(ptr @.str3334) + call void @fn_emith(ptr @.str3335) + call void @fn_emith(ptr @.str3336) br label %ret ret: ret void @@ -45011,14 +45064,14 @@ entry: %t90 = alloca i32 store ptr %arg_meth, ptr %t0 %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str3334) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str3337) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3335) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3338) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -45031,7 +45084,7 @@ scend1: br i1 %t12, label %scend3, label %sc2 sc2: %t14 = load ptr, ptr %t0 - %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str3336) + %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str3339) %t16 = icmp ne i32 %t15, 0 %t17 = zext i1 %t16 to i32 store i32 %t17, ptr %t1 @@ -45045,14 +45098,14 @@ then4: br label %ret ifend6: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str3337) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str3340) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t21 br i1 %t24, label %scend8, label %sc7 sc7: %t26 = load ptr, ptr %t0 - %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str3338) + %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str3341) %t28 = icmp ne i32 %t27, 0 %t29 = zext i1 %t28 to i32 store i32 %t29, ptr %t21 @@ -45065,7 +45118,7 @@ scend8: br i1 %t31, label %scend10, label %sc9 sc9: %t33 = load ptr, ptr %t0 - %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str3339) + %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str3342) %t35 = icmp ne i32 %t34, 0 %t36 = zext i1 %t35 to i32 store i32 %t36, ptr %t20 @@ -45079,14 +45132,14 @@ then11: br label %ret ifend13: %t40 = load ptr, ptr %t0 - %t41 = call i32 @lp_str_eq(ptr %t40, ptr @.str3340) + %t41 = call i32 @lp_str_eq(ptr %t40, ptr @.str3343) %t42 = icmp ne i32 %t41, 0 %t43 = zext i1 %t42 to i32 store i32 %t43, ptr %t39 br i1 %t42, label %scend15, label %sc14 sc14: %t44 = load ptr, ptr %t0 - %t45 = call i32 @lp_str_eq(ptr %t44, ptr @.str3341) + %t45 = call i32 @lp_str_eq(ptr %t44, ptr @.str3344) %t46 = icmp ne i32 %t45, 0 %t47 = zext i1 %t46 to i32 store i32 %t47, ptr %t39 @@ -45100,14 +45153,14 @@ then16: br label %ret ifend18: %t53 = load ptr, ptr %t0 - %t54 = call i32 @lp_str_eq(ptr %t53, ptr @.str3342) + %t54 = call i32 @lp_str_eq(ptr %t53, ptr @.str3345) %t55 = icmp ne i32 %t54, 0 %t56 = zext i1 %t55 to i32 store i32 %t56, ptr %t52 br i1 %t55, label %scend20, label %sc19 sc19: %t57 = load ptr, ptr %t0 - %t58 = call i32 @lp_str_eq(ptr %t57, ptr @.str3343) + %t58 = call i32 @lp_str_eq(ptr %t57, ptr @.str3346) %t59 = icmp ne i32 %t58, 0 %t60 = zext i1 %t59 to i32 store i32 %t60, ptr %t52 @@ -45120,7 +45173,7 @@ scend20: br i1 %t62, label %scend22, label %sc21 sc21: %t64 = load ptr, ptr %t0 - %t65 = call i32 @lp_str_eq(ptr %t64, ptr @.str3344) + %t65 = call i32 @lp_str_eq(ptr %t64, ptr @.str3347) %t66 = icmp ne i32 %t65, 0 %t67 = zext i1 %t66 to i32 store i32 %t67, ptr %t51 @@ -45133,7 +45186,7 @@ scend22: br i1 %t69, label %scend24, label %sc23 sc23: %t71 = load ptr, ptr %t0 - %t72 = call i32 @lp_str_eq(ptr %t71, ptr @.str3345) + %t72 = call i32 @lp_str_eq(ptr %t71, ptr @.str3348) %t73 = icmp ne i32 %t72, 0 %t74 = zext i1 %t73 to i32 store i32 %t74, ptr %t50 @@ -45147,14 +45200,14 @@ then25: br label %ret ifend27: %t78 = load ptr, ptr %t0 - %t79 = call i32 @lp_str_eq(ptr %t78, ptr @.str3346) + %t79 = call i32 @lp_str_eq(ptr %t78, ptr @.str3349) %t80 = icmp ne i32 %t79, 0 %t81 = zext i1 %t80 to i32 store i32 %t81, ptr %t77 br i1 %t80, label %scend29, label %sc28 sc28: %t82 = load ptr, ptr %t0 - %t83 = call i32 @lp_str_eq(ptr %t82, ptr @.str3347) + %t83 = call i32 @lp_str_eq(ptr %t82, ptr @.str3350) %t84 = icmp ne i32 %t83, 0 %t85 = zext i1 %t84 to i32 store i32 %t85, ptr %t77 @@ -45168,14 +45221,14 @@ then30: br label %ret ifend32: %t91 = load ptr, ptr %t0 - %t92 = call i32 @lp_str_eq(ptr %t91, ptr @.str3348) + %t92 = call i32 @lp_str_eq(ptr %t91, ptr @.str3351) %t93 = icmp ne i32 %t92, 0 %t94 = zext i1 %t93 to i32 store i32 %t94, ptr %t90 br i1 %t93, label %scend34, label %sc33 sc33: %t95 = load ptr, ptr %t0 - %t96 = call i32 @lp_str_eq(ptr %t95, ptr @.str3349) + %t96 = call i32 @lp_str_eq(ptr %t95, ptr @.str3352) %t97 = icmp ne i32 %t96, 0 %t98 = zext i1 %t97 to i32 store i32 %t98, ptr %t90 @@ -45188,7 +45241,7 @@ scend34: br i1 %t100, label %scend36, label %sc35 sc35: %t102 = load ptr, ptr %t0 - %t103 = call i32 @lp_str_eq(ptr %t102, ptr @.str3350) + %t103 = call i32 @lp_str_eq(ptr %t102, ptr @.str3353) %t104 = icmp ne i32 %t103, 0 %t105 = zext i1 %t104 to i32 store i32 %t105, ptr %t89 @@ -45201,7 +45254,7 @@ scend36: br i1 %t107, label %scend38, label %sc37 sc37: %t109 = load ptr, ptr %t0 - %t110 = call i32 @lp_str_eq(ptr %t109, ptr @.str3351) + %t110 = call i32 @lp_str_eq(ptr %t109, ptr @.str3354) %t111 = icmp ne i32 %t110, 0 %t112 = zext i1 %t111 to i32 store i32 %t112, ptr %t88 @@ -45254,17 +45307,17 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str3352) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str3355) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: - %t5 = call ptr @fn_emit_bind(ptr @.str3353) - %t6 = call ptr @fn_val(ptr %t5, ptr @.str3354) + %t5 = call ptr @fn_emit_bind(ptr @.str3356) + %t6 = call ptr @fn_val(ptr %t5, ptr @.str3357) store ptr %t6, ptr %retval br label %ret ifend2: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3355) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3358) %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then3, label %ifend5 then3: @@ -45277,11 +45330,11 @@ then3: %t16 = load ptr, ptr %t15 %t17 = call ptr @fn_emit_expr(ptr %t16) store ptr %t17, ptr %t18 - %t19 = call ptr @fn_emit_bind(ptr @.str3356) + %t19 = call ptr @fn_emit_bind(ptr @.str3359) store ptr %t19, ptr %t20 %t21 = load ptr, ptr %t20 - %t22 = call ptr @lp_str_concat(ptr @.str3357, ptr %t21) - %t23 = call ptr @lp_str_concat(ptr %t22, ptr @.str3358) + %t22 = call ptr @lp_str_concat(ptr @.str3360, ptr %t21) + %t23 = call ptr @lp_str_concat(ptr %t22, ptr @.str3361) %t24 = load ptr, ptr %t18 %t25 = getelementptr inbounds %Cmp_Val, ptr %t24, i32 0, i32 0 %t26 = load ptr, ptr %t25 @@ -45289,25 +45342,25 @@ then3: %t28 = call ptr @fn_emit_bind(ptr %t27) store ptr %t28, ptr %t29 %t30 = load ptr, ptr %t29 - %t31 = call ptr @lp_str_concat(ptr @.str3359, ptr %t30) + %t31 = call ptr @lp_str_concat(ptr @.str3362, ptr %t30) %t32 = call ptr @fn_emit_bind(ptr %t31) - %t33 = call ptr @fn_val(ptr %t32, ptr @.str3360) + %t33 = call ptr @fn_val(ptr %t32, ptr @.str3363) store ptr %t33, ptr %retval br label %ret ifend5: %t34 = load ptr, ptr %t0 - %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str3361) + %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str3364) %t36 = icmp ne i32 %t35, 0 br i1 %t36, label %then6, label %ifend8 then6: store i32 1, ptr @g_g_uses_pid - %t37 = call ptr @fn_emit_bind(ptr @.str3362) - %t38 = call ptr @fn_val(ptr %t37, ptr @.str3363) + %t37 = call ptr @fn_emit_bind(ptr @.str3365) + %t38 = call ptr @fn_val(ptr %t37, ptr @.str3366) store ptr %t38, ptr %retval br label %ret ifend8: %t39 = load ptr, ptr %t0 - %t40 = call i32 @lp_str_eq(ptr %t39, ptr @.str3364) + %t40 = call i32 @lp_str_eq(ptr %t39, ptr @.str3367) %t41 = icmp ne i32 %t40, 0 br i1 %t41, label %then9, label %ifend11 then9: @@ -45323,17 +45376,17 @@ then9: %t51 = load ptr, ptr %t50 %t52 = getelementptr inbounds %Cmp_Val, ptr %t51, i32 0, i32 0 %t53 = load ptr, ptr %t52 - %t54 = call ptr @lp_str_concat(ptr @.str3365, ptr %t53) - %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str3366) + %t54 = call ptr @lp_str_concat(ptr @.str3368, ptr %t53) + %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str3369) call void @fn_emit(ptr %t55) - call void @fn_emit(ptr @.str3367) + call void @fn_emit(ptr @.str3370) store i32 1, ptr @g_g_term - %t56 = call ptr @fn_val(ptr @.str3368, ptr @.str3369) + %t56 = call ptr @fn_val(ptr @.str3371, ptr @.str3372) store ptr %t56, ptr %retval br label %ret ifend11: %t57 = load ptr, ptr %t0 - %t58 = call i32 @lp_str_eq(ptr %t57, ptr @.str3370) + %t58 = call i32 @lp_str_eq(ptr %t57, ptr @.str3373) %t59 = icmp ne i32 %t58, 0 br i1 %t59, label %then12, label %ifend14 then12: @@ -45349,15 +45402,15 @@ then12: %t69 = load ptr, ptr %t68 %t70 = getelementptr inbounds %Cmp_Val, ptr %t69, i32 0, i32 0 %t71 = load ptr, ptr %t70 - %t72 = call ptr @lp_str_concat(ptr @.str3371, ptr %t71) - %t73 = call ptr @lp_str_concat(ptr %t72, ptr @.str3372) + %t72 = call ptr @lp_str_concat(ptr @.str3374, ptr %t71) + %t73 = call ptr @lp_str_concat(ptr %t72, ptr @.str3375) %t74 = call ptr @fn_emit_bind(ptr %t73) - %t75 = call ptr @fn_val(ptr %t74, ptr @.str3373) + %t75 = call ptr @fn_val(ptr %t74, ptr @.str3376) store ptr %t75, ptr %retval br label %ret ifend14: %t76 = load ptr, ptr %t0 - %t77 = call i32 @lp_str_eq(ptr %t76, ptr @.str3374) + %t77 = call i32 @lp_str_eq(ptr %t76, ptr @.str3377) %t78 = icmp ne i32 %t77, 0 br i1 %t78, label %then15, label %ifend17 then15: @@ -45373,32 +45426,32 @@ then15: %t88 = load ptr, ptr %t87 %t89 = getelementptr inbounds %Cmp_Val, ptr %t88, i32 0, i32 0 %t90 = load ptr, ptr %t89 - %t91 = call ptr @lp_str_concat(ptr @.str3375, ptr %t90) - %t92 = call ptr @lp_str_concat(ptr %t91, ptr @.str3376) + %t91 = call ptr @lp_str_concat(ptr @.str3378, ptr %t90) + %t92 = call ptr @lp_str_concat(ptr %t91, ptr @.str3379) %t93 = call ptr @fn_emit_bind(ptr %t92) store ptr %t93, ptr %t94 %t95 = load ptr, ptr %t94 - %t96 = call ptr @lp_str_concat(ptr @.str3377, ptr %t95) - %t97 = call ptr @lp_str_concat(ptr %t96, ptr @.str3378) + %t96 = call ptr @lp_str_concat(ptr @.str3380, ptr %t95) + %t97 = call ptr @lp_str_concat(ptr %t96, ptr @.str3381) %t98 = call ptr @fn_emit_bind(ptr %t97) store ptr %t98, ptr %t99 %t100 = load ptr, ptr %t99 - %t101 = call ptr @lp_str_concat(ptr @.str3379, ptr %t100) - %t102 = call ptr @lp_str_concat(ptr %t101, ptr @.str3380) + %t101 = call ptr @lp_str_concat(ptr @.str3382, ptr %t100) + %t102 = call ptr @lp_str_concat(ptr %t101, ptr @.str3383) %t103 = call ptr @fn_emit_bind(ptr %t102) - %t104 = call ptr @fn_val(ptr %t103, ptr @.str3381) + %t104 = call ptr @fn_val(ptr %t103, ptr @.str3384) store ptr %t104, ptr %retval br label %ret ifend17: %t106 = load ptr, ptr %t0 - %t107 = call i32 @lp_str_eq(ptr %t106, ptr @.str3382) + %t107 = call i32 @lp_str_eq(ptr %t106, ptr @.str3385) %t108 = icmp ne i32 %t107, 0 %t109 = zext i1 %t108 to i32 store i32 %t109, ptr %t105 br i1 %t108, label %scend19, label %sc18 sc18: %t110 = load ptr, ptr %t0 - %t111 = call i32 @lp_str_eq(ptr %t110, ptr @.str3383) + %t111 = call i32 @lp_str_eq(ptr %t110, ptr @.str3386) %t112 = icmp ne i32 %t111, 0 %t113 = zext i1 %t112 to i32 store i32 %t113, ptr %t105 @@ -45408,13 +45461,13 @@ scend19: %t115 = icmp ne i32 %t114, 0 br i1 %t115, label %then20, label %ifend22 then20: - store ptr @.str3384, ptr %t116 + store ptr @.str3387, ptr %t116 %t117 = load ptr, ptr %t0 - %t118 = call i32 @lp_str_eq(ptr %t117, ptr @.str3385) + %t118 = call i32 @lp_str_eq(ptr %t117, ptr @.str3388) %t119 = icmp ne i32 %t118, 0 br i1 %t119, label %then23, label %ifend25 then23: - store ptr @.str3386, ptr %t116 + store ptr @.str3389, ptr %t116 br label %ifend25 ifend25: %t120 = load ptr, ptr %t1 @@ -45427,45 +45480,45 @@ ifend25: %t127 = call ptr @fn_emit_expr(ptr %t126) store ptr %t127, ptr %t128 %t129 = load ptr, ptr %t116 - %t130 = call ptr @lp_str_concat(ptr @.str3387, ptr %t129) + %t130 = call ptr @lp_str_concat(ptr @.str3390, ptr %t129) %t131 = call ptr @fn_emit_bind(ptr %t130) store ptr %t131, ptr %t132 %t133 = load ptr, ptr %t128 %t134 = getelementptr inbounds %Cmp_Val, ptr %t133, i32 0, i32 0 %t135 = load ptr, ptr %t134 - %t136 = call ptr @lp_str_concat(ptr @.str3388, ptr %t135) - %t137 = call ptr @lp_str_concat(ptr %t136, ptr @.str3389) + %t136 = call ptr @lp_str_concat(ptr @.str3391, ptr %t135) + %t137 = call ptr @lp_str_concat(ptr %t136, ptr @.str3392) %t138 = call ptr @fn_emit_bind(ptr %t137) store ptr %t138, ptr %t139 %t140 = load ptr, ptr %t128 %t141 = getelementptr inbounds %Cmp_Val, ptr %t140, i32 0, i32 0 %t142 = load ptr, ptr %t141 - %t143 = call ptr @lp_str_concat(ptr @.str3390, ptr %t142) - %t144 = call ptr @lp_str_concat(ptr %t143, ptr @.str3391) + %t143 = call ptr @lp_str_concat(ptr @.str3393, ptr %t142) + %t144 = call ptr @lp_str_concat(ptr %t143, ptr @.str3394) %t145 = load ptr, ptr %t139 %t146 = call ptr @lp_str_concat(ptr %t144, ptr %t145) - %t147 = call ptr @lp_str_concat(ptr %t146, ptr @.str3392) + %t147 = call ptr @lp_str_concat(ptr %t146, ptr @.str3395) %t148 = load ptr, ptr %t132 %t149 = call ptr @lp_str_concat(ptr %t147, ptr %t148) - %t150 = call ptr @lp_str_concat(ptr %t149, ptr @.str3393) + %t150 = call ptr @lp_str_concat(ptr %t149, ptr @.str3396) call void @fn_emit(ptr %t150) - %t151 = call ptr @fn_val(ptr @.str3394, ptr @.str3395) + %t151 = call ptr @fn_val(ptr @.str3397, ptr @.str3398) store ptr %t151, ptr %retval br label %ret ifend22: store i32 1, ptr @g_g_uses_osrt %t152 = load ptr, ptr %t0 - %t153 = call i32 @lp_str_eq(ptr %t152, ptr @.str3396) + %t153 = call i32 @lp_str_eq(ptr %t152, ptr @.str3399) %t154 = icmp ne i32 %t153, 0 br i1 %t154, label %then26, label %ifend28 then26: - %t155 = call ptr @fn_emit_bind(ptr @.str3397) - %t156 = call ptr @fn_val(ptr %t155, ptr @.str3398) + %t155 = call ptr @fn_emit_bind(ptr @.str3400) + %t156 = call ptr @fn_val(ptr %t155, ptr @.str3401) store ptr %t156, ptr %retval br label %ret ifend28: %t157 = load ptr, ptr %t0 - %t158 = call i32 @lp_str_eq(ptr %t157, ptr @.str3399) + %t158 = call i32 @lp_str_eq(ptr %t157, ptr @.str3402) %t159 = icmp ne i32 %t158, 0 br i1 %t159, label %then29, label %ifend31 then29: @@ -45490,20 +45543,20 @@ then29: %t178 = load ptr, ptr %t168 %t179 = getelementptr inbounds %Cmp_Val, ptr %t178, i32 0, i32 0 %t180 = load ptr, ptr %t179 - %t181 = call ptr @lp_str_concat(ptr @.str3400, ptr %t180) - %t182 = call ptr @lp_str_concat(ptr %t181, ptr @.str3401) + %t181 = call ptr @lp_str_concat(ptr @.str3403, ptr %t180) + %t182 = call ptr @lp_str_concat(ptr %t181, ptr @.str3404) %t183 = load ptr, ptr %t177 %t184 = getelementptr inbounds %Cmp_Val, ptr %t183, i32 0, i32 0 %t185 = load ptr, ptr %t184 %t186 = call ptr @lp_str_concat(ptr %t182, ptr %t185) - %t187 = call ptr @lp_str_concat(ptr %t186, ptr @.str3402) + %t187 = call ptr @lp_str_concat(ptr %t186, ptr @.str3405) %t188 = call ptr @fn_emit_bind(ptr %t187) - %t189 = call ptr @fn_val(ptr %t188, ptr @.str3403) + %t189 = call ptr @fn_val(ptr %t188, ptr @.str3406) store ptr %t189, ptr %retval br label %ret ifend31: %t190 = load ptr, ptr %t0 - %t191 = call i32 @lp_str_eq(ptr %t190, ptr @.str3404) + %t191 = call i32 @lp_str_eq(ptr %t190, ptr @.str3407) %t192 = icmp ne i32 %t191, 0 br i1 %t192, label %then32, label %ifend34 then32: @@ -45528,30 +45581,30 @@ then32: %t211 = load ptr, ptr %t201 %t212 = getelementptr inbounds %Cmp_Val, ptr %t211, i32 0, i32 0 %t213 = load ptr, ptr %t212 - %t214 = call ptr @lp_str_concat(ptr @.str3405, ptr %t213) - %t215 = call ptr @lp_str_concat(ptr %t214, ptr @.str3406) + %t214 = call ptr @lp_str_concat(ptr @.str3408, ptr %t213) + %t215 = call ptr @lp_str_concat(ptr %t214, ptr @.str3409) %t216 = load ptr, ptr %t210 %t217 = getelementptr inbounds %Cmp_Val, ptr %t216, i32 0, i32 0 %t218 = load ptr, ptr %t217 %t219 = call ptr @lp_str_concat(ptr %t215, ptr %t218) - %t220 = call ptr @lp_str_concat(ptr %t219, ptr @.str3407) + %t220 = call ptr @lp_str_concat(ptr %t219, ptr @.str3410) %t221 = call ptr @fn_emit_bind(ptr %t220) store ptr %t221, ptr %t222 %t223 = load ptr, ptr %t222 - %t224 = call ptr @lp_str_concat(ptr @.str3408, ptr %t223) - %t225 = call ptr @lp_str_concat(ptr %t224, ptr @.str3409) + %t224 = call ptr @lp_str_concat(ptr @.str3411, ptr %t223) + %t225 = call ptr @lp_str_concat(ptr %t224, ptr @.str3412) %t226 = call ptr @fn_emit_bind(ptr %t225) store ptr %t226, ptr %t227 %t228 = load ptr, ptr %t227 - %t229 = call ptr @lp_str_concat(ptr @.str3410, ptr %t228) - %t230 = call ptr @lp_str_concat(ptr %t229, ptr @.str3411) + %t229 = call ptr @lp_str_concat(ptr @.str3413, ptr %t228) + %t230 = call ptr @lp_str_concat(ptr %t229, ptr @.str3414) %t231 = call ptr @fn_emit_bind(ptr %t230) - %t232 = call ptr @fn_val(ptr %t231, ptr @.str3412) + %t232 = call ptr @fn_val(ptr %t231, ptr @.str3415) store ptr %t232, ptr %retval br label %ret ifend34: %t233 = load ptr, ptr %t0 - %t234 = call i32 @lp_str_eq(ptr %t233, ptr @.str3413) + %t234 = call i32 @lp_str_eq(ptr %t233, ptr @.str3416) %t235 = icmp ne i32 %t234, 0 br i1 %t235, label %then35, label %ifend37 then35: @@ -45567,45 +45620,45 @@ then35: %t245 = load ptr, ptr %t244 %t246 = getelementptr inbounds %Cmp_Val, ptr %t245, i32 0, i32 0 %t247 = load ptr, ptr %t246 - %t248 = call ptr @lp_str_concat(ptr @.str3414, ptr %t247) - %t249 = call ptr @lp_str_concat(ptr %t248, ptr @.str3415) + %t248 = call ptr @lp_str_concat(ptr @.str3417, ptr %t247) + %t249 = call ptr @lp_str_concat(ptr %t248, ptr @.str3418) %t250 = call ptr @fn_emit_bind(ptr %t249) store ptr %t250, ptr %t251 %t252 = load ptr, ptr %t251 - %t253 = call ptr @lp_str_concat(ptr @.str3416, ptr %t252) - %t254 = call ptr @lp_str_concat(ptr %t253, ptr @.str3417) + %t253 = call ptr @lp_str_concat(ptr @.str3419, ptr %t252) + %t254 = call ptr @lp_str_concat(ptr %t253, ptr @.str3420) %t255 = call ptr @fn_emit_bind(ptr %t254) store ptr %t255, ptr %t256 %t257 = load ptr, ptr %t256 - %t258 = call ptr @lp_str_concat(ptr @.str3418, ptr %t257) - %t259 = call ptr @lp_str_concat(ptr %t258, ptr @.str3419) + %t258 = call ptr @lp_str_concat(ptr @.str3421, ptr %t257) + %t259 = call ptr @lp_str_concat(ptr %t258, ptr @.str3422) %t260 = call ptr @fn_emit_bind(ptr %t259) - %t261 = call ptr @fn_val(ptr %t260, ptr @.str3420) + %t261 = call ptr @fn_val(ptr %t260, ptr @.str3423) store ptr %t261, ptr %retval br label %ret ifend37: %t262 = load ptr, ptr %t0 - %t263 = call i32 @lp_str_eq(ptr %t262, ptr @.str3421) + %t263 = call i32 @lp_str_eq(ptr %t262, ptr @.str3424) %t264 = icmp ne i32 %t263, 0 br i1 %t264, label %then38, label %ifend40 then38: - %t265 = call ptr @fn_emit_bind(ptr @.str3422) - %t266 = call ptr @fn_val(ptr %t265, ptr @.str3423) + %t265 = call ptr @fn_emit_bind(ptr @.str3425) + %t266 = call ptr @fn_val(ptr %t265, ptr @.str3426) store ptr %t266, ptr %retval br label %ret ifend40: %t267 = load ptr, ptr %t0 - %t268 = call i32 @lp_str_eq(ptr %t267, ptr @.str3424) + %t268 = call i32 @lp_str_eq(ptr %t267, ptr @.str3427) %t269 = icmp ne i32 %t268, 0 br i1 %t269, label %then41, label %ifend43 then41: - %t270 = call ptr @fn_emit_bind(ptr @.str3425) - %t271 = call ptr @fn_val(ptr %t270, ptr @.str3426) + %t270 = call ptr @fn_emit_bind(ptr @.str3428) + %t271 = call ptr @fn_val(ptr %t270, ptr @.str3429) store ptr %t271, ptr %retval br label %ret ifend43: %t272 = load ptr, ptr %t0 - %t273 = call i32 @lp_str_eq(ptr %t272, ptr @.str3427) + %t273 = call i32 @lp_str_eq(ptr %t272, ptr @.str3430) %t274 = icmp ne i32 %t273, 0 br i1 %t274, label %then44, label %ifend46 then44: @@ -45621,15 +45674,15 @@ then44: %t284 = load ptr, ptr %t283 %t285 = getelementptr inbounds %Cmp_Val, ptr %t284, i32 0, i32 0 %t286 = load ptr, ptr %t285 - %t287 = call ptr @lp_str_concat(ptr @.str3428, ptr %t286) - %t288 = call ptr @lp_str_concat(ptr %t287, ptr @.str3429) + %t287 = call ptr @lp_str_concat(ptr @.str3431, ptr %t286) + %t288 = call ptr @lp_str_concat(ptr %t287, ptr @.str3432) %t289 = call ptr @fn_emit_bind(ptr %t288) - %t290 = call ptr @fn_val(ptr %t289, ptr @.str3430) + %t290 = call ptr @fn_val(ptr %t289, ptr @.str3433) store ptr %t290, ptr %retval br label %ret ifend46: %t291 = load ptr, ptr %t0 - %t292 = call i32 @lp_str_eq(ptr %t291, ptr @.str3431) + %t292 = call i32 @lp_str_eq(ptr %t291, ptr @.str3434) %t293 = icmp ne i32 %t292, 0 br i1 %t293, label %then47, label %ifend49 then47: @@ -45645,15 +45698,15 @@ then47: %t303 = load ptr, ptr %t302 %t304 = getelementptr inbounds %Cmp_Val, ptr %t303, i32 0, i32 0 %t305 = load ptr, ptr %t304 - %t306 = call ptr @lp_str_concat(ptr @.str3432, ptr %t305) - %t307 = call ptr @lp_str_concat(ptr %t306, ptr @.str3433) + %t306 = call ptr @lp_str_concat(ptr @.str3435, ptr %t305) + %t307 = call ptr @lp_str_concat(ptr %t306, ptr @.str3436) %t308 = call ptr @fn_emit_bind(ptr %t307) - %t309 = call ptr @fn_val(ptr %t308, ptr @.str3434) + %t309 = call ptr @fn_val(ptr %t308, ptr @.str3437) store ptr %t309, ptr %retval br label %ret ifend49: %t310 = load ptr, ptr %t0 - %t311 = call i32 @lp_str_eq(ptr %t310, ptr @.str3435) + %t311 = call i32 @lp_str_eq(ptr %t310, ptr @.str3438) %t312 = icmp ne i32 %t311, 0 br i1 %t312, label %then50, label %ifend52 then50: @@ -45669,15 +45722,15 @@ then50: %t322 = load ptr, ptr %t321 %t323 = getelementptr inbounds %Cmp_Val, ptr %t322, i32 0, i32 0 %t324 = load ptr, ptr %t323 - %t325 = call ptr @lp_str_concat(ptr @.str3436, ptr %t324) - %t326 = call ptr @lp_str_concat(ptr %t325, ptr @.str3437) + %t325 = call ptr @lp_str_concat(ptr @.str3439, ptr %t324) + %t326 = call ptr @lp_str_concat(ptr %t325, ptr @.str3440) %t327 = call ptr @fn_emit_bind(ptr %t326) - %t328 = call ptr @fn_val(ptr %t327, ptr @.str3438) + %t328 = call ptr @fn_val(ptr %t327, ptr @.str3441) store ptr %t328, ptr %retval br label %ret ifend52: - %t329 = call ptr @fn_emit_bind(ptr @.str3439) - %t330 = call ptr @fn_val(ptr %t329, ptr @.str3440) + %t329 = call ptr @fn_emit_bind(ptr @.str3442) + %t330 = call ptr @fn_val(ptr %t329, ptr @.str3443) store ptr %t330, ptr %retval br label %ret ret: @@ -45697,32 +45750,29 @@ entry: %t15 = alloca ptr %t17 = alloca ptr %t19 = alloca ptr - call void @fn_emith(ptr @.str3441) - call void @fn_emith(ptr @.str3442) - call void @fn_emith(ptr @.str3443) - %t0 = call ptr @fn_emit_str_const(ptr @.str3444) + call void @fn_emith(ptr @.str3444) + call void @fn_emith(ptr @.str3445) + call void @fn_emith(ptr @.str3446) + %t0 = call ptr @fn_emit_str_const(ptr @.str3447) store ptr %t0, ptr %t1 - %t2 = call ptr @fn_emit_str_const(ptr @.str3445) + %t2 = call ptr @fn_emit_str_const(ptr @.str3448) store ptr %t2, ptr %t3 - %t4 = call ptr @fn_emit_str_const(ptr @.str3446) + %t4 = call ptr @fn_emit_str_const(ptr @.str3449) store ptr %t4, ptr %t5 - %t6 = call ptr @fn_emit_str_const(ptr @.str3447) + %t6 = call ptr @fn_emit_str_const(ptr @.str3450) store ptr %t6, ptr %t7 - %t8 = call ptr @fn_emit_str_const(ptr @.str3448) + %t8 = call ptr @fn_emit_str_const(ptr @.str3451) store ptr %t8, ptr %t9 - %t10 = call ptr @fn_emit_str_const(ptr @.str3449) + %t10 = call ptr @fn_emit_str_const(ptr @.str3452) store ptr %t10, ptr %t11 - %t12 = call ptr @fn_emit_str_const(ptr @.str3450) + %t12 = call ptr @fn_emit_str_const(ptr @.str3453) store ptr %t12, ptr %t13 - %t14 = call ptr @fn_emit_str_const(ptr @.str3451) + %t14 = call ptr @fn_emit_str_const(ptr @.str3454) store ptr %t14, ptr %t15 - %t16 = call ptr @fn_emit_str_const(ptr @.str3452) + %t16 = call ptr @fn_emit_str_const(ptr @.str3455) store ptr %t16, ptr %t17 - %t18 = call ptr @fn_emit_str_const(ptr @.str3453) + %t18 = call ptr @fn_emit_str_const(ptr @.str3456) store ptr %t18, ptr %t19 - call void @fn_emith(ptr @.str3454) - call void @fn_emith(ptr @.str3455) - call void @fn_emith(ptr @.str3456) call void @fn_emith(ptr @.str3457) call void @fn_emith(ptr @.str3458) call void @fn_emith(ptr @.str3459) @@ -45732,61 +45782,64 @@ entry: call void @fn_emith(ptr @.str3463) call void @fn_emith(ptr @.str3464) call void @fn_emith(ptr @.str3465) + call void @fn_emith(ptr @.str3466) + call void @fn_emith(ptr @.str3467) + call void @fn_emith(ptr @.str3468) %t20 = load ptr, ptr %t1 - %t21 = call ptr @lp_str_concat(ptr @.str3466, ptr %t20) - %t22 = call ptr @lp_str_concat(ptr %t21, ptr @.str3467) + %t21 = call ptr @lp_str_concat(ptr @.str3469, ptr %t20) + %t22 = call ptr @lp_str_concat(ptr %t21, ptr @.str3470) %t23 = load ptr, ptr %t3 %t24 = call ptr @lp_str_concat(ptr %t22, ptr %t23) - %t25 = call ptr @lp_str_concat(ptr %t24, ptr @.str3468) + %t25 = call ptr @lp_str_concat(ptr %t24, ptr @.str3471) call void @fn_emith(ptr %t25) %t26 = load ptr, ptr %t5 - %t27 = call ptr @lp_str_concat(ptr @.str3469, ptr %t26) - %t28 = call ptr @lp_str_concat(ptr %t27, ptr @.str3470) + %t27 = call ptr @lp_str_concat(ptr @.str3472, ptr %t26) + %t28 = call ptr @lp_str_concat(ptr %t27, ptr @.str3473) call void @fn_emith(ptr %t28) %t29 = load ptr, ptr %t5 - %t30 = call ptr @lp_str_concat(ptr @.str3471, ptr %t29) - %t31 = call ptr @lp_str_concat(ptr %t30, ptr @.str3472) + %t30 = call ptr @lp_str_concat(ptr @.str3474, ptr %t29) + %t31 = call ptr @lp_str_concat(ptr %t30, ptr @.str3475) call void @fn_emith(ptr %t31) %t32 = load ptr, ptr %t7 - %t33 = call ptr @lp_str_concat(ptr @.str3473, ptr %t32) - %t34 = call ptr @lp_str_concat(ptr %t33, ptr @.str3474) + %t33 = call ptr @lp_str_concat(ptr @.str3476, ptr %t32) + %t34 = call ptr @lp_str_concat(ptr %t33, ptr @.str3477) call void @fn_emith(ptr %t34) %t35 = load ptr, ptr %t9 - %t36 = call ptr @lp_str_concat(ptr @.str3475, ptr %t35) - %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str3476) + %t36 = call ptr @lp_str_concat(ptr @.str3478, ptr %t35) + %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str3479) %t38 = load ptr, ptr %t11 %t39 = call ptr @lp_str_concat(ptr %t37, ptr %t38) - %t40 = call ptr @lp_str_concat(ptr %t39, ptr @.str3477) + %t40 = call ptr @lp_str_concat(ptr %t39, ptr @.str3480) call void @fn_emith(ptr %t40) - call void @fn_emith(ptr @.str3478) - call void @fn_emith(ptr @.str3479) - call void @fn_emith(ptr @.str3480) call void @fn_emith(ptr @.str3481) call void @fn_emith(ptr @.str3482) call void @fn_emith(ptr @.str3483) call void @fn_emith(ptr @.str3484) call void @fn_emith(ptr @.str3485) call void @fn_emith(ptr @.str3486) + call void @fn_emith(ptr @.str3487) + call void @fn_emith(ptr @.str3488) + call void @fn_emith(ptr @.str3489) %t41 = load ptr, ptr %t13 - %t42 = call ptr @lp_str_concat(ptr @.str3487, ptr %t41) - %t43 = call ptr @lp_str_concat(ptr %t42, ptr @.str3488) + %t42 = call ptr @lp_str_concat(ptr @.str3490, ptr %t41) + %t43 = call ptr @lp_str_concat(ptr %t42, ptr @.str3491) call void @fn_emith(ptr %t43) %t44 = load ptr, ptr %t15 - %t45 = call ptr @lp_str_concat(ptr @.str3489, ptr %t44) - %t46 = call ptr @lp_str_concat(ptr %t45, ptr @.str3490) + %t45 = call ptr @lp_str_concat(ptr @.str3492, ptr %t44) + %t46 = call ptr @lp_str_concat(ptr %t45, ptr @.str3493) call void @fn_emith(ptr %t46) %t47 = load ptr, ptr %t17 - %t48 = call ptr @lp_str_concat(ptr @.str3491, ptr %t47) - %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str3492) + %t48 = call ptr @lp_str_concat(ptr @.str3494, ptr %t47) + %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str3495) call void @fn_emith(ptr %t49) %t50 = load ptr, ptr %t19 - %t51 = call ptr @lp_str_concat(ptr @.str3493, ptr %t50) - %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str3494) + %t51 = call ptr @lp_str_concat(ptr @.str3496, ptr %t50) + %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str3497) call void @fn_emith(ptr %t52) - call void @fn_emith(ptr @.str3495) - call void @fn_emith(ptr @.str3496) - call void @fn_emith(ptr @.str3497) call void @fn_emith(ptr @.str3498) + call void @fn_emith(ptr @.str3499) + call void @fn_emith(ptr @.str3500) + call void @fn_emith(ptr @.str3501) br label %ret ret: ret void @@ -45803,14 +45856,14 @@ entry: %t32 = alloca i32 store ptr %arg_meth, ptr %t0 %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str3499) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str3502) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3500) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3503) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -45823,7 +45876,7 @@ scend1: br i1 %t12, label %scend3, label %sc2 sc2: %t14 = load ptr, ptr %t0 - %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str3501) + %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str3504) %t16 = icmp ne i32 %t15, 0 %t17 = zext i1 %t16 to i32 store i32 %t17, ptr %t1 @@ -45837,14 +45890,14 @@ then4: br label %ret ifend6: %t21 = load ptr, ptr %t0 - %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str3502) + %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str3505) %t23 = icmp ne i32 %t22, 0 %t24 = zext i1 %t23 to i32 store i32 %t24, ptr %t20 br i1 %t23, label %scend8, label %sc7 sc7: %t25 = load ptr, ptr %t0 - %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str3503) + %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str3506) %t27 = icmp ne i32 %t26, 0 %t28 = zext i1 %t27 to i32 store i32 %t28, ptr %t20 @@ -45858,14 +45911,14 @@ then9: br label %ret ifend11: %t33 = load ptr, ptr %t0 - %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str3504) + %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str3507) %t35 = icmp ne i32 %t34, 0 %t36 = zext i1 %t35 to i32 store i32 %t36, ptr %t32 br i1 %t35, label %scend13, label %sc12 sc12: %t37 = load ptr, ptr %t0 - %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str3505) + %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str3508) %t39 = icmp ne i32 %t38, 0 %t40 = zext i1 %t39 to i32 store i32 %t40, ptr %t32 @@ -45878,7 +45931,7 @@ scend13: br i1 %t42, label %scend15, label %sc14 sc14: %t44 = load ptr, ptr %t0 - %t45 = call i32 @lp_str_eq(ptr %t44, ptr @.str3506) + %t45 = call i32 @lp_str_eq(ptr %t44, ptr @.str3509) %t46 = icmp ne i32 %t45, 0 %t47 = zext i1 %t46 to i32 store i32 %t47, ptr %t31 @@ -45892,7 +45945,7 @@ then16: br label %ret ifend18: %t50 = load ptr, ptr %t0 - %t51 = call i32 @lp_str_eq(ptr %t50, ptr @.str3507) + %t51 = call i32 @lp_str_eq(ptr %t50, ptr @.str3510) %t52 = icmp ne i32 %t51, 0 br i1 %t52, label %then19, label %ifend21 then19: @@ -45927,7 +45980,7 @@ entry: store ptr %arg_e, ptr %t1 store i32 1, ptr @g_g_uses_unicodert %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str3508) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str3511) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -45943,20 +45996,20 @@ then0: %t14 = load ptr, ptr %t13 %t15 = getelementptr inbounds %Cmp_Val, ptr %t14, i32 0, i32 0 %t16 = load ptr, ptr %t15 - %t17 = call ptr @lp_str_concat(ptr @.str3509, ptr %t16) - %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str3510) + %t17 = call ptr @lp_str_concat(ptr @.str3512, ptr %t16) + %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str3513) %t19 = call ptr @fn_emit_bind(ptr %t18) store ptr %t19, ptr %t20 %t21 = load ptr, ptr %t20 - %t22 = call ptr @lp_str_concat(ptr @.str3511, ptr %t21) - %t23 = call ptr @lp_str_concat(ptr %t22, ptr @.str3512) + %t22 = call ptr @lp_str_concat(ptr @.str3514, ptr %t21) + %t23 = call ptr @lp_str_concat(ptr %t22, ptr @.str3515) %t24 = call ptr @fn_emit_bind(ptr %t23) - %t25 = call ptr @fn_val(ptr %t24, ptr @.str3513) + %t25 = call ptr @fn_val(ptr %t24, ptr @.str3516) store ptr %t25, ptr %retval br label %ret ifend2: %t26 = load ptr, ptr %t0 - %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str3514) + %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str3517) %t28 = icmp ne i32 %t27, 0 br i1 %t28, label %then3, label %ifend5 then3: @@ -45972,15 +46025,15 @@ then3: %t38 = load ptr, ptr %t37 %t39 = getelementptr inbounds %Cmp_Val, ptr %t38, i32 0, i32 0 %t40 = load ptr, ptr %t39 - %t41 = call ptr @lp_str_concat(ptr @.str3515, ptr %t40) - %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str3516) + %t41 = call ptr @lp_str_concat(ptr @.str3518, ptr %t40) + %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str3519) %t43 = call ptr @fn_emit_bind(ptr %t42) - %t44 = call ptr @fn_val(ptr %t43, ptr @.str3517) + %t44 = call ptr @fn_val(ptr %t43, ptr @.str3520) store ptr %t44, ptr %retval br label %ret ifend5: %t45 = load ptr, ptr %t0 - %t46 = call i32 @lp_str_eq(ptr %t45, ptr @.str3518) + %t46 = call i32 @lp_str_eq(ptr %t45, ptr @.str3521) %t47 = icmp ne i32 %t46, 0 br i1 %t47, label %then6, label %ifend8 then6: @@ -45996,15 +46049,15 @@ then6: %t57 = load ptr, ptr %t56 %t58 = getelementptr inbounds %Cmp_Val, ptr %t57, i32 0, i32 0 %t59 = load ptr, ptr %t58 - %t60 = call ptr @lp_str_concat(ptr @.str3519, ptr %t59) - %t61 = call ptr @lp_str_concat(ptr %t60, ptr @.str3520) + %t60 = call ptr @lp_str_concat(ptr @.str3522, ptr %t59) + %t61 = call ptr @lp_str_concat(ptr %t60, ptr @.str3523) %t62 = call ptr @fn_emit_bind(ptr %t61) - %t63 = call ptr @fn_val(ptr %t62, ptr @.str3521) + %t63 = call ptr @fn_val(ptr %t62, ptr @.str3524) store ptr %t63, ptr %retval br label %ret ifend8: %t64 = load ptr, ptr %t0 - %t65 = call i32 @lp_str_eq(ptr %t64, ptr @.str3522) + %t65 = call i32 @lp_str_eq(ptr %t64, ptr @.str3525) %t66 = icmp ne i32 %t65, 0 br i1 %t66, label %then9, label %ifend11 then9: @@ -46029,20 +46082,20 @@ then9: %t85 = load ptr, ptr %t75 %t86 = getelementptr inbounds %Cmp_Val, ptr %t85, i32 0, i32 0 %t87 = load ptr, ptr %t86 - %t88 = call ptr @lp_str_concat(ptr @.str3523, ptr %t87) - %t89 = call ptr @lp_str_concat(ptr %t88, ptr @.str3524) + %t88 = call ptr @lp_str_concat(ptr @.str3526, ptr %t87) + %t89 = call ptr @lp_str_concat(ptr %t88, ptr @.str3527) %t90 = load ptr, ptr %t84 %t91 = getelementptr inbounds %Cmp_Val, ptr %t90, i32 0, i32 0 %t92 = load ptr, ptr %t91 %t93 = call ptr @lp_str_concat(ptr %t89, ptr %t92) - %t94 = call ptr @lp_str_concat(ptr %t93, ptr @.str3525) + %t94 = call ptr @lp_str_concat(ptr %t93, ptr @.str3528) %t95 = call ptr @fn_emit_bind(ptr %t94) - %t96 = call ptr @fn_val(ptr %t95, ptr @.str3526) + %t96 = call ptr @fn_val(ptr %t95, ptr @.str3529) store ptr %t96, ptr %retval br label %ret ifend11: %t97 = load ptr, ptr %t0 - %t98 = call i32 @lp_str_eq(ptr %t97, ptr @.str3527) + %t98 = call i32 @lp_str_eq(ptr %t97, ptr @.str3530) %t99 = icmp ne i32 %t98, 0 br i1 %t99, label %then12, label %ifend14 then12: @@ -46058,15 +46111,15 @@ then12: %t109 = load ptr, ptr %t108 %t110 = getelementptr inbounds %Cmp_Val, ptr %t109, i32 0, i32 0 %t111 = load ptr, ptr %t110 - %t112 = call ptr @lp_str_concat(ptr @.str3528, ptr %t111) - %t113 = call ptr @lp_str_concat(ptr %t112, ptr @.str3529) + %t112 = call ptr @lp_str_concat(ptr @.str3531, ptr %t111) + %t113 = call ptr @lp_str_concat(ptr %t112, ptr @.str3532) %t114 = call ptr @fn_emit_bind(ptr %t113) - %t115 = call ptr @fn_val(ptr %t114, ptr @.str3530) + %t115 = call ptr @fn_val(ptr %t114, ptr @.str3533) store ptr %t115, ptr %retval br label %ret ifend14: %t116 = load ptr, ptr %t0 - %t117 = call i32 @lp_str_eq(ptr %t116, ptr @.str3531) + %t117 = call i32 @lp_str_eq(ptr %t116, ptr @.str3534) %t118 = icmp ne i32 %t117, 0 br i1 %t118, label %then15, label %ifend17 then15: @@ -46082,15 +46135,15 @@ then15: %t128 = load ptr, ptr %t127 %t129 = getelementptr inbounds %Cmp_Val, ptr %t128, i32 0, i32 0 %t130 = load ptr, ptr %t129 - %t131 = call ptr @lp_str_concat(ptr @.str3532, ptr %t130) - %t132 = call ptr @lp_str_concat(ptr %t131, ptr @.str3533) + %t131 = call ptr @lp_str_concat(ptr @.str3535, ptr %t130) + %t132 = call ptr @lp_str_concat(ptr %t131, ptr @.str3536) %t133 = call ptr @fn_emit_bind(ptr %t132) - %t134 = call ptr @fn_val(ptr %t133, ptr @.str3534) + %t134 = call ptr @fn_val(ptr %t133, ptr @.str3537) store ptr %t134, ptr %retval br label %ret ifend17: %t135 = load ptr, ptr %t0 - %t136 = call i32 @lp_str_eq(ptr %t135, ptr @.str3535) + %t136 = call i32 @lp_str_eq(ptr %t135, ptr @.str3538) %t137 = icmp ne i32 %t136, 0 br i1 %t137, label %then18, label %ifend20 then18: @@ -46106,15 +46159,15 @@ then18: %t147 = load ptr, ptr %t146 %t148 = getelementptr inbounds %Cmp_Val, ptr %t147, i32 0, i32 0 %t149 = load ptr, ptr %t148 - %t150 = call ptr @lp_str_concat(ptr @.str3536, ptr %t149) - %t151 = call ptr @lp_str_concat(ptr %t150, ptr @.str3537) + %t150 = call ptr @lp_str_concat(ptr @.str3539, ptr %t149) + %t151 = call ptr @lp_str_concat(ptr %t150, ptr @.str3540) %t152 = call ptr @fn_emit_bind(ptr %t151) - %t153 = call ptr @fn_val(ptr %t152, ptr @.str3538) + %t153 = call ptr @fn_val(ptr %t152, ptr @.str3541) store ptr %t153, ptr %retval br label %ret ifend20: %t154 = load ptr, ptr %t0 - %t155 = call i32 @lp_str_eq(ptr %t154, ptr @.str3539) + %t155 = call i32 @lp_str_eq(ptr %t154, ptr @.str3542) %t156 = icmp ne i32 %t155, 0 br i1 %t156, label %then21, label %ifend23 then21: @@ -46139,15 +46192,15 @@ then21: %t175 = load ptr, ptr %t165 %t176 = getelementptr inbounds %Cmp_Val, ptr %t175, i32 0, i32 0 %t177 = load ptr, ptr %t176 - %t178 = call ptr @lp_str_concat(ptr @.str3540, ptr %t177) - %t179 = call ptr @lp_str_concat(ptr %t178, ptr @.str3541) + %t178 = call ptr @lp_str_concat(ptr @.str3543, ptr %t177) + %t179 = call ptr @lp_str_concat(ptr %t178, ptr @.str3544) %t180 = load ptr, ptr %t174 %t181 = getelementptr inbounds %Cmp_Val, ptr %t180, i32 0, i32 0 %t182 = load ptr, ptr %t181 %t183 = call ptr @lp_str_concat(ptr %t179, ptr %t182) - %t184 = call ptr @lp_str_concat(ptr %t183, ptr @.str3542) + %t184 = call ptr @lp_str_concat(ptr %t183, ptr @.str3545) %t185 = call ptr @fn_emit_bind(ptr %t184) - %t186 = call ptr @fn_val(ptr %t185, ptr @.str3543) + %t186 = call ptr @fn_val(ptr %t185, ptr @.str3546) store ptr %t186, ptr %retval br label %ret ifend23: @@ -46163,10 +46216,10 @@ ifend23: %t196 = load ptr, ptr %t195 %t197 = getelementptr inbounds %Cmp_Val, ptr %t196, i32 0, i32 0 %t198 = load ptr, ptr %t197 - %t199 = call ptr @lp_str_concat(ptr @.str3544, ptr %t198) - %t200 = call ptr @lp_str_concat(ptr %t199, ptr @.str3545) + %t199 = call ptr @lp_str_concat(ptr @.str3547, ptr %t198) + %t200 = call ptr @lp_str_concat(ptr %t199, ptr @.str3548) %t201 = call ptr @fn_emit_bind(ptr %t200) - %t202 = call ptr @fn_val(ptr %t201, ptr @.str3546) + %t202 = call ptr @fn_val(ptr %t201, ptr @.str3549) store ptr %t202, ptr %retval br label %ret ret: @@ -46186,9 +46239,6 @@ ret: define void @fn_emit_uni_core() { entry: - call void @fn_emith(ptr @.str3547) - call void @fn_emith(ptr @.str3548) - call void @fn_emith(ptr @.str3549) call void @fn_emith(ptr @.str3550) call void @fn_emith(ptr @.str3551) call void @fn_emith(ptr @.str3552) @@ -46259,6 +46309,9 @@ entry: call void @fn_emith(ptr @.str3617) call void @fn_emith(ptr @.str3618) call void @fn_emith(ptr @.str3619) + call void @fn_emith(ptr @.str3620) + call void @fn_emith(ptr @.str3621) + call void @fn_emith(ptr @.str3622) br label %ret ret: ret void @@ -46266,9 +46319,6 @@ ret: define void @fn_emit_uni_case_fns() { entry: - call void @fn_emith(ptr @.str3620) - call void @fn_emith(ptr @.str3621) - call void @fn_emith(ptr @.str3622) call void @fn_emith(ptr @.str3623) call void @fn_emith(ptr @.str3624) call void @fn_emith(ptr @.str3625) @@ -46306,6 +46356,9 @@ entry: call void @fn_emith(ptr @.str3657) call void @fn_emith(ptr @.str3658) call void @fn_emith(ptr @.str3659) + call void @fn_emith(ptr @.str3660) + call void @fn_emith(ptr @.str3661) + call void @fn_emith(ptr @.str3662) br label %ret ret: ret void @@ -46313,9 +46366,6 @@ ret: define void @fn_emit_uni_str_fns() { entry: - call void @fn_emith(ptr @.str3660) - call void @fn_emith(ptr @.str3661) - call void @fn_emith(ptr @.str3662) call void @fn_emith(ptr @.str3663) call void @fn_emith(ptr @.str3664) call void @fn_emith(ptr @.str3665) @@ -46350,6 +46400,9 @@ entry: call void @fn_emith(ptr @.str3694) call void @fn_emith(ptr @.str3695) call void @fn_emith(ptr @.str3696) + call void @fn_emith(ptr @.str3697) + call void @fn_emith(ptr @.str3698) + call void @fn_emith(ptr @.str3699) call void @fn_emit_uni_grapheme() br label %ret ret: @@ -46358,9 +46411,6 @@ ret: define void @fn_emit_uni_grapheme() { entry: - call void @fn_emith(ptr @.str3697) - call void @fn_emith(ptr @.str3698) - call void @fn_emith(ptr @.str3699) call void @fn_emith(ptr @.str3700) call void @fn_emith(ptr @.str3701) call void @fn_emith(ptr @.str3702) @@ -46377,6 +46427,9 @@ entry: call void @fn_emith(ptr @.str3713) call void @fn_emith(ptr @.str3714) call void @fn_emith(ptr @.str3715) + call void @fn_emith(ptr @.str3716) + call void @fn_emith(ptr @.str3717) + call void @fn_emith(ptr @.str3718) br label %ret ret: ret void @@ -46395,14 +46448,14 @@ entry: %t41 = alloca i32 store ptr %arg_meth, ptr %t0 %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str3716) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str3719) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3717) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3720) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -46415,7 +46468,7 @@ scend1: br i1 %t12, label %scend3, label %sc2 sc2: %t14 = load ptr, ptr %t0 - %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str3718) + %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str3721) %t16 = icmp ne i32 %t15, 0 %t17 = zext i1 %t16 to i32 store i32 %t17, ptr %t1 @@ -46429,14 +46482,14 @@ then4: br label %ret ifend6: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str3719) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str3722) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t21 br i1 %t24, label %scend8, label %sc7 sc7: %t26 = load ptr, ptr %t0 - %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str3720) + %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str3723) %t28 = icmp ne i32 %t27, 0 %t29 = zext i1 %t28 to i32 store i32 %t29, ptr %t21 @@ -46449,7 +46502,7 @@ scend8: br i1 %t31, label %scend10, label %sc9 sc9: %t33 = load ptr, ptr %t0 - %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str3721) + %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str3724) %t35 = icmp ne i32 %t34, 0 %t36 = zext i1 %t35 to i32 store i32 %t36, ptr %t20 @@ -46463,14 +46516,14 @@ then11: br label %ret ifend13: %t42 = load ptr, ptr %t0 - %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str3722) + %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str3725) %t44 = icmp ne i32 %t43, 0 %t45 = zext i1 %t44 to i32 store i32 %t45, ptr %t41 br i1 %t44, label %scend15, label %sc14 sc14: %t46 = load ptr, ptr %t0 - %t47 = call i32 @lp_str_eq(ptr %t46, ptr @.str3723) + %t47 = call i32 @lp_str_eq(ptr %t46, ptr @.str3726) %t48 = icmp ne i32 %t47, 0 %t49 = zext i1 %t48 to i32 store i32 %t49, ptr %t41 @@ -46483,7 +46536,7 @@ scend15: br i1 %t51, label %scend17, label %sc16 sc16: %t53 = load ptr, ptr %t0 - %t54 = call i32 @lp_str_eq(ptr %t53, ptr @.str3724) + %t54 = call i32 @lp_str_eq(ptr %t53, ptr @.str3727) %t55 = icmp ne i32 %t54, 0 %t56 = zext i1 %t55 to i32 store i32 %t56, ptr %t40 @@ -46496,7 +46549,7 @@ scend17: br i1 %t58, label %scend19, label %sc18 sc18: %t60 = load ptr, ptr %t0 - %t61 = call i32 @lp_str_eq(ptr %t60, ptr @.str3725) + %t61 = call i32 @lp_str_eq(ptr %t60, ptr @.str3728) %t62 = icmp ne i32 %t61, 0 %t63 = zext i1 %t62 to i32 store i32 %t63, ptr %t39 @@ -46526,14 +46579,14 @@ entry: %t21 = alloca i32 store ptr %arg_meth, ptr %t0 %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str3726) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str3729) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3727) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str3730) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -46546,7 +46599,7 @@ scend1: br i1 %t12, label %scend3, label %sc2 sc2: %t14 = load ptr, ptr %t0 - %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str3728) + %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str3731) %t16 = icmp ne i32 %t15, 0 %t17 = zext i1 %t16 to i32 store i32 %t17, ptr %t1 @@ -46560,14 +46613,14 @@ then4: br label %ret ifend6: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str3729) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str3732) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t21 br i1 %t24, label %scend8, label %sc7 sc7: %t26 = load ptr, ptr %t0 - %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str3730) + %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str3733) %t28 = icmp ne i32 %t27, 0 %t29 = zext i1 %t28 to i32 store i32 %t29, ptr %t21 @@ -46580,7 +46633,7 @@ scend8: br i1 %t31, label %scend10, label %sc9 sc9: %t33 = load ptr, ptr %t0 - %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str3731) + %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str3734) %t35 = icmp ne i32 %t34, 0 %t36 = zext i1 %t35 to i32 store i32 %t36, ptr %t20 @@ -46607,14 +46660,14 @@ entry: %t1 = alloca i32 store ptr %arg_meth, ptr %t0 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str3732) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str3735) %t4 = icmp ne i32 %t3, 0 %t5 = zext i1 %t4 to i32 store i32 %t5, ptr %t1 br i1 %t4, label %scend1, label %sc0 sc0: %t6 = load ptr, ptr %t0 - %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str3733) + %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str3736) %t8 = icmp ne i32 %t7, 0 %t9 = zext i1 %t8 to i32 store i32 %t9, ptr %t1 @@ -46654,107 +46707,107 @@ entry: %t9 = call ptr @fn_emit_expr(ptr %t8) store ptr %t9, ptr %t10 %t11 = load ptr, ptr %t0 - %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str3734) + %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str3737) %t13 = icmp ne i32 %t12, 0 br i1 %t13, label %then0, label %ifend2 then0: %t14 = load ptr, ptr %t10 %t15 = getelementptr inbounds %Cmp_Val, ptr %t14, i32 0, i32 0 %t16 = load ptr, ptr %t15 - %t17 = call ptr @lp_str_concat(ptr @.str3735, ptr %t16) - %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str3736) + %t17 = call ptr @lp_str_concat(ptr @.str3738, ptr %t16) + %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str3739) %t19 = call ptr @fn_emit_bind(ptr %t18) - %t20 = call ptr @fn_val(ptr %t19, ptr @.str3737) + %t20 = call ptr @fn_val(ptr %t19, ptr @.str3740) store ptr %t20, ptr %retval br label %ret ifend2: %t21 = load ptr, ptr %t0 - %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str3738) + %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str3741) %t23 = icmp ne i32 %t22, 0 br i1 %t23, label %then3, label %ifend5 then3: %t24 = load ptr, ptr %t10 %t25 = getelementptr inbounds %Cmp_Val, ptr %t24, i32 0, i32 0 %t26 = load ptr, ptr %t25 - %t27 = call ptr @lp_str_concat(ptr @.str3739, ptr %t26) - %t28 = call ptr @lp_str_concat(ptr %t27, ptr @.str3740) + %t27 = call ptr @lp_str_concat(ptr @.str3742, ptr %t26) + %t28 = call ptr @lp_str_concat(ptr %t27, ptr @.str3743) %t29 = call ptr @fn_emit_bind(ptr %t28) - %t30 = call ptr @fn_val(ptr %t29, ptr @.str3741) + %t30 = call ptr @fn_val(ptr %t29, ptr @.str3744) store ptr %t30, ptr %retval br label %ret ifend5: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str3742) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str3745) %t33 = icmp ne i32 %t32, 0 br i1 %t33, label %then6, label %ifend8 then6: %t34 = load ptr, ptr %t10 %t35 = getelementptr inbounds %Cmp_Val, ptr %t34, i32 0, i32 0 %t36 = load ptr, ptr %t35 - %t37 = call ptr @lp_str_concat(ptr @.str3743, ptr %t36) - %t38 = call ptr @lp_str_concat(ptr %t37, ptr @.str3744) + %t37 = call ptr @lp_str_concat(ptr @.str3746, ptr %t36) + %t38 = call ptr @lp_str_concat(ptr %t37, ptr @.str3747) %t39 = call ptr @fn_emit_bind(ptr %t38) - %t40 = call ptr @fn_val(ptr %t39, ptr @.str3745) + %t40 = call ptr @fn_val(ptr %t39, ptr @.str3748) store ptr %t40, ptr %retval br label %ret ifend8: %t41 = load ptr, ptr %t0 - %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str3746) + %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str3749) %t43 = icmp ne i32 %t42, 0 br i1 %t43, label %then9, label %ifend11 then9: %t44 = load ptr, ptr %t10 %t45 = getelementptr inbounds %Cmp_Val, ptr %t44, i32 0, i32 0 %t46 = load ptr, ptr %t45 - %t47 = call ptr @lp_str_concat(ptr @.str3747, ptr %t46) - %t48 = call ptr @lp_str_concat(ptr %t47, ptr @.str3748) + %t47 = call ptr @lp_str_concat(ptr @.str3750, ptr %t46) + %t48 = call ptr @lp_str_concat(ptr %t47, ptr @.str3751) %t49 = call ptr @fn_emit_bind(ptr %t48) - %t50 = call ptr @fn_val(ptr %t49, ptr @.str3749) + %t50 = call ptr @fn_val(ptr %t49, ptr @.str3752) store ptr %t50, ptr %retval br label %ret ifend11: %t51 = load ptr, ptr %t0 - %t52 = call i32 @lp_str_eq(ptr %t51, ptr @.str3750) + %t52 = call i32 @lp_str_eq(ptr %t51, ptr @.str3753) %t53 = icmp ne i32 %t52, 0 br i1 %t53, label %then12, label %ifend14 then12: %t54 = load ptr, ptr %t10 %t55 = getelementptr inbounds %Cmp_Val, ptr %t54, i32 0, i32 0 %t56 = load ptr, ptr %t55 - %t57 = call ptr @lp_str_concat(ptr @.str3751, ptr %t56) - %t58 = call ptr @lp_str_concat(ptr %t57, ptr @.str3752) + %t57 = call ptr @lp_str_concat(ptr @.str3754, ptr %t56) + %t58 = call ptr @lp_str_concat(ptr %t57, ptr @.str3755) %t59 = call ptr @fn_emit_bind(ptr %t58) - %t60 = call ptr @fn_val(ptr %t59, ptr @.str3753) + %t60 = call ptr @fn_val(ptr %t59, ptr @.str3756) store ptr %t60, ptr %retval br label %ret ifend14: %t61 = load ptr, ptr %t0 - %t62 = call i32 @lp_str_eq(ptr %t61, ptr @.str3754) + %t62 = call i32 @lp_str_eq(ptr %t61, ptr @.str3757) %t63 = icmp ne i32 %t62, 0 br i1 %t63, label %then15, label %ifend17 then15: %t64 = load ptr, ptr %t10 %t65 = getelementptr inbounds %Cmp_Val, ptr %t64, i32 0, i32 0 %t66 = load ptr, ptr %t65 - %t67 = call ptr @lp_str_concat(ptr @.str3755, ptr %t66) - %t68 = call ptr @lp_str_concat(ptr %t67, ptr @.str3756) + %t67 = call ptr @lp_str_concat(ptr @.str3758, ptr %t66) + %t68 = call ptr @lp_str_concat(ptr %t67, ptr @.str3759) %t69 = call ptr @fn_emit_bind(ptr %t68) - %t70 = call ptr @fn_val(ptr %t69, ptr @.str3757) + %t70 = call ptr @fn_val(ptr %t69, ptr @.str3760) store ptr %t70, ptr %retval br label %ret ifend17: %t71 = load ptr, ptr %t0 - %t72 = call i32 @lp_str_eq(ptr %t71, ptr @.str3758) + %t72 = call i32 @lp_str_eq(ptr %t71, ptr @.str3761) %t73 = icmp ne i32 %t72, 0 br i1 %t73, label %then18, label %ifend20 then18: %t74 = load ptr, ptr %t10 %t75 = getelementptr inbounds %Cmp_Val, ptr %t74, i32 0, i32 0 %t76 = load ptr, ptr %t75 - %t77 = call ptr @lp_str_concat(ptr @.str3759, ptr %t76) - %t78 = call ptr @lp_str_concat(ptr %t77, ptr @.str3760) + %t77 = call ptr @lp_str_concat(ptr @.str3762, ptr %t76) + %t78 = call ptr @lp_str_concat(ptr %t77, ptr @.str3763) %t79 = call ptr @fn_emit_bind(ptr %t78) - %t80 = call ptr @fn_val(ptr %t79, ptr @.str3761) + %t80 = call ptr @fn_val(ptr %t79, ptr @.str3764) store ptr %t80, ptr %retval br label %ret ifend20: @@ -46768,57 +46821,57 @@ ifend20: %t88 = call ptr @fn_emit_expr(ptr %t87) store ptr %t88, ptr %t89 %t90 = load ptr, ptr %t0 - %t91 = call i32 @lp_str_eq(ptr %t90, ptr @.str3762) + %t91 = call i32 @lp_str_eq(ptr %t90, ptr @.str3765) %t92 = icmp ne i32 %t91, 0 br i1 %t92, label %then21, label %ifend23 then21: %t93 = load ptr, ptr %t10 %t94 = getelementptr inbounds %Cmp_Val, ptr %t93, i32 0, i32 0 %t95 = load ptr, ptr %t94 - %t96 = call ptr @lp_str_concat(ptr @.str3763, ptr %t95) - %t97 = call ptr @lp_str_concat(ptr %t96, ptr @.str3764) + %t96 = call ptr @lp_str_concat(ptr @.str3766, ptr %t95) + %t97 = call ptr @lp_str_concat(ptr %t96, ptr @.str3767) %t98 = load ptr, ptr %t89 %t99 = getelementptr inbounds %Cmp_Val, ptr %t98, i32 0, i32 0 %t100 = load ptr, ptr %t99 %t101 = call ptr @lp_str_concat(ptr %t97, ptr %t100) - %t102 = call ptr @lp_str_concat(ptr %t101, ptr @.str3765) + %t102 = call ptr @lp_str_concat(ptr %t101, ptr @.str3768) %t103 = call ptr @fn_emit_bind(ptr %t102) - %t104 = call ptr @fn_val(ptr %t103, ptr @.str3766) + %t104 = call ptr @fn_val(ptr %t103, ptr @.str3769) store ptr %t104, ptr %retval br label %ret ifend23: %t105 = load ptr, ptr %t0 - %t106 = call i32 @lp_str_eq(ptr %t105, ptr @.str3767) + %t106 = call i32 @lp_str_eq(ptr %t105, ptr @.str3770) %t107 = icmp ne i32 %t106, 0 br i1 %t107, label %then24, label %ifend26 then24: %t108 = load ptr, ptr %t10 %t109 = getelementptr inbounds %Cmp_Val, ptr %t108, i32 0, i32 0 %t110 = load ptr, ptr %t109 - %t111 = call ptr @lp_str_concat(ptr @.str3768, ptr %t110) - %t112 = call ptr @lp_str_concat(ptr %t111, ptr @.str3769) + %t111 = call ptr @lp_str_concat(ptr @.str3771, ptr %t110) + %t112 = call ptr @lp_str_concat(ptr %t111, ptr @.str3772) %t113 = load ptr, ptr %t89 %t114 = getelementptr inbounds %Cmp_Val, ptr %t113, i32 0, i32 0 %t115 = load ptr, ptr %t114 %t116 = call ptr @lp_str_concat(ptr %t112, ptr %t115) - %t117 = call ptr @lp_str_concat(ptr %t116, ptr @.str3770) + %t117 = call ptr @lp_str_concat(ptr %t116, ptr @.str3773) %t118 = call ptr @fn_emit_bind(ptr %t117) - %t119 = call ptr @fn_val(ptr %t118, ptr @.str3771) + %t119 = call ptr @fn_val(ptr %t118, ptr @.str3774) store ptr %t119, ptr %retval br label %ret ifend26: %t120 = load ptr, ptr %t10 %t121 = getelementptr inbounds %Cmp_Val, ptr %t120, i32 0, i32 0 %t122 = load ptr, ptr %t121 - %t123 = call ptr @lp_str_concat(ptr @.str3772, ptr %t122) - %t124 = call ptr @lp_str_concat(ptr %t123, ptr @.str3773) + %t123 = call ptr @lp_str_concat(ptr @.str3775, ptr %t122) + %t124 = call ptr @lp_str_concat(ptr %t123, ptr @.str3776) %t125 = load ptr, ptr %t89 %t126 = getelementptr inbounds %Cmp_Val, ptr %t125, i32 0, i32 0 %t127 = load ptr, ptr %t126 %t128 = call ptr @lp_str_concat(ptr %t124, ptr %t127) - %t129 = call ptr @lp_str_concat(ptr %t128, ptr @.str3774) + %t129 = call ptr @lp_str_concat(ptr %t128, ptr @.str3777) %t130 = call ptr @fn_emit_bind(ptr %t129) - %t131 = call ptr @fn_val(ptr %t130, ptr @.str3775) + %t131 = call ptr @fn_val(ptr %t130, ptr @.str3778) store ptr %t131, ptr %retval br label %ret ret: @@ -46846,77 +46899,77 @@ entry: %t9 = call ptr @fn_emit_expr(ptr %t8) store ptr %t9, ptr %t10 %t11 = load ptr, ptr %t0 - %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str3776) + %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str3779) %t13 = icmp ne i32 %t12, 0 br i1 %t13, label %then0, label %ifend2 then0: %t14 = load ptr, ptr %t10 %t15 = getelementptr inbounds %Cmp_Val, ptr %t14, i32 0, i32 0 %t16 = load ptr, ptr %t15 - %t17 = call ptr @lp_str_concat(ptr @.str3777, ptr %t16) - %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str3778) + %t17 = call ptr @lp_str_concat(ptr @.str3780, ptr %t16) + %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str3781) %t19 = call ptr @fn_emit_bind(ptr %t18) - %t20 = call ptr @fn_val(ptr %t19, ptr @.str3779) + %t20 = call ptr @fn_val(ptr %t19, ptr @.str3782) store ptr %t20, ptr %retval br label %ret ifend2: %t21 = load ptr, ptr %t0 - %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str3780) + %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str3783) %t23 = icmp ne i32 %t22, 0 br i1 %t23, label %then3, label %ifend5 then3: %t24 = load ptr, ptr %t10 %t25 = getelementptr inbounds %Cmp_Val, ptr %t24, i32 0, i32 0 %t26 = load ptr, ptr %t25 - %t27 = call ptr @lp_str_concat(ptr @.str3781, ptr %t26) - %t28 = call ptr @lp_str_concat(ptr %t27, ptr @.str3782) + %t27 = call ptr @lp_str_concat(ptr @.str3784, ptr %t26) + %t28 = call ptr @lp_str_concat(ptr %t27, ptr @.str3785) %t29 = call ptr @fn_emit_bind(ptr %t28) - %t30 = call ptr @fn_val(ptr %t29, ptr @.str3783) + %t30 = call ptr @fn_val(ptr %t29, ptr @.str3786) store ptr %t30, ptr %retval br label %ret ifend5: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str3784) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str3787) %t33 = icmp ne i32 %t32, 0 br i1 %t33, label %then6, label %ifend8 then6: %t34 = load ptr, ptr %t10 %t35 = getelementptr inbounds %Cmp_Val, ptr %t34, i32 0, i32 0 %t36 = load ptr, ptr %t35 - %t37 = call ptr @lp_str_concat(ptr @.str3785, ptr %t36) - %t38 = call ptr @lp_str_concat(ptr %t37, ptr @.str3786) + %t37 = call ptr @lp_str_concat(ptr @.str3788, ptr %t36) + %t38 = call ptr @lp_str_concat(ptr %t37, ptr @.str3789) %t39 = call ptr @fn_emit_bind(ptr %t38) - %t40 = call ptr @fn_val(ptr %t39, ptr @.str3787) + %t40 = call ptr @fn_val(ptr %t39, ptr @.str3790) store ptr %t40, ptr %retval br label %ret ifend8: %t41 = load ptr, ptr %t0 - %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str3788) + %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str3791) %t43 = icmp ne i32 %t42, 0 br i1 %t43, label %then9, label %ifend11 then9: %t44 = load ptr, ptr %t10 %t45 = getelementptr inbounds %Cmp_Val, ptr %t44, i32 0, i32 0 %t46 = load ptr, ptr %t45 - %t47 = call ptr @lp_str_concat(ptr @.str3789, ptr %t46) - %t48 = call ptr @lp_str_concat(ptr %t47, ptr @.str3790) + %t47 = call ptr @lp_str_concat(ptr @.str3792, ptr %t46) + %t48 = call ptr @lp_str_concat(ptr %t47, ptr @.str3793) %t49 = call ptr @fn_emit_bind(ptr %t48) - %t50 = call ptr @fn_val(ptr %t49, ptr @.str3791) + %t50 = call ptr @fn_val(ptr %t49, ptr @.str3794) store ptr %t50, ptr %retval br label %ret ifend11: %t51 = load ptr, ptr %t0 - %t52 = call i32 @lp_str_eq(ptr %t51, ptr @.str3792) + %t52 = call i32 @lp_str_eq(ptr %t51, ptr @.str3795) %t53 = icmp ne i32 %t52, 0 br i1 %t53, label %then12, label %ifend14 then12: %t54 = load ptr, ptr %t10 %t55 = getelementptr inbounds %Cmp_Val, ptr %t54, i32 0, i32 0 %t56 = load ptr, ptr %t55 - %t57 = call ptr @lp_str_concat(ptr @.str3793, ptr %t56) - %t58 = call ptr @lp_str_concat(ptr %t57, ptr @.str3794) + %t57 = call ptr @lp_str_concat(ptr @.str3796, ptr %t56) + %t58 = call ptr @lp_str_concat(ptr %t57, ptr @.str3797) %t59 = call ptr @fn_emit_bind(ptr %t58) - %t60 = call ptr @fn_val(ptr %t59, ptr @.str3795) + %t60 = call ptr @fn_val(ptr %t59, ptr @.str3798) store ptr %t60, ptr %retval br label %ret ifend14: @@ -46932,15 +46985,15 @@ ifend14: %t70 = load ptr, ptr %t10 %t71 = getelementptr inbounds %Cmp_Val, ptr %t70, i32 0, i32 0 %t72 = load ptr, ptr %t71 - %t73 = call ptr @lp_str_concat(ptr @.str3796, ptr %t72) - %t74 = call ptr @lp_str_concat(ptr %t73, ptr @.str3797) + %t73 = call ptr @lp_str_concat(ptr @.str3799, ptr %t72) + %t74 = call ptr @lp_str_concat(ptr %t73, ptr @.str3800) %t75 = load ptr, ptr %t69 %t76 = getelementptr inbounds %Cmp_Val, ptr %t75, i32 0, i32 0 %t77 = load ptr, ptr %t76 %t78 = call ptr @lp_str_concat(ptr %t74, ptr %t77) - %t79 = call ptr @lp_str_concat(ptr %t78, ptr @.str3798) + %t79 = call ptr @lp_str_concat(ptr %t78, ptr @.str3801) %t80 = call ptr @fn_emit_bind(ptr %t79) - %t81 = call ptr @fn_val(ptr %t80, ptr @.str3799) + %t81 = call ptr @fn_val(ptr %t80, ptr @.str3802) store ptr %t81, ptr %retval br label %ret ret: @@ -46967,27 +47020,27 @@ entry: %t9 = call ptr @fn_emit_expr(ptr %t8) store ptr %t9, ptr %t10 %t11 = load ptr, ptr %t0 - %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str3800) + %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str3803) %t13 = icmp ne i32 %t12, 0 br i1 %t13, label %then0, label %ifend2 then0: %t14 = load ptr, ptr %t10 %t15 = getelementptr inbounds %Cmp_Val, ptr %t14, i32 0, i32 0 %t16 = load ptr, ptr %t15 - %t17 = call ptr @lp_str_concat(ptr @.str3801, ptr %t16) - %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str3802) + %t17 = call ptr @lp_str_concat(ptr @.str3804, ptr %t16) + %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str3805) %t19 = call ptr @fn_emit_bind(ptr %t18) - %t20 = call ptr @fn_val(ptr %t19, ptr @.str3803) + %t20 = call ptr @fn_val(ptr %t19, ptr @.str3806) store ptr %t20, ptr %retval br label %ret ifend2: %t21 = load ptr, ptr %t10 %t22 = getelementptr inbounds %Cmp_Val, ptr %t21, i32 0, i32 0 %t23 = load ptr, ptr %t22 - %t24 = call ptr @lp_str_concat(ptr @.str3804, ptr %t23) - %t25 = call ptr @lp_str_concat(ptr %t24, ptr @.str3805) + %t24 = call ptr @lp_str_concat(ptr @.str3807, ptr %t23) + %t25 = call ptr @lp_str_concat(ptr %t24, ptr @.str3808) %t26 = call ptr @fn_emit_bind(ptr %t25) - %t27 = call ptr @fn_val(ptr %t26, ptr @.str3806) + %t27 = call ptr @fn_val(ptr %t26, ptr @.str3809) store ptr %t27, ptr %retval br label %ret ret: @@ -46997,13 +47050,13 @@ ret: define void @fn_emit_fs_prelude() { entry: - call void @fn_emith(ptr @.str3807) - call void @fn_emith(ptr @.str3808) - call void @fn_emith(ptr @.str3809) call void @fn_emith(ptr @.str3810) call void @fn_emith(ptr @.str3811) call void @fn_emith(ptr @.str3812) call void @fn_emith(ptr @.str3813) + call void @fn_emith(ptr @.str3814) + call void @fn_emith(ptr @.str3815) + call void @fn_emith(ptr @.str3816) call void @fn_emit_fs_common() call void @fn_emit_fs_path() call void @fn_emit_fs_io() @@ -47016,9 +47069,6 @@ ret: define void @fn_emit_fs_common() { entry: - call void @fn_emith(ptr @.str3814) - call void @fn_emith(ptr @.str3815) - call void @fn_emith(ptr @.str3816) call void @fn_emith(ptr @.str3817) call void @fn_emith(ptr @.str3818) call void @fn_emith(ptr @.str3819) @@ -47029,6 +47079,9 @@ entry: call void @fn_emith(ptr @.str3824) call void @fn_emith(ptr @.str3825) call void @fn_emith(ptr @.str3826) + call void @fn_emith(ptr @.str3827) + call void @fn_emith(ptr @.str3828) + call void @fn_emith(ptr @.str3829) br label %ret ret: ret void @@ -47036,9 +47089,6 @@ ret: define void @fn_emit_fs_path() { entry: - call void @fn_emith(ptr @.str3827) - call void @fn_emith(ptr @.str3828) - call void @fn_emith(ptr @.str3829) call void @fn_emith(ptr @.str3830) call void @fn_emith(ptr @.str3831) call void @fn_emith(ptr @.str3832) @@ -47078,6 +47128,9 @@ entry: call void @fn_emith(ptr @.str3866) call void @fn_emith(ptr @.str3867) call void @fn_emith(ptr @.str3868) + call void @fn_emith(ptr @.str3869) + call void @fn_emith(ptr @.str3870) + call void @fn_emith(ptr @.str3871) call void @fn_emit_fs_normalize() br label %ret ret: @@ -47086,9 +47139,6 @@ ret: define void @fn_emit_fs_normalize() { entry: - call void @fn_emith(ptr @.str3869) - call void @fn_emith(ptr @.str3870) - call void @fn_emith(ptr @.str3871) call void @fn_emith(ptr @.str3872) call void @fn_emith(ptr @.str3873) call void @fn_emith(ptr @.str3874) @@ -47123,6 +47173,9 @@ entry: call void @fn_emith(ptr @.str3903) call void @fn_emith(ptr @.str3904) call void @fn_emith(ptr @.str3905) + call void @fn_emith(ptr @.str3906) + call void @fn_emith(ptr @.str3907) + call void @fn_emith(ptr @.str3908) br label %ret ret: ret void @@ -47130,9 +47183,6 @@ ret: define void @fn_emit_fs_io() { entry: - call void @fn_emith(ptr @.str3906) - call void @fn_emith(ptr @.str3907) - call void @fn_emith(ptr @.str3908) call void @fn_emith(ptr @.str3909) call void @fn_emith(ptr @.str3910) call void @fn_emith(ptr @.str3911) @@ -47174,6 +47224,9 @@ entry: call void @fn_emith(ptr @.str3947) call void @fn_emith(ptr @.str3948) call void @fn_emith(ptr @.str3949) + call void @fn_emith(ptr @.str3950) + call void @fn_emith(ptr @.str3951) + call void @fn_emith(ptr @.str3952) br label %ret ret: ret void @@ -47181,9 +47234,6 @@ ret: define void @fn_emit_fs_dir() { entry: - call void @fn_emith(ptr @.str3950) - call void @fn_emith(ptr @.str3951) - call void @fn_emith(ptr @.str3952) call void @fn_emith(ptr @.str3953) call void @fn_emith(ptr @.str3954) call void @fn_emith(ptr @.str3955) @@ -47205,6 +47255,9 @@ entry: call void @fn_emith(ptr @.str3971) call void @fn_emith(ptr @.str3972) call void @fn_emith(ptr @.str3973) + call void @fn_emith(ptr @.str3974) + call void @fn_emith(ptr @.str3975) + call void @fn_emith(ptr @.str3976) br label %ret ret: ret void @@ -47263,7 +47316,7 @@ grow0: put1: %t30 = load ptr, ptr %t17 %t31 = getelementptr inbounds ptr, ptr %t30, i32 %t18 - store ptr @.str3974, ptr %t31 + store ptr @.str3977, ptr %t31 %t32 = add i32 %t18, 1 store i32 %t32, ptr %t15 %t33 = load ptr, ptr %t13 @@ -47290,7 +47343,7 @@ grow2: put3: %t49 = load ptr, ptr %t36 %t50 = getelementptr inbounds ptr, ptr %t49, i32 %t37 - store ptr @.str3975, ptr %t50 + store ptr @.str3978, ptr %t50 %t51 = add i32 %t37, 1 store i32 %t51, ptr %t34 %t52 = load ptr, ptr %t6 @@ -47317,7 +47370,7 @@ grow4: put5: %t68 = load ptr, ptr %t55 %t69 = getelementptr inbounds ptr, ptr %t68, i32 %t56 - store ptr @.str3976, ptr %t69 + store ptr @.str3979, ptr %t69 %t70 = add i32 %t56, 1 store i32 %t70, ptr %t53 %t71 = load ptr, ptr %t13 @@ -47344,7 +47397,7 @@ grow6: put7: %t87 = load ptr, ptr %t74 %t88 = getelementptr inbounds ptr, ptr %t87, i32 %t75 - store ptr @.str3977, ptr %t88 + store ptr @.str3980, ptr %t88 %t89 = add i32 %t75, 1 store i32 %t89, ptr %t72 %t90 = load ptr, ptr %t6 @@ -47371,7 +47424,7 @@ grow8: put9: %t106 = load ptr, ptr %t93 %t107 = getelementptr inbounds ptr, ptr %t106, i32 %t94 - store ptr @.str3978, ptr %t107 + store ptr @.str3981, ptr %t107 %t108 = add i32 %t94, 1 store i32 %t108, ptr %t91 %t109 = load ptr, ptr %t13 @@ -47398,7 +47451,7 @@ grow10: put11: %t125 = load ptr, ptr %t112 %t126 = getelementptr inbounds ptr, ptr %t125, i32 %t113 - store ptr @.str3979, ptr %t126 + store ptr @.str3982, ptr %t126 %t127 = add i32 %t113, 1 store i32 %t127, ptr %t110 %t128 = load ptr, ptr %t6 @@ -47425,7 +47478,7 @@ grow12: put13: %t144 = load ptr, ptr %t131 %t145 = getelementptr inbounds ptr, ptr %t144, i32 %t132 - store ptr @.str3980, ptr %t145 + store ptr @.str3983, ptr %t145 %t146 = add i32 %t132, 1 store i32 %t146, ptr %t129 %t147 = load ptr, ptr %t13 @@ -47452,7 +47505,7 @@ grow14: put15: %t163 = load ptr, ptr %t150 %t164 = getelementptr inbounds ptr, ptr %t163, i32 %t151 - store ptr @.str3981, ptr %t164 + store ptr @.str3984, ptr %t164 %t165 = add i32 %t151, 1 store i32 %t165, ptr %t148 %t166 = load ptr, ptr %t6 @@ -47479,7 +47532,7 @@ grow16: put17: %t182 = load ptr, ptr %t169 %t183 = getelementptr inbounds ptr, ptr %t182, i32 %t170 - store ptr @.str3982, ptr %t183 + store ptr @.str3985, ptr %t183 %t184 = add i32 %t170, 1 store i32 %t184, ptr %t167 %t185 = load ptr, ptr %t13 @@ -47506,7 +47559,7 @@ grow18: put19: %t201 = load ptr, ptr %t188 %t202 = getelementptr inbounds ptr, ptr %t201, i32 %t189 - store ptr @.str3983, ptr %t202 + store ptr @.str3986, ptr %t202 %t203 = add i32 %t189, 1 store i32 %t203, ptr %t186 %t204 = load ptr, ptr %t6 @@ -47533,7 +47586,7 @@ grow20: put21: %t220 = load ptr, ptr %t207 %t221 = getelementptr inbounds ptr, ptr %t220, i32 %t208 - store ptr @.str3984, ptr %t221 + store ptr @.str3987, ptr %t221 %t222 = add i32 %t208, 1 store i32 %t222, ptr %t205 %t223 = load ptr, ptr %t13 @@ -47560,7 +47613,7 @@ grow22: put23: %t239 = load ptr, ptr %t226 %t240 = getelementptr inbounds ptr, ptr %t239, i32 %t227 - store ptr @.str3985, ptr %t240 + store ptr @.str3988, ptr %t240 %t241 = add i32 %t227, 1 store i32 %t241, ptr %t224 %t242 = load ptr, ptr %t6 @@ -47587,7 +47640,7 @@ grow24: put25: %t258 = load ptr, ptr %t245 %t259 = getelementptr inbounds ptr, ptr %t258, i32 %t246 - store ptr @.str3986, ptr %t259 + store ptr @.str3989, ptr %t259 %t260 = add i32 %t246, 1 store i32 %t260, ptr %t243 %t261 = load ptr, ptr %t13 @@ -47614,7 +47667,7 @@ grow26: put27: %t277 = load ptr, ptr %t264 %t278 = getelementptr inbounds ptr, ptr %t277, i32 %t265 - store ptr @.str3987, ptr %t278 + store ptr @.str3990, ptr %t278 %t279 = add i32 %t265, 1 store i32 %t279, ptr %t262 %t280 = load ptr, ptr %t6 @@ -47641,7 +47694,7 @@ grow28: put29: %t296 = load ptr, ptr %t283 %t297 = getelementptr inbounds ptr, ptr %t296, i32 %t284 - store ptr @.str3988, ptr %t297 + store ptr @.str3991, ptr %t297 %t298 = add i32 %t284, 1 store i32 %t298, ptr %t281 %t299 = load ptr, ptr %t13 @@ -47668,7 +47721,7 @@ grow30: put31: %t315 = load ptr, ptr %t302 %t316 = getelementptr inbounds ptr, ptr %t315, i32 %t303 - store ptr @.str3989, ptr %t316 + store ptr @.str3992, ptr %t316 %t317 = add i32 %t303, 1 store i32 %t317, ptr %t300 %t318 = load ptr, ptr %t6 @@ -47695,7 +47748,7 @@ grow32: put33: %t334 = load ptr, ptr %t321 %t335 = getelementptr inbounds ptr, ptr %t334, i32 %t322 - store ptr @.str3990, ptr %t335 + store ptr @.str3993, ptr %t335 %t336 = add i32 %t322, 1 store i32 %t336, ptr %t319 %t337 = load ptr, ptr %t13 @@ -47722,7 +47775,7 @@ grow34: put35: %t353 = load ptr, ptr %t340 %t354 = getelementptr inbounds ptr, ptr %t353, i32 %t341 - store ptr @.str3991, ptr %t354 + store ptr @.str3994, ptr %t354 %t355 = add i32 %t341, 1 store i32 %t355, ptr %t338 %t356 = load ptr, ptr %t6 @@ -47749,7 +47802,7 @@ grow36: put37: %t372 = load ptr, ptr %t359 %t373 = getelementptr inbounds ptr, ptr %t372, i32 %t360 - store ptr @.str3992, ptr %t373 + store ptr @.str3995, ptr %t373 %t374 = add i32 %t360, 1 store i32 %t374, ptr %t357 %t375 = load ptr, ptr %t13 @@ -47776,7 +47829,7 @@ grow38: put39: %t391 = load ptr, ptr %t378 %t392 = getelementptr inbounds ptr, ptr %t391, i32 %t379 - store ptr @.str3993, ptr %t392 + store ptr @.str3996, ptr %t392 %t393 = add i32 %t379, 1 store i32 %t393, ptr %t376 %t394 = load ptr, ptr %t6 @@ -47803,7 +47856,7 @@ grow40: put41: %t410 = load ptr, ptr %t397 %t411 = getelementptr inbounds ptr, ptr %t410, i32 %t398 - store ptr @.str3994, ptr %t411 + store ptr @.str3997, ptr %t411 %t412 = add i32 %t398, 1 store i32 %t412, ptr %t395 %t413 = load ptr, ptr %t13 @@ -47830,7 +47883,7 @@ grow42: put43: %t429 = load ptr, ptr %t416 %t430 = getelementptr inbounds ptr, ptr %t429, i32 %t417 - store ptr @.str3995, ptr %t430 + store ptr @.str3998, ptr %t430 %t431 = add i32 %t417, 1 store i32 %t431, ptr %t414 %t432 = load ptr, ptr %t6 @@ -47857,7 +47910,7 @@ grow44: put45: %t448 = load ptr, ptr %t435 %t449 = getelementptr inbounds ptr, ptr %t448, i32 %t436 - store ptr @.str3996, ptr %t449 + store ptr @.str3999, ptr %t449 %t450 = add i32 %t436, 1 store i32 %t450, ptr %t433 %t451 = load ptr, ptr %t13 @@ -47884,7 +47937,7 @@ grow46: put47: %t467 = load ptr, ptr %t454 %t468 = getelementptr inbounds ptr, ptr %t467, i32 %t455 - store ptr @.str3997, ptr %t468 + store ptr @.str4000, ptr %t468 %t469 = add i32 %t455, 1 store i32 %t469, ptr %t452 %t470 = load ptr, ptr %t6 @@ -47911,7 +47964,7 @@ grow48: put49: %t486 = load ptr, ptr %t473 %t487 = getelementptr inbounds ptr, ptr %t486, i32 %t474 - store ptr @.str3998, ptr %t487 + store ptr @.str4001, ptr %t487 %t488 = add i32 %t474, 1 store i32 %t488, ptr %t471 %t489 = load ptr, ptr %t13 @@ -47938,7 +47991,7 @@ grow50: put51: %t505 = load ptr, ptr %t492 %t506 = getelementptr inbounds ptr, ptr %t505, i32 %t493 - store ptr @.str3999, ptr %t506 + store ptr @.str4002, ptr %t506 %t507 = add i32 %t493, 1 store i32 %t507, ptr %t490 %t508 = load ptr, ptr %t6 @@ -47965,7 +48018,7 @@ grow52: put53: %t524 = load ptr, ptr %t511 %t525 = getelementptr inbounds ptr, ptr %t524, i32 %t512 - store ptr @.str4000, ptr %t525 + store ptr @.str4003, ptr %t525 %t526 = add i32 %t512, 1 store i32 %t526, ptr %t509 %t527 = load ptr, ptr %t13 @@ -47992,7 +48045,7 @@ grow54: put55: %t543 = load ptr, ptr %t530 %t544 = getelementptr inbounds ptr, ptr %t543, i32 %t531 - store ptr @.str4001, ptr %t544 + store ptr @.str4004, ptr %t544 %t545 = add i32 %t531, 1 store i32 %t545, ptr %t528 %t546 = load ptr, ptr %t6 @@ -48019,7 +48072,7 @@ grow56: put57: %t562 = load ptr, ptr %t549 %t563 = getelementptr inbounds ptr, ptr %t562, i32 %t550 - store ptr @.str4002, ptr %t563 + store ptr @.str4005, ptr %t563 %t564 = add i32 %t550, 1 store i32 %t564, ptr %t547 %t565 = load ptr, ptr %t13 @@ -48046,7 +48099,7 @@ grow58: put59: %t581 = load ptr, ptr %t568 %t582 = getelementptr inbounds ptr, ptr %t581, i32 %t569 - store ptr @.str4003, ptr %t582 + store ptr @.str4006, ptr %t582 %t583 = add i32 %t569, 1 store i32 %t583, ptr %t566 %t584 = load ptr, ptr %t6 @@ -48073,7 +48126,7 @@ grow60: put61: %t600 = load ptr, ptr %t587 %t601 = getelementptr inbounds ptr, ptr %t600, i32 %t588 - store ptr @.str4004, ptr %t601 + store ptr @.str4007, ptr %t601 %t602 = add i32 %t588, 1 store i32 %t602, ptr %t585 %t603 = load ptr, ptr %t13 @@ -48100,7 +48153,7 @@ grow62: put63: %t619 = load ptr, ptr %t606 %t620 = getelementptr inbounds ptr, ptr %t619, i32 %t607 - store ptr @.str4005, ptr %t620 + store ptr @.str4008, ptr %t620 %t621 = add i32 %t607, 1 store i32 %t621, ptr %t604 %t622 = load ptr, ptr %t6 @@ -48127,7 +48180,7 @@ grow64: put65: %t638 = load ptr, ptr %t625 %t639 = getelementptr inbounds ptr, ptr %t638, i32 %t626 - store ptr @.str4006, ptr %t639 + store ptr @.str4009, ptr %t639 %t640 = add i32 %t626, 1 store i32 %t640, ptr %t623 %t641 = load ptr, ptr %t13 @@ -48154,7 +48207,7 @@ grow66: put67: %t657 = load ptr, ptr %t644 %t658 = getelementptr inbounds ptr, ptr %t657, i32 %t645 - store ptr @.str4007, ptr %t658 + store ptr @.str4010, ptr %t658 %t659 = add i32 %t645, 1 store i32 %t659, ptr %t642 %t660 = load ptr, ptr %t6 @@ -48181,7 +48234,7 @@ grow68: put69: %t676 = load ptr, ptr %t663 %t677 = getelementptr inbounds ptr, ptr %t676, i32 %t664 - store ptr @.str4008, ptr %t677 + store ptr @.str4011, ptr %t677 %t678 = add i32 %t664, 1 store i32 %t678, ptr %t661 %t679 = load ptr, ptr %t13 @@ -48208,7 +48261,7 @@ grow70: put71: %t695 = load ptr, ptr %t682 %t696 = getelementptr inbounds ptr, ptr %t695, i32 %t683 - store ptr @.str4009, ptr %t696 + store ptr @.str4012, ptr %t696 %t697 = add i32 %t683, 1 store i32 %t697, ptr %t680 %t698 = load ptr, ptr %t6 @@ -48235,7 +48288,7 @@ grow72: put73: %t714 = load ptr, ptr %t701 %t715 = getelementptr inbounds ptr, ptr %t714, i32 %t702 - store ptr @.str4010, ptr %t715 + store ptr @.str4013, ptr %t715 %t716 = add i32 %t702, 1 store i32 %t716, ptr %t699 %t717 = load ptr, ptr %t13 @@ -48262,7 +48315,7 @@ grow74: put75: %t733 = load ptr, ptr %t720 %t734 = getelementptr inbounds ptr, ptr %t733, i32 %t721 - store ptr @.str4011, ptr %t734 + store ptr @.str4014, ptr %t734 %t735 = add i32 %t721, 1 store i32 %t735, ptr %t718 %t736 = load ptr, ptr %t6 @@ -48289,7 +48342,7 @@ grow76: put77: %t752 = load ptr, ptr %t739 %t753 = getelementptr inbounds ptr, ptr %t752, i32 %t740 - store ptr @.str4012, ptr %t753 + store ptr @.str4015, ptr %t753 %t754 = add i32 %t740, 1 store i32 %t754, ptr %t737 %t755 = load ptr, ptr %t13 @@ -48316,7 +48369,7 @@ grow78: put79: %t771 = load ptr, ptr %t758 %t772 = getelementptr inbounds ptr, ptr %t771, i32 %t759 - store ptr @.str4013, ptr %t772 + store ptr @.str4016, ptr %t772 %t773 = add i32 %t759, 1 store i32 %t773, ptr %t756 %t774 = load ptr, ptr %t6 @@ -48343,7 +48396,7 @@ grow80: put81: %t790 = load ptr, ptr %t777 %t791 = getelementptr inbounds ptr, ptr %t790, i32 %t778 - store ptr @.str4014, ptr %t791 + store ptr @.str4017, ptr %t791 %t792 = add i32 %t778, 1 store i32 %t792, ptr %t775 %t793 = load ptr, ptr %t13 @@ -48370,7 +48423,7 @@ grow82: put83: %t809 = load ptr, ptr %t796 %t810 = getelementptr inbounds ptr, ptr %t809, i32 %t797 - store ptr @.str4015, ptr %t810 + store ptr @.str4018, ptr %t810 %t811 = add i32 %t797, 1 store i32 %t811, ptr %t794 %t812 = load ptr, ptr %t6 @@ -48397,7 +48450,7 @@ grow84: put85: %t828 = load ptr, ptr %t815 %t829 = getelementptr inbounds ptr, ptr %t828, i32 %t816 - store ptr @.str4016, ptr %t829 + store ptr @.str4019, ptr %t829 %t830 = add i32 %t816, 1 store i32 %t830, ptr %t813 %t831 = load ptr, ptr %t13 @@ -48424,7 +48477,7 @@ grow86: put87: %t847 = load ptr, ptr %t834 %t848 = getelementptr inbounds ptr, ptr %t847, i32 %t835 - store ptr @.str4017, ptr %t848 + store ptr @.str4020, ptr %t848 %t849 = add i32 %t835, 1 store i32 %t849, ptr %t832 %t850 = load ptr, ptr %t6 @@ -48451,7 +48504,7 @@ grow88: put89: %t866 = load ptr, ptr %t853 %t867 = getelementptr inbounds ptr, ptr %t866, i32 %t854 - store ptr @.str4018, ptr %t867 + store ptr @.str4021, ptr %t867 %t868 = add i32 %t854, 1 store i32 %t868, ptr %t851 %t869 = load ptr, ptr %t13 @@ -48478,7 +48531,7 @@ grow90: put91: %t885 = load ptr, ptr %t872 %t886 = getelementptr inbounds ptr, ptr %t885, i32 %t873 - store ptr @.str4019, ptr %t886 + store ptr @.str4022, ptr %t886 %t887 = add i32 %t873, 1 store i32 %t887, ptr %t870 %t888 = load ptr, ptr %t6 @@ -48505,7 +48558,7 @@ grow92: put93: %t904 = load ptr, ptr %t891 %t905 = getelementptr inbounds ptr, ptr %t904, i32 %t892 - store ptr @.str4020, ptr %t905 + store ptr @.str4023, ptr %t905 %t906 = add i32 %t892, 1 store i32 %t906, ptr %t889 %t907 = load ptr, ptr %t13 @@ -48532,7 +48585,7 @@ grow94: put95: %t923 = load ptr, ptr %t910 %t924 = getelementptr inbounds ptr, ptr %t923, i32 %t911 - store ptr @.str4021, ptr %t924 + store ptr @.str4024, ptr %t924 %t925 = add i32 %t911, 1 store i32 %t925, ptr %t908 %t926 = getelementptr %LSlice, ptr null, i32 1 @@ -48640,7 +48693,7 @@ put102: store i32 %t1001, ptr %t940 br label %wcond96 wend98: - %t1002 = call ptr @fn_emit_str_const(ptr @.str4022) + %t1002 = call ptr @fn_emit_str_const(ptr @.str4025) store ptr %t1002, ptr %t1003 %t1004 = load ptr, ptr %t6 %t1005 = getelementptr inbounds %LSlice, ptr %t1004, i32 0, i32 1 @@ -48648,8 +48701,8 @@ wend98: store i32 %t1006, ptr %t1007 %t1008 = load i32, ptr %t1007 %t1009 = call ptr @fn_itoa(i32 %t1008) - %t1010 = call ptr @lp_str_concat(ptr @.str4023, ptr %t1009) - %t1011 = call ptr @lp_str_concat(ptr %t1010, ptr @.str4024) + %t1010 = call ptr @lp_str_concat(ptr @.str4026, ptr %t1009) + %t1011 = call ptr @lp_str_concat(ptr %t1010, ptr @.str4027) call void @fn_emith(ptr %t1011) store i32 0, ptr %t940 br label %wcond103 @@ -48669,7 +48722,7 @@ wbody104: %t1022 = icmp ne i32 %t1021, 0 br i1 %t1022, label %then106, label %ifend108 then106: - call void @fn_emith(ptr @.str4025) + call void @fn_emith(ptr @.str4028) br label %ifend108 ifend108: %t1023 = load ptr, ptr %t932 @@ -48678,8 +48731,8 @@ ifend108: %t1026 = load i32, ptr %t940 %t1027 = getelementptr inbounds ptr, ptr %t1025, i32 %t1026 %t1028 = load ptr, ptr %t1027 - %t1029 = call ptr @lp_str_concat(ptr @.str4026, ptr %t1028) - %t1030 = call ptr @lp_str_concat(ptr %t1029, ptr @.str4027) + %t1029 = call ptr @lp_str_concat(ptr @.str4029, ptr %t1028) + %t1030 = call ptr @lp_str_concat(ptr %t1029, ptr @.str4030) %t1031 = load ptr, ptr %t939 %t1032 = getelementptr inbounds %LSlice, ptr %t1031, i32 0, i32 0 %t1033 = load ptr, ptr %t1032 @@ -48687,43 +48740,43 @@ ifend108: %t1035 = getelementptr inbounds ptr, ptr %t1033, i32 %t1034 %t1036 = load ptr, ptr %t1035 %t1037 = call ptr @lp_str_concat(ptr %t1030, ptr %t1036) - %t1038 = call ptr @lp_str_concat(ptr %t1037, ptr @.str4028) + %t1038 = call ptr @lp_str_concat(ptr %t1037, ptr @.str4031) call void @fn_emith(ptr %t1038) %t1039 = load i32, ptr %t940 %t1040 = add i32 %t1039, 1 store i32 %t1040, ptr %t940 br label %wcond103 wend105: - call void @fn_emith(ptr @.str4029) - call void @fn_emith(ptr @.str4030) - call void @fn_emith(ptr @.str4031) + call void @fn_emith(ptr @.str4032) + call void @fn_emith(ptr @.str4033) + call void @fn_emith(ptr @.str4034) %t1041 = load i32, ptr %t1007 %t1042 = call ptr @fn_itoa(i32 %t1041) - %t1043 = call ptr @lp_str_concat(ptr @.str4032, ptr %t1042) - %t1044 = call ptr @lp_str_concat(ptr %t1043, ptr @.str4033) + %t1043 = call ptr @lp_str_concat(ptr @.str4035, ptr %t1042) + %t1044 = call ptr @lp_str_concat(ptr %t1043, ptr @.str4036) call void @fn_emith(ptr %t1044) %t1045 = load i32, ptr %t1007 %t1046 = call ptr @fn_itoa(i32 %t1045) - %t1047 = call ptr @lp_str_concat(ptr @.str4034, ptr %t1046) - %t1048 = call ptr @lp_str_concat(ptr %t1047, ptr @.str4035) + %t1047 = call ptr @lp_str_concat(ptr @.str4037, ptr %t1046) + %t1048 = call ptr @lp_str_concat(ptr %t1047, ptr @.str4038) call void @fn_emith(ptr %t1048) %t1049 = load i32, ptr %t1007 %t1050 = call ptr @fn_itoa(i32 %t1049) - %t1051 = call ptr @lp_str_concat(ptr @.str4036, ptr %t1050) - %t1052 = call ptr @lp_str_concat(ptr %t1051, ptr @.str4037) + %t1051 = call ptr @lp_str_concat(ptr @.str4039, ptr %t1050) + %t1052 = call ptr @lp_str_concat(ptr %t1051, ptr @.str4040) call void @fn_emith(ptr %t1052) - call void @fn_emith(ptr @.str4038) - %t1053 = load ptr, ptr %t1003 - %t1054 = call ptr @lp_str_concat(ptr @.str4039, ptr %t1053) - %t1055 = call ptr @lp_str_concat(ptr %t1054, ptr @.str4040) - call void @fn_emith(ptr %t1055) call void @fn_emith(ptr @.str4041) - call void @fn_emith(ptr @.str4042) - call void @fn_emith(ptr @.str4043) + %t1053 = load ptr, ptr %t1003 + %t1054 = call ptr @lp_str_concat(ptr @.str4042, ptr %t1053) + %t1055 = call ptr @lp_str_concat(ptr %t1054, ptr @.str4043) + call void @fn_emith(ptr %t1055) call void @fn_emith(ptr @.str4044) call void @fn_emith(ptr @.str4045) call void @fn_emith(ptr @.str4046) call void @fn_emith(ptr @.str4047) + call void @fn_emith(ptr @.str4048) + call void @fn_emith(ptr @.str4049) + call void @fn_emith(ptr @.str4050) call void @fn_emit_fs_sniff() br label %ret ret: @@ -48732,9 +48785,6 @@ ret: define void @fn_emit_fs_sniff() { entry: - call void @fn_emith(ptr @.str4048) - call void @fn_emith(ptr @.str4049) - call void @fn_emith(ptr @.str4050) call void @fn_emith(ptr @.str4051) call void @fn_emith(ptr @.str4052) call void @fn_emith(ptr @.str4053) @@ -48756,6 +48806,9 @@ entry: call void @fn_emith(ptr @.str4069) call void @fn_emith(ptr @.str4070) call void @fn_emith(ptr @.str4071) + call void @fn_emith(ptr @.str4072) + call void @fn_emith(ptr @.str4073) + call void @fn_emith(ptr @.str4074) br label %ret ret: ret void @@ -48776,15 +48829,15 @@ entry: %t4 = call ptr @fn_slice_field(ptr %t3, i32 0) store ptr %t4, ptr %t5 %t6 = load ptr, ptr %t5 - %t7 = call ptr @lp_str_concat(ptr @.str4072, ptr %t6) + %t7 = call ptr @lp_str_concat(ptr @.str4075, ptr %t6) %t8 = call ptr @fn_emit_bind(ptr %t7) store ptr %t8, ptr %t9 %t10 = load ptr, ptr %t1 - %t11 = call ptr @lp_str_concat(ptr @.str4073, ptr %t10) - %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str4074) + %t11 = call ptr @lp_str_concat(ptr @.str4076, ptr %t10) + %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str4077) %t13 = load ptr, ptr %t9 %t14 = call ptr @lp_str_concat(ptr %t12, ptr %t13) - %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str4075) + %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str4078) %t16 = load ptr, ptr %t2 %t17 = call ptr @lp_str_concat(ptr %t15, ptr %t16) %t18 = call ptr @fn_emit_bind(ptr %t17) @@ -48814,14 +48867,14 @@ entry: %t102 = alloca i32 store ptr %arg_meth, ptr %t0 %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str4076) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str4079) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t3 br i1 %t6, label %scend1, label %sc0 sc0: %t8 = load ptr, ptr %t0 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str4077) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str4080) %t10 = icmp ne i32 %t9, 0 %t11 = zext i1 %t10 to i32 store i32 %t11, ptr %t3 @@ -48834,7 +48887,7 @@ scend1: br i1 %t13, label %scend3, label %sc2 sc2: %t15 = load ptr, ptr %t0 - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str4078) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str4081) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t2 @@ -48847,7 +48900,7 @@ scend3: br i1 %t20, label %scend5, label %sc4 sc4: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str4079) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str4082) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t1 @@ -48861,14 +48914,14 @@ then6: br label %ret ifend8: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str4080) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str4083) %t33 = icmp ne i32 %t32, 0 %t34 = zext i1 %t33 to i32 store i32 %t34, ptr %t30 br i1 %t33, label %scend10, label %sc9 sc9: %t35 = load ptr, ptr %t0 - %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str4081) + %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str4084) %t37 = icmp ne i32 %t36, 0 %t38 = zext i1 %t37 to i32 store i32 %t38, ptr %t30 @@ -48881,7 +48934,7 @@ scend10: br i1 %t40, label %scend12, label %sc11 sc11: %t42 = load ptr, ptr %t0 - %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str4082) + %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str4085) %t44 = icmp ne i32 %t43, 0 %t45 = zext i1 %t44 to i32 store i32 %t45, ptr %t29 @@ -48894,7 +48947,7 @@ scend12: br i1 %t47, label %scend14, label %sc13 sc13: %t49 = load ptr, ptr %t0 - %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str4083) + %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str4086) %t51 = icmp ne i32 %t50, 0 %t52 = zext i1 %t51 to i32 store i32 %t52, ptr %t28 @@ -48908,14 +48961,14 @@ then15: br label %ret ifend17: %t57 = load ptr, ptr %t0 - %t58 = call i32 @lp_str_eq(ptr %t57, ptr @.str4084) + %t58 = call i32 @lp_str_eq(ptr %t57, ptr @.str4087) %t59 = icmp ne i32 %t58, 0 %t60 = zext i1 %t59 to i32 store i32 %t60, ptr %t56 br i1 %t59, label %scend19, label %sc18 sc18: %t61 = load ptr, ptr %t0 - %t62 = call i32 @lp_str_eq(ptr %t61, ptr @.str4085) + %t62 = call i32 @lp_str_eq(ptr %t61, ptr @.str4088) %t63 = icmp ne i32 %t62, 0 %t64 = zext i1 %t63 to i32 store i32 %t64, ptr %t56 @@ -48928,7 +48981,7 @@ scend19: br i1 %t66, label %scend21, label %sc20 sc20: %t68 = load ptr, ptr %t0 - %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str4086) + %t69 = call i32 @lp_str_eq(ptr %t68, ptr @.str4089) %t70 = icmp ne i32 %t69, 0 %t71 = zext i1 %t70 to i32 store i32 %t71, ptr %t55 @@ -48942,14 +48995,14 @@ then22: br label %ret ifend24: %t77 = load ptr, ptr %t0 - %t78 = call i32 @lp_str_eq(ptr %t77, ptr @.str4087) + %t78 = call i32 @lp_str_eq(ptr %t77, ptr @.str4090) %t79 = icmp ne i32 %t78, 0 %t80 = zext i1 %t79 to i32 store i32 %t80, ptr %t76 br i1 %t79, label %scend26, label %sc25 sc25: %t81 = load ptr, ptr %t0 - %t82 = call i32 @lp_str_eq(ptr %t81, ptr @.str4088) + %t82 = call i32 @lp_str_eq(ptr %t81, ptr @.str4091) %t83 = icmp ne i32 %t82, 0 %t84 = zext i1 %t83 to i32 store i32 %t84, ptr %t76 @@ -48962,7 +49015,7 @@ scend26: br i1 %t86, label %scend28, label %sc27 sc27: %t88 = load ptr, ptr %t0 - %t89 = call i32 @lp_str_eq(ptr %t88, ptr @.str4089) + %t89 = call i32 @lp_str_eq(ptr %t88, ptr @.str4092) %t90 = icmp ne i32 %t89, 0 %t91 = zext i1 %t90 to i32 store i32 %t91, ptr %t75 @@ -48975,7 +49028,7 @@ scend28: br i1 %t93, label %scend30, label %sc29 sc29: %t95 = load ptr, ptr %t0 - %t96 = call i32 @lp_str_eq(ptr %t95, ptr @.str4090) + %t96 = call i32 @lp_str_eq(ptr %t95, ptr @.str4093) %t97 = icmp ne i32 %t96, 0 %t98 = zext i1 %t97 to i32 store i32 %t98, ptr %t74 @@ -48989,14 +49042,14 @@ then31: br label %ret ifend33: %t103 = load ptr, ptr %t0 - %t104 = call i32 @lp_str_eq(ptr %t103, ptr @.str4091) + %t104 = call i32 @lp_str_eq(ptr %t103, ptr @.str4094) %t105 = icmp ne i32 %t104, 0 %t106 = zext i1 %t105 to i32 store i32 %t106, ptr %t102 br i1 %t105, label %scend35, label %sc34 sc34: %t107 = load ptr, ptr %t0 - %t108 = call i32 @lp_str_eq(ptr %t107, ptr @.str4092) + %t108 = call i32 @lp_str_eq(ptr %t107, ptr @.str4095) %t109 = icmp ne i32 %t108, 0 %t110 = zext i1 %t109 to i32 store i32 %t110, ptr %t102 @@ -49009,7 +49062,7 @@ scend35: br i1 %t112, label %scend37, label %sc36 sc36: %t114 = load ptr, ptr %t0 - %t115 = call i32 @lp_str_eq(ptr %t114, ptr @.str4093) + %t115 = call i32 @lp_str_eq(ptr %t114, ptr @.str4096) %t116 = icmp ne i32 %t115, 0 %t117 = zext i1 %t116 to i32 store i32 %t117, ptr %t101 @@ -49061,50 +49114,50 @@ entry: %t9 = call ptr @fn_slice_field(ptr %t8, i32 0) store ptr %t9, ptr %t10 %t11 = load ptr, ptr %t4 - %t12 = call ptr @lp_str_concat(ptr @.str4094, ptr %t11) + %t12 = call ptr @lp_str_concat(ptr @.str4097, ptr %t11) %t13 = call ptr @fn_emit_bind(ptr %t12) store ptr %t13, ptr %t14 %t15 = load ptr, ptr %t7 - %t16 = call ptr @lp_str_concat(ptr @.str4095, ptr %t15) + %t16 = call ptr @lp_str_concat(ptr @.str4098, ptr %t15) %t17 = call ptr @fn_emit_bind(ptr %t16) store ptr %t17, ptr %t18 %t19 = load ptr, ptr %t14 - %t20 = call ptr @lp_str_concat(ptr @.str4096, ptr %t19) - %t21 = call ptr @lp_str_concat(ptr %t20, ptr @.str4097) + %t20 = call ptr @lp_str_concat(ptr @.str4099, ptr %t19) + %t21 = call ptr @lp_str_concat(ptr %t20, ptr @.str4100) %t22 = load ptr, ptr %t18 %t23 = call ptr @lp_str_concat(ptr %t21, ptr %t22) %t24 = call ptr @fn_emit_bind(ptr %t23) store ptr %t24, ptr %t25 - %t26 = call ptr @fn_lbl(ptr @.str4098) + %t26 = call ptr @fn_lbl(ptr @.str4101) store ptr %t26, ptr %t27 - %t28 = call ptr @fn_lbl(ptr @.str4099) + %t28 = call ptr @fn_lbl(ptr @.str4102) store ptr %t28, ptr %t29 - call void @fn_emit(ptr @.str4100) + call void @fn_emit(ptr @.str4103) %t30 = load ptr, ptr %t25 call void @fn_emit(ptr %t30) - call void @fn_emit(ptr @.str4101) + call void @fn_emit(ptr @.str4104) %t31 = load ptr, ptr %t27 call void @fn_emit(ptr %t31) - call void @fn_emit(ptr @.str4102) + call void @fn_emit(ptr @.str4105) %t32 = load ptr, ptr %t29 call void @fn_emit(ptr %t32) - call void @fn_emit(ptr @.str4103) + call void @fn_emit(ptr @.str4106) %t33 = load ptr, ptr %t27 call void @fn_emit(ptr %t33) - call void @fn_emit(ptr @.str4104) + call void @fn_emit(ptr @.str4107) %t34 = load ptr, ptr %t18 - %t35 = call ptr @lp_str_concat(ptr @.str4105, ptr %t34) - %t36 = call ptr @lp_str_concat(ptr %t35, ptr @.str4106) + %t35 = call ptr @lp_str_concat(ptr @.str4108, ptr %t34) + %t36 = call ptr @lp_str_concat(ptr %t35, ptr @.str4109) %t37 = call ptr @fn_emit_bind(ptr %t36) store ptr %t37, ptr %t38 %t39 = load ptr, ptr %t18 - %t40 = call ptr @lp_str_concat(ptr @.str4107, ptr %t39) - %t41 = call ptr @lp_str_concat(ptr %t40, ptr @.str4108) + %t40 = call ptr @lp_str_concat(ptr @.str4110, ptr %t39) + %t41 = call ptr @lp_str_concat(ptr %t40, ptr @.str4111) %t42 = call ptr @fn_emit_bind(ptr %t41) store ptr %t42, ptr %t43 %t44 = load ptr, ptr %t43 - %t45 = call ptr @lp_str_concat(ptr @.str4109, ptr %t44) - %t46 = call ptr @lp_str_concat(ptr %t45, ptr @.str4110) + %t45 = call ptr @lp_str_concat(ptr @.str4112, ptr %t44) + %t46 = call ptr @lp_str_concat(ptr %t45, ptr @.str4113) %t47 = load ptr, ptr %t38 %t48 = call ptr @lp_str_concat(ptr %t46, ptr %t47) %t49 = call ptr @fn_emit_bind(ptr %t48) @@ -49113,50 +49166,50 @@ entry: %t52 = call ptr @fn_emit_sizeof(ptr %t51) store ptr %t52, ptr %t53 %t54 = load ptr, ptr %t50 - %t55 = call ptr @lp_str_concat(ptr @.str4111, ptr %t54) - %t56 = call ptr @lp_str_concat(ptr %t55, ptr @.str4112) + %t55 = call ptr @lp_str_concat(ptr @.str4114, ptr %t54) + %t56 = call ptr @lp_str_concat(ptr %t55, ptr @.str4115) %t57 = call ptr @fn_emit_bind(ptr %t56) store ptr %t57, ptr %t58 %t59 = load ptr, ptr %t58 - %t60 = call ptr @lp_str_concat(ptr @.str4113, ptr %t59) - %t61 = call ptr @lp_str_concat(ptr %t60, ptr @.str4114) + %t60 = call ptr @lp_str_concat(ptr @.str4116, ptr %t59) + %t61 = call ptr @lp_str_concat(ptr %t60, ptr @.str4117) %t62 = load ptr, ptr %t53 %t63 = call ptr @lp_str_concat(ptr %t61, ptr %t62) %t64 = call ptr @fn_emit_bind(ptr %t63) store ptr %t64, ptr %t65 %t66 = load ptr, ptr %t10 - %t67 = call ptr @lp_str_concat(ptr @.str4115, ptr %t66) + %t67 = call ptr @lp_str_concat(ptr @.str4118, ptr %t66) %t68 = call ptr @fn_emit_bind(ptr %t67) store ptr %t68, ptr %t69 %t70 = load ptr, ptr %t69 - %t71 = call ptr @lp_str_concat(ptr @.str4116, ptr %t70) - %t72 = call ptr @lp_str_concat(ptr %t71, ptr @.str4117) + %t71 = call ptr @lp_str_concat(ptr @.str4119, ptr %t70) + %t72 = call ptr @lp_str_concat(ptr %t71, ptr @.str4120) %t73 = load ptr, ptr %t65 %t74 = call ptr @lp_str_concat(ptr %t72, ptr %t73) - %t75 = call ptr @lp_str_concat(ptr %t74, ptr @.str4118) + %t75 = call ptr @lp_str_concat(ptr %t74, ptr @.str4121) %t76 = call ptr @fn_emit_bind(ptr %t75) store ptr %t76, ptr %t77 - call void @fn_emit(ptr @.str4119) + call void @fn_emit(ptr @.str4122) %t78 = load ptr, ptr %t77 call void @fn_emit(ptr %t78) - call void @fn_emit(ptr @.str4120) + call void @fn_emit(ptr @.str4123) %t79 = load ptr, ptr %t10 call void @fn_emit(ptr %t79) - call void @fn_emit(ptr @.str4121) - call void @fn_emit(ptr @.str4122) - %t80 = load ptr, ptr %t50 - call void @fn_emit(ptr %t80) - call void @fn_emit(ptr @.str4123) - %t81 = load ptr, ptr %t7 - call void @fn_emit(ptr %t81) call void @fn_emit(ptr @.str4124) call void @fn_emit(ptr @.str4125) + %t80 = load ptr, ptr %t50 + call void @fn_emit(ptr %t80) + call void @fn_emit(ptr @.str4126) + %t81 = load ptr, ptr %t7 + call void @fn_emit(ptr %t81) + call void @fn_emit(ptr @.str4127) + call void @fn_emit(ptr @.str4128) %t82 = load ptr, ptr %t29 call void @fn_emit(ptr %t82) - call void @fn_emit(ptr @.str4126) + call void @fn_emit(ptr @.str4129) %t83 = load ptr, ptr %t29 call void @fn_emit(ptr %t83) - call void @fn_emit(ptr @.str4127) + call void @fn_emit(ptr @.str4130) br label %ret ret: ret void @@ -49172,11 +49225,11 @@ entry: store ptr %arg_elt, ptr %t1 store ptr %arg_idx, ptr %t2 %t3 = load ptr, ptr %t1 - %t4 = call ptr @lp_str_concat(ptr @.str4128, ptr %t3) - %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str4129) + %t4 = call ptr @lp_str_concat(ptr @.str4131, ptr %t3) + %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str4132) %t6 = load ptr, ptr %t0 %t7 = call ptr @lp_str_concat(ptr %t5, ptr %t6) - %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str4130) + %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str4133) %t9 = load ptr, ptr %t2 %t10 = call ptr @lp_str_concat(ptr %t8, ptr %t9) %t11 = call ptr @fn_emit_bind(ptr %t10) @@ -49212,11 +49265,11 @@ entry: br i1 %t9, label %then0, label %ifend2 then0: %t10 = load ptr, ptr %t0 - %t11 = call ptr @lp_str_concat(ptr @.str4131, ptr %t10) - %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str4132) + %t11 = call ptr @lp_str_concat(ptr @.str4134, ptr %t10) + %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str4135) %t13 = load ptr, ptr %t5 %t14 = call ptr @lp_str_concat(ptr %t12, ptr %t13) - %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str4133) + %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str4136) %t16 = load ptr, ptr %t4 %t17 = call ptr @lp_str_concat(ptr %t15, ptr %t16) %t18 = call ptr @fn_emit_bind(ptr %t17) @@ -49230,55 +49283,55 @@ ifend2: br i1 %t22, label %then3, label %ifend5 then3: %t23 = load ptr, ptr %t2 - %t24 = call ptr @lp_str_concat(ptr @.str4134, ptr %t23) - %t25 = call ptr @lp_str_concat(ptr %t24, ptr @.str4135) + %t24 = call ptr @lp_str_concat(ptr @.str4137, ptr %t23) + %t25 = call ptr @lp_str_concat(ptr %t24, ptr @.str4138) %t26 = load ptr, ptr %t0 %t27 = call ptr @lp_str_concat(ptr %t25, ptr %t26) - %t28 = call ptr @lp_str_concat(ptr %t27, ptr @.str4136) + %t28 = call ptr @lp_str_concat(ptr %t27, ptr @.str4139) %t29 = load ptr, ptr %t4 %t30 = call ptr @lp_str_concat(ptr %t28, ptr %t29) - %t31 = call ptr @lp_str_concat(ptr %t30, ptr @.str4137) + %t31 = call ptr @lp_str_concat(ptr %t30, ptr @.str4140) %t32 = load ptr, ptr %t0 %t33 = call ptr @lp_str_concat(ptr %t31, ptr %t32) - %t34 = call ptr @lp_str_concat(ptr %t33, ptr @.str4138) + %t34 = call ptr @lp_str_concat(ptr %t33, ptr @.str4141) %t35 = load ptr, ptr %t5 %t36 = call ptr @lp_str_concat(ptr %t34, ptr %t35) - %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str4139) + %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str4142) %t38 = call ptr @fn_emit_bind(ptr %t37) store ptr %t38, ptr %t39 %t40 = load ptr, ptr %t39 - %t41 = call ptr @lp_str_concat(ptr @.str4140, ptr %t40) - %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str4141) + %t41 = call ptr @lp_str_concat(ptr @.str4143, ptr %t40) + %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str4144) %t43 = call ptr @fn_emit_bind(ptr %t42) store ptr %t43, ptr %retval br label %ret ifend5: %t44 = load ptr, ptr %t3 - %t45 = call ptr @lp_str_concat(ptr @.str4142, ptr %t44) - %t46 = call ptr @lp_str_concat(ptr %t45, ptr @.str4143) + %t45 = call ptr @lp_str_concat(ptr @.str4145, ptr %t44) + %t46 = call ptr @lp_str_concat(ptr %t45, ptr @.str4146) %t47 = load ptr, ptr %t2 %t48 = call ptr @lp_str_concat(ptr %t46, ptr %t47) - %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str4144) + %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str4147) %t50 = load ptr, ptr %t0 %t51 = call ptr @lp_str_concat(ptr %t49, ptr %t50) - %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str4145) + %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str4148) %t53 = load ptr, ptr %t4 %t54 = call ptr @lp_str_concat(ptr %t52, ptr %t53) - %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str4146) + %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str4149) %t56 = call ptr @fn_emit_bind(ptr %t55) store ptr %t56, ptr %t57 %t58 = load ptr, ptr %t3 - %t59 = call ptr @lp_str_concat(ptr @.str4147, ptr %t58) - %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str4148) + %t59 = call ptr @lp_str_concat(ptr @.str4150, ptr %t58) + %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str4151) %t61 = load ptr, ptr %t2 %t62 = call ptr @lp_str_concat(ptr %t60, ptr %t61) - %t63 = call ptr @lp_str_concat(ptr %t62, ptr @.str4149) + %t63 = call ptr @lp_str_concat(ptr %t62, ptr @.str4152) %t64 = load ptr, ptr %t0 %t65 = call ptr @lp_str_concat(ptr %t63, ptr %t64) - %t66 = call ptr @lp_str_concat(ptr %t65, ptr @.str4150) + %t66 = call ptr @lp_str_concat(ptr %t65, ptr @.str4153) %t67 = load ptr, ptr %t5 %t68 = call ptr @lp_str_concat(ptr %t66, ptr %t67) - %t69 = call ptr @lp_str_concat(ptr %t68, ptr @.str4151) + %t69 = call ptr @lp_str_concat(ptr %t68, ptr @.str4154) %t70 = call ptr @fn_emit_bind(ptr %t69) store ptr %t70, ptr %t71 %t72 = load i32, ptr %t1 @@ -49288,11 +49341,11 @@ ifend5: br i1 %t75, label %then6, label %ifend8 then6: %t76 = load ptr, ptr %t3 - %t77 = call ptr @lp_str_concat(ptr @.str4152, ptr %t76) - %t78 = call ptr @lp_str_concat(ptr %t77, ptr @.str4153) + %t77 = call ptr @lp_str_concat(ptr @.str4155, ptr %t76) + %t78 = call ptr @lp_str_concat(ptr %t77, ptr @.str4156) %t79 = load ptr, ptr %t57 %t80 = call ptr @lp_str_concat(ptr %t78, ptr %t79) - %t81 = call ptr @lp_str_concat(ptr %t80, ptr @.str4154) + %t81 = call ptr @lp_str_concat(ptr %t80, ptr @.str4157) %t82 = load ptr, ptr %t71 %t83 = call ptr @lp_str_concat(ptr %t81, ptr %t82) %t84 = call ptr @fn_emit_bind(ptr %t83) @@ -49300,11 +49353,11 @@ then6: br label %ret ifend8: %t85 = load ptr, ptr %t3 - %t86 = call ptr @lp_str_concat(ptr @.str4155, ptr %t85) - %t87 = call ptr @lp_str_concat(ptr %t86, ptr @.str4156) + %t86 = call ptr @lp_str_concat(ptr @.str4158, ptr %t85) + %t87 = call ptr @lp_str_concat(ptr %t86, ptr @.str4159) %t88 = load ptr, ptr %t57 %t89 = call ptr @lp_str_concat(ptr %t87, ptr %t88) - %t90 = call ptr @lp_str_concat(ptr %t89, ptr @.str4157) + %t90 = call ptr @lp_str_concat(ptr %t89, ptr @.str4160) %t91 = load ptr, ptr %t71 %t92 = call ptr @lp_str_concat(ptr %t90, ptr %t91) %t93 = call ptr @fn_emit_bind(ptr %t92) @@ -49415,249 +49468,249 @@ entry: %t6 = call ptr @fn_slice_field(ptr %t5, i32 0) store ptr %t6, ptr %t7 %t8 = load ptr, ptr %t7 - %t9 = call ptr @lp_str_concat(ptr @.str4158, ptr %t8) + %t9 = call ptr @lp_str_concat(ptr @.str4161, ptr %t8) %t10 = call ptr @fn_emit_bind(ptr %t9) store ptr %t10, ptr %t11 %t12 = load ptr, ptr %t0 %t13 = call ptr @fn_slice_field(ptr %t12, i32 1) store ptr %t13, ptr %t14 %t15 = load ptr, ptr %t14 - %t16 = call ptr @lp_str_concat(ptr @.str4159, ptr %t15) + %t16 = call ptr @lp_str_concat(ptr @.str4162, ptr %t15) %t17 = call ptr @fn_emit_bind(ptr %t16) store ptr %t17, ptr %t18 %t19 = load ptr, ptr %t1 %t20 = call ptr @fn_emit_sizeof(ptr %t19) store ptr %t20, ptr %t21 %t22 = load ptr, ptr %t18 - %t23 = call ptr @lp_str_concat(ptr @.str4160, ptr %t22) - %t24 = call ptr @lp_str_concat(ptr %t23, ptr @.str4161) + %t23 = call ptr @lp_str_concat(ptr @.str4163, ptr %t22) + %t24 = call ptr @lp_str_concat(ptr %t23, ptr @.str4164) %t25 = call ptr @fn_emit_bind(ptr %t24) store ptr %t25, ptr %t26 %t27 = load ptr, ptr %t26 - %t28 = call ptr @lp_str_concat(ptr @.str4162, ptr %t27) - %t29 = call ptr @lp_str_concat(ptr %t28, ptr @.str4163) + %t28 = call ptr @lp_str_concat(ptr @.str4165, ptr %t27) + %t29 = call ptr @lp_str_concat(ptr %t28, ptr @.str4166) %t30 = load ptr, ptr %t21 %t31 = call ptr @lp_str_concat(ptr %t29, ptr %t30) %t32 = call ptr @fn_emit_bind(ptr %t31) store ptr %t32, ptr %t33 %t34 = load ptr, ptr %t33 - %t35 = call ptr @lp_str_concat(ptr @.str4164, ptr %t34) - %t36 = call ptr @lp_str_concat(ptr %t35, ptr @.str4165) + %t35 = call ptr @lp_str_concat(ptr @.str4167, ptr %t34) + %t36 = call ptr @lp_str_concat(ptr %t35, ptr @.str4168) %t37 = call ptr @fn_emit_bind(ptr %t36) store ptr %t37, ptr %t38 - %t39 = call ptr @fn_emit_alloca(ptr @.str4166) + %t39 = call ptr @fn_emit_alloca(ptr @.str4169) store ptr %t39, ptr %t40 %t41 = load ptr, ptr %t40 - call void @fn_store_at(ptr @.str4167, ptr @.str4168, ptr %t41) - %t42 = call ptr @fn_lbl(ptr @.str4169) + call void @fn_store_at(ptr @.str4170, ptr @.str4171, ptr %t41) + %t42 = call ptr @fn_lbl(ptr @.str4172) store ptr %t42, ptr %t43 - %t44 = call ptr @fn_lbl(ptr @.str4170) + %t44 = call ptr @fn_lbl(ptr @.str4173) store ptr %t44, ptr %t45 - %t46 = call ptr @fn_lbl(ptr @.str4171) + %t46 = call ptr @fn_lbl(ptr @.str4174) store ptr %t46, ptr %t47 - call void @fn_emit(ptr @.str4172) + call void @fn_emit(ptr @.str4175) %t48 = load ptr, ptr %t43 call void @fn_emit(ptr %t48) - call void @fn_emit(ptr @.str4173) + call void @fn_emit(ptr @.str4176) %t49 = load ptr, ptr %t43 call void @fn_emit(ptr %t49) - call void @fn_emit(ptr @.str4174) + call void @fn_emit(ptr @.str4177) %t50 = load ptr, ptr %t40 - %t51 = call ptr @lp_str_concat(ptr @.str4175, ptr %t50) + %t51 = call ptr @lp_str_concat(ptr @.str4178, ptr %t50) %t52 = call ptr @fn_emit_bind(ptr %t51) store ptr %t52, ptr %t53 %t54 = load ptr, ptr %t53 - %t55 = call ptr @lp_str_concat(ptr @.str4176, ptr %t54) - %t56 = call ptr @lp_str_concat(ptr %t55, ptr @.str4177) + %t55 = call ptr @lp_str_concat(ptr @.str4179, ptr %t54) + %t56 = call ptr @lp_str_concat(ptr %t55, ptr @.str4180) %t57 = load ptr, ptr %t18 %t58 = call ptr @lp_str_concat(ptr %t56, ptr %t57) %t59 = call ptr @fn_emit_bind(ptr %t58) store ptr %t59, ptr %t60 - call void @fn_emit(ptr @.str4178) + call void @fn_emit(ptr @.str4181) %t61 = load ptr, ptr %t60 call void @fn_emit(ptr %t61) - call void @fn_emit(ptr @.str4179) + call void @fn_emit(ptr @.str4182) %t62 = load ptr, ptr %t45 call void @fn_emit(ptr %t62) - call void @fn_emit(ptr @.str4180) + call void @fn_emit(ptr @.str4183) %t63 = load ptr, ptr %t47 call void @fn_emit(ptr %t63) - call void @fn_emit(ptr @.str4181) + call void @fn_emit(ptr @.str4184) %t64 = load ptr, ptr %t45 call void @fn_emit(ptr %t64) - call void @fn_emit(ptr @.str4182) + call void @fn_emit(ptr @.str4185) %t65 = load ptr, ptr %t53 - %t66 = call ptr @lp_str_concat(ptr @.str4183, ptr %t65) - %t67 = call ptr @lp_str_concat(ptr %t66, ptr @.str4184) + %t66 = call ptr @lp_str_concat(ptr @.str4186, ptr %t65) + %t67 = call ptr @lp_str_concat(ptr %t66, ptr @.str4187) %t68 = call ptr @fn_emit_bind(ptr %t67) store ptr %t68, ptr %t69 - %t70 = call ptr @fn_emit_alloca(ptr @.str4185) + %t70 = call ptr @fn_emit_alloca(ptr @.str4188) store ptr %t70, ptr %t71 %t72 = load ptr, ptr %t71 - call void @fn_store_at(ptr @.str4186, ptr @.str4187, ptr %t72) - %t73 = call ptr @fn_lbl(ptr @.str4188) + call void @fn_store_at(ptr @.str4189, ptr @.str4190, ptr %t72) + %t73 = call ptr @fn_lbl(ptr @.str4191) store ptr %t73, ptr %t74 - %t75 = call ptr @fn_lbl(ptr @.str4189) + %t75 = call ptr @fn_lbl(ptr @.str4192) store ptr %t75, ptr %t76 - %t77 = call ptr @fn_lbl(ptr @.str4190) + %t77 = call ptr @fn_lbl(ptr @.str4193) store ptr %t77, ptr %t78 - call void @fn_emit(ptr @.str4191) + call void @fn_emit(ptr @.str4194) %t79 = load ptr, ptr %t74 call void @fn_emit(ptr %t79) - call void @fn_emit(ptr @.str4192) + call void @fn_emit(ptr @.str4195) %t80 = load ptr, ptr %t74 call void @fn_emit(ptr %t80) - call void @fn_emit(ptr @.str4193) + call void @fn_emit(ptr @.str4196) %t81 = load ptr, ptr %t71 - %t82 = call ptr @lp_str_concat(ptr @.str4194, ptr %t81) + %t82 = call ptr @lp_str_concat(ptr @.str4197, ptr %t81) %t83 = call ptr @fn_emit_bind(ptr %t82) store ptr %t83, ptr %t84 %t85 = load ptr, ptr %t84 - %t86 = call ptr @lp_str_concat(ptr @.str4195, ptr %t85) - %t87 = call ptr @lp_str_concat(ptr %t86, ptr @.str4196) + %t86 = call ptr @lp_str_concat(ptr @.str4198, ptr %t85) + %t87 = call ptr @lp_str_concat(ptr %t86, ptr @.str4199) %t88 = load ptr, ptr %t18 %t89 = call ptr @lp_str_concat(ptr %t87, ptr %t88) %t90 = call ptr @fn_emit_bind(ptr %t89) store ptr %t90, ptr %t91 - call void @fn_emit(ptr @.str4197) + call void @fn_emit(ptr @.str4200) %t92 = load ptr, ptr %t91 call void @fn_emit(ptr %t92) - call void @fn_emit(ptr @.str4198) + call void @fn_emit(ptr @.str4201) %t93 = load ptr, ptr %t76 call void @fn_emit(ptr %t93) - call void @fn_emit(ptr @.str4199) + call void @fn_emit(ptr @.str4202) %t94 = load ptr, ptr %t78 call void @fn_emit(ptr %t94) - call void @fn_emit(ptr @.str4200) + call void @fn_emit(ptr @.str4203) %t95 = load ptr, ptr %t76 call void @fn_emit(ptr %t95) - call void @fn_emit(ptr @.str4201) + call void @fn_emit(ptr @.str4204) %t96 = load ptr, ptr %t84 - %t97 = call ptr @lp_str_concat(ptr @.str4202, ptr %t96) - %t98 = call ptr @lp_str_concat(ptr %t97, ptr @.str4203) + %t97 = call ptr @lp_str_concat(ptr @.str4205, ptr %t96) + %t98 = call ptr @lp_str_concat(ptr %t97, ptr @.str4206) %t99 = load ptr, ptr %t53 %t100 = call ptr @lp_str_concat(ptr %t98, ptr %t99) %t101 = call ptr @fn_emit_bind(ptr %t100) store ptr %t101, ptr %t102 %t103 = load ptr, ptr %t102 - %t104 = call ptr @lp_str_concat(ptr @.str4204, ptr %t103) - %t105 = call ptr @lp_str_concat(ptr %t104, ptr @.str4205) + %t104 = call ptr @lp_str_concat(ptr @.str4207, ptr %t103) + %t105 = call ptr @lp_str_concat(ptr %t104, ptr @.str4208) %t106 = load ptr, ptr %t18 %t107 = call ptr @lp_str_concat(ptr %t105, ptr %t106) %t108 = call ptr @fn_emit_bind(ptr %t107) store ptr %t108, ptr %t109 %t110 = load ptr, ptr %t109 - %t111 = call ptr @lp_str_concat(ptr @.str4206, ptr %t110) - %t112 = call ptr @lp_str_concat(ptr %t111, ptr @.str4207) + %t111 = call ptr @lp_str_concat(ptr @.str4209, ptr %t110) + %t112 = call ptr @lp_str_concat(ptr %t111, ptr @.str4210) %t113 = load ptr, ptr %t102 %t114 = call ptr @lp_str_concat(ptr %t112, ptr %t113) - %t115 = call ptr @lp_str_concat(ptr %t114, ptr @.str4208) + %t115 = call ptr @lp_str_concat(ptr %t114, ptr @.str4211) %t116 = load ptr, ptr %t18 %t117 = call ptr @lp_str_concat(ptr %t115, ptr %t116) %t118 = call ptr @fn_emit_bind(ptr %t117) store ptr %t118, ptr %t119 %t120 = load ptr, ptr %t84 - %t121 = call ptr @lp_str_concat(ptr @.str4209, ptr %t120) - %t122 = call ptr @lp_str_concat(ptr %t121, ptr @.str4210) + %t121 = call ptr @lp_str_concat(ptr @.str4212, ptr %t120) + %t122 = call ptr @lp_str_concat(ptr %t121, ptr @.str4213) %t123 = load ptr, ptr %t69 %t124 = call ptr @lp_str_concat(ptr %t122, ptr %t123) %t125 = call ptr @fn_emit_bind(ptr %t124) store ptr %t125, ptr %t126 %t127 = load ptr, ptr %t126 - %t128 = call ptr @lp_str_concat(ptr @.str4211, ptr %t127) - %t129 = call ptr @lp_str_concat(ptr %t128, ptr @.str4212) + %t128 = call ptr @lp_str_concat(ptr @.str4214, ptr %t127) + %t129 = call ptr @lp_str_concat(ptr %t128, ptr @.str4215) %t130 = load ptr, ptr %t18 %t131 = call ptr @lp_str_concat(ptr %t129, ptr %t130) %t132 = call ptr @fn_emit_bind(ptr %t131) store ptr %t132, ptr %t133 %t134 = load ptr, ptr %t133 - %t135 = call ptr @lp_str_concat(ptr @.str4213, ptr %t134) - %t136 = call ptr @lp_str_concat(ptr %t135, ptr @.str4214) + %t135 = call ptr @lp_str_concat(ptr @.str4216, ptr %t134) + %t136 = call ptr @lp_str_concat(ptr %t135, ptr @.str4217) %t137 = load ptr, ptr %t126 %t138 = call ptr @lp_str_concat(ptr %t136, ptr %t137) - %t139 = call ptr @lp_str_concat(ptr %t138, ptr @.str4215) + %t139 = call ptr @lp_str_concat(ptr %t138, ptr @.str4218) %t140 = load ptr, ptr %t18 %t141 = call ptr @lp_str_concat(ptr %t139, ptr %t140) %t142 = call ptr @fn_emit_bind(ptr %t141) store ptr %t142, ptr %t143 - %t144 = call ptr @fn_emit_alloca(ptr @.str4216) + %t144 = call ptr @fn_emit_alloca(ptr @.str4219) store ptr %t144, ptr %t145 %t146 = load ptr, ptr %t84 %t147 = load ptr, ptr %t145 - call void @fn_store_at(ptr @.str4217, ptr %t146, ptr %t147) - %t148 = call ptr @fn_emit_alloca(ptr @.str4218) + call void @fn_store_at(ptr @.str4220, ptr %t146, ptr %t147) + %t148 = call ptr @fn_emit_alloca(ptr @.str4221) store ptr %t148, ptr %t149 %t150 = load ptr, ptr %t119 %t151 = load ptr, ptr %t149 - call void @fn_store_at(ptr @.str4219, ptr %t150, ptr %t151) - %t152 = call ptr @fn_emit_alloca(ptr @.str4220) + call void @fn_store_at(ptr @.str4222, ptr %t150, ptr %t151) + %t152 = call ptr @fn_emit_alloca(ptr @.str4223) store ptr %t152, ptr %t153 %t154 = load ptr, ptr %t84 %t155 = load ptr, ptr %t153 - call void @fn_store_at(ptr @.str4221, ptr %t154, ptr %t155) - %t156 = call ptr @fn_lbl(ptr @.str4222) + call void @fn_store_at(ptr @.str4224, ptr %t154, ptr %t155) + %t156 = call ptr @fn_lbl(ptr @.str4225) store ptr %t156, ptr %t157 - %t158 = call ptr @fn_lbl(ptr @.str4223) + %t158 = call ptr @fn_lbl(ptr @.str4226) store ptr %t158, ptr %t159 - %t160 = call ptr @fn_lbl(ptr @.str4224) + %t160 = call ptr @fn_lbl(ptr @.str4227) store ptr %t160, ptr %t161 - call void @fn_emit(ptr @.str4225) + call void @fn_emit(ptr @.str4228) %t162 = load ptr, ptr %t157 call void @fn_emit(ptr %t162) - call void @fn_emit(ptr @.str4226) + call void @fn_emit(ptr @.str4229) %t163 = load ptr, ptr %t157 call void @fn_emit(ptr %t163) - call void @fn_emit(ptr @.str4227) + call void @fn_emit(ptr @.str4230) %t164 = load ptr, ptr %t145 - %t165 = call ptr @lp_str_concat(ptr @.str4228, ptr %t164) + %t165 = call ptr @lp_str_concat(ptr @.str4231, ptr %t164) %t166 = call ptr @fn_emit_bind(ptr %t165) store ptr %t166, ptr %t167 %t168 = load ptr, ptr %t149 - %t169 = call ptr @lp_str_concat(ptr @.str4229, ptr %t168) + %t169 = call ptr @lp_str_concat(ptr @.str4232, ptr %t168) %t170 = call ptr @fn_emit_bind(ptr %t169) store ptr %t170, ptr %t171 %t172 = load ptr, ptr %t167 - %t173 = call ptr @lp_str_concat(ptr @.str4230, ptr %t172) - %t174 = call ptr @lp_str_concat(ptr %t173, ptr @.str4231) + %t173 = call ptr @lp_str_concat(ptr @.str4233, ptr %t172) + %t174 = call ptr @lp_str_concat(ptr %t173, ptr @.str4234) %t175 = load ptr, ptr %t119 %t176 = call ptr @lp_str_concat(ptr %t174, ptr %t175) %t177 = call ptr @fn_emit_bind(ptr %t176) store ptr %t177, ptr %t178 %t179 = load ptr, ptr %t171 - %t180 = call ptr @lp_str_concat(ptr @.str4232, ptr %t179) - %t181 = call ptr @lp_str_concat(ptr %t180, ptr @.str4233) + %t180 = call ptr @lp_str_concat(ptr @.str4235, ptr %t179) + %t181 = call ptr @lp_str_concat(ptr %t180, ptr @.str4236) %t182 = load ptr, ptr %t143 %t183 = call ptr @lp_str_concat(ptr %t181, ptr %t182) %t184 = call ptr @fn_emit_bind(ptr %t183) store ptr %t184, ptr %t185 %t186 = load ptr, ptr %t178 - %t187 = call ptr @lp_str_concat(ptr @.str4234, ptr %t186) - %t188 = call ptr @lp_str_concat(ptr %t187, ptr @.str4235) + %t187 = call ptr @lp_str_concat(ptr @.str4237, ptr %t186) + %t188 = call ptr @lp_str_concat(ptr %t187, ptr @.str4238) %t189 = load ptr, ptr %t185 %t190 = call ptr @lp_str_concat(ptr %t188, ptr %t189) %t191 = call ptr @fn_emit_bind(ptr %t190) store ptr %t191, ptr %t192 - call void @fn_emit(ptr @.str4236) + call void @fn_emit(ptr @.str4239) %t193 = load ptr, ptr %t192 call void @fn_emit(ptr %t193) - call void @fn_emit(ptr @.str4237) + call void @fn_emit(ptr @.str4240) %t194 = load ptr, ptr %t159 call void @fn_emit(ptr %t194) - call void @fn_emit(ptr @.str4238) + call void @fn_emit(ptr @.str4241) %t195 = load ptr, ptr %t161 call void @fn_emit(ptr %t195) - call void @fn_emit(ptr @.str4239) + call void @fn_emit(ptr @.str4242) %t196 = load ptr, ptr %t159 call void @fn_emit(ptr %t196) - call void @fn_emit(ptr @.str4240) + call void @fn_emit(ptr @.str4243) %t197 = load ptr, ptr %t11 %t198 = load ptr, ptr %t1 %t199 = load ptr, ptr %t167 %t200 = call ptr @fn_gep_at(ptr %t197, ptr %t198, ptr %t199) store ptr %t200, ptr %t201 %t202 = load ptr, ptr %t1 - %t203 = call ptr @lp_str_concat(ptr @.str4241, ptr %t202) - %t204 = call ptr @lp_str_concat(ptr %t203, ptr @.str4242) + %t203 = call ptr @lp_str_concat(ptr @.str4244, ptr %t202) + %t204 = call ptr @lp_str_concat(ptr %t203, ptr @.str4245) %t205 = load ptr, ptr %t201 %t206 = call ptr @lp_str_concat(ptr %t204, ptr %t205) %t207 = call ptr @fn_emit_bind(ptr %t206) @@ -49668,8 +49721,8 @@ entry: %t212 = call ptr @fn_gep_at(ptr %t209, ptr %t210, ptr %t211) store ptr %t212, ptr %t213 %t214 = load ptr, ptr %t1 - %t215 = call ptr @lp_str_concat(ptr @.str4243, ptr %t214) - %t216 = call ptr @lp_str_concat(ptr %t215, ptr @.str4244) + %t215 = call ptr @lp_str_concat(ptr @.str4246, ptr %t214) + %t216 = call ptr @lp_str_concat(ptr %t215, ptr @.str4247) %t217 = load ptr, ptr %t213 %t218 = call ptr @lp_str_concat(ptr %t216, ptr %t217) %t219 = call ptr @fn_emit_bind(ptr %t218) @@ -49683,7 +49736,7 @@ entry: %t227 = call ptr @fn_emit_takeright(ptr %t221, i32 %t222, ptr %t223, ptr %t224, ptr %t225, ptr %t226) store ptr %t227, ptr %t228 %t229 = load ptr, ptr %t153 - %t230 = call ptr @lp_str_concat(ptr @.str4245, ptr %t229) + %t230 = call ptr @lp_str_concat(ptr @.str4248, ptr %t229) %t231 = call ptr @fn_emit_bind(ptr %t230) store ptr %t231, ptr %t232 %t233 = load ptr, ptr %t38 @@ -49691,141 +49744,141 @@ entry: %t235 = load ptr, ptr %t232 %t236 = call ptr @fn_gep_at(ptr %t233, ptr %t234, ptr %t235) store ptr %t236, ptr %t237 - %t238 = call ptr @fn_lbl(ptr @.str4246) + %t238 = call ptr @fn_lbl(ptr @.str4249) store ptr %t238, ptr %t239 - %t240 = call ptr @fn_lbl(ptr @.str4247) + %t240 = call ptr @fn_lbl(ptr @.str4250) store ptr %t240, ptr %t241 - %t242 = call ptr @fn_lbl(ptr @.str4248) + %t242 = call ptr @fn_lbl(ptr @.str4251) store ptr %t242, ptr %t243 - call void @fn_emit(ptr @.str4249) + call void @fn_emit(ptr @.str4252) %t244 = load ptr, ptr %t228 call void @fn_emit(ptr %t244) - call void @fn_emit(ptr @.str4250) + call void @fn_emit(ptr @.str4253) %t245 = load ptr, ptr %t239 call void @fn_emit(ptr %t245) - call void @fn_emit(ptr @.str4251) + call void @fn_emit(ptr @.str4254) %t246 = load ptr, ptr %t241 call void @fn_emit(ptr %t246) - call void @fn_emit(ptr @.str4252) + call void @fn_emit(ptr @.str4255) %t247 = load ptr, ptr %t239 call void @fn_emit(ptr %t247) - call void @fn_emit(ptr @.str4253) - call void @fn_emit(ptr @.str4254) + call void @fn_emit(ptr @.str4256) + call void @fn_emit(ptr @.str4257) %t248 = load ptr, ptr %t1 call void @fn_emit(ptr %t248) - call void @fn_emit(ptr @.str4255) + call void @fn_emit(ptr @.str4258) %t249 = load ptr, ptr %t220 call void @fn_emit(ptr %t249) - call void @fn_emit(ptr @.str4256) + call void @fn_emit(ptr @.str4259) %t250 = load ptr, ptr %t237 call void @fn_emit(ptr %t250) - call void @fn_emit(ptr @.str4257) + call void @fn_emit(ptr @.str4260) %t251 = load ptr, ptr %t171 - %t252 = call ptr @lp_str_concat(ptr @.str4258, ptr %t251) - %t253 = call ptr @lp_str_concat(ptr %t252, ptr @.str4259) + %t252 = call ptr @lp_str_concat(ptr @.str4261, ptr %t251) + %t253 = call ptr @lp_str_concat(ptr %t252, ptr @.str4262) %t254 = call ptr @fn_emit_bind(ptr %t253) store ptr %t254, ptr %t255 %t256 = load ptr, ptr %t255 %t257 = load ptr, ptr %t149 - call void @fn_store_at(ptr @.str4260, ptr %t256, ptr %t257) - call void @fn_emit(ptr @.str4261) + call void @fn_store_at(ptr @.str4263, ptr %t256, ptr %t257) + call void @fn_emit(ptr @.str4264) %t258 = load ptr, ptr %t243 call void @fn_emit(ptr %t258) - call void @fn_emit(ptr @.str4262) + call void @fn_emit(ptr @.str4265) %t259 = load ptr, ptr %t241 call void @fn_emit(ptr %t259) - call void @fn_emit(ptr @.str4263) - call void @fn_emit(ptr @.str4264) + call void @fn_emit(ptr @.str4266) + call void @fn_emit(ptr @.str4267) %t260 = load ptr, ptr %t1 call void @fn_emit(ptr %t260) - call void @fn_emit(ptr @.str4265) + call void @fn_emit(ptr @.str4268) %t261 = load ptr, ptr %t208 call void @fn_emit(ptr %t261) - call void @fn_emit(ptr @.str4266) + call void @fn_emit(ptr @.str4269) %t262 = load ptr, ptr %t237 call void @fn_emit(ptr %t262) - call void @fn_emit(ptr @.str4267) + call void @fn_emit(ptr @.str4270) %t263 = load ptr, ptr %t167 - %t264 = call ptr @lp_str_concat(ptr @.str4268, ptr %t263) - %t265 = call ptr @lp_str_concat(ptr %t264, ptr @.str4269) + %t264 = call ptr @lp_str_concat(ptr @.str4271, ptr %t263) + %t265 = call ptr @lp_str_concat(ptr %t264, ptr @.str4272) %t266 = call ptr @fn_emit_bind(ptr %t265) store ptr %t266, ptr %t267 %t268 = load ptr, ptr %t267 %t269 = load ptr, ptr %t145 - call void @fn_store_at(ptr @.str4270, ptr %t268, ptr %t269) - call void @fn_emit(ptr @.str4271) + call void @fn_store_at(ptr @.str4273, ptr %t268, ptr %t269) + call void @fn_emit(ptr @.str4274) %t270 = load ptr, ptr %t243 call void @fn_emit(ptr %t270) - call void @fn_emit(ptr @.str4272) + call void @fn_emit(ptr @.str4275) %t271 = load ptr, ptr %t243 call void @fn_emit(ptr %t271) - call void @fn_emit(ptr @.str4273) + call void @fn_emit(ptr @.str4276) %t272 = load ptr, ptr %t232 - %t273 = call ptr @lp_str_concat(ptr @.str4274, ptr %t272) - %t274 = call ptr @lp_str_concat(ptr %t273, ptr @.str4275) + %t273 = call ptr @lp_str_concat(ptr @.str4277, ptr %t272) + %t274 = call ptr @lp_str_concat(ptr %t273, ptr @.str4278) %t275 = call ptr @fn_emit_bind(ptr %t274) store ptr %t275, ptr %t276 %t277 = load ptr, ptr %t276 %t278 = load ptr, ptr %t153 - call void @fn_store_at(ptr @.str4276, ptr %t277, ptr %t278) - call void @fn_emit(ptr @.str4277) + call void @fn_store_at(ptr @.str4279, ptr %t277, ptr %t278) + call void @fn_emit(ptr @.str4280) %t279 = load ptr, ptr %t157 call void @fn_emit(ptr %t279) - call void @fn_emit(ptr @.str4278) + call void @fn_emit(ptr @.str4281) %t280 = load ptr, ptr %t161 call void @fn_emit(ptr %t280) - call void @fn_emit(ptr @.str4279) - %t281 = call ptr @fn_lbl(ptr @.str4280) + call void @fn_emit(ptr @.str4282) + %t281 = call ptr @fn_lbl(ptr @.str4283) store ptr %t281, ptr %t282 - %t283 = call ptr @fn_lbl(ptr @.str4281) + %t283 = call ptr @fn_lbl(ptr @.str4284) store ptr %t283, ptr %t284 - %t285 = call ptr @fn_lbl(ptr @.str4282) + %t285 = call ptr @fn_lbl(ptr @.str4285) store ptr %t285, ptr %t286 - call void @fn_emit(ptr @.str4283) + call void @fn_emit(ptr @.str4286) %t287 = load ptr, ptr %t282 call void @fn_emit(ptr %t287) - call void @fn_emit(ptr @.str4284) + call void @fn_emit(ptr @.str4287) %t288 = load ptr, ptr %t282 call void @fn_emit(ptr %t288) - call void @fn_emit(ptr @.str4285) + call void @fn_emit(ptr @.str4288) %t289 = load ptr, ptr %t145 - %t290 = call ptr @lp_str_concat(ptr @.str4286, ptr %t289) + %t290 = call ptr @lp_str_concat(ptr @.str4289, ptr %t289) %t291 = call ptr @fn_emit_bind(ptr %t290) store ptr %t291, ptr %t292 %t293 = load ptr, ptr %t292 - %t294 = call ptr @lp_str_concat(ptr @.str4287, ptr %t293) - %t295 = call ptr @lp_str_concat(ptr %t294, ptr @.str4288) + %t294 = call ptr @lp_str_concat(ptr @.str4290, ptr %t293) + %t295 = call ptr @lp_str_concat(ptr %t294, ptr @.str4291) %t296 = load ptr, ptr %t119 %t297 = call ptr @lp_str_concat(ptr %t295, ptr %t296) %t298 = call ptr @fn_emit_bind(ptr %t297) store ptr %t298, ptr %t299 - call void @fn_emit(ptr @.str4289) + call void @fn_emit(ptr @.str4292) %t300 = load ptr, ptr %t299 call void @fn_emit(ptr %t300) - call void @fn_emit(ptr @.str4290) + call void @fn_emit(ptr @.str4293) %t301 = load ptr, ptr %t284 call void @fn_emit(ptr %t301) - call void @fn_emit(ptr @.str4291) + call void @fn_emit(ptr @.str4294) %t302 = load ptr, ptr %t286 call void @fn_emit(ptr %t302) - call void @fn_emit(ptr @.str4292) + call void @fn_emit(ptr @.str4295) %t303 = load ptr, ptr %t284 call void @fn_emit(ptr %t303) - call void @fn_emit(ptr @.str4293) + call void @fn_emit(ptr @.str4296) %t304 = load ptr, ptr %t11 %t305 = load ptr, ptr %t1 %t306 = load ptr, ptr %t292 %t307 = call ptr @fn_gep_at(ptr %t304, ptr %t305, ptr %t306) store ptr %t307, ptr %t308 %t309 = load ptr, ptr %t1 - %t310 = call ptr @lp_str_concat(ptr @.str4294, ptr %t309) - %t311 = call ptr @lp_str_concat(ptr %t310, ptr @.str4295) + %t310 = call ptr @lp_str_concat(ptr @.str4297, ptr %t309) + %t311 = call ptr @lp_str_concat(ptr %t310, ptr @.str4298) %t312 = load ptr, ptr %t308 %t313 = call ptr @lp_str_concat(ptr %t311, ptr %t312) %t314 = call ptr @fn_emit_bind(ptr %t313) store ptr %t314, ptr %t315 %t316 = load ptr, ptr %t153 - %t317 = call ptr @lp_str_concat(ptr @.str4296, ptr %t316) + %t317 = call ptr @lp_str_concat(ptr @.str4299, ptr %t316) %t318 = call ptr @fn_emit_bind(ptr %t317) store ptr %t318, ptr %t319 %t320 = load ptr, ptr %t38 @@ -49833,90 +49886,90 @@ entry: %t322 = load ptr, ptr %t319 %t323 = call ptr @fn_gep_at(ptr %t320, ptr %t321, ptr %t322) store ptr %t323, ptr %t324 - call void @fn_emit(ptr @.str4297) + call void @fn_emit(ptr @.str4300) %t325 = load ptr, ptr %t1 call void @fn_emit(ptr %t325) - call void @fn_emit(ptr @.str4298) + call void @fn_emit(ptr @.str4301) %t326 = load ptr, ptr %t315 call void @fn_emit(ptr %t326) - call void @fn_emit(ptr @.str4299) + call void @fn_emit(ptr @.str4302) %t327 = load ptr, ptr %t324 call void @fn_emit(ptr %t327) - call void @fn_emit(ptr @.str4300) + call void @fn_emit(ptr @.str4303) %t328 = load ptr, ptr %t292 - %t329 = call ptr @lp_str_concat(ptr @.str4301, ptr %t328) - %t330 = call ptr @lp_str_concat(ptr %t329, ptr @.str4302) + %t329 = call ptr @lp_str_concat(ptr @.str4304, ptr %t328) + %t330 = call ptr @lp_str_concat(ptr %t329, ptr @.str4305) %t331 = call ptr @fn_emit_bind(ptr %t330) store ptr %t331, ptr %t332 %t333 = load ptr, ptr %t332 %t334 = load ptr, ptr %t145 - call void @fn_store_at(ptr @.str4303, ptr %t333, ptr %t334) + call void @fn_store_at(ptr @.str4306, ptr %t333, ptr %t334) %t335 = load ptr, ptr %t319 - %t336 = call ptr @lp_str_concat(ptr @.str4304, ptr %t335) - %t337 = call ptr @lp_str_concat(ptr %t336, ptr @.str4305) + %t336 = call ptr @lp_str_concat(ptr @.str4307, ptr %t335) + %t337 = call ptr @lp_str_concat(ptr %t336, ptr @.str4308) %t338 = call ptr @fn_emit_bind(ptr %t337) store ptr %t338, ptr %t339 %t340 = load ptr, ptr %t339 %t341 = load ptr, ptr %t153 - call void @fn_store_at(ptr @.str4306, ptr %t340, ptr %t341) - call void @fn_emit(ptr @.str4307) + call void @fn_store_at(ptr @.str4309, ptr %t340, ptr %t341) + call void @fn_emit(ptr @.str4310) %t342 = load ptr, ptr %t282 call void @fn_emit(ptr %t342) - call void @fn_emit(ptr @.str4308) + call void @fn_emit(ptr @.str4311) %t343 = load ptr, ptr %t286 call void @fn_emit(ptr %t343) - call void @fn_emit(ptr @.str4309) - %t344 = call ptr @fn_lbl(ptr @.str4310) + call void @fn_emit(ptr @.str4312) + %t344 = call ptr @fn_lbl(ptr @.str4313) store ptr %t344, ptr %t345 - %t346 = call ptr @fn_lbl(ptr @.str4311) + %t346 = call ptr @fn_lbl(ptr @.str4314) store ptr %t346, ptr %t347 - %t348 = call ptr @fn_lbl(ptr @.str4312) + %t348 = call ptr @fn_lbl(ptr @.str4315) store ptr %t348, ptr %t349 - call void @fn_emit(ptr @.str4313) + call void @fn_emit(ptr @.str4316) %t350 = load ptr, ptr %t345 call void @fn_emit(ptr %t350) - call void @fn_emit(ptr @.str4314) + call void @fn_emit(ptr @.str4317) %t351 = load ptr, ptr %t345 call void @fn_emit(ptr %t351) - call void @fn_emit(ptr @.str4315) + call void @fn_emit(ptr @.str4318) %t352 = load ptr, ptr %t149 - %t353 = call ptr @lp_str_concat(ptr @.str4316, ptr %t352) + %t353 = call ptr @lp_str_concat(ptr @.str4319, ptr %t352) %t354 = call ptr @fn_emit_bind(ptr %t353) store ptr %t354, ptr %t355 %t356 = load ptr, ptr %t355 - %t357 = call ptr @lp_str_concat(ptr @.str4317, ptr %t356) - %t358 = call ptr @lp_str_concat(ptr %t357, ptr @.str4318) + %t357 = call ptr @lp_str_concat(ptr @.str4320, ptr %t356) + %t358 = call ptr @lp_str_concat(ptr %t357, ptr @.str4321) %t359 = load ptr, ptr %t143 %t360 = call ptr @lp_str_concat(ptr %t358, ptr %t359) %t361 = call ptr @fn_emit_bind(ptr %t360) store ptr %t361, ptr %t362 - call void @fn_emit(ptr @.str4319) + call void @fn_emit(ptr @.str4322) %t363 = load ptr, ptr %t362 call void @fn_emit(ptr %t363) - call void @fn_emit(ptr @.str4320) + call void @fn_emit(ptr @.str4323) %t364 = load ptr, ptr %t347 call void @fn_emit(ptr %t364) - call void @fn_emit(ptr @.str4321) + call void @fn_emit(ptr @.str4324) %t365 = load ptr, ptr %t349 call void @fn_emit(ptr %t365) - call void @fn_emit(ptr @.str4322) + call void @fn_emit(ptr @.str4325) %t366 = load ptr, ptr %t347 call void @fn_emit(ptr %t366) - call void @fn_emit(ptr @.str4323) + call void @fn_emit(ptr @.str4326) %t367 = load ptr, ptr %t11 %t368 = load ptr, ptr %t1 %t369 = load ptr, ptr %t355 %t370 = call ptr @fn_gep_at(ptr %t367, ptr %t368, ptr %t369) store ptr %t370, ptr %t371 %t372 = load ptr, ptr %t1 - %t373 = call ptr @lp_str_concat(ptr @.str4324, ptr %t372) - %t374 = call ptr @lp_str_concat(ptr %t373, ptr @.str4325) + %t373 = call ptr @lp_str_concat(ptr @.str4327, ptr %t372) + %t374 = call ptr @lp_str_concat(ptr %t373, ptr @.str4328) %t375 = load ptr, ptr %t371 %t376 = call ptr @lp_str_concat(ptr %t374, ptr %t375) %t377 = call ptr @fn_emit_bind(ptr %t376) store ptr %t377, ptr %t378 %t379 = load ptr, ptr %t153 - %t380 = call ptr @lp_str_concat(ptr @.str4326, ptr %t379) + %t380 = call ptr @lp_str_concat(ptr @.str4329, ptr %t379) %t381 = call ptr @fn_emit_bind(ptr %t380) store ptr %t381, ptr %t382 %t383 = load ptr, ptr %t38 @@ -49924,89 +49977,89 @@ entry: %t385 = load ptr, ptr %t382 %t386 = call ptr @fn_gep_at(ptr %t383, ptr %t384, ptr %t385) store ptr %t386, ptr %t387 - call void @fn_emit(ptr @.str4327) + call void @fn_emit(ptr @.str4330) %t388 = load ptr, ptr %t1 call void @fn_emit(ptr %t388) - call void @fn_emit(ptr @.str4328) + call void @fn_emit(ptr @.str4331) %t389 = load ptr, ptr %t378 call void @fn_emit(ptr %t389) - call void @fn_emit(ptr @.str4329) + call void @fn_emit(ptr @.str4332) %t390 = load ptr, ptr %t387 call void @fn_emit(ptr %t390) - call void @fn_emit(ptr @.str4330) + call void @fn_emit(ptr @.str4333) %t391 = load ptr, ptr %t355 - %t392 = call ptr @lp_str_concat(ptr @.str4331, ptr %t391) - %t393 = call ptr @lp_str_concat(ptr %t392, ptr @.str4332) + %t392 = call ptr @lp_str_concat(ptr @.str4334, ptr %t391) + %t393 = call ptr @lp_str_concat(ptr %t392, ptr @.str4335) %t394 = call ptr @fn_emit_bind(ptr %t393) store ptr %t394, ptr %t395 %t396 = load ptr, ptr %t395 %t397 = load ptr, ptr %t149 - call void @fn_store_at(ptr @.str4333, ptr %t396, ptr %t397) + call void @fn_store_at(ptr @.str4336, ptr %t396, ptr %t397) %t398 = load ptr, ptr %t382 - %t399 = call ptr @lp_str_concat(ptr @.str4334, ptr %t398) - %t400 = call ptr @lp_str_concat(ptr %t399, ptr @.str4335) + %t399 = call ptr @lp_str_concat(ptr @.str4337, ptr %t398) + %t400 = call ptr @lp_str_concat(ptr %t399, ptr @.str4338) %t401 = call ptr @fn_emit_bind(ptr %t400) store ptr %t401, ptr %t402 %t403 = load ptr, ptr %t402 %t404 = load ptr, ptr %t153 - call void @fn_store_at(ptr @.str4336, ptr %t403, ptr %t404) - call void @fn_emit(ptr @.str4337) + call void @fn_store_at(ptr @.str4339, ptr %t403, ptr %t404) + call void @fn_emit(ptr @.str4340) %t405 = load ptr, ptr %t345 call void @fn_emit(ptr %t405) - call void @fn_emit(ptr @.str4338) + call void @fn_emit(ptr @.str4341) %t406 = load ptr, ptr %t349 call void @fn_emit(ptr %t406) - call void @fn_emit(ptr @.str4339) - %t407 = call ptr @fn_emit_alloca(ptr @.str4340) + call void @fn_emit(ptr @.str4342) + %t407 = call ptr @fn_emit_alloca(ptr @.str4343) store ptr %t407, ptr %t408 %t409 = load ptr, ptr %t84 %t410 = load ptr, ptr %t408 - call void @fn_store_at(ptr @.str4341, ptr %t409, ptr %t410) - %t411 = call ptr @fn_lbl(ptr @.str4342) + call void @fn_store_at(ptr @.str4344, ptr %t409, ptr %t410) + %t411 = call ptr @fn_lbl(ptr @.str4345) store ptr %t411, ptr %t412 - %t413 = call ptr @fn_lbl(ptr @.str4343) + %t413 = call ptr @fn_lbl(ptr @.str4346) store ptr %t413, ptr %t414 - %t415 = call ptr @fn_lbl(ptr @.str4344) + %t415 = call ptr @fn_lbl(ptr @.str4347) store ptr %t415, ptr %t416 - call void @fn_emit(ptr @.str4345) + call void @fn_emit(ptr @.str4348) %t417 = load ptr, ptr %t412 call void @fn_emit(ptr %t417) - call void @fn_emit(ptr @.str4346) + call void @fn_emit(ptr @.str4349) %t418 = load ptr, ptr %t412 call void @fn_emit(ptr %t418) - call void @fn_emit(ptr @.str4347) + call void @fn_emit(ptr @.str4350) %t419 = load ptr, ptr %t408 - %t420 = call ptr @lp_str_concat(ptr @.str4348, ptr %t419) + %t420 = call ptr @lp_str_concat(ptr @.str4351, ptr %t419) %t421 = call ptr @fn_emit_bind(ptr %t420) store ptr %t421, ptr %t422 %t423 = load ptr, ptr %t422 - %t424 = call ptr @lp_str_concat(ptr @.str4349, ptr %t423) - %t425 = call ptr @lp_str_concat(ptr %t424, ptr @.str4350) + %t424 = call ptr @lp_str_concat(ptr @.str4352, ptr %t423) + %t425 = call ptr @lp_str_concat(ptr %t424, ptr @.str4353) %t426 = load ptr, ptr %t143 %t427 = call ptr @lp_str_concat(ptr %t425, ptr %t426) %t428 = call ptr @fn_emit_bind(ptr %t427) store ptr %t428, ptr %t429 - call void @fn_emit(ptr @.str4351) + call void @fn_emit(ptr @.str4354) %t430 = load ptr, ptr %t429 call void @fn_emit(ptr %t430) - call void @fn_emit(ptr @.str4352) + call void @fn_emit(ptr @.str4355) %t431 = load ptr, ptr %t414 call void @fn_emit(ptr %t431) - call void @fn_emit(ptr @.str4353) + call void @fn_emit(ptr @.str4356) %t432 = load ptr, ptr %t416 call void @fn_emit(ptr %t432) - call void @fn_emit(ptr @.str4354) + call void @fn_emit(ptr @.str4357) %t433 = load ptr, ptr %t414 call void @fn_emit(ptr %t433) - call void @fn_emit(ptr @.str4355) + call void @fn_emit(ptr @.str4358) %t434 = load ptr, ptr %t38 %t435 = load ptr, ptr %t1 %t436 = load ptr, ptr %t422 %t437 = call ptr @fn_gep_at(ptr %t434, ptr %t435, ptr %t436) store ptr %t437, ptr %t438 %t439 = load ptr, ptr %t1 - %t440 = call ptr @lp_str_concat(ptr @.str4356, ptr %t439) - %t441 = call ptr @lp_str_concat(ptr %t440, ptr @.str4357) + %t440 = call ptr @lp_str_concat(ptr @.str4359, ptr %t439) + %t441 = call ptr @lp_str_concat(ptr %t440, ptr @.str4360) %t442 = load ptr, ptr %t438 %t443 = call ptr @lp_str_concat(ptr %t441, ptr %t442) %t444 = call ptr @fn_emit_bind(ptr %t443) @@ -50016,62 +50069,62 @@ entry: %t448 = load ptr, ptr %t422 %t449 = call ptr @fn_gep_at(ptr %t446, ptr %t447, ptr %t448) store ptr %t449, ptr %t450 - call void @fn_emit(ptr @.str4358) + call void @fn_emit(ptr @.str4361) %t451 = load ptr, ptr %t1 call void @fn_emit(ptr %t451) - call void @fn_emit(ptr @.str4359) + call void @fn_emit(ptr @.str4362) %t452 = load ptr, ptr %t445 call void @fn_emit(ptr %t452) - call void @fn_emit(ptr @.str4360) + call void @fn_emit(ptr @.str4363) %t453 = load ptr, ptr %t450 call void @fn_emit(ptr %t453) - call void @fn_emit(ptr @.str4361) + call void @fn_emit(ptr @.str4364) %t454 = load ptr, ptr %t422 - %t455 = call ptr @lp_str_concat(ptr @.str4362, ptr %t454) - %t456 = call ptr @lp_str_concat(ptr %t455, ptr @.str4363) + %t455 = call ptr @lp_str_concat(ptr @.str4365, ptr %t454) + %t456 = call ptr @lp_str_concat(ptr %t455, ptr @.str4366) %t457 = call ptr @fn_emit_bind(ptr %t456) store ptr %t457, ptr %t458 %t459 = load ptr, ptr %t458 %t460 = load ptr, ptr %t408 - call void @fn_store_at(ptr @.str4364, ptr %t459, ptr %t460) - call void @fn_emit(ptr @.str4365) + call void @fn_store_at(ptr @.str4367, ptr %t459, ptr %t460) + call void @fn_emit(ptr @.str4368) %t461 = load ptr, ptr %t412 call void @fn_emit(ptr %t461) - call void @fn_emit(ptr @.str4366) + call void @fn_emit(ptr @.str4369) %t462 = load ptr, ptr %t416 call void @fn_emit(ptr %t462) - call void @fn_emit(ptr @.str4367) + call void @fn_emit(ptr @.str4370) %t463 = load ptr, ptr %t84 - %t464 = call ptr @lp_str_concat(ptr @.str4368, ptr %t463) - %t465 = call ptr @lp_str_concat(ptr %t464, ptr @.str4369) + %t464 = call ptr @lp_str_concat(ptr @.str4371, ptr %t463) + %t465 = call ptr @lp_str_concat(ptr %t464, ptr @.str4372) %t466 = load ptr, ptr %t69 %t467 = call ptr @lp_str_concat(ptr %t465, ptr %t466) %t468 = call ptr @fn_emit_bind(ptr %t467) store ptr %t468, ptr %t469 %t470 = load ptr, ptr %t469 %t471 = load ptr, ptr %t71 - call void @fn_store_at(ptr @.str4370, ptr %t470, ptr %t471) - call void @fn_emit(ptr @.str4371) + call void @fn_store_at(ptr @.str4373, ptr %t470, ptr %t471) + call void @fn_emit(ptr @.str4374) %t472 = load ptr, ptr %t74 call void @fn_emit(ptr %t472) - call void @fn_emit(ptr @.str4372) + call void @fn_emit(ptr @.str4375) %t473 = load ptr, ptr %t78 call void @fn_emit(ptr %t473) - call void @fn_emit(ptr @.str4373) + call void @fn_emit(ptr @.str4376) %t474 = load ptr, ptr %t69 %t475 = load ptr, ptr %t40 - call void @fn_store_at(ptr @.str4374, ptr %t474, ptr %t475) - call void @fn_emit(ptr @.str4375) + call void @fn_store_at(ptr @.str4377, ptr %t474, ptr %t475) + call void @fn_emit(ptr @.str4378) %t476 = load ptr, ptr %t43 call void @fn_emit(ptr %t476) - call void @fn_emit(ptr @.str4376) + call void @fn_emit(ptr @.str4379) %t477 = load ptr, ptr %t47 call void @fn_emit(ptr %t477) - call void @fn_emit(ptr @.str4377) - call void @fn_emit(ptr @.str4378) + call void @fn_emit(ptr @.str4380) + call void @fn_emit(ptr @.str4381) %t478 = load ptr, ptr %t38 call void @fn_emit(ptr %t478) - call void @fn_emit(ptr @.str4379) + call void @fn_emit(ptr @.str4382) br label %ret ret: ret void @@ -50096,8 +50149,8 @@ entry: br i1 %t9, label %then0, label %ifend2 then0: %t10 = load ptr, ptr %t0 - %t11 = call ptr @lp_str_concat(ptr @.str4380, ptr %t10) - %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str4381) + %t11 = call ptr @lp_str_concat(ptr @.str4383, ptr %t10) + %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str4384) call void @fn_perr(ptr %t12) br label %ifend2 ifend2: @@ -50116,8 +50169,8 @@ ifend2: br i1 %t24, label %then3, label %ifend5 then3: %t25 = load ptr, ptr %t0 - %t26 = call ptr @lp_str_concat(ptr @.str4382, ptr %t25) - %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str4383) + %t26 = call ptr @lp_str_concat(ptr @.str4385, ptr %t25) + %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str4386) call void @fn_perr(ptr %t27) br label %ifend5 ifend5: @@ -50139,11 +50192,11 @@ ifend5: br i1 %t42, label %then6, label %ifend8 then6: %t43 = load ptr, ptr %t0 - %t44 = call ptr @lp_str_concat(ptr @.str4384, ptr %t43) - %t45 = call ptr @lp_str_concat(ptr %t44, ptr @.str4385) + %t44 = call ptr @lp_str_concat(ptr @.str4387, ptr %t43) + %t45 = call ptr @lp_str_concat(ptr %t44, ptr @.str4388) %t46 = load ptr, ptr %t37 %t47 = call ptr @lp_str_concat(ptr %t45, ptr %t46) - %t48 = call ptr @lp_str_concat(ptr %t47, ptr @.str4386) + %t48 = call ptr @lp_str_concat(ptr %t47, ptr @.str4389) call void @fn_perr(ptr %t48) br label %ifend8 ifend8: @@ -50318,7 +50371,7 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str4387) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str4390) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -50328,7 +50381,7 @@ then0: br label %ret ifend2: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str4388) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str4391) %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then3, label %ifend5 then3: @@ -50338,7 +50391,7 @@ then3: br label %ret ifend5: %t12 = load ptr, ptr %t0 - %t13 = call i32 @lp_str_eq(ptr %t12, ptr @.str4389) + %t13 = call i32 @lp_str_eq(ptr %t12, ptr @.str4392) %t14 = icmp ne i32 %t13, 0 br i1 %t14, label %then6, label %ifend8 then6: @@ -50360,27 +50413,27 @@ then6: %t30 = load ptr, ptr %t29 %t31 = call ptr @fn_emit_expr(ptr %t30) store ptr %t31, ptr %t32 - %t33 = call ptr @fn_find_fn(ptr @.str4390) + %t33 = call ptr @fn_find_fn(ptr @.str4393) %t34 = icmp eq ptr %t33, null %t35 = zext i1 %t34 to i32 %t36 = icmp ne i32 %t35, 0 br i1 %t36, label %then9, label %ifend11 then9: - call void @fn_perr(ptr @.str4391) + call void @fn_perr(ptr @.str4394) br label %ifend11 ifend11: %t37 = load ptr, ptr %t23 %t38 = getelementptr inbounds %Cmp_Val, ptr %t37, i32 0, i32 0 %t39 = load ptr, ptr %t38 - %t40 = call ptr @lp_str_concat(ptr @.str4392, ptr %t39) - %t41 = call ptr @lp_str_concat(ptr %t40, ptr @.str4393) + %t40 = call ptr @lp_str_concat(ptr @.str4395, ptr %t39) + %t41 = call ptr @lp_str_concat(ptr %t40, ptr @.str4396) %t42 = load ptr, ptr %t32 %t43 = getelementptr inbounds %Cmp_Val, ptr %t42, i32 0, i32 0 %t44 = load ptr, ptr %t43 %t45 = call ptr @lp_str_concat(ptr %t41, ptr %t44) - %t46 = call ptr @lp_str_concat(ptr %t45, ptr @.str4394) + %t46 = call ptr @lp_str_concat(ptr %t45, ptr @.str4397) %t47 = call ptr @fn_emit_bind(ptr %t46) - %t48 = call ptr @fn_val(ptr %t47, ptr @.str4395) + %t48 = call ptr @fn_val(ptr %t47, ptr @.str4398) store ptr %t48, ptr %retval br label %ret ifend8: @@ -50403,8 +50456,8 @@ ifend8: br i1 %t64, label %then12, label %ifend14 then12: %t65 = load ptr, ptr %t0 - %t66 = call ptr @lp_str_concat(ptr @.str4396, ptr %t65) - %t67 = call ptr @lp_str_concat(ptr %t66, ptr @.str4397) + %t66 = call ptr @lp_str_concat(ptr @.str4399, ptr %t65) + %t67 = call ptr @lp_str_concat(ptr %t66, ptr @.str4400) call void @fn_perr(ptr %t67) br label %ifend14 ifend14: @@ -50424,30 +50477,30 @@ ifend14: %t81 = call ptr @fn_slice_field(ptr %t80, i32 1) store ptr %t81, ptr %t82 %t83 = load ptr, ptr %t0 - %t84 = call i32 @lp_str_eq(ptr %t83, ptr @.str4398) + %t84 = call i32 @lp_str_eq(ptr %t83, ptr @.str4401) %t85 = icmp ne i32 %t84, 0 br i1 %t85, label %then15, label %ifend17 then15: - call void @fn_emit(ptr @.str4399) + call void @fn_emit(ptr @.str4402) %t86 = load ptr, ptr %t82 call void @fn_emit(ptr %t86) - call void @fn_emit(ptr @.str4400) - %t87 = call ptr @fn_val(ptr @.str4401, ptr @.str4402) + call void @fn_emit(ptr @.str4403) + %t87 = call ptr @fn_val(ptr @.str4404, ptr @.str4405) store ptr %t87, ptr %retval br label %ret ifend17: %t88 = load ptr, ptr %t0 - %t89 = call i32 @lp_str_eq(ptr %t88, ptr @.str4403) + %t89 = call i32 @lp_str_eq(ptr %t88, ptr @.str4406) %t90 = icmp ne i32 %t89, 0 br i1 %t90, label %then18, label %ifend20 then18: %t91 = load ptr, ptr %t79 %t92 = load ptr, ptr %t75 - %t93 = call ptr @fn_list_elem_addr(ptr %t91, ptr %t92, ptr @.str4404) + %t93 = call ptr @fn_list_elem_addr(ptr %t91, ptr %t92, ptr @.str4407) store ptr %t93, ptr %t94 %t95 = load ptr, ptr %t75 - %t96 = call ptr @lp_str_concat(ptr @.str4405, ptr %t95) - %t97 = call ptr @lp_str_concat(ptr %t96, ptr @.str4406) + %t96 = call ptr @lp_str_concat(ptr @.str4408, ptr %t95) + %t97 = call ptr @lp_str_concat(ptr %t96, ptr @.str4409) %t98 = load ptr, ptr %t94 %t99 = call ptr @lp_str_concat(ptr %t97, ptr %t98) %t100 = call ptr @fn_emit_bind(ptr %t99) @@ -50457,17 +50510,17 @@ then18: br label %ret ifend20: %t103 = load ptr, ptr %t0 - %t104 = call i32 @lp_str_eq(ptr %t103, ptr @.str4407) + %t104 = call i32 @lp_str_eq(ptr %t103, ptr @.str4410) %t105 = icmp ne i32 %t104, 0 br i1 %t105, label %then21, label %ifend23 then21: %t106 = load ptr, ptr %t82 - %t107 = call ptr @lp_str_concat(ptr @.str4408, ptr %t106) + %t107 = call ptr @lp_str_concat(ptr @.str4411, ptr %t106) %t108 = call ptr @fn_emit_bind(ptr %t107) store ptr %t108, ptr %t109 %t110 = load ptr, ptr %t109 - %t111 = call ptr @lp_str_concat(ptr @.str4409, ptr %t110) - %t112 = call ptr @lp_str_concat(ptr %t111, ptr @.str4410) + %t111 = call ptr @lp_str_concat(ptr @.str4412, ptr %t110) + %t112 = call ptr @lp_str_concat(ptr %t111, ptr @.str4413) %t113 = call ptr @fn_emit_bind(ptr %t112) store ptr %t113, ptr %t114 %t115 = load ptr, ptr %t79 @@ -50476,8 +50529,8 @@ then21: %t118 = call ptr @fn_list_elem_addr(ptr %t115, ptr %t116, ptr %t117) store ptr %t118, ptr %t119 %t120 = load ptr, ptr %t75 - %t121 = call ptr @lp_str_concat(ptr @.str4411, ptr %t120) - %t122 = call ptr @lp_str_concat(ptr %t121, ptr @.str4412) + %t121 = call ptr @lp_str_concat(ptr @.str4414, ptr %t120) + %t122 = call ptr @lp_str_concat(ptr %t121, ptr @.str4415) %t123 = load ptr, ptr %t119 %t124 = call ptr @lp_str_concat(ptr %t122, ptr %t123) %t125 = call ptr @fn_emit_bind(ptr %t124) @@ -50487,17 +50540,17 @@ then21: br label %ret ifend23: %t128 = load ptr, ptr %t0 - %t129 = call i32 @lp_str_eq(ptr %t128, ptr @.str4413) + %t129 = call i32 @lp_str_eq(ptr %t128, ptr @.str4416) %t130 = icmp ne i32 %t129, 0 br i1 %t130, label %then24, label %ifend26 then24: %t131 = load ptr, ptr %t82 - %t132 = call ptr @lp_str_concat(ptr @.str4414, ptr %t131) + %t132 = call ptr @lp_str_concat(ptr @.str4417, ptr %t131) %t133 = call ptr @fn_emit_bind(ptr %t132) store ptr %t133, ptr %t134 %t135 = load ptr, ptr %t134 - %t136 = call ptr @lp_str_concat(ptr @.str4415, ptr %t135) - %t137 = call ptr @lp_str_concat(ptr %t136, ptr @.str4416) + %t136 = call ptr @lp_str_concat(ptr @.str4418, ptr %t135) + %t137 = call ptr @lp_str_concat(ptr %t136, ptr @.str4419) %t138 = call ptr @fn_emit_bind(ptr %t137) store ptr %t138, ptr %t139 %t140 = load ptr, ptr %t79 @@ -50506,19 +50559,19 @@ then24: %t143 = call ptr @fn_list_elem_addr(ptr %t140, ptr %t141, ptr %t142) store ptr %t143, ptr %t144 %t145 = load ptr, ptr %t75 - %t146 = call ptr @lp_str_concat(ptr @.str4417, ptr %t145) - %t147 = call ptr @lp_str_concat(ptr %t146, ptr @.str4418) + %t146 = call ptr @lp_str_concat(ptr @.str4420, ptr %t145) + %t147 = call ptr @lp_str_concat(ptr %t146, ptr @.str4421) %t148 = load ptr, ptr %t144 %t149 = call ptr @lp_str_concat(ptr %t147, ptr %t148) %t150 = call ptr @fn_emit_bind(ptr %t149) store ptr %t150, ptr %t151 - call void @fn_emit(ptr @.str4419) + call void @fn_emit(ptr @.str4422) %t152 = load ptr, ptr %t139 call void @fn_emit(ptr %t152) - call void @fn_emit(ptr @.str4420) + call void @fn_emit(ptr @.str4423) %t153 = load ptr, ptr %t82 call void @fn_emit(ptr %t153) - call void @fn_emit(ptr @.str4421) + call void @fn_emit(ptr @.str4424) %t154 = load ptr, ptr %t151 %t155 = load ptr, ptr %t72 %t156 = call ptr @fn_val(ptr %t154, ptr %t155) @@ -50526,7 +50579,7 @@ then24: br label %ret ifend26: %t157 = load ptr, ptr %t0 - %t158 = call i32 @lp_str_eq(ptr %t157, ptr @.str4422) + %t158 = call i32 @lp_str_eq(ptr %t157, ptr @.str4425) %t159 = icmp ne i32 %t158, 0 br i1 %t159, label %then27, label %ifend29 then27: @@ -50563,52 +50616,52 @@ then27: %t190 = call ptr @fn_list_elem_addr(ptr %t185, ptr %t186, ptr %t189) store ptr %t190, ptr %t191 %t192 = load ptr, ptr %t75 - %t193 = call ptr @lp_str_concat(ptr @.str4423, ptr %t192) - %t194 = call ptr @lp_str_concat(ptr %t193, ptr @.str4424) + %t193 = call ptr @lp_str_concat(ptr @.str4426, ptr %t192) + %t194 = call ptr @lp_str_concat(ptr %t193, ptr @.str4427) %t195 = load ptr, ptr %t184 %t196 = call ptr @lp_str_concat(ptr %t194, ptr %t195) %t197 = call ptr @fn_emit_bind(ptr %t196) store ptr %t197, ptr %t198 %t199 = load ptr, ptr %t75 - %t200 = call ptr @lp_str_concat(ptr @.str4425, ptr %t199) - %t201 = call ptr @lp_str_concat(ptr %t200, ptr @.str4426) + %t200 = call ptr @lp_str_concat(ptr @.str4428, ptr %t199) + %t201 = call ptr @lp_str_concat(ptr %t200, ptr @.str4429) %t202 = load ptr, ptr %t191 %t203 = call ptr @lp_str_concat(ptr %t201, ptr %t202) %t204 = call ptr @fn_emit_bind(ptr %t203) store ptr %t204, ptr %t205 - call void @fn_emit(ptr @.str4427) + call void @fn_emit(ptr @.str4430) %t206 = load ptr, ptr %t75 call void @fn_emit(ptr %t206) - call void @fn_emit(ptr @.str4428) + call void @fn_emit(ptr @.str4431) %t207 = load ptr, ptr %t205 call void @fn_emit(ptr %t207) - call void @fn_emit(ptr @.str4429) + call void @fn_emit(ptr @.str4432) %t208 = load ptr, ptr %t184 call void @fn_emit(ptr %t208) - call void @fn_emit(ptr @.str4430) - call void @fn_emit(ptr @.str4431) + call void @fn_emit(ptr @.str4433) + call void @fn_emit(ptr @.str4434) %t209 = load ptr, ptr %t75 call void @fn_emit(ptr %t209) - call void @fn_emit(ptr @.str4432) + call void @fn_emit(ptr @.str4435) %t210 = load ptr, ptr %t198 call void @fn_emit(ptr %t210) - call void @fn_emit(ptr @.str4433) + call void @fn_emit(ptr @.str4436) %t211 = load ptr, ptr %t191 call void @fn_emit(ptr %t211) - call void @fn_emit(ptr @.str4434) - %t212 = call ptr @fn_val(ptr @.str4435, ptr @.str4436) + call void @fn_emit(ptr @.str4437) + %t212 = call ptr @fn_val(ptr @.str4438, ptr @.str4439) store ptr %t212, ptr %retval br label %ret ifend29: %t214 = load ptr, ptr %t0 - %t215 = call i32 @lp_str_eq(ptr %t214, ptr @.str4437) + %t215 = call i32 @lp_str_eq(ptr %t214, ptr @.str4440) %t216 = icmp ne i32 %t215, 0 %t217 = zext i1 %t216 to i32 store i32 %t217, ptr %t213 br i1 %t216, label %scend31, label %sc30 sc30: %t218 = load ptr, ptr %t0 - %t219 = call i32 @lp_str_eq(ptr %t218, ptr @.str4438) + %t219 = call i32 @lp_str_eq(ptr %t218, ptr @.str4441) %t220 = icmp ne i32 %t219, 0 %t221 = zext i1 %t220 to i32 store i32 %t221, ptr %t213 @@ -50628,149 +50681,149 @@ then32: %t231 = call ptr @fn_emit_expr(ptr %t230) store ptr %t231, ptr %t232 %t233 = load ptr, ptr %t82 - %t234 = call ptr @lp_str_concat(ptr @.str4439, ptr %t233) + %t234 = call ptr @lp_str_concat(ptr @.str4442, ptr %t233) %t235 = call ptr @fn_emit_bind(ptr %t234) store ptr %t235, ptr %t236 - %t237 = call ptr @fn_emit_alloca(ptr @.str4440) + %t237 = call ptr @fn_emit_alloca(ptr @.str4443) store ptr %t237, ptr %t238 %t239 = load ptr, ptr %t238 - call void @fn_store_at(ptr @.str4441, ptr @.str4442, ptr %t239) - %t240 = call ptr @fn_emit_alloca(ptr @.str4443) + call void @fn_store_at(ptr @.str4444, ptr @.str4445, ptr %t239) + %t240 = call ptr @fn_emit_alloca(ptr @.str4446) store ptr %t240, ptr %t241 %t242 = load ptr, ptr %t241 - call void @fn_store_at(ptr @.str4444, ptr @.str4445, ptr %t242) - %t243 = call ptr @fn_lbl(ptr @.str4446) + call void @fn_store_at(ptr @.str4447, ptr @.str4448, ptr %t242) + %t243 = call ptr @fn_lbl(ptr @.str4449) store ptr %t243, ptr %t244 - %t245 = call ptr @fn_lbl(ptr @.str4447) + %t245 = call ptr @fn_lbl(ptr @.str4450) store ptr %t245, ptr %t246 - %t247 = call ptr @fn_lbl(ptr @.str4448) + %t247 = call ptr @fn_lbl(ptr @.str4451) store ptr %t247, ptr %t248 - %t249 = call ptr @fn_lbl(ptr @.str4449) + %t249 = call ptr @fn_lbl(ptr @.str4452) store ptr %t249, ptr %t250 - %t251 = call ptr @fn_lbl(ptr @.str4450) + %t251 = call ptr @fn_lbl(ptr @.str4453) store ptr %t251, ptr %t252 - call void @fn_emit(ptr @.str4451) + call void @fn_emit(ptr @.str4454) %t253 = load ptr, ptr %t244 call void @fn_emit(ptr %t253) - call void @fn_emit(ptr @.str4452) + call void @fn_emit(ptr @.str4455) %t254 = load ptr, ptr %t244 call void @fn_emit(ptr %t254) - call void @fn_emit(ptr @.str4453) + call void @fn_emit(ptr @.str4456) %t255 = load ptr, ptr %t241 - %t256 = call ptr @lp_str_concat(ptr @.str4454, ptr %t255) + %t256 = call ptr @lp_str_concat(ptr @.str4457, ptr %t255) %t257 = call ptr @fn_emit_bind(ptr %t256) store ptr %t257, ptr %t258 %t259 = load ptr, ptr %t258 - %t260 = call ptr @lp_str_concat(ptr @.str4455, ptr %t259) - %t261 = call ptr @lp_str_concat(ptr %t260, ptr @.str4456) + %t260 = call ptr @lp_str_concat(ptr @.str4458, ptr %t259) + %t261 = call ptr @lp_str_concat(ptr %t260, ptr @.str4459) %t262 = load ptr, ptr %t236 %t263 = call ptr @lp_str_concat(ptr %t261, ptr %t262) %t264 = call ptr @fn_emit_bind(ptr %t263) store ptr %t264, ptr %t265 - call void @fn_emit(ptr @.str4457) + call void @fn_emit(ptr @.str4460) %t266 = load ptr, ptr %t265 call void @fn_emit(ptr %t266) - call void @fn_emit(ptr @.str4458) + call void @fn_emit(ptr @.str4461) %t267 = load ptr, ptr %t246 call void @fn_emit(ptr %t267) - call void @fn_emit(ptr @.str4459) + call void @fn_emit(ptr @.str4462) %t268 = load ptr, ptr %t252 call void @fn_emit(ptr %t268) - call void @fn_emit(ptr @.str4460) + call void @fn_emit(ptr @.str4463) %t269 = load ptr, ptr %t246 call void @fn_emit(ptr %t269) - call void @fn_emit(ptr @.str4461) + call void @fn_emit(ptr @.str4464) %t270 = load ptr, ptr %t79 %t271 = load ptr, ptr %t75 %t272 = load ptr, ptr %t258 %t273 = call ptr @fn_list_elem_addr(ptr %t270, ptr %t271, ptr %t272) store ptr %t273, ptr %t274 %t275 = load ptr, ptr %t75 - %t276 = call ptr @lp_str_concat(ptr @.str4462, ptr %t275) - %t277 = call ptr @lp_str_concat(ptr %t276, ptr @.str4463) + %t276 = call ptr @lp_str_concat(ptr @.str4465, ptr %t275) + %t277 = call ptr @lp_str_concat(ptr %t276, ptr @.str4466) %t278 = load ptr, ptr %t274 %t279 = call ptr @lp_str_concat(ptr %t277, ptr %t278) %t280 = call ptr @fn_emit_bind(ptr %t279) store ptr %t280, ptr %t281 %t282 = load ptr, ptr %t75 - %t283 = call ptr @lp_str_concat(ptr @.str4464, ptr %t282) - %t284 = call ptr @lp_str_concat(ptr %t283, ptr @.str4465) + %t283 = call ptr @lp_str_concat(ptr @.str4467, ptr %t282) + %t284 = call ptr @lp_str_concat(ptr %t283, ptr @.str4468) %t285 = load ptr, ptr %t281 %t286 = call ptr @lp_str_concat(ptr %t284, ptr %t285) - %t287 = call ptr @lp_str_concat(ptr %t286, ptr @.str4466) + %t287 = call ptr @lp_str_concat(ptr %t286, ptr @.str4469) %t288 = load ptr, ptr %t232 %t289 = getelementptr inbounds %Cmp_Val, ptr %t288, i32 0, i32 0 %t290 = load ptr, ptr %t289 %t291 = call ptr @lp_str_concat(ptr %t287, ptr %t290) %t292 = call ptr @fn_emit_bind(ptr %t291) store ptr %t292, ptr %t293 - call void @fn_emit(ptr @.str4467) + call void @fn_emit(ptr @.str4470) %t294 = load ptr, ptr %t293 call void @fn_emit(ptr %t294) - call void @fn_emit(ptr @.str4468) + call void @fn_emit(ptr @.str4471) %t295 = load ptr, ptr %t248 call void @fn_emit(ptr %t295) - call void @fn_emit(ptr @.str4469) + call void @fn_emit(ptr @.str4472) %t296 = load ptr, ptr %t250 call void @fn_emit(ptr %t296) - call void @fn_emit(ptr @.str4470) + call void @fn_emit(ptr @.str4473) %t297 = load ptr, ptr %t248 call void @fn_emit(ptr %t297) - call void @fn_emit(ptr @.str4471) + call void @fn_emit(ptr @.str4474) %t298 = load ptr, ptr %t258 %t299 = load ptr, ptr %t238 - call void @fn_store_at(ptr @.str4472, ptr %t298, ptr %t299) - call void @fn_emit(ptr @.str4473) + call void @fn_store_at(ptr @.str4475, ptr %t298, ptr %t299) + call void @fn_emit(ptr @.str4476) %t300 = load ptr, ptr %t252 call void @fn_emit(ptr %t300) - call void @fn_emit(ptr @.str4474) + call void @fn_emit(ptr @.str4477) %t301 = load ptr, ptr %t250 call void @fn_emit(ptr %t301) - call void @fn_emit(ptr @.str4475) + call void @fn_emit(ptr @.str4478) %t302 = load ptr, ptr %t258 - %t303 = call ptr @lp_str_concat(ptr @.str4476, ptr %t302) - %t304 = call ptr @lp_str_concat(ptr %t303, ptr @.str4477) + %t303 = call ptr @lp_str_concat(ptr @.str4479, ptr %t302) + %t304 = call ptr @lp_str_concat(ptr %t303, ptr @.str4480) %t305 = call ptr @fn_emit_bind(ptr %t304) store ptr %t305, ptr %t306 %t307 = load ptr, ptr %t306 %t308 = load ptr, ptr %t241 - call void @fn_store_at(ptr @.str4478, ptr %t307, ptr %t308) - call void @fn_emit(ptr @.str4479) + call void @fn_store_at(ptr @.str4481, ptr %t307, ptr %t308) + call void @fn_emit(ptr @.str4482) %t309 = load ptr, ptr %t244 call void @fn_emit(ptr %t309) - call void @fn_emit(ptr @.str4480) + call void @fn_emit(ptr @.str4483) %t310 = load ptr, ptr %t252 call void @fn_emit(ptr %t310) - call void @fn_emit(ptr @.str4481) + call void @fn_emit(ptr @.str4484) %t311 = load ptr, ptr %t238 - %t312 = call ptr @lp_str_concat(ptr @.str4482, ptr %t311) + %t312 = call ptr @lp_str_concat(ptr @.str4485, ptr %t311) %t313 = call ptr @fn_emit_bind(ptr %t312) store ptr %t313, ptr %t314 %t315 = load ptr, ptr %t0 - %t316 = call i32 @lp_str_eq(ptr %t315, ptr @.str4483) + %t316 = call i32 @lp_str_eq(ptr %t315, ptr @.str4486) %t317 = icmp ne i32 %t316, 0 br i1 %t317, label %then35, label %ifend37 then35: %t318 = load ptr, ptr %t314 - %t319 = call ptr @fn_val(ptr %t318, ptr @.str4484) + %t319 = call ptr @fn_val(ptr %t318, ptr @.str4487) store ptr %t319, ptr %retval br label %ret ifend37: %t320 = load ptr, ptr %t314 - %t321 = call ptr @lp_str_concat(ptr @.str4485, ptr %t320) - %t322 = call ptr @lp_str_concat(ptr %t321, ptr @.str4486) + %t321 = call ptr @lp_str_concat(ptr @.str4488, ptr %t320) + %t322 = call ptr @lp_str_concat(ptr %t321, ptr @.str4489) %t323 = call ptr @fn_emit_bind(ptr %t322) store ptr %t323, ptr %t324 %t325 = load ptr, ptr %t324 - %t326 = call ptr @lp_str_concat(ptr @.str4487, ptr %t325) - %t327 = call ptr @lp_str_concat(ptr %t326, ptr @.str4488) + %t326 = call ptr @lp_str_concat(ptr @.str4490, ptr %t325) + %t327 = call ptr @lp_str_concat(ptr %t326, ptr @.str4491) %t328 = call ptr @fn_emit_bind(ptr %t327) - %t329 = call ptr @fn_val(ptr %t328, ptr @.str4489) + %t329 = call ptr @fn_val(ptr %t328, ptr @.str4492) store ptr %t329, ptr %retval br label %ret ifend34: %t330 = load ptr, ptr %t0 - %t331 = call i32 @lp_str_eq(ptr %t330, ptr @.str4490) + %t331 = call i32 @lp_str_eq(ptr %t330, ptr @.str4493) %t332 = icmp ne i32 %t331, 0 br i1 %t332, label %then38, label %ifend40 then38: @@ -50796,56 +50849,56 @@ then38: %t352 = load ptr, ptr %t75 call void @fn_list_grow_if_full(ptr %t351, ptr %t352) %t353 = load ptr, ptr %t82 - %t354 = call ptr @lp_str_concat(ptr @.str4491, ptr %t353) + %t354 = call ptr @lp_str_concat(ptr @.str4494, ptr %t353) %t355 = call ptr @fn_emit_bind(ptr %t354) store ptr %t355, ptr %t356 - %t357 = call ptr @fn_emit_alloca(ptr @.str4492) + %t357 = call ptr @fn_emit_alloca(ptr @.str4495) store ptr %t357, ptr %t358 %t359 = load ptr, ptr %t356 %t360 = load ptr, ptr %t358 - call void @fn_store_at(ptr @.str4493, ptr %t359, ptr %t360) - %t361 = call ptr @fn_lbl(ptr @.str4494) + call void @fn_store_at(ptr @.str4496, ptr %t359, ptr %t360) + %t361 = call ptr @fn_lbl(ptr @.str4497) store ptr %t361, ptr %t362 - %t363 = call ptr @fn_lbl(ptr @.str4495) + %t363 = call ptr @fn_lbl(ptr @.str4498) store ptr %t363, ptr %t364 - %t365 = call ptr @fn_lbl(ptr @.str4496) + %t365 = call ptr @fn_lbl(ptr @.str4499) store ptr %t365, ptr %t366 - call void @fn_emit(ptr @.str4497) + call void @fn_emit(ptr @.str4500) %t367 = load ptr, ptr %t362 call void @fn_emit(ptr %t367) - call void @fn_emit(ptr @.str4498) + call void @fn_emit(ptr @.str4501) %t368 = load ptr, ptr %t362 call void @fn_emit(ptr %t368) - call void @fn_emit(ptr @.str4499) + call void @fn_emit(ptr @.str4502) %t369 = load ptr, ptr %t358 - %t370 = call ptr @lp_str_concat(ptr @.str4500, ptr %t369) + %t370 = call ptr @lp_str_concat(ptr @.str4503, ptr %t369) %t371 = call ptr @fn_emit_bind(ptr %t370) store ptr %t371, ptr %t372 %t373 = load ptr, ptr %t372 - %t374 = call ptr @lp_str_concat(ptr @.str4501, ptr %t373) - %t375 = call ptr @lp_str_concat(ptr %t374, ptr @.str4502) + %t374 = call ptr @lp_str_concat(ptr @.str4504, ptr %t373) + %t375 = call ptr @lp_str_concat(ptr %t374, ptr @.str4505) %t376 = load ptr, ptr %t341 %t377 = getelementptr inbounds %Cmp_Val, ptr %t376, i32 0, i32 0 %t378 = load ptr, ptr %t377 %t379 = call ptr @lp_str_concat(ptr %t375, ptr %t378) %t380 = call ptr @fn_emit_bind(ptr %t379) store ptr %t380, ptr %t381 - call void @fn_emit(ptr @.str4503) + call void @fn_emit(ptr @.str4506) %t382 = load ptr, ptr %t381 call void @fn_emit(ptr %t382) - call void @fn_emit(ptr @.str4504) + call void @fn_emit(ptr @.str4507) %t383 = load ptr, ptr %t364 call void @fn_emit(ptr %t383) - call void @fn_emit(ptr @.str4505) + call void @fn_emit(ptr @.str4508) %t384 = load ptr, ptr %t366 call void @fn_emit(ptr %t384) - call void @fn_emit(ptr @.str4506) + call void @fn_emit(ptr @.str4509) %t385 = load ptr, ptr %t364 call void @fn_emit(ptr %t385) - call void @fn_emit(ptr @.str4507) + call void @fn_emit(ptr @.str4510) %t386 = load ptr, ptr %t372 - %t387 = call ptr @lp_str_concat(ptr @.str4508, ptr %t386) - %t388 = call ptr @lp_str_concat(ptr %t387, ptr @.str4509) + %t387 = call ptr @lp_str_concat(ptr @.str4511, ptr %t386) + %t388 = call ptr @lp_str_concat(ptr %t387, ptr @.str4512) %t389 = call ptr @fn_emit_bind(ptr %t388) store ptr %t389, ptr %t390 %t391 = load ptr, ptr %t79 @@ -50854,8 +50907,8 @@ then38: %t394 = call ptr @fn_list_elem_addr(ptr %t391, ptr %t392, ptr %t393) store ptr %t394, ptr %t395 %t396 = load ptr, ptr %t75 - %t397 = call ptr @lp_str_concat(ptr @.str4510, ptr %t396) - %t398 = call ptr @lp_str_concat(ptr %t397, ptr @.str4511) + %t397 = call ptr @lp_str_concat(ptr @.str4513, ptr %t396) + %t398 = call ptr @lp_str_concat(ptr %t397, ptr @.str4514) %t399 = load ptr, ptr %t395 %t400 = call ptr @lp_str_concat(ptr %t398, ptr %t399) %t401 = call ptr @fn_emit_bind(ptr %t400) @@ -50865,26 +50918,26 @@ then38: %t405 = load ptr, ptr %t372 %t406 = call ptr @fn_list_elem_addr(ptr %t403, ptr %t404, ptr %t405) store ptr %t406, ptr %t407 - call void @fn_emit(ptr @.str4512) + call void @fn_emit(ptr @.str4515) %t408 = load ptr, ptr %t75 call void @fn_emit(ptr %t408) - call void @fn_emit(ptr @.str4513) + call void @fn_emit(ptr @.str4516) %t409 = load ptr, ptr %t402 call void @fn_emit(ptr %t409) - call void @fn_emit(ptr @.str4514) + call void @fn_emit(ptr @.str4517) %t410 = load ptr, ptr %t407 call void @fn_emit(ptr %t410) - call void @fn_emit(ptr @.str4515) + call void @fn_emit(ptr @.str4518) %t411 = load ptr, ptr %t390 %t412 = load ptr, ptr %t358 - call void @fn_store_at(ptr @.str4516, ptr %t411, ptr %t412) - call void @fn_emit(ptr @.str4517) + call void @fn_store_at(ptr @.str4519, ptr %t411, ptr %t412) + call void @fn_emit(ptr @.str4520) %t413 = load ptr, ptr %t362 call void @fn_emit(ptr %t413) - call void @fn_emit(ptr @.str4518) + call void @fn_emit(ptr @.str4521) %t414 = load ptr, ptr %t366 call void @fn_emit(ptr %t414) - call void @fn_emit(ptr @.str4519) + call void @fn_emit(ptr @.str4522) %t415 = load ptr, ptr %t79 %t416 = load ptr, ptr %t75 %t417 = load ptr, ptr %t341 @@ -50892,36 +50945,36 @@ then38: %t419 = load ptr, ptr %t418 %t420 = call ptr @fn_list_elem_addr(ptr %t415, ptr %t416, ptr %t419) store ptr %t420, ptr %t421 - call void @fn_emit(ptr @.str4520) + call void @fn_emit(ptr @.str4523) %t422 = load ptr, ptr %t75 call void @fn_emit(ptr %t422) - call void @fn_emit(ptr @.str4521) + call void @fn_emit(ptr @.str4524) %t423 = load ptr, ptr %t350 %t424 = getelementptr inbounds %Cmp_Val, ptr %t423, i32 0, i32 0 %t425 = load ptr, ptr %t424 call void @fn_emit(ptr %t425) - call void @fn_emit(ptr @.str4522) + call void @fn_emit(ptr @.str4525) %t426 = load ptr, ptr %t421 call void @fn_emit(ptr %t426) - call void @fn_emit(ptr @.str4523) + call void @fn_emit(ptr @.str4526) %t427 = load ptr, ptr %t356 - %t428 = call ptr @lp_str_concat(ptr @.str4524, ptr %t427) - %t429 = call ptr @lp_str_concat(ptr %t428, ptr @.str4525) + %t428 = call ptr @lp_str_concat(ptr @.str4527, ptr %t427) + %t429 = call ptr @lp_str_concat(ptr %t428, ptr @.str4528) %t430 = call ptr @fn_emit_bind(ptr %t429) store ptr %t430, ptr %t431 - call void @fn_emit(ptr @.str4526) + call void @fn_emit(ptr @.str4529) %t432 = load ptr, ptr %t431 call void @fn_emit(ptr %t432) - call void @fn_emit(ptr @.str4527) + call void @fn_emit(ptr @.str4530) %t433 = load ptr, ptr %t82 call void @fn_emit(ptr %t433) - call void @fn_emit(ptr @.str4528) - %t434 = call ptr @fn_val(ptr @.str4529, ptr @.str4530) + call void @fn_emit(ptr @.str4531) + %t434 = call ptr @fn_val(ptr @.str4532, ptr @.str4533) store ptr %t434, ptr %retval br label %ret ifend40: %t435 = load ptr, ptr %t0 - %t436 = call i32 @lp_str_eq(ptr %t435, ptr @.str4531) + %t436 = call i32 @lp_str_eq(ptr %t435, ptr @.str4534) %t437 = icmp ne i32 %t436, 0 br i1 %t437, label %then41, label %ifend43 then41: @@ -50935,61 +50988,61 @@ then41: %t445 = call ptr @fn_emit_expr(ptr %t444) store ptr %t445, ptr %t446 %t447 = load ptr, ptr %t82 - %t448 = call ptr @lp_str_concat(ptr @.str4532, ptr %t447) + %t448 = call ptr @lp_str_concat(ptr @.str4535, ptr %t447) %t449 = call ptr @fn_emit_bind(ptr %t448) store ptr %t449, ptr %t450 %t451 = load ptr, ptr %t450 - %t452 = call ptr @lp_str_concat(ptr @.str4533, ptr %t451) - %t453 = call ptr @lp_str_concat(ptr %t452, ptr @.str4534) + %t452 = call ptr @lp_str_concat(ptr @.str4536, ptr %t451) + %t453 = call ptr @lp_str_concat(ptr %t452, ptr @.str4537) %t454 = call ptr @fn_emit_bind(ptr %t453) store ptr %t454, ptr %t455 - %t456 = call ptr @fn_emit_alloca(ptr @.str4535) + %t456 = call ptr @fn_emit_alloca(ptr @.str4538) store ptr %t456, ptr %t457 %t458 = load ptr, ptr %t446 %t459 = getelementptr inbounds %Cmp_Val, ptr %t458, i32 0, i32 0 %t460 = load ptr, ptr %t459 %t461 = load ptr, ptr %t457 - call void @fn_store_at(ptr @.str4536, ptr %t460, ptr %t461) - %t462 = call ptr @fn_lbl(ptr @.str4537) + call void @fn_store_at(ptr @.str4539, ptr %t460, ptr %t461) + %t462 = call ptr @fn_lbl(ptr @.str4540) store ptr %t462, ptr %t463 - %t464 = call ptr @fn_lbl(ptr @.str4538) + %t464 = call ptr @fn_lbl(ptr @.str4541) store ptr %t464, ptr %t465 - %t466 = call ptr @fn_lbl(ptr @.str4539) + %t466 = call ptr @fn_lbl(ptr @.str4542) store ptr %t466, ptr %t467 - call void @fn_emit(ptr @.str4540) + call void @fn_emit(ptr @.str4543) %t468 = load ptr, ptr %t463 call void @fn_emit(ptr %t468) - call void @fn_emit(ptr @.str4541) + call void @fn_emit(ptr @.str4544) %t469 = load ptr, ptr %t463 call void @fn_emit(ptr %t469) - call void @fn_emit(ptr @.str4542) + call void @fn_emit(ptr @.str4545) %t470 = load ptr, ptr %t457 - %t471 = call ptr @lp_str_concat(ptr @.str4543, ptr %t470) + %t471 = call ptr @lp_str_concat(ptr @.str4546, ptr %t470) %t472 = call ptr @fn_emit_bind(ptr %t471) store ptr %t472, ptr %t473 %t474 = load ptr, ptr %t473 - %t475 = call ptr @lp_str_concat(ptr @.str4544, ptr %t474) - %t476 = call ptr @lp_str_concat(ptr %t475, ptr @.str4545) + %t475 = call ptr @lp_str_concat(ptr @.str4547, ptr %t474) + %t476 = call ptr @lp_str_concat(ptr %t475, ptr @.str4548) %t477 = load ptr, ptr %t455 %t478 = call ptr @lp_str_concat(ptr %t476, ptr %t477) %t479 = call ptr @fn_emit_bind(ptr %t478) store ptr %t479, ptr %t480 - call void @fn_emit(ptr @.str4546) + call void @fn_emit(ptr @.str4549) %t481 = load ptr, ptr %t480 call void @fn_emit(ptr %t481) - call void @fn_emit(ptr @.str4547) + call void @fn_emit(ptr @.str4550) %t482 = load ptr, ptr %t465 call void @fn_emit(ptr %t482) - call void @fn_emit(ptr @.str4548) + call void @fn_emit(ptr @.str4551) %t483 = load ptr, ptr %t467 call void @fn_emit(ptr %t483) - call void @fn_emit(ptr @.str4549) + call void @fn_emit(ptr @.str4552) %t484 = load ptr, ptr %t465 call void @fn_emit(ptr %t484) - call void @fn_emit(ptr @.str4550) + call void @fn_emit(ptr @.str4553) %t485 = load ptr, ptr %t473 - %t486 = call ptr @lp_str_concat(ptr @.str4551, ptr %t485) - %t487 = call ptr @lp_str_concat(ptr %t486, ptr @.str4552) + %t486 = call ptr @lp_str_concat(ptr @.str4554, ptr %t485) + %t487 = call ptr @lp_str_concat(ptr %t486, ptr @.str4555) %t488 = call ptr @fn_emit_bind(ptr %t487) store ptr %t488, ptr %t489 %t490 = load ptr, ptr %t79 @@ -50998,8 +51051,8 @@ then41: %t493 = call ptr @fn_list_elem_addr(ptr %t490, ptr %t491, ptr %t492) store ptr %t493, ptr %t494 %t495 = load ptr, ptr %t75 - %t496 = call ptr @lp_str_concat(ptr @.str4553, ptr %t495) - %t497 = call ptr @lp_str_concat(ptr %t496, ptr @.str4554) + %t496 = call ptr @lp_str_concat(ptr @.str4556, ptr %t495) + %t497 = call ptr @lp_str_concat(ptr %t496, ptr @.str4557) %t498 = load ptr, ptr %t494 %t499 = call ptr @lp_str_concat(ptr %t497, ptr %t498) %t500 = call ptr @fn_emit_bind(ptr %t499) @@ -51009,39 +51062,39 @@ then41: %t504 = load ptr, ptr %t473 %t505 = call ptr @fn_list_elem_addr(ptr %t502, ptr %t503, ptr %t504) store ptr %t505, ptr %t506 - call void @fn_emit(ptr @.str4555) + call void @fn_emit(ptr @.str4558) %t507 = load ptr, ptr %t75 call void @fn_emit(ptr %t507) - call void @fn_emit(ptr @.str4556) + call void @fn_emit(ptr @.str4559) %t508 = load ptr, ptr %t501 call void @fn_emit(ptr %t508) - call void @fn_emit(ptr @.str4557) + call void @fn_emit(ptr @.str4560) %t509 = load ptr, ptr %t506 call void @fn_emit(ptr %t509) - call void @fn_emit(ptr @.str4558) + call void @fn_emit(ptr @.str4561) %t510 = load ptr, ptr %t489 %t511 = load ptr, ptr %t457 - call void @fn_store_at(ptr @.str4559, ptr %t510, ptr %t511) - call void @fn_emit(ptr @.str4560) + call void @fn_store_at(ptr @.str4562, ptr %t510, ptr %t511) + call void @fn_emit(ptr @.str4563) %t512 = load ptr, ptr %t463 call void @fn_emit(ptr %t512) - call void @fn_emit(ptr @.str4561) + call void @fn_emit(ptr @.str4564) %t513 = load ptr, ptr %t467 call void @fn_emit(ptr %t513) - call void @fn_emit(ptr @.str4562) - call void @fn_emit(ptr @.str4563) + call void @fn_emit(ptr @.str4565) + call void @fn_emit(ptr @.str4566) %t514 = load ptr, ptr %t455 call void @fn_emit(ptr %t514) - call void @fn_emit(ptr @.str4564) + call void @fn_emit(ptr @.str4567) %t515 = load ptr, ptr %t82 call void @fn_emit(ptr %t515) - call void @fn_emit(ptr @.str4565) - %t516 = call ptr @fn_val(ptr @.str4566, ptr @.str4567) + call void @fn_emit(ptr @.str4568) + %t516 = call ptr @fn_val(ptr @.str4569, ptr @.str4570) store ptr %t516, ptr %retval br label %ret ifend43: %t517 = load ptr, ptr %t0 - %t518 = call i32 @lp_str_eq(ptr %t517, ptr @.str4568) + %t518 = call i32 @lp_str_eq(ptr %t517, ptr @.str4571) %t519 = icmp ne i32 %t518, 0 br i1 %t519, label %then44, label %ifend46 then44: @@ -51055,212 +51108,212 @@ then44: %t527 = call ptr @fn_emit_expr(ptr %t526) store ptr %t527, ptr %t528 %t529 = load ptr, ptr %t82 - %t530 = call ptr @lp_str_concat(ptr @.str4569, ptr %t529) + %t530 = call ptr @lp_str_concat(ptr @.str4572, ptr %t529) %t531 = call ptr @fn_emit_bind(ptr %t530) store ptr %t531, ptr %t532 - %t533 = call ptr @fn_emit_alloca(ptr @.str4570) + %t533 = call ptr @fn_emit_alloca(ptr @.str4573) store ptr %t533, ptr %t534 %t535 = load ptr, ptr %t534 - call void @fn_store_at(ptr @.str4571, ptr @.str4572, ptr %t535) - %t536 = call ptr @fn_emit_alloca(ptr @.str4573) + call void @fn_store_at(ptr @.str4574, ptr @.str4575, ptr %t535) + %t536 = call ptr @fn_emit_alloca(ptr @.str4576) store ptr %t536, ptr %t537 %t538 = load ptr, ptr %t537 - call void @fn_store_at(ptr @.str4574, ptr @.str4575, ptr %t538) - %t539 = call ptr @fn_lbl(ptr @.str4576) + call void @fn_store_at(ptr @.str4577, ptr @.str4578, ptr %t538) + %t539 = call ptr @fn_lbl(ptr @.str4579) store ptr %t539, ptr %t540 - %t541 = call ptr @fn_lbl(ptr @.str4577) + %t541 = call ptr @fn_lbl(ptr @.str4580) store ptr %t541, ptr %t542 - %t543 = call ptr @fn_lbl(ptr @.str4578) + %t543 = call ptr @fn_lbl(ptr @.str4581) store ptr %t543, ptr %t544 - %t545 = call ptr @fn_lbl(ptr @.str4579) + %t545 = call ptr @fn_lbl(ptr @.str4582) store ptr %t545, ptr %t546 - %t547 = call ptr @fn_lbl(ptr @.str4580) + %t547 = call ptr @fn_lbl(ptr @.str4583) store ptr %t547, ptr %t548 - call void @fn_emit(ptr @.str4581) + call void @fn_emit(ptr @.str4584) %t549 = load ptr, ptr %t540 call void @fn_emit(ptr %t549) - call void @fn_emit(ptr @.str4582) + call void @fn_emit(ptr @.str4585) %t550 = load ptr, ptr %t540 call void @fn_emit(ptr %t550) - call void @fn_emit(ptr @.str4583) + call void @fn_emit(ptr @.str4586) %t551 = load ptr, ptr %t537 - %t552 = call ptr @lp_str_concat(ptr @.str4584, ptr %t551) + %t552 = call ptr @lp_str_concat(ptr @.str4587, ptr %t551) %t553 = call ptr @fn_emit_bind(ptr %t552) store ptr %t553, ptr %t554 %t555 = load ptr, ptr %t554 - %t556 = call ptr @lp_str_concat(ptr @.str4585, ptr %t555) - %t557 = call ptr @lp_str_concat(ptr %t556, ptr @.str4586) + %t556 = call ptr @lp_str_concat(ptr @.str4588, ptr %t555) + %t557 = call ptr @lp_str_concat(ptr %t556, ptr @.str4589) %t558 = load ptr, ptr %t532 %t559 = call ptr @lp_str_concat(ptr %t557, ptr %t558) %t560 = call ptr @fn_emit_bind(ptr %t559) store ptr %t560, ptr %t561 %t562 = load ptr, ptr %t534 - %t563 = call ptr @lp_str_concat(ptr @.str4587, ptr %t562) + %t563 = call ptr @lp_str_concat(ptr @.str4590, ptr %t562) %t564 = call ptr @fn_emit_bind(ptr %t563) store ptr %t564, ptr %t565 %t566 = load ptr, ptr %t565 - %t567 = call ptr @lp_str_concat(ptr @.str4588, ptr %t566) - %t568 = call ptr @lp_str_concat(ptr %t567, ptr @.str4589) + %t567 = call ptr @lp_str_concat(ptr @.str4591, ptr %t566) + %t568 = call ptr @lp_str_concat(ptr %t567, ptr @.str4592) %t569 = call ptr @fn_emit_bind(ptr %t568) store ptr %t569, ptr %t570 %t571 = load ptr, ptr %t561 - %t572 = call ptr @lp_str_concat(ptr @.str4590, ptr %t571) - %t573 = call ptr @lp_str_concat(ptr %t572, ptr @.str4591) + %t572 = call ptr @lp_str_concat(ptr @.str4593, ptr %t571) + %t573 = call ptr @lp_str_concat(ptr %t572, ptr @.str4594) %t574 = load ptr, ptr %t570 %t575 = call ptr @lp_str_concat(ptr %t573, ptr %t574) %t576 = call ptr @fn_emit_bind(ptr %t575) store ptr %t576, ptr %t577 - call void @fn_emit(ptr @.str4592) + call void @fn_emit(ptr @.str4595) %t578 = load ptr, ptr %t577 call void @fn_emit(ptr %t578) - call void @fn_emit(ptr @.str4593) + call void @fn_emit(ptr @.str4596) %t579 = load ptr, ptr %t542 call void @fn_emit(ptr %t579) - call void @fn_emit(ptr @.str4594) + call void @fn_emit(ptr @.str4597) %t580 = load ptr, ptr %t548 call void @fn_emit(ptr %t580) - call void @fn_emit(ptr @.str4595) + call void @fn_emit(ptr @.str4598) %t581 = load ptr, ptr %t542 call void @fn_emit(ptr %t581) - call void @fn_emit(ptr @.str4596) + call void @fn_emit(ptr @.str4599) %t582 = load ptr, ptr %t79 %t583 = load ptr, ptr %t75 %t584 = load ptr, ptr %t554 %t585 = call ptr @fn_list_elem_addr(ptr %t582, ptr %t583, ptr %t584) store ptr %t585, ptr %t586 %t587 = load ptr, ptr %t75 - %t588 = call ptr @lp_str_concat(ptr @.str4597, ptr %t587) - %t589 = call ptr @lp_str_concat(ptr %t588, ptr @.str4598) + %t588 = call ptr @lp_str_concat(ptr @.str4600, ptr %t587) + %t589 = call ptr @lp_str_concat(ptr %t588, ptr @.str4601) %t590 = load ptr, ptr %t586 %t591 = call ptr @lp_str_concat(ptr %t589, ptr %t590) %t592 = call ptr @fn_emit_bind(ptr %t591) store ptr %t592, ptr %t593 %t594 = load ptr, ptr %t75 - %t595 = call ptr @lp_str_concat(ptr @.str4599, ptr %t594) - %t596 = call ptr @lp_str_concat(ptr %t595, ptr @.str4600) + %t595 = call ptr @lp_str_concat(ptr @.str4602, ptr %t594) + %t596 = call ptr @lp_str_concat(ptr %t595, ptr @.str4603) %t597 = load ptr, ptr %t593 %t598 = call ptr @lp_str_concat(ptr %t596, ptr %t597) - %t599 = call ptr @lp_str_concat(ptr %t598, ptr @.str4601) + %t599 = call ptr @lp_str_concat(ptr %t598, ptr @.str4604) %t600 = load ptr, ptr %t528 %t601 = getelementptr inbounds %Cmp_Val, ptr %t600, i32 0, i32 0 %t602 = load ptr, ptr %t601 %t603 = call ptr @lp_str_concat(ptr %t599, ptr %t602) %t604 = call ptr @fn_emit_bind(ptr %t603) store ptr %t604, ptr %t605 - call void @fn_emit(ptr @.str4602) + call void @fn_emit(ptr @.str4605) %t606 = load ptr, ptr %t605 call void @fn_emit(ptr %t606) - call void @fn_emit(ptr @.str4603) + call void @fn_emit(ptr @.str4606) %t607 = load ptr, ptr %t544 call void @fn_emit(ptr %t607) - call void @fn_emit(ptr @.str4604) + call void @fn_emit(ptr @.str4607) %t608 = load ptr, ptr %t546 call void @fn_emit(ptr %t608) - call void @fn_emit(ptr @.str4605) + call void @fn_emit(ptr @.str4608) %t609 = load ptr, ptr %t544 call void @fn_emit(ptr %t609) - call void @fn_emit(ptr @.str4606) + call void @fn_emit(ptr @.str4609) %t610 = load ptr, ptr %t554 %t611 = load ptr, ptr %t534 - call void @fn_store_at(ptr @.str4607, ptr %t610, ptr %t611) - call void @fn_emit(ptr @.str4608) + call void @fn_store_at(ptr @.str4610, ptr %t610, ptr %t611) + call void @fn_emit(ptr @.str4611) %t612 = load ptr, ptr %t540 call void @fn_emit(ptr %t612) - call void @fn_emit(ptr @.str4609) + call void @fn_emit(ptr @.str4612) %t613 = load ptr, ptr %t546 call void @fn_emit(ptr %t613) - call void @fn_emit(ptr @.str4610) + call void @fn_emit(ptr @.str4613) %t614 = load ptr, ptr %t554 - %t615 = call ptr @lp_str_concat(ptr @.str4611, ptr %t614) - %t616 = call ptr @lp_str_concat(ptr %t615, ptr @.str4612) + %t615 = call ptr @lp_str_concat(ptr @.str4614, ptr %t614) + %t616 = call ptr @lp_str_concat(ptr %t615, ptr @.str4615) %t617 = call ptr @fn_emit_bind(ptr %t616) store ptr %t617, ptr %t618 %t619 = load ptr, ptr %t618 %t620 = load ptr, ptr %t537 - call void @fn_store_at(ptr @.str4613, ptr %t619, ptr %t620) - call void @fn_emit(ptr @.str4614) + call void @fn_store_at(ptr @.str4616, ptr %t619, ptr %t620) + call void @fn_emit(ptr @.str4617) %t621 = load ptr, ptr %t540 call void @fn_emit(ptr %t621) - call void @fn_emit(ptr @.str4615) + call void @fn_emit(ptr @.str4618) %t622 = load ptr, ptr %t548 call void @fn_emit(ptr %t622) - call void @fn_emit(ptr @.str4616) + call void @fn_emit(ptr @.str4619) %t623 = load ptr, ptr %t534 - %t624 = call ptr @lp_str_concat(ptr @.str4617, ptr %t623) + %t624 = call ptr @lp_str_concat(ptr @.str4620, ptr %t623) %t625 = call ptr @fn_emit_bind(ptr %t624) store ptr %t625, ptr %t626 %t627 = load ptr, ptr %t626 - %t628 = call ptr @lp_str_concat(ptr @.str4618, ptr %t627) - %t629 = call ptr @lp_str_concat(ptr %t628, ptr @.str4619) + %t628 = call ptr @lp_str_concat(ptr @.str4621, ptr %t627) + %t629 = call ptr @lp_str_concat(ptr %t628, ptr @.str4622) %t630 = call ptr @fn_emit_bind(ptr %t629) store ptr %t630, ptr %t631 - %t632 = call ptr @fn_lbl(ptr @.str4620) + %t632 = call ptr @fn_lbl(ptr @.str4623) store ptr %t632, ptr %t633 - %t634 = call ptr @fn_lbl(ptr @.str4621) + %t634 = call ptr @fn_lbl(ptr @.str4624) store ptr %t634, ptr %t635 - call void @fn_emit(ptr @.str4622) + call void @fn_emit(ptr @.str4625) %t636 = load ptr, ptr %t631 call void @fn_emit(ptr %t636) - call void @fn_emit(ptr @.str4623) + call void @fn_emit(ptr @.str4626) %t637 = load ptr, ptr %t633 call void @fn_emit(ptr %t637) - call void @fn_emit(ptr @.str4624) + call void @fn_emit(ptr @.str4627) %t638 = load ptr, ptr %t635 call void @fn_emit(ptr %t638) - call void @fn_emit(ptr @.str4625) + call void @fn_emit(ptr @.str4628) %t639 = load ptr, ptr %t633 call void @fn_emit(ptr %t639) - call void @fn_emit(ptr @.str4626) + call void @fn_emit(ptr @.str4629) %t640 = load ptr, ptr %t532 - %t641 = call ptr @lp_str_concat(ptr @.str4627, ptr %t640) - %t642 = call ptr @lp_str_concat(ptr %t641, ptr @.str4628) + %t641 = call ptr @lp_str_concat(ptr @.str4630, ptr %t640) + %t642 = call ptr @lp_str_concat(ptr %t641, ptr @.str4631) %t643 = call ptr @fn_emit_bind(ptr %t642) store ptr %t643, ptr %t644 - %t645 = call ptr @fn_emit_alloca(ptr @.str4629) + %t645 = call ptr @fn_emit_alloca(ptr @.str4632) store ptr %t645, ptr %t646 %t647 = load ptr, ptr %t626 %t648 = load ptr, ptr %t646 - call void @fn_store_at(ptr @.str4630, ptr %t647, ptr %t648) - %t649 = call ptr @fn_lbl(ptr @.str4631) + call void @fn_store_at(ptr @.str4633, ptr %t647, ptr %t648) + %t649 = call ptr @fn_lbl(ptr @.str4634) store ptr %t649, ptr %t650 - %t651 = call ptr @fn_lbl(ptr @.str4632) + %t651 = call ptr @fn_lbl(ptr @.str4635) store ptr %t651, ptr %t652 - %t653 = call ptr @fn_lbl(ptr @.str4633) + %t653 = call ptr @fn_lbl(ptr @.str4636) store ptr %t653, ptr %t654 - call void @fn_emit(ptr @.str4634) + call void @fn_emit(ptr @.str4637) %t655 = load ptr, ptr %t650 call void @fn_emit(ptr %t655) - call void @fn_emit(ptr @.str4635) + call void @fn_emit(ptr @.str4638) %t656 = load ptr, ptr %t650 call void @fn_emit(ptr %t656) - call void @fn_emit(ptr @.str4636) + call void @fn_emit(ptr @.str4639) %t657 = load ptr, ptr %t646 - %t658 = call ptr @lp_str_concat(ptr @.str4637, ptr %t657) + %t658 = call ptr @lp_str_concat(ptr @.str4640, ptr %t657) %t659 = call ptr @fn_emit_bind(ptr %t658) store ptr %t659, ptr %t660 %t661 = load ptr, ptr %t660 - %t662 = call ptr @lp_str_concat(ptr @.str4638, ptr %t661) - %t663 = call ptr @lp_str_concat(ptr %t662, ptr @.str4639) + %t662 = call ptr @lp_str_concat(ptr @.str4641, ptr %t661) + %t663 = call ptr @lp_str_concat(ptr %t662, ptr @.str4642) %t664 = load ptr, ptr %t644 %t665 = call ptr @lp_str_concat(ptr %t663, ptr %t664) %t666 = call ptr @fn_emit_bind(ptr %t665) store ptr %t666, ptr %t667 - call void @fn_emit(ptr @.str4640) + call void @fn_emit(ptr @.str4643) %t668 = load ptr, ptr %t667 call void @fn_emit(ptr %t668) - call void @fn_emit(ptr @.str4641) + call void @fn_emit(ptr @.str4644) %t669 = load ptr, ptr %t652 call void @fn_emit(ptr %t669) - call void @fn_emit(ptr @.str4642) + call void @fn_emit(ptr @.str4645) %t670 = load ptr, ptr %t654 call void @fn_emit(ptr %t670) - call void @fn_emit(ptr @.str4643) + call void @fn_emit(ptr @.str4646) %t671 = load ptr, ptr %t652 call void @fn_emit(ptr %t671) - call void @fn_emit(ptr @.str4644) + call void @fn_emit(ptr @.str4647) %t672 = load ptr, ptr %t660 - %t673 = call ptr @lp_str_concat(ptr @.str4645, ptr %t672) - %t674 = call ptr @lp_str_concat(ptr %t673, ptr @.str4646) + %t673 = call ptr @lp_str_concat(ptr @.str4648, ptr %t672) + %t674 = call ptr @lp_str_concat(ptr %t673, ptr @.str4649) %t675 = call ptr @fn_emit_bind(ptr %t674) store ptr %t675, ptr %t676 %t677 = load ptr, ptr %t79 @@ -51269,8 +51322,8 @@ then44: %t680 = call ptr @fn_list_elem_addr(ptr %t677, ptr %t678, ptr %t679) store ptr %t680, ptr %t681 %t682 = load ptr, ptr %t75 - %t683 = call ptr @lp_str_concat(ptr @.str4647, ptr %t682) - %t684 = call ptr @lp_str_concat(ptr %t683, ptr @.str4648) + %t683 = call ptr @lp_str_concat(ptr @.str4650, ptr %t682) + %t684 = call ptr @lp_str_concat(ptr %t683, ptr @.str4651) %t685 = load ptr, ptr %t681 %t686 = call ptr @lp_str_concat(ptr %t684, ptr %t685) %t687 = call ptr @fn_emit_bind(ptr %t686) @@ -51280,164 +51333,164 @@ then44: %t691 = load ptr, ptr %t660 %t692 = call ptr @fn_list_elem_addr(ptr %t689, ptr %t690, ptr %t691) store ptr %t692, ptr %t693 - call void @fn_emit(ptr @.str4649) + call void @fn_emit(ptr @.str4652) %t694 = load ptr, ptr %t75 call void @fn_emit(ptr %t694) - call void @fn_emit(ptr @.str4650) + call void @fn_emit(ptr @.str4653) %t695 = load ptr, ptr %t688 call void @fn_emit(ptr %t695) - call void @fn_emit(ptr @.str4651) + call void @fn_emit(ptr @.str4654) %t696 = load ptr, ptr %t693 call void @fn_emit(ptr %t696) - call void @fn_emit(ptr @.str4652) + call void @fn_emit(ptr @.str4655) %t697 = load ptr, ptr %t676 %t698 = load ptr, ptr %t646 - call void @fn_store_at(ptr @.str4653, ptr %t697, ptr %t698) - call void @fn_emit(ptr @.str4654) + call void @fn_store_at(ptr @.str4656, ptr %t697, ptr %t698) + call void @fn_emit(ptr @.str4657) %t699 = load ptr, ptr %t650 call void @fn_emit(ptr %t699) - call void @fn_emit(ptr @.str4655) + call void @fn_emit(ptr @.str4658) %t700 = load ptr, ptr %t654 call void @fn_emit(ptr %t700) - call void @fn_emit(ptr @.str4656) - call void @fn_emit(ptr @.str4657) - %t701 = load ptr, ptr %t644 - call void @fn_emit(ptr %t701) - call void @fn_emit(ptr @.str4658) - %t702 = load ptr, ptr %t82 - call void @fn_emit(ptr %t702) call void @fn_emit(ptr @.str4659) call void @fn_emit(ptr @.str4660) + %t701 = load ptr, ptr %t644 + call void @fn_emit(ptr %t701) + call void @fn_emit(ptr @.str4661) + %t702 = load ptr, ptr %t82 + call void @fn_emit(ptr %t702) + call void @fn_emit(ptr @.str4662) + call void @fn_emit(ptr @.str4663) %t703 = load ptr, ptr %t635 call void @fn_emit(ptr %t703) - call void @fn_emit(ptr @.str4661) + call void @fn_emit(ptr @.str4664) %t704 = load ptr, ptr %t635 call void @fn_emit(ptr %t704) - call void @fn_emit(ptr @.str4662) - %t705 = call ptr @fn_val(ptr @.str4663, ptr @.str4664) + call void @fn_emit(ptr @.str4665) + %t705 = call ptr @fn_val(ptr @.str4666, ptr @.str4667) store ptr %t705, ptr %retval br label %ret ifend46: %t706 = load ptr, ptr %t0 - %t707 = call i32 @lp_str_eq(ptr %t706, ptr @.str4665) + %t707 = call i32 @lp_str_eq(ptr %t706, ptr @.str4668) %t708 = icmp ne i32 %t707, 0 br i1 %t708, label %then47, label %ifend49 then47: %t709 = load ptr, ptr %t82 - %t710 = call ptr @lp_str_concat(ptr @.str4666, ptr %t709) + %t710 = call ptr @lp_str_concat(ptr @.str4669, ptr %t709) %t711 = call ptr @fn_emit_bind(ptr %t710) store ptr %t711, ptr %t712 %t713 = load ptr, ptr %t712 - %t714 = call ptr @lp_str_concat(ptr @.str4667, ptr %t713) - %t715 = call ptr @lp_str_concat(ptr %t714, ptr @.str4668) + %t714 = call ptr @lp_str_concat(ptr @.str4670, ptr %t713) + %t715 = call ptr @lp_str_concat(ptr %t714, ptr @.str4671) %t716 = call ptr @fn_emit_bind(ptr %t715) store ptr %t716, ptr %t717 - %t718 = call ptr @fn_lbl(ptr @.str4669) + %t718 = call ptr @fn_lbl(ptr @.str4672) store ptr %t718, ptr %t719 - %t720 = call ptr @fn_lbl(ptr @.str4670) + %t720 = call ptr @fn_lbl(ptr @.str4673) store ptr %t720, ptr %t721 - %t722 = call ptr @fn_lbl(ptr @.str4671) + %t722 = call ptr @fn_lbl(ptr @.str4674) store ptr %t722, ptr %t723 - call void @fn_emit(ptr @.str4672) + call void @fn_emit(ptr @.str4675) %t724 = load ptr, ptr %t717 call void @fn_emit(ptr %t724) - call void @fn_emit(ptr @.str4673) + call void @fn_emit(ptr @.str4676) %t725 = load ptr, ptr %t719 call void @fn_emit(ptr %t725) - call void @fn_emit(ptr @.str4674) + call void @fn_emit(ptr @.str4677) %t726 = load ptr, ptr %t721 call void @fn_emit(ptr %t726) - call void @fn_emit(ptr @.str4675) + call void @fn_emit(ptr @.str4678) %t727 = load ptr, ptr %t719 call void @fn_emit(ptr %t727) - call void @fn_emit(ptr @.str4676) + call void @fn_emit(ptr @.str4679) %t728 = load ptr, ptr %t82 - %t729 = call ptr @lp_str_concat(ptr @.str4677, ptr %t728) + %t729 = call ptr @lp_str_concat(ptr @.str4680, ptr %t728) %t730 = call ptr @fn_emit_bind(ptr %t729) store ptr %t730, ptr %t731 - %t732 = call ptr @fn_emit_alloca(ptr @.str4678) + %t732 = call ptr @fn_emit_alloca(ptr @.str4681) store ptr %t732, ptr %t733 %t734 = load ptr, ptr %t733 - call void @fn_store_at(ptr @.str4679, ptr @.str4680, ptr %t734) - %t735 = call ptr @fn_lbl(ptr @.str4681) + call void @fn_store_at(ptr @.str4682, ptr @.str4683, ptr %t734) + %t735 = call ptr @fn_lbl(ptr @.str4684) store ptr %t735, ptr %t736 - %t737 = call ptr @fn_lbl(ptr @.str4682) + %t737 = call ptr @fn_lbl(ptr @.str4685) store ptr %t737, ptr %t738 - %t739 = call ptr @fn_lbl(ptr @.str4683) + %t739 = call ptr @fn_lbl(ptr @.str4686) store ptr %t739, ptr %t740 - call void @fn_emit(ptr @.str4684) + call void @fn_emit(ptr @.str4687) %t741 = load ptr, ptr %t736 call void @fn_emit(ptr %t741) - call void @fn_emit(ptr @.str4685) + call void @fn_emit(ptr @.str4688) %t742 = load ptr, ptr %t736 call void @fn_emit(ptr %t742) - call void @fn_emit(ptr @.str4686) + call void @fn_emit(ptr @.str4689) %t743 = load ptr, ptr %t733 - %t744 = call ptr @lp_str_concat(ptr @.str4687, ptr %t743) + %t744 = call ptr @lp_str_concat(ptr @.str4690, ptr %t743) %t745 = call ptr @fn_emit_bind(ptr %t744) store ptr %t745, ptr %t746 %t747 = load ptr, ptr %t746 - %t748 = call ptr @lp_str_concat(ptr @.str4688, ptr %t747) - %t749 = call ptr @lp_str_concat(ptr %t748, ptr @.str4689) + %t748 = call ptr @lp_str_concat(ptr @.str4691, ptr %t747) + %t749 = call ptr @lp_str_concat(ptr %t748, ptr @.str4692) %t750 = load ptr, ptr %t731 %t751 = call ptr @lp_str_concat(ptr %t749, ptr %t750) %t752 = call ptr @fn_emit_bind(ptr %t751) store ptr %t752, ptr %t753 - call void @fn_emit(ptr @.str4690) + call void @fn_emit(ptr @.str4693) %t754 = load ptr, ptr %t753 call void @fn_emit(ptr %t754) - call void @fn_emit(ptr @.str4691) + call void @fn_emit(ptr @.str4694) %t755 = load ptr, ptr %t738 call void @fn_emit(ptr %t755) - call void @fn_emit(ptr @.str4692) + call void @fn_emit(ptr @.str4695) %t756 = load ptr, ptr %t740 call void @fn_emit(ptr %t756) - call void @fn_emit(ptr @.str4693) + call void @fn_emit(ptr @.str4696) %t757 = load ptr, ptr %t738 call void @fn_emit(ptr %t757) - call void @fn_emit(ptr @.str4694) + call void @fn_emit(ptr @.str4697) %t758 = load ptr, ptr %t79 %t759 = load ptr, ptr %t75 %t760 = load ptr, ptr %t746 %t761 = call ptr @fn_list_elem_addr(ptr %t758, ptr %t759, ptr %t760) store ptr %t761, ptr %t762 %t763 = load ptr, ptr %t75 - %t764 = call ptr @lp_str_concat(ptr @.str4695, ptr %t763) - %t765 = call ptr @lp_str_concat(ptr %t764, ptr @.str4696) + %t764 = call ptr @lp_str_concat(ptr @.str4698, ptr %t763) + %t765 = call ptr @lp_str_concat(ptr %t764, ptr @.str4699) %t766 = load ptr, ptr %t762 %t767 = call ptr @lp_str_concat(ptr %t765, ptr %t766) %t768 = call ptr @fn_emit_bind(ptr %t767) store ptr %t768, ptr %t769 - %t770 = call ptr @fn_emit_alloca(ptr @.str4697) + %t770 = call ptr @fn_emit_alloca(ptr @.str4700) store ptr %t770, ptr %t771 %t772 = load ptr, ptr %t746 - %t773 = call ptr @lp_str_concat(ptr @.str4698, ptr %t772) - %t774 = call ptr @lp_str_concat(ptr %t773, ptr @.str4699) + %t773 = call ptr @lp_str_concat(ptr @.str4701, ptr %t772) + %t774 = call ptr @lp_str_concat(ptr %t773, ptr @.str4702) %t775 = call ptr @fn_emit_bind(ptr %t774) store ptr %t775, ptr %t776 %t777 = load ptr, ptr %t776 %t778 = load ptr, ptr %t771 - call void @fn_store_at(ptr @.str4700, ptr %t777, ptr %t778) - %t779 = call ptr @fn_lbl(ptr @.str4701) + call void @fn_store_at(ptr @.str4703, ptr %t777, ptr %t778) + %t779 = call ptr @fn_lbl(ptr @.str4704) store ptr %t779, ptr %t780 - %t781 = call ptr @fn_lbl(ptr @.str4702) + %t781 = call ptr @fn_lbl(ptr @.str4705) store ptr %t781, ptr %t782 - %t783 = call ptr @fn_lbl(ptr @.str4703) + %t783 = call ptr @fn_lbl(ptr @.str4706) store ptr %t783, ptr %t784 - call void @fn_emit(ptr @.str4704) + call void @fn_emit(ptr @.str4707) %t785 = load ptr, ptr %t780 call void @fn_emit(ptr %t785) - call void @fn_emit(ptr @.str4705) + call void @fn_emit(ptr @.str4708) %t786 = load ptr, ptr %t780 call void @fn_emit(ptr %t786) - call void @fn_emit(ptr @.str4706) + call void @fn_emit(ptr @.str4709) %t787 = load ptr, ptr %t771 - %t788 = call ptr @lp_str_concat(ptr @.str4707, ptr %t787) + %t788 = call ptr @lp_str_concat(ptr @.str4710, ptr %t787) %t789 = call ptr @fn_emit_bind(ptr %t788) store ptr %t789, ptr %t790 %t791 = load ptr, ptr %t790 - %t792 = call ptr @lp_str_concat(ptr @.str4708, ptr %t791) - %t793 = call ptr @lp_str_concat(ptr %t792, ptr @.str4709) + %t792 = call ptr @lp_str_concat(ptr @.str4711, ptr %t791) + %t793 = call ptr @lp_str_concat(ptr %t792, ptr @.str4712) %t794 = call ptr @fn_emit_bind(ptr %t793) store ptr %t794, ptr %t795 %t796 = load ptr, ptr %t79 @@ -51446,45 +51499,45 @@ then47: %t799 = call ptr @fn_list_elem_addr(ptr %t796, ptr %t797, ptr %t798) store ptr %t799, ptr %t800 %t801 = load ptr, ptr %t75 - %t802 = call ptr @lp_str_concat(ptr @.str4710, ptr %t801) - %t803 = call ptr @lp_str_concat(ptr %t802, ptr @.str4711) + %t802 = call ptr @lp_str_concat(ptr @.str4713, ptr %t801) + %t803 = call ptr @lp_str_concat(ptr %t802, ptr @.str4714) %t804 = load ptr, ptr %t800 %t805 = call ptr @lp_str_concat(ptr %t803, ptr %t804) %t806 = call ptr @fn_emit_bind(ptr %t805) store ptr %t806, ptr %t807 %t808 = load ptr, ptr %t75 - %t809 = call ptr @lp_str_concat(ptr @.str4712, ptr %t808) - %t810 = call ptr @lp_str_concat(ptr %t809, ptr @.str4713) + %t809 = call ptr @lp_str_concat(ptr @.str4715, ptr %t808) + %t810 = call ptr @lp_str_concat(ptr %t809, ptr @.str4716) %t811 = load ptr, ptr %t807 %t812 = call ptr @lp_str_concat(ptr %t810, ptr %t811) - %t813 = call ptr @lp_str_concat(ptr %t812, ptr @.str4714) + %t813 = call ptr @lp_str_concat(ptr %t812, ptr @.str4717) %t814 = load ptr, ptr %t769 %t815 = call ptr @lp_str_concat(ptr %t813, ptr %t814) %t816 = call ptr @fn_emit_bind(ptr %t815) store ptr %t816, ptr %t817 %t818 = load ptr, ptr %t795 - %t819 = call ptr @lp_str_concat(ptr @.str4715, ptr %t818) - %t820 = call ptr @lp_str_concat(ptr %t819, ptr @.str4716) + %t819 = call ptr @lp_str_concat(ptr @.str4718, ptr %t818) + %t820 = call ptr @lp_str_concat(ptr %t819, ptr @.str4719) %t821 = load ptr, ptr %t817 %t822 = call ptr @lp_str_concat(ptr %t820, ptr %t821) %t823 = call ptr @fn_emit_bind(ptr %t822) store ptr %t823, ptr %t824 - call void @fn_emit(ptr @.str4717) + call void @fn_emit(ptr @.str4720) %t825 = load ptr, ptr %t824 call void @fn_emit(ptr %t825) - call void @fn_emit(ptr @.str4718) + call void @fn_emit(ptr @.str4721) %t826 = load ptr, ptr %t782 call void @fn_emit(ptr %t826) - call void @fn_emit(ptr @.str4719) + call void @fn_emit(ptr @.str4722) %t827 = load ptr, ptr %t784 call void @fn_emit(ptr %t827) - call void @fn_emit(ptr @.str4720) + call void @fn_emit(ptr @.str4723) %t828 = load ptr, ptr %t782 call void @fn_emit(ptr %t828) - call void @fn_emit(ptr @.str4721) + call void @fn_emit(ptr @.str4724) %t829 = load ptr, ptr %t790 - %t830 = call ptr @lp_str_concat(ptr @.str4722, ptr %t829) - %t831 = call ptr @lp_str_concat(ptr %t830, ptr @.str4723) + %t830 = call ptr @lp_str_concat(ptr @.str4725, ptr %t829) + %t831 = call ptr @lp_str_concat(ptr %t830, ptr @.str4726) %t832 = call ptr @fn_emit_bind(ptr %t831) store ptr %t832, ptr %t833 %t834 = load ptr, ptr %t79 @@ -51492,38 +51545,38 @@ then47: %t836 = load ptr, ptr %t833 %t837 = call ptr @fn_list_elem_addr(ptr %t834, ptr %t835, ptr %t836) store ptr %t837, ptr %t838 - call void @fn_emit(ptr @.str4724) + call void @fn_emit(ptr @.str4727) %t839 = load ptr, ptr %t75 call void @fn_emit(ptr %t839) - call void @fn_emit(ptr @.str4725) + call void @fn_emit(ptr @.str4728) %t840 = load ptr, ptr %t807 call void @fn_emit(ptr %t840) - call void @fn_emit(ptr @.str4726) + call void @fn_emit(ptr @.str4729) %t841 = load ptr, ptr %t838 call void @fn_emit(ptr %t841) - call void @fn_emit(ptr @.str4727) + call void @fn_emit(ptr @.str4730) %t842 = load ptr, ptr %t790 - %t843 = call ptr @lp_str_concat(ptr @.str4728, ptr %t842) - %t844 = call ptr @lp_str_concat(ptr %t843, ptr @.str4729) + %t843 = call ptr @lp_str_concat(ptr @.str4731, ptr %t842) + %t844 = call ptr @lp_str_concat(ptr %t843, ptr @.str4732) %t845 = call ptr @fn_emit_bind(ptr %t844) store ptr %t845, ptr %t846 %t847 = load ptr, ptr %t846 %t848 = load ptr, ptr %t771 - call void @fn_store_at(ptr @.str4730, ptr %t847, ptr %t848) - call void @fn_emit(ptr @.str4731) + call void @fn_store_at(ptr @.str4733, ptr %t847, ptr %t848) + call void @fn_emit(ptr @.str4734) %t849 = load ptr, ptr %t780 call void @fn_emit(ptr %t849) - call void @fn_emit(ptr @.str4732) + call void @fn_emit(ptr @.str4735) %t850 = load ptr, ptr %t784 call void @fn_emit(ptr %t850) - call void @fn_emit(ptr @.str4733) + call void @fn_emit(ptr @.str4736) %t851 = load ptr, ptr %t771 - %t852 = call ptr @lp_str_concat(ptr @.str4734, ptr %t851) + %t852 = call ptr @lp_str_concat(ptr @.str4737, ptr %t851) %t853 = call ptr @fn_emit_bind(ptr %t852) store ptr %t853, ptr %t854 %t855 = load ptr, ptr %t854 - %t856 = call ptr @lp_str_concat(ptr @.str4735, ptr %t855) - %t857 = call ptr @lp_str_concat(ptr %t856, ptr @.str4736) + %t856 = call ptr @lp_str_concat(ptr @.str4738, ptr %t855) + %t857 = call ptr @lp_str_concat(ptr %t856, ptr @.str4739) %t858 = call ptr @fn_emit_bind(ptr %t857) store ptr %t858, ptr %t859 %t860 = load ptr, ptr %t79 @@ -51531,54 +51584,54 @@ then47: %t862 = load ptr, ptr %t859 %t863 = call ptr @fn_list_elem_addr(ptr %t860, ptr %t861, ptr %t862) store ptr %t863, ptr %t864 - call void @fn_emit(ptr @.str4737) + call void @fn_emit(ptr @.str4740) %t865 = load ptr, ptr %t75 call void @fn_emit(ptr %t865) - call void @fn_emit(ptr @.str4738) + call void @fn_emit(ptr @.str4741) %t866 = load ptr, ptr %t769 call void @fn_emit(ptr %t866) - call void @fn_emit(ptr @.str4739) + call void @fn_emit(ptr @.str4742) %t867 = load ptr, ptr %t864 call void @fn_emit(ptr %t867) - call void @fn_emit(ptr @.str4740) + call void @fn_emit(ptr @.str4743) %t868 = load ptr, ptr %t746 - %t869 = call ptr @lp_str_concat(ptr @.str4741, ptr %t868) - %t870 = call ptr @lp_str_concat(ptr %t869, ptr @.str4742) + %t869 = call ptr @lp_str_concat(ptr @.str4744, ptr %t868) + %t870 = call ptr @lp_str_concat(ptr %t869, ptr @.str4745) %t871 = call ptr @fn_emit_bind(ptr %t870) store ptr %t871, ptr %t872 %t873 = load ptr, ptr %t872 %t874 = load ptr, ptr %t733 - call void @fn_store_at(ptr @.str4743, ptr %t873, ptr %t874) - call void @fn_emit(ptr @.str4744) + call void @fn_store_at(ptr @.str4746, ptr %t873, ptr %t874) + call void @fn_emit(ptr @.str4747) %t875 = load ptr, ptr %t736 call void @fn_emit(ptr %t875) - call void @fn_emit(ptr @.str4745) + call void @fn_emit(ptr @.str4748) %t876 = load ptr, ptr %t740 call void @fn_emit(ptr %t876) - call void @fn_emit(ptr @.str4746) - call void @fn_emit(ptr @.str4747) + call void @fn_emit(ptr @.str4749) + call void @fn_emit(ptr @.str4750) %t877 = load ptr, ptr %t723 call void @fn_emit(ptr %t877) - call void @fn_emit(ptr @.str4748) + call void @fn_emit(ptr @.str4751) %t878 = load ptr, ptr %t721 call void @fn_emit(ptr %t878) - call void @fn_emit(ptr @.str4749) + call void @fn_emit(ptr @.str4752) %t879 = load ptr, ptr %t79 %t880 = load ptr, ptr %t75 - call void @fn_emit_merge_sort(ptr %t879, ptr %t880, i32 3, ptr @.str4750, ptr @.str4751) - call void @fn_emit(ptr @.str4752) + call void @fn_emit_merge_sort(ptr %t879, ptr %t880, i32 3, ptr @.str4753, ptr @.str4754) + call void @fn_emit(ptr @.str4755) %t881 = load ptr, ptr %t723 call void @fn_emit(ptr %t881) - call void @fn_emit(ptr @.str4753) + call void @fn_emit(ptr @.str4756) %t882 = load ptr, ptr %t723 call void @fn_emit(ptr %t882) - call void @fn_emit(ptr @.str4754) - %t883 = call ptr @fn_val(ptr @.str4755, ptr @.str4756) + call void @fn_emit(ptr @.str4757) + %t883 = call ptr @fn_val(ptr @.str4758, ptr @.str4759) store ptr %t883, ptr %retval br label %ret ifend49: %t884 = load ptr, ptr %t0 - %t885 = call i32 @lp_str_eq(ptr %t884, ptr @.str4757) + %t885 = call i32 @lp_str_eq(ptr %t884, ptr @.str4760) %t886 = icmp ne i32 %t885, 0 br i1 %t886, label %then50, label %ifend52 then50: @@ -51597,28 +51650,28 @@ then50: br i1 %t898, label %then53, label %ifend55 then53: %t899 = load ptr, ptr %t890 - %t900 = call ptr @lp_str_concat(ptr @.str4758, ptr %t899) - %t901 = call ptr @lp_str_concat(ptr %t900, ptr @.str4759) + %t900 = call ptr @lp_str_concat(ptr @.str4761, ptr %t899) + %t901 = call ptr @lp_str_concat(ptr %t900, ptr @.str4762) call void @fn_perr(ptr %t901) br label %ifend55 ifend55: %t902 = load ptr, ptr %t79 %t903 = load ptr, ptr %t75 %t904 = load ptr, ptr %t890 - call void @fn_emit_merge_sort(ptr %t902, ptr %t903, i32 0, ptr %t904, ptr @.str4760) - %t905 = call ptr @fn_val(ptr @.str4761, ptr @.str4762) + call void @fn_emit_merge_sort(ptr %t902, ptr %t903, i32 0, ptr %t904, ptr @.str4763) + %t905 = call ptr @fn_val(ptr @.str4764, ptr @.str4765) store ptr %t905, ptr %retval br label %ret ifend52: %t907 = load ptr, ptr %t0 - %t908 = call i32 @lp_str_eq(ptr %t907, ptr @.str4763) + %t908 = call i32 @lp_str_eq(ptr %t907, ptr @.str4766) %t909 = icmp ne i32 %t908, 0 %t910 = zext i1 %t909 to i32 store i32 %t910, ptr %t906 br i1 %t909, label %scend57, label %sc56 sc56: %t911 = load ptr, ptr %t0 - %t912 = call i32 @lp_str_eq(ptr %t911, ptr @.str4764) + %t912 = call i32 @lp_str_eq(ptr %t911, ptr @.str4767) %t913 = icmp ne i32 %t912, 0 %t914 = zext i1 %t913 to i32 store i32 %t914, ptr %t906 @@ -51645,11 +51698,11 @@ then58: br i1 %t930, label %then61, label %ifend63 then61: %t931 = load ptr, ptr %t0 - %t932 = call ptr @lp_str_concat(ptr @.str4765, ptr %t931) - %t933 = call ptr @lp_str_concat(ptr %t932, ptr @.str4766) + %t932 = call ptr @lp_str_concat(ptr @.str4768, ptr %t931) + %t933 = call ptr @lp_str_concat(ptr %t932, ptr @.str4769) %t934 = load ptr, ptr %t920 %t935 = call ptr @lp_str_concat(ptr %t933, ptr %t934) - %t936 = call ptr @lp_str_concat(ptr %t935, ptr @.str4767) + %t936 = call ptr @lp_str_concat(ptr %t935, ptr @.str4770) call void @fn_perr(ptr %t936) br label %ifend63 ifend63: @@ -51659,14 +51712,14 @@ ifend63: %t940 = call ptr @fn_llty(ptr %t939) store ptr %t940, ptr %t941 %t943 = load ptr, ptr %t941 - %t944 = call i32 @lp_str_eq(ptr %t943, ptr @.str4768) + %t944 = call i32 @lp_str_eq(ptr %t943, ptr @.str4771) %t945 = icmp ne i32 %t944, 0 %t946 = zext i1 %t945 to i32 store i32 %t946, ptr %t942 br i1 %t945, label %scend65, label %sc64 sc64: %t947 = load ptr, ptr %t941 - %t948 = call i32 @lp_str_eq(ptr %t947, ptr @.str4769) + %t948 = call i32 @lp_str_eq(ptr %t947, ptr @.str4772) %t949 = icmp ne i32 %t948, 0 %t950 = zext i1 %t949 to i32 store i32 %t950, ptr %t942 @@ -51677,17 +51730,17 @@ scend65: br i1 %t952, label %then66, label %ifend68 then66: %t953 = load ptr, ptr %t0 - %t954 = call ptr @lp_str_concat(ptr @.str4770, ptr %t953) - %t955 = call ptr @lp_str_concat(ptr %t954, ptr @.str4771) + %t954 = call ptr @lp_str_concat(ptr @.str4773, ptr %t953) + %t955 = call ptr @lp_str_concat(ptr %t954, ptr @.str4774) %t956 = load ptr, ptr %t920 %t957 = call ptr @lp_str_concat(ptr %t955, ptr %t956) - %t958 = call ptr @lp_str_concat(ptr %t957, ptr @.str4772) + %t958 = call ptr @lp_str_concat(ptr %t957, ptr @.str4775) call void @fn_perr(ptr %t958) br label %ifend68 ifend68: store i32 1, ptr %t959 %t960 = load ptr, ptr %t0 - %t961 = call i32 @lp_str_eq(ptr %t960, ptr @.str4773) + %t961 = call i32 @lp_str_eq(ptr %t960, ptr @.str4776) %t962 = icmp ne i32 %t961, 0 br i1 %t962, label %then69, label %ifend71 then69: @@ -51700,69 +51753,69 @@ ifend71: %t966 = load ptr, ptr %t920 %t967 = load ptr, ptr %t941 call void @fn_emit_merge_sort(ptr %t963, ptr %t964, i32 %t965, ptr %t966, ptr %t967) - %t968 = call ptr @fn_val(ptr @.str4774, ptr @.str4775) + %t968 = call ptr @fn_val(ptr @.str4777, ptr @.str4778) store ptr %t968, ptr %retval br label %ret ifend60: %t969 = load ptr, ptr %t82 - %t970 = call ptr @lp_str_concat(ptr @.str4776, ptr %t969) + %t970 = call ptr @lp_str_concat(ptr @.str4779, ptr %t969) %t971 = call ptr @fn_emit_bind(ptr %t970) store ptr %t971, ptr %t972 - %t973 = call ptr @fn_emit_alloca(ptr @.str4777) + %t973 = call ptr @fn_emit_alloca(ptr @.str4780) store ptr %t973, ptr %t974 %t975 = load ptr, ptr %t974 - call void @fn_store_at(ptr @.str4778, ptr @.str4779, ptr %t975) - %t976 = call ptr @fn_emit_alloca(ptr @.str4780) + call void @fn_store_at(ptr @.str4781, ptr @.str4782, ptr %t975) + %t976 = call ptr @fn_emit_alloca(ptr @.str4783) store ptr %t976, ptr %t977 %t978 = load ptr, ptr %t972 - %t979 = call ptr @lp_str_concat(ptr @.str4781, ptr %t978) - %t980 = call ptr @lp_str_concat(ptr %t979, ptr @.str4782) + %t979 = call ptr @lp_str_concat(ptr @.str4784, ptr %t978) + %t980 = call ptr @lp_str_concat(ptr %t979, ptr @.str4785) %t981 = call ptr @fn_emit_bind(ptr %t980) store ptr %t981, ptr %t982 %t983 = load ptr, ptr %t982 %t984 = load ptr, ptr %t977 - call void @fn_store_at(ptr @.str4783, ptr %t983, ptr %t984) - %t985 = call ptr @fn_lbl(ptr @.str4784) + call void @fn_store_at(ptr @.str4786, ptr %t983, ptr %t984) + %t985 = call ptr @fn_lbl(ptr @.str4787) store ptr %t985, ptr %t986 - %t987 = call ptr @fn_lbl(ptr @.str4785) + %t987 = call ptr @fn_lbl(ptr @.str4788) store ptr %t987, ptr %t988 - %t989 = call ptr @fn_lbl(ptr @.str4786) + %t989 = call ptr @fn_lbl(ptr @.str4789) store ptr %t989, ptr %t990 - call void @fn_emit(ptr @.str4787) + call void @fn_emit(ptr @.str4790) %t991 = load ptr, ptr %t986 call void @fn_emit(ptr %t991) - call void @fn_emit(ptr @.str4788) + call void @fn_emit(ptr @.str4791) %t992 = load ptr, ptr %t986 call void @fn_emit(ptr %t992) - call void @fn_emit(ptr @.str4789) + call void @fn_emit(ptr @.str4792) %t993 = load ptr, ptr %t974 - %t994 = call ptr @lp_str_concat(ptr @.str4790, ptr %t993) + %t994 = call ptr @lp_str_concat(ptr @.str4793, ptr %t993) %t995 = call ptr @fn_emit_bind(ptr %t994) store ptr %t995, ptr %t996 %t997 = load ptr, ptr %t977 - %t998 = call ptr @lp_str_concat(ptr @.str4791, ptr %t997) + %t998 = call ptr @lp_str_concat(ptr @.str4794, ptr %t997) %t999 = call ptr @fn_emit_bind(ptr %t998) store ptr %t999, ptr %t1000 %t1001 = load ptr, ptr %t996 - %t1002 = call ptr @lp_str_concat(ptr @.str4792, ptr %t1001) - %t1003 = call ptr @lp_str_concat(ptr %t1002, ptr @.str4793) + %t1002 = call ptr @lp_str_concat(ptr @.str4795, ptr %t1001) + %t1003 = call ptr @lp_str_concat(ptr %t1002, ptr @.str4796) %t1004 = load ptr, ptr %t1000 %t1005 = call ptr @lp_str_concat(ptr %t1003, ptr %t1004) %t1006 = call ptr @fn_emit_bind(ptr %t1005) store ptr %t1006, ptr %t1007 - call void @fn_emit(ptr @.str4794) + call void @fn_emit(ptr @.str4797) %t1008 = load ptr, ptr %t1007 call void @fn_emit(ptr %t1008) - call void @fn_emit(ptr @.str4795) + call void @fn_emit(ptr @.str4798) %t1009 = load ptr, ptr %t988 call void @fn_emit(ptr %t1009) - call void @fn_emit(ptr @.str4796) + call void @fn_emit(ptr @.str4799) %t1010 = load ptr, ptr %t990 call void @fn_emit(ptr %t1010) - call void @fn_emit(ptr @.str4797) + call void @fn_emit(ptr @.str4800) %t1011 = load ptr, ptr %t988 call void @fn_emit(ptr %t1011) - call void @fn_emit(ptr @.str4798) + call void @fn_emit(ptr @.str4801) %t1012 = load ptr, ptr %t79 %t1013 = load ptr, ptr %t75 %t1014 = load ptr, ptr %t996 @@ -51774,63 +51827,63 @@ ifend60: %t1020 = call ptr @fn_list_elem_addr(ptr %t1017, ptr %t1018, ptr %t1019) store ptr %t1020, ptr %t1021 %t1022 = load ptr, ptr %t75 - %t1023 = call ptr @lp_str_concat(ptr @.str4799, ptr %t1022) - %t1024 = call ptr @lp_str_concat(ptr %t1023, ptr @.str4800) + %t1023 = call ptr @lp_str_concat(ptr @.str4802, ptr %t1022) + %t1024 = call ptr @lp_str_concat(ptr %t1023, ptr @.str4803) %t1025 = load ptr, ptr %t1016 %t1026 = call ptr @lp_str_concat(ptr %t1024, ptr %t1025) %t1027 = call ptr @fn_emit_bind(ptr %t1026) store ptr %t1027, ptr %t1028 %t1029 = load ptr, ptr %t75 - %t1030 = call ptr @lp_str_concat(ptr @.str4801, ptr %t1029) - %t1031 = call ptr @lp_str_concat(ptr %t1030, ptr @.str4802) + %t1030 = call ptr @lp_str_concat(ptr @.str4804, ptr %t1029) + %t1031 = call ptr @lp_str_concat(ptr %t1030, ptr @.str4805) %t1032 = load ptr, ptr %t1021 %t1033 = call ptr @lp_str_concat(ptr %t1031, ptr %t1032) %t1034 = call ptr @fn_emit_bind(ptr %t1033) store ptr %t1034, ptr %t1035 - call void @fn_emit(ptr @.str4803) + call void @fn_emit(ptr @.str4806) %t1036 = load ptr, ptr %t75 call void @fn_emit(ptr %t1036) - call void @fn_emit(ptr @.str4804) + call void @fn_emit(ptr @.str4807) %t1037 = load ptr, ptr %t1035 call void @fn_emit(ptr %t1037) - call void @fn_emit(ptr @.str4805) + call void @fn_emit(ptr @.str4808) %t1038 = load ptr, ptr %t1016 call void @fn_emit(ptr %t1038) - call void @fn_emit(ptr @.str4806) - call void @fn_emit(ptr @.str4807) + call void @fn_emit(ptr @.str4809) + call void @fn_emit(ptr @.str4810) %t1039 = load ptr, ptr %t75 call void @fn_emit(ptr %t1039) - call void @fn_emit(ptr @.str4808) + call void @fn_emit(ptr @.str4811) %t1040 = load ptr, ptr %t1028 call void @fn_emit(ptr %t1040) - call void @fn_emit(ptr @.str4809) + call void @fn_emit(ptr @.str4812) %t1041 = load ptr, ptr %t1021 call void @fn_emit(ptr %t1041) - call void @fn_emit(ptr @.str4810) + call void @fn_emit(ptr @.str4813) %t1042 = load ptr, ptr %t996 - %t1043 = call ptr @lp_str_concat(ptr @.str4811, ptr %t1042) - %t1044 = call ptr @lp_str_concat(ptr %t1043, ptr @.str4812) + %t1043 = call ptr @lp_str_concat(ptr @.str4814, ptr %t1042) + %t1044 = call ptr @lp_str_concat(ptr %t1043, ptr @.str4815) %t1045 = call ptr @fn_emit_bind(ptr %t1044) store ptr %t1045, ptr %t1046 %t1047 = load ptr, ptr %t1046 %t1048 = load ptr, ptr %t974 - call void @fn_store_at(ptr @.str4813, ptr %t1047, ptr %t1048) + call void @fn_store_at(ptr @.str4816, ptr %t1047, ptr %t1048) %t1049 = load ptr, ptr %t1000 - %t1050 = call ptr @lp_str_concat(ptr @.str4814, ptr %t1049) - %t1051 = call ptr @lp_str_concat(ptr %t1050, ptr @.str4815) + %t1050 = call ptr @lp_str_concat(ptr @.str4817, ptr %t1049) + %t1051 = call ptr @lp_str_concat(ptr %t1050, ptr @.str4818) %t1052 = call ptr @fn_emit_bind(ptr %t1051) store ptr %t1052, ptr %t1053 %t1054 = load ptr, ptr %t1053 %t1055 = load ptr, ptr %t977 - call void @fn_store_at(ptr @.str4816, ptr %t1054, ptr %t1055) - call void @fn_emit(ptr @.str4817) + call void @fn_store_at(ptr @.str4819, ptr %t1054, ptr %t1055) + call void @fn_emit(ptr @.str4820) %t1056 = load ptr, ptr %t986 call void @fn_emit(ptr %t1056) - call void @fn_emit(ptr @.str4818) + call void @fn_emit(ptr @.str4821) %t1057 = load ptr, ptr %t990 call void @fn_emit(ptr %t1057) - call void @fn_emit(ptr @.str4819) - %t1058 = call ptr @fn_val(ptr @.str4820, ptr @.str4821) + call void @fn_emit(ptr @.str4822) + %t1058 = call ptr @fn_val(ptr @.str4823, ptr @.str4824) store ptr %t1058, ptr %retval br label %ret ret: @@ -51848,14 +51901,14 @@ entry: %t21 = alloca i32 store ptr %arg_meth, ptr %t0 %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str4822) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str4825) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str4823) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str4826) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -51868,7 +51921,7 @@ scend1: br i1 %t12, label %scend3, label %sc2 sc2: %t14 = load ptr, ptr %t0 - %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str4824) + %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str4827) %t16 = icmp ne i32 %t15, 0 %t17 = zext i1 %t16 to i32 store i32 %t17, ptr %t1 @@ -51882,14 +51935,14 @@ then4: br label %ret ifend6: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str4825) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str4828) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t21 br i1 %t24, label %scend8, label %sc7 sc7: %t26 = load ptr, ptr %t0 - %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str4826) + %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str4829) %t28 = icmp ne i32 %t27, 0 %t29 = zext i1 %t28 to i32 store i32 %t29, ptr %t21 @@ -51902,7 +51955,7 @@ scend8: br i1 %t31, label %scend10, label %sc9 sc9: %t33 = load ptr, ptr %t0 - %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str4827) + %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str4830) %t35 = icmp ne i32 %t34, 0 %t36 = zext i1 %t35 to i32 store i32 %t36, ptr %t20 @@ -51933,7 +51986,7 @@ entry: %t3 = call ptr @fn_fx_mul_code(ptr %t1, ptr %t2) store ptr %t3, ptr %t4 %t5 = load ptr, ptr %t4 - %t6 = call ptr @fn_fx_mul_code(ptr %t5, ptr @.str4828) + %t6 = call ptr @fn_fx_mul_code(ptr %t5, ptr @.str4831) store ptr %t6, ptr %retval br label %ret ret: @@ -51965,85 +52018,85 @@ entry: %t2 = call ptr @fn_ease_bounce_seg(ptr %t1) store ptr %t2, ptr %t3 %t4 = load ptr, ptr %t0 - %t5 = call ptr @lp_str_concat(ptr @.str4829, ptr %t4) - %t6 = call ptr @lp_str_concat(ptr %t5, ptr @.str4830) + %t5 = call ptr @lp_str_concat(ptr @.str4832, ptr %t4) + %t6 = call ptr @lp_str_concat(ptr %t5, ptr @.str4833) %t7 = call ptr @fn_emit_bind(ptr %t6) store ptr %t7, ptr %t8 %t9 = load ptr, ptr %t8 %t10 = call ptr @fn_ease_bounce_seg(ptr %t9) store ptr %t10, ptr %t11 %t12 = load ptr, ptr %t11 - %t13 = call ptr @lp_str_concat(ptr @.str4831, ptr %t12) - %t14 = call ptr @lp_str_concat(ptr %t13, ptr @.str4832) + %t13 = call ptr @lp_str_concat(ptr @.str4834, ptr %t12) + %t14 = call ptr @lp_str_concat(ptr %t13, ptr @.str4835) %t15 = call ptr @fn_emit_bind(ptr %t14) store ptr %t15, ptr %t16 %t17 = load ptr, ptr %t0 - %t18 = call ptr @lp_str_concat(ptr @.str4833, ptr %t17) - %t19 = call ptr @lp_str_concat(ptr %t18, ptr @.str4834) + %t18 = call ptr @lp_str_concat(ptr @.str4836, ptr %t17) + %t19 = call ptr @lp_str_concat(ptr %t18, ptr @.str4837) %t20 = call ptr @fn_emit_bind(ptr %t19) store ptr %t20, ptr %t21 %t22 = load ptr, ptr %t21 %t23 = call ptr @fn_ease_bounce_seg(ptr %t22) store ptr %t23, ptr %t24 %t25 = load ptr, ptr %t24 - %t26 = call ptr @lp_str_concat(ptr @.str4835, ptr %t25) - %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str4836) + %t26 = call ptr @lp_str_concat(ptr @.str4838, ptr %t25) + %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str4839) %t28 = call ptr @fn_emit_bind(ptr %t27) store ptr %t28, ptr %t29 %t30 = load ptr, ptr %t0 - %t31 = call ptr @lp_str_concat(ptr @.str4837, ptr %t30) - %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str4838) + %t31 = call ptr @lp_str_concat(ptr @.str4840, ptr %t30) + %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str4841) %t33 = call ptr @fn_emit_bind(ptr %t32) store ptr %t33, ptr %t34 %t35 = load ptr, ptr %t34 %t36 = call ptr @fn_ease_bounce_seg(ptr %t35) store ptr %t36, ptr %t37 %t38 = load ptr, ptr %t37 - %t39 = call ptr @lp_str_concat(ptr @.str4839, ptr %t38) - %t40 = call ptr @lp_str_concat(ptr %t39, ptr @.str4840) + %t39 = call ptr @lp_str_concat(ptr @.str4842, ptr %t38) + %t40 = call ptr @lp_str_concat(ptr %t39, ptr @.str4843) %t41 = call ptr @fn_emit_bind(ptr %t40) store ptr %t41, ptr %t42 %t43 = load ptr, ptr %t0 - %t44 = call ptr @lp_str_concat(ptr @.str4841, ptr %t43) - %t45 = call ptr @lp_str_concat(ptr %t44, ptr @.str4842) + %t44 = call ptr @lp_str_concat(ptr @.str4844, ptr %t43) + %t45 = call ptr @lp_str_concat(ptr %t44, ptr @.str4845) %t46 = call ptr @fn_emit_bind(ptr %t45) store ptr %t46, ptr %t47 %t48 = load ptr, ptr %t47 - %t49 = call ptr @lp_str_concat(ptr @.str4843, ptr %t48) - %t50 = call ptr @lp_str_concat(ptr %t49, ptr @.str4844) + %t49 = call ptr @lp_str_concat(ptr @.str4846, ptr %t48) + %t50 = call ptr @lp_str_concat(ptr %t49, ptr @.str4847) %t51 = load ptr, ptr %t29 %t52 = call ptr @lp_str_concat(ptr %t50, ptr %t51) - %t53 = call ptr @lp_str_concat(ptr %t52, ptr @.str4845) + %t53 = call ptr @lp_str_concat(ptr %t52, ptr @.str4848) %t54 = load ptr, ptr %t42 %t55 = call ptr @lp_str_concat(ptr %t53, ptr %t54) %t56 = call ptr @fn_emit_bind(ptr %t55) store ptr %t56, ptr %t57 %t58 = load ptr, ptr %t0 - %t59 = call ptr @lp_str_concat(ptr @.str4846, ptr %t58) - %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str4847) + %t59 = call ptr @lp_str_concat(ptr @.str4849, ptr %t58) + %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str4850) %t61 = call ptr @fn_emit_bind(ptr %t60) store ptr %t61, ptr %t62 %t63 = load ptr, ptr %t62 - %t64 = call ptr @lp_str_concat(ptr @.str4848, ptr %t63) - %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str4849) + %t64 = call ptr @lp_str_concat(ptr @.str4851, ptr %t63) + %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str4852) %t66 = load ptr, ptr %t16 %t67 = call ptr @lp_str_concat(ptr %t65, ptr %t66) - %t68 = call ptr @lp_str_concat(ptr %t67, ptr @.str4850) + %t68 = call ptr @lp_str_concat(ptr %t67, ptr @.str4853) %t69 = load ptr, ptr %t57 %t70 = call ptr @lp_str_concat(ptr %t68, ptr %t69) %t71 = call ptr @fn_emit_bind(ptr %t70) store ptr %t71, ptr %t72 %t73 = load ptr, ptr %t0 - %t74 = call ptr @lp_str_concat(ptr @.str4851, ptr %t73) - %t75 = call ptr @lp_str_concat(ptr %t74, ptr @.str4852) + %t74 = call ptr @lp_str_concat(ptr @.str4854, ptr %t73) + %t75 = call ptr @lp_str_concat(ptr %t74, ptr @.str4855) %t76 = call ptr @fn_emit_bind(ptr %t75) store ptr %t76, ptr %t77 %t78 = load ptr, ptr %t77 - %t79 = call ptr @lp_str_concat(ptr @.str4853, ptr %t78) - %t80 = call ptr @lp_str_concat(ptr %t79, ptr @.str4854) + %t79 = call ptr @lp_str_concat(ptr @.str4856, ptr %t78) + %t80 = call ptr @lp_str_concat(ptr %t79, ptr @.str4857) %t81 = load ptr, ptr %t3 %t82 = call ptr @lp_str_concat(ptr %t80, ptr %t81) - %t83 = call ptr @lp_str_concat(ptr %t82, ptr @.str4855) + %t83 = call ptr @lp_str_concat(ptr %t82, ptr @.str4858) %t84 = load ptr, ptr %t72 %t85 = call ptr @lp_str_concat(ptr %t83, ptr %t84) %t86 = call ptr @fn_emit_bind(ptr %t85) @@ -52106,7 +52159,7 @@ ifend5: br i1 %t17, label %then6, label %ifend8 then6: %t18 = load ptr, ptr %t1 - %t19 = call ptr @lp_str_concat(ptr @.str4856, ptr %t18) + %t19 = call ptr @lp_str_concat(ptr @.str4859, ptr %t18) %t20 = call ptr @fn_emit_bind(ptr %t19) store ptr %t20, ptr %t21 %t22 = load ptr, ptr %t1 @@ -52130,18 +52183,18 @@ then9: %t35 = call ptr @fn_fx_mul_code(ptr %t33, ptr %t34) store ptr %t35, ptr %t36 %t37 = load ptr, ptr %t32 - %t38 = call ptr @lp_str_concat(ptr @.str4857, ptr %t37) - %t39 = call ptr @lp_str_concat(ptr %t38, ptr @.str4858) + %t38 = call ptr @lp_str_concat(ptr @.str4860, ptr %t37) + %t39 = call ptr @lp_str_concat(ptr %t38, ptr @.str4861) %t40 = call ptr @fn_emit_bind(ptr %t39) store ptr %t40, ptr %t41 %t42 = load ptr, ptr %t36 - %t43 = call ptr @lp_str_concat(ptr @.str4859, ptr %t42) - %t44 = call ptr @lp_str_concat(ptr %t43, ptr @.str4860) + %t43 = call ptr @lp_str_concat(ptr @.str4862, ptr %t42) + %t44 = call ptr @lp_str_concat(ptr %t43, ptr @.str4863) %t45 = call ptr @fn_emit_bind(ptr %t44) store ptr %t45, ptr %t46 %t47 = load ptr, ptr %t41 - %t48 = call ptr @lp_str_concat(ptr @.str4861, ptr %t47) - %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str4862) + %t48 = call ptr @lp_str_concat(ptr @.str4864, ptr %t47) + %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str4865) %t50 = load ptr, ptr %t46 %t51 = call ptr @lp_str_concat(ptr %t49, ptr %t50) %t52 = call ptr @fn_emit_bind(ptr %t51) @@ -52163,14 +52216,14 @@ then12: %t63 = call ptr @fn_fx_mul_code(ptr %t61, ptr %t62) store ptr %t63, ptr %t64 %t65 = load ptr, ptr %t64 - %t66 = call ptr @fn_fx_mul_code(ptr %t65, ptr @.str4863) + %t66 = call ptr @fn_fx_mul_code(ptr %t65, ptr @.str4866) store ptr %t66, ptr %t67 %t68 = load ptr, ptr %t60 - %t69 = call ptr @fn_fx_mul_code(ptr %t68, ptr @.str4864) + %t69 = call ptr @fn_fx_mul_code(ptr %t68, ptr @.str4867) store ptr %t69, ptr %t70 %t71 = load ptr, ptr %t67 - %t72 = call ptr @lp_str_concat(ptr @.str4865, ptr %t71) - %t73 = call ptr @lp_str_concat(ptr %t72, ptr @.str4866) + %t72 = call ptr @lp_str_concat(ptr @.str4868, ptr %t71) + %t73 = call ptr @lp_str_concat(ptr %t72, ptr @.str4869) %t74 = load ptr, ptr %t70 %t75 = call ptr @lp_str_concat(ptr %t73, ptr %t74) %t76 = call ptr @fn_emit_bind(ptr %t75) @@ -52185,30 +52238,30 @@ ifend14: then15: store i32 1, ptr @g_g_uses_mathrt %t81 = load ptr, ptr %t1 - %t82 = call ptr @lp_str_concat(ptr @.str4867, ptr %t81) - %t83 = call ptr @lp_str_concat(ptr %t82, ptr @.str4868) + %t82 = call ptr @lp_str_concat(ptr @.str4870, ptr %t81) + %t83 = call ptr @lp_str_concat(ptr %t82, ptr @.str4871) %t84 = call ptr @fn_emit_bind(ptr %t83) store ptr %t84, ptr %t85 %t86 = load ptr, ptr %t85 - %t87 = call ptr @lp_str_concat(ptr @.str4869, ptr %t86) + %t87 = call ptr @lp_str_concat(ptr @.str4872, ptr %t86) %t88 = call ptr @fn_emit_bind(ptr %t87) store ptr %t88, ptr %t89 %t90 = load ptr, ptr %t89 - %t91 = call ptr @lp_str_concat(ptr @.str4870, ptr %t90) - %t92 = call ptr @lp_str_concat(ptr %t91, ptr @.str4871) + %t91 = call ptr @lp_str_concat(ptr @.str4873, ptr %t90) + %t92 = call ptr @lp_str_concat(ptr %t91, ptr @.str4874) %t93 = call ptr @fn_emit_bind(ptr %t92) store ptr %t93, ptr %t94 %t95 = load ptr, ptr %t85 - %t96 = call ptr @lp_str_concat(ptr @.str4872, ptr %t95) - %t97 = call ptr @lp_str_concat(ptr %t96, ptr @.str4873) + %t96 = call ptr @lp_str_concat(ptr @.str4875, ptr %t95) + %t97 = call ptr @lp_str_concat(ptr %t96, ptr @.str4876) %t98 = call ptr @fn_emit_bind(ptr %t97) store ptr %t98, ptr %t99 %t100 = load ptr, ptr %t99 - %t101 = call ptr @fn_fx_mul_code(ptr %t100, ptr @.str4874) + %t101 = call ptr @fn_fx_mul_code(ptr %t100, ptr @.str4877) store ptr %t101, ptr %t102 %t103 = load ptr, ptr %t102 - %t104 = call ptr @lp_str_concat(ptr @.str4875, ptr %t103) - %t105 = call ptr @lp_str_concat(ptr %t104, ptr @.str4876) + %t104 = call ptr @lp_str_concat(ptr @.str4878, ptr %t103) + %t105 = call ptr @lp_str_concat(ptr %t104, ptr @.str4879) %t106 = call ptr @fn_emit_bind(ptr %t105) store ptr %t106, ptr %t107 %t108 = load ptr, ptr %t94 @@ -52216,8 +52269,8 @@ then15: %t110 = call ptr @fn_fx_mul_code(ptr %t108, ptr %t109) store ptr %t110, ptr %t111 %t112 = load ptr, ptr %t111 - %t113 = call ptr @lp_str_concat(ptr @.str4877, ptr %t112) - %t114 = call ptr @lp_str_concat(ptr %t113, ptr @.str4878) + %t113 = call ptr @lp_str_concat(ptr @.str4880, ptr %t112) + %t114 = call ptr @lp_str_concat(ptr %t113, ptr @.str4881) %t115 = call ptr @fn_emit_bind(ptr %t114) store ptr %t115, ptr %retval br label %ret @@ -52249,7 +52302,7 @@ entry: %t9 = call ptr @fn_emit_expr(ptr %t8) store ptr %t9, ptr %t10 %t11 = load ptr, ptr %t0 - %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str4879) + %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str4882) %t13 = icmp ne i32 %t12, 0 br i1 %t13, label %then0, label %ifend2 then0: @@ -52257,12 +52310,12 @@ then0: %t15 = getelementptr inbounds %Cmp_Val, ptr %t14, i32 0, i32 0 %t16 = load ptr, ptr %t15 %t17 = call ptr @fn_ease_eval(i32 1, ptr %t16) - %t18 = call ptr @fn_val(ptr %t17, ptr @.str4880) + %t18 = call ptr @fn_val(ptr %t17, ptr @.str4883) store ptr %t18, ptr %retval br label %ret ifend2: %t19 = load ptr, ptr %t0 - %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str4881) + %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str4884) %t21 = icmp ne i32 %t20, 0 br i1 %t21, label %then3, label %ifend5 then3: @@ -52270,12 +52323,12 @@ then3: %t23 = getelementptr inbounds %Cmp_Val, ptr %t22, i32 0, i32 0 %t24 = load ptr, ptr %t23 %t25 = call ptr @fn_ease_eval(i32 2, ptr %t24) - %t26 = call ptr @fn_val(ptr %t25, ptr @.str4882) + %t26 = call ptr @fn_val(ptr %t25, ptr @.str4885) store ptr %t26, ptr %retval br label %ret ifend5: %t27 = load ptr, ptr %t0 - %t28 = call i32 @lp_str_eq(ptr %t27, ptr @.str4883) + %t28 = call i32 @lp_str_eq(ptr %t27, ptr @.str4886) %t29 = icmp ne i32 %t28, 0 br i1 %t29, label %then6, label %ifend8 then6: @@ -52283,12 +52336,12 @@ then6: %t31 = getelementptr inbounds %Cmp_Val, ptr %t30, i32 0, i32 0 %t32 = load ptr, ptr %t31 %t33 = call ptr @fn_ease_eval(i32 3, ptr %t32) - %t34 = call ptr @fn_val(ptr %t33, ptr @.str4884) + %t34 = call ptr @fn_val(ptr %t33, ptr @.str4887) store ptr %t34, ptr %retval br label %ret ifend8: %t35 = load ptr, ptr %t0 - %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str4885) + %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str4888) %t37 = icmp ne i32 %t36, 0 br i1 %t37, label %then9, label %ifend11 then9: @@ -52296,12 +52349,12 @@ then9: %t39 = getelementptr inbounds %Cmp_Val, ptr %t38, i32 0, i32 0 %t40 = load ptr, ptr %t39 %t41 = call ptr @fn_ease_eval(i32 4, ptr %t40) - %t42 = call ptr @fn_val(ptr %t41, ptr @.str4886) + %t42 = call ptr @fn_val(ptr %t41, ptr @.str4889) store ptr %t42, ptr %retval br label %ret ifend11: %t43 = load ptr, ptr %t0 - %t44 = call i32 @lp_str_eq(ptr %t43, ptr @.str4887) + %t44 = call i32 @lp_str_eq(ptr %t43, ptr @.str4890) %t45 = icmp ne i32 %t44, 0 br i1 %t45, label %then12, label %ifend14 then12: @@ -52309,7 +52362,7 @@ then12: %t47 = getelementptr inbounds %Cmp_Val, ptr %t46, i32 0, i32 0 %t48 = load ptr, ptr %t47 %t49 = call ptr @fn_ease_eval(i32 5, ptr %t48) - %t50 = call ptr @fn_val(ptr %t49, ptr @.str4888) + %t50 = call ptr @fn_val(ptr %t49, ptr @.str4891) store ptr %t50, ptr %retval br label %ret ifend14: @@ -52317,7 +52370,7 @@ ifend14: %t52 = getelementptr inbounds %Cmp_Val, ptr %t51, i32 0, i32 0 %t53 = load ptr, ptr %t52 %t54 = call ptr @fn_ease_eval(i32 6, ptr %t53) - %t55 = call ptr @fn_val(ptr %t54, ptr @.str4889) + %t55 = call ptr @fn_val(ptr %t54, ptr @.str4892) store ptr %t55, ptr %retval br label %ret ret: @@ -52335,14 +52388,14 @@ entry: %t31 = alloca i32 store ptr %arg_meth, ptr %t0 %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str4890) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str4893) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str4891) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str4894) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -52355,7 +52408,7 @@ scend1: br i1 %t12, label %scend3, label %sc2 sc2: %t14 = load ptr, ptr %t0 - %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str4892) + %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str4895) %t16 = icmp ne i32 %t15, 0 %t17 = zext i1 %t16 to i32 store i32 %t17, ptr %t1 @@ -52369,14 +52422,14 @@ then4: br label %ret ifend6: %t21 = load ptr, ptr %t0 - %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str4893) + %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str4896) %t23 = icmp ne i32 %t22, 0 %t24 = zext i1 %t23 to i32 store i32 %t24, ptr %t20 br i1 %t23, label %scend8, label %sc7 sc7: %t25 = load ptr, ptr %t0 - %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str4894) + %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str4897) %t27 = icmp ne i32 %t26, 0 %t28 = zext i1 %t27 to i32 store i32 %t28, ptr %t20 @@ -52390,14 +52443,14 @@ then9: br label %ret ifend11: %t32 = load ptr, ptr %t0 - %t33 = call i32 @lp_str_eq(ptr %t32, ptr @.str4895) + %t33 = call i32 @lp_str_eq(ptr %t32, ptr @.str4898) %t34 = icmp ne i32 %t33, 0 %t35 = zext i1 %t34 to i32 store i32 %t35, ptr %t31 br i1 %t34, label %scend13, label %sc12 sc12: %t36 = load ptr, ptr %t0 - %t37 = call i32 @lp_str_eq(ptr %t36, ptr @.str4896) + %t37 = call i32 @lp_str_eq(ptr %t36, ptr @.str4899) %t38 = icmp ne i32 %t37, 0 %t39 = zext i1 %t38 to i32 store i32 %t39, ptr %t31 @@ -52429,30 +52482,30 @@ entry: store ptr %arg_timer, ptr %t0 store ptr %arg_fps, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call ptr @lp_str_concat(ptr @.str4897, ptr %t2) - %t4 = call ptr @lp_str_concat(ptr %t3, ptr @.str4898) + %t3 = call ptr @lp_str_concat(ptr @.str4900, ptr %t2) + %t4 = call ptr @lp_str_concat(ptr %t3, ptr @.str4901) %t5 = call ptr @fn_emit_bind(ptr %t4) store ptr %t5, ptr %t6 %t7 = load ptr, ptr %t1 - %t8 = call ptr @lp_str_concat(ptr @.str4899, ptr %t7) - %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str4900) + %t8 = call ptr @lp_str_concat(ptr @.str4902, ptr %t7) + %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str4903) %t10 = call ptr @fn_emit_bind(ptr %t9) store ptr %t10, ptr %t11 %t12 = load ptr, ptr %t6 - %t13 = call ptr @lp_str_concat(ptr @.str4901, ptr %t12) - %t14 = call ptr @lp_str_concat(ptr %t13, ptr @.str4902) + %t13 = call ptr @lp_str_concat(ptr @.str4904, ptr %t12) + %t14 = call ptr @lp_str_concat(ptr %t13, ptr @.str4905) %t15 = load ptr, ptr %t11 %t16 = call ptr @lp_str_concat(ptr %t14, ptr %t15) %t17 = call ptr @fn_emit_bind(ptr %t16) store ptr %t17, ptr %t18 %t19 = load ptr, ptr %t18 - %t20 = call ptr @lp_str_concat(ptr @.str4903, ptr %t19) - %t21 = call ptr @lp_str_concat(ptr %t20, ptr @.str4904) + %t20 = call ptr @lp_str_concat(ptr @.str4906, ptr %t19) + %t21 = call ptr @lp_str_concat(ptr %t20, ptr @.str4907) %t22 = call ptr @fn_emit_bind(ptr %t21) store ptr %t22, ptr %t23 %t24 = load ptr, ptr %t23 - %t25 = call ptr @lp_str_concat(ptr @.str4905, ptr %t24) - %t26 = call ptr @lp_str_concat(ptr %t25, ptr @.str4906) + %t25 = call ptr @lp_str_concat(ptr @.str4908, ptr %t24) + %t26 = call ptr @lp_str_concat(ptr %t25, ptr @.str4909) %t27 = call ptr @fn_emit_bind(ptr %t26) store ptr %t27, ptr %retval br label %ret @@ -52468,13 +52521,13 @@ entry: %t5 = alloca ptr store ptr %arg_v, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call ptr @lp_str_concat(ptr @.str4907, ptr %t1) - %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str4908) + %t2 = call ptr @lp_str_concat(ptr @.str4910, ptr %t1) + %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str4911) %t4 = call ptr @fn_emit_bind(ptr %t3) store ptr %t4, ptr %t5 %t6 = load ptr, ptr %t5 - %t7 = call ptr @lp_str_concat(ptr @.str4909, ptr %t6) - %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str4910) + %t7 = call ptr @lp_str_concat(ptr @.str4912, ptr %t6) + %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str4913) %t9 = load ptr, ptr %t0 %t10 = call ptr @lp_str_concat(ptr %t8, ptr %t9) %t11 = call ptr @fn_emit_bind(ptr %t10) @@ -52533,7 +52586,7 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str4911) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str4914) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -52578,17 +52631,17 @@ then0: %t43 = call ptr @fn_anim_atleast1(ptr %t42) store ptr %t43, ptr %t44 %t45 = load ptr, ptr %t39 - %t46 = call ptr @lp_str_concat(ptr @.str4912, ptr %t45) - %t47 = call ptr @lp_str_concat(ptr %t46, ptr @.str4913) + %t46 = call ptr @lp_str_concat(ptr @.str4915, ptr %t45) + %t47 = call ptr @lp_str_concat(ptr %t46, ptr @.str4916) %t48 = load ptr, ptr %t44 %t49 = call ptr @lp_str_concat(ptr %t47, ptr %t48) %t50 = call ptr @fn_emit_bind(ptr %t49) - %t51 = call ptr @fn_val(ptr %t50, ptr @.str4914) + %t51 = call ptr @fn_val(ptr %t50, ptr @.str4917) store ptr %t51, ptr %retval br label %ret ifend2: %t52 = load ptr, ptr %t0 - %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str4915) + %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str4918) %t54 = icmp ne i32 %t53, 0 br i1 %t54, label %then3, label %ifend5 then3: @@ -52630,32 +52683,32 @@ then3: %t90 = load ptr, ptr %t81 %t91 = getelementptr inbounds %Cmp_Val, ptr %t90, i32 0, i32 0 %t92 = load ptr, ptr %t91 - %t93 = call ptr @lp_str_concat(ptr @.str4916, ptr %t92) - %t94 = call ptr @lp_str_concat(ptr %t93, ptr @.str4917) + %t93 = call ptr @lp_str_concat(ptr @.str4919, ptr %t92) + %t94 = call ptr @lp_str_concat(ptr %t93, ptr @.str4920) %t95 = call ptr @fn_emit_bind(ptr %t94) store ptr %t95, ptr %t96 %t97 = load ptr, ptr %t89 - %t98 = call ptr @lp_str_concat(ptr @.str4918, ptr %t97) - %t99 = call ptr @lp_str_concat(ptr %t98, ptr @.str4919) + %t98 = call ptr @lp_str_concat(ptr @.str4921, ptr %t97) + %t99 = call ptr @lp_str_concat(ptr %t98, ptr @.str4922) %t100 = load ptr, ptr %t96 %t101 = call ptr @lp_str_concat(ptr %t99, ptr %t100) %t102 = call ptr @fn_emit_bind(ptr %t101) store ptr %t102, ptr %t103 %t104 = load ptr, ptr %t103 - %t105 = call ptr @lp_str_concat(ptr @.str4920, ptr %t104) - %t106 = call ptr @lp_str_concat(ptr %t105, ptr @.str4921) + %t105 = call ptr @lp_str_concat(ptr @.str4923, ptr %t104) + %t106 = call ptr @lp_str_concat(ptr %t105, ptr @.str4924) %t107 = load ptr, ptr %t89 %t108 = call ptr @lp_str_concat(ptr %t106, ptr %t107) - %t109 = call ptr @lp_str_concat(ptr %t108, ptr @.str4922) + %t109 = call ptr @lp_str_concat(ptr %t108, ptr @.str4925) %t110 = load ptr, ptr %t96 %t111 = call ptr @lp_str_concat(ptr %t109, ptr %t110) %t112 = call ptr @fn_emit_bind(ptr %t111) - %t113 = call ptr @fn_val(ptr %t112, ptr @.str4923) + %t113 = call ptr @fn_val(ptr %t112, ptr @.str4926) store ptr %t113, ptr %retval br label %ret ifend5: %t114 = load ptr, ptr %t0 - %t115 = call i32 @lp_str_eq(ptr %t114, ptr @.str4924) + %t115 = call i32 @lp_str_eq(ptr %t114, ptr @.str4927) %t116 = icmp ne i32 %t115, 0 br i1 %t116, label %then6, label %ifend8 then6: @@ -52697,35 +52750,35 @@ then6: %t152 = load ptr, ptr %t143 %t153 = getelementptr inbounds %Cmp_Val, ptr %t152, i32 0, i32 0 %t154 = load ptr, ptr %t153 - %t155 = call ptr @lp_str_concat(ptr @.str4925, ptr %t154) - %t156 = call ptr @lp_str_concat(ptr %t155, ptr @.str4926) + %t155 = call ptr @lp_str_concat(ptr @.str4928, ptr %t154) + %t156 = call ptr @lp_str_concat(ptr %t155, ptr @.str4929) %t157 = call ptr @fn_emit_bind(ptr %t156) store ptr %t157, ptr %t158 %t159 = load ptr, ptr %t158 - %t160 = call ptr @lp_str_concat(ptr @.str4927, ptr %t159) - %t161 = call ptr @lp_str_concat(ptr %t160, ptr @.str4928) + %t160 = call ptr @lp_str_concat(ptr @.str4930, ptr %t159) + %t161 = call ptr @lp_str_concat(ptr %t160, ptr @.str4931) %t162 = call ptr @fn_emit_bind(ptr %t161) store ptr %t162, ptr %t163 %t164 = load ptr, ptr %t163 %t165 = call ptr @fn_anim_atleast1(ptr %t164) store ptr %t165, ptr %t166 %t167 = load ptr, ptr %t151 - %t168 = call ptr @lp_str_concat(ptr @.str4929, ptr %t167) - %t169 = call ptr @lp_str_concat(ptr %t168, ptr @.str4930) + %t168 = call ptr @lp_str_concat(ptr @.str4932, ptr %t167) + %t169 = call ptr @lp_str_concat(ptr %t168, ptr @.str4933) %t170 = load ptr, ptr %t166 %t171 = call ptr @lp_str_concat(ptr %t169, ptr %t170) %t172 = call ptr @fn_emit_bind(ptr %t171) store ptr %t172, ptr %t173 %t174 = load ptr, ptr %t166 - %t175 = call ptr @lp_str_concat(ptr @.str4931, ptr %t174) - %t176 = call ptr @lp_str_concat(ptr %t175, ptr @.str4932) + %t175 = call ptr @lp_str_concat(ptr @.str4934, ptr %t174) + %t176 = call ptr @lp_str_concat(ptr %t175, ptr @.str4935) %t177 = load ptr, ptr %t173 %t178 = call ptr @lp_str_concat(ptr %t176, ptr %t177) %t179 = call ptr @fn_emit_bind(ptr %t178) store ptr %t179, ptr %t180 %t181 = load ptr, ptr %t173 - %t182 = call ptr @lp_str_concat(ptr @.str4933, ptr %t181) - %t183 = call ptr @lp_str_concat(ptr %t182, ptr @.str4934) + %t182 = call ptr @lp_str_concat(ptr @.str4936, ptr %t181) + %t183 = call ptr @lp_str_concat(ptr %t182, ptr @.str4937) %t184 = load ptr, ptr %t143 %t185 = getelementptr inbounds %Cmp_Val, ptr %t184, i32 0, i32 0 %t186 = load ptr, ptr %t185 @@ -52733,20 +52786,20 @@ then6: %t188 = call ptr @fn_emit_bind(ptr %t187) store ptr %t188, ptr %t189 %t190 = load ptr, ptr %t189 - %t191 = call ptr @lp_str_concat(ptr @.str4935, ptr %t190) - %t192 = call ptr @lp_str_concat(ptr %t191, ptr @.str4936) + %t191 = call ptr @lp_str_concat(ptr @.str4938, ptr %t190) + %t192 = call ptr @lp_str_concat(ptr %t191, ptr @.str4939) %t193 = load ptr, ptr %t173 %t194 = call ptr @lp_str_concat(ptr %t192, ptr %t193) - %t195 = call ptr @lp_str_concat(ptr %t194, ptr @.str4937) + %t195 = call ptr @lp_str_concat(ptr %t194, ptr @.str4940) %t196 = load ptr, ptr %t180 %t197 = call ptr @lp_str_concat(ptr %t195, ptr %t196) %t198 = call ptr @fn_emit_bind(ptr %t197) - %t199 = call ptr @fn_val(ptr %t198, ptr @.str4938) + %t199 = call ptr @fn_val(ptr %t198, ptr @.str4941) store ptr %t199, ptr %retval br label %ret ifend8: %t200 = load ptr, ptr %t0 - %t201 = call i32 @lp_str_eq(ptr %t200, ptr @.str4939) + %t201 = call i32 @lp_str_eq(ptr %t200, ptr @.str4942) %t202 = icmp ne i32 %t201, 0 br i1 %t202, label %then9, label %ifend11 then9: @@ -52786,8 +52839,8 @@ then9: %t236 = call ptr @fn_anim_elapsed(ptr %t232, ptr %t235) store ptr %t236, ptr %t237 %t238 = load ptr, ptr %t237 - %t239 = call ptr @lp_str_concat(ptr @.str4940, ptr %t238) - %t240 = call ptr @lp_str_concat(ptr %t239, ptr @.str4941) + %t239 = call ptr @lp_str_concat(ptr @.str4943, ptr %t238) + %t240 = call ptr @lp_str_concat(ptr %t239, ptr @.str4944) %t241 = load ptr, ptr %t229 %t242 = getelementptr inbounds %Cmp_Val, ptr %t241, i32 0, i32 0 %t243 = load ptr, ptr %t242 @@ -52795,15 +52848,15 @@ then9: %t245 = call ptr @fn_emit_bind(ptr %t244) store ptr %t245, ptr %t246 %t247 = load ptr, ptr %t246 - %t248 = call ptr @lp_str_concat(ptr @.str4942, ptr %t247) - %t249 = call ptr @lp_str_concat(ptr %t248, ptr @.str4943) + %t248 = call ptr @lp_str_concat(ptr @.str4945, ptr %t247) + %t249 = call ptr @lp_str_concat(ptr %t248, ptr @.str4946) %t250 = call ptr @fn_emit_bind(ptr %t249) - %t251 = call ptr @fn_val(ptr %t250, ptr @.str4944) + %t251 = call ptr @fn_val(ptr %t250, ptr @.str4947) store ptr %t251, ptr %retval br label %ret ifend11: %t252 = load ptr, ptr %t0 - %t253 = call i32 @lp_str_eq(ptr %t252, ptr @.str4945) + %t253 = call i32 @lp_str_eq(ptr %t252, ptr @.str4948) %t254 = icmp ne i32 %t253, 0 br i1 %t254, label %then12, label %ifend14 then12: @@ -52828,8 +52881,8 @@ then12: %t273 = load ptr, ptr %t272 %t274 = getelementptr inbounds %Cmp_Val, ptr %t273, i32 0, i32 0 %t275 = load ptr, ptr %t274 - %t276 = call ptr @lp_str_concat(ptr @.str4946, ptr %t275) - %t277 = call ptr @lp_str_concat(ptr %t276, ptr @.str4947) + %t276 = call ptr @lp_str_concat(ptr @.str4949, ptr %t275) + %t277 = call ptr @lp_str_concat(ptr %t276, ptr @.str4950) %t278 = call ptr @fn_emit_bind(ptr %t277) store ptr %t278, ptr %t279 %t280 = load ptr, ptr %t263 @@ -52838,17 +52891,17 @@ then12: %t283 = call ptr @fn_anim_atleast1(ptr %t282) store ptr %t283, ptr %t284 %t285 = load ptr, ptr %t279 - %t286 = call ptr @lp_str_concat(ptr @.str4948, ptr %t285) - %t287 = call ptr @lp_str_concat(ptr %t286, ptr @.str4949) + %t286 = call ptr @lp_str_concat(ptr @.str4951, ptr %t285) + %t287 = call ptr @lp_str_concat(ptr %t286, ptr @.str4952) %t288 = load ptr, ptr %t284 %t289 = call ptr @lp_str_concat(ptr %t287, ptr %t288) %t290 = call ptr @fn_emit_bind(ptr %t289) - %t291 = call ptr @fn_val(ptr %t290, ptr @.str4950) + %t291 = call ptr @fn_val(ptr %t290, ptr @.str4953) store ptr %t291, ptr %retval br label %ret ifend14: %t292 = load ptr, ptr %t0 - %t293 = call i32 @lp_str_eq(ptr %t292, ptr @.str4951) + %t293 = call i32 @lp_str_eq(ptr %t292, ptr @.str4954) %t294 = icmp ne i32 %t293, 0 br i1 %t294, label %then15, label %ifend17 then15: @@ -52887,21 +52940,21 @@ then15: %t327 = load ptr, ptr %t303 %t328 = getelementptr inbounds %Cmp_Val, ptr %t327, i32 0, i32 0 %t329 = load ptr, ptr %t328 - %t330 = call ptr @lp_str_concat(ptr @.str4952, ptr %t329) - %t331 = call ptr @lp_str_concat(ptr %t330, ptr @.str4953) + %t330 = call ptr @lp_str_concat(ptr @.str4955, ptr %t329) + %t331 = call ptr @lp_str_concat(ptr %t330, ptr @.str4956) %t332 = load ptr, ptr %t326 %t333 = call ptr @lp_str_concat(ptr %t331, ptr %t332) %t334 = call ptr @fn_emit_bind(ptr %t333) store ptr %t334, ptr %t335 %t336 = load ptr, ptr %t335 - %t337 = call ptr @lp_str_concat(ptr @.str4954, ptr %t336) - %t338 = call ptr @lp_str_concat(ptr %t337, ptr @.str4955) + %t337 = call ptr @lp_str_concat(ptr @.str4957, ptr %t336) + %t338 = call ptr @lp_str_concat(ptr %t337, ptr @.str4958) %t339 = load ptr, ptr %t321 %t340 = getelementptr inbounds %Cmp_Val, ptr %t339, i32 0, i32 0 %t341 = load ptr, ptr %t340 %t342 = call ptr @lp_str_concat(ptr %t338, ptr %t341) %t343 = call ptr @fn_emit_bind(ptr %t342) - %t344 = call ptr @fn_val(ptr %t343, ptr @.str4956) + %t344 = call ptr @fn_val(ptr %t343, ptr @.str4959) store ptr %t344, ptr %retval br label %ret ifend17: @@ -52940,21 +52993,21 @@ ifend17: %t377 = load ptr, ptr %t353 %t378 = getelementptr inbounds %Cmp_Val, ptr %t377, i32 0, i32 0 %t379 = load ptr, ptr %t378 - %t380 = call ptr @lp_str_concat(ptr @.str4957, ptr %t379) - %t381 = call ptr @lp_str_concat(ptr %t380, ptr @.str4958) + %t380 = call ptr @lp_str_concat(ptr @.str4960, ptr %t379) + %t381 = call ptr @lp_str_concat(ptr %t380, ptr @.str4961) %t382 = load ptr, ptr %t376 %t383 = call ptr @lp_str_concat(ptr %t381, ptr %t382) %t384 = call ptr @fn_emit_bind(ptr %t383) store ptr %t384, ptr %t385 %t386 = load ptr, ptr %t385 - %t387 = call ptr @lp_str_concat(ptr @.str4959, ptr %t386) - %t388 = call ptr @lp_str_concat(ptr %t387, ptr @.str4960) + %t387 = call ptr @lp_str_concat(ptr @.str4962, ptr %t386) + %t388 = call ptr @lp_str_concat(ptr %t387, ptr @.str4963) %t389 = load ptr, ptr %t371 %t390 = getelementptr inbounds %Cmp_Val, ptr %t389, i32 0, i32 0 %t391 = load ptr, ptr %t390 %t392 = call ptr @lp_str_concat(ptr %t388, ptr %t391) %t393 = call ptr @fn_emit_bind(ptr %t392) - %t394 = call ptr @fn_val(ptr %t393, ptr @.str4961) + %t394 = call ptr @fn_val(ptr %t393, ptr @.str4964) store ptr %t394, ptr %retval br label %ret ret: @@ -52974,14 +53027,14 @@ entry: %t47 = alloca i32 store ptr %arg_meth, ptr %t0 %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str4962) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str4965) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t3 br i1 %t6, label %scend1, label %sc0 sc0: %t8 = load ptr, ptr %t0 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str4963) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str4966) %t10 = icmp ne i32 %t9, 0 %t11 = zext i1 %t10 to i32 store i32 %t11, ptr %t3 @@ -52994,7 +53047,7 @@ scend1: br i1 %t13, label %scend3, label %sc2 sc2: %t15 = load ptr, ptr %t0 - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str4964) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str4967) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t2 @@ -53007,7 +53060,7 @@ scend3: br i1 %t20, label %scend5, label %sc4 sc4: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str4965) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str4968) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t1 @@ -53021,14 +53074,14 @@ then6: br label %ret ifend8: %t30 = load ptr, ptr %t0 - %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str4966) + %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str4969) %t32 = icmp ne i32 %t31, 0 %t33 = zext i1 %t32 to i32 store i32 %t33, ptr %t29 br i1 %t32, label %scend10, label %sc9 sc9: %t34 = load ptr, ptr %t0 - %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str4967) + %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str4970) %t36 = icmp ne i32 %t35, 0 %t37 = zext i1 %t36 to i32 store i32 %t37, ptr %t29 @@ -53041,7 +53094,7 @@ scend10: br i1 %t39, label %scend12, label %sc11 sc11: %t41 = load ptr, ptr %t0 - %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str4968) + %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str4971) %t43 = icmp ne i32 %t42, 0 %t44 = zext i1 %t43 to i32 store i32 %t44, ptr %t28 @@ -53055,14 +53108,14 @@ then13: br label %ret ifend15: %t48 = load ptr, ptr %t0 - %t49 = call i32 @lp_str_eq(ptr %t48, ptr @.str4969) + %t49 = call i32 @lp_str_eq(ptr %t48, ptr @.str4972) %t50 = icmp ne i32 %t49, 0 %t51 = zext i1 %t50 to i32 store i32 %t51, ptr %t47 br i1 %t50, label %scend17, label %sc16 sc16: %t52 = load ptr, ptr %t0 - %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str4970) + %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str4973) %t54 = icmp ne i32 %t53, 0 %t55 = zext i1 %t54 to i32 store i32 %t55, ptr %t47 @@ -53089,16 +53142,16 @@ entry: %t5 = alloca ptr store ptr %arg_dur, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call ptr @lp_str_concat(ptr @.str4971, ptr %t1) - %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str4972) + %t2 = call ptr @lp_str_concat(ptr @.str4974, ptr %t1) + %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str4975) %t4 = call ptr @fn_emit_bind(ptr %t3) store ptr %t4, ptr %t5 %t6 = load ptr, ptr %t5 - %t7 = call ptr @lp_str_concat(ptr @.str4973, ptr %t6) - %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str4974) + %t7 = call ptr @lp_str_concat(ptr @.str4976, ptr %t6) + %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str4977) %t9 = load ptr, ptr %t0 %t10 = call ptr @lp_str_concat(ptr %t8, ptr %t9) - %t11 = call ptr @lp_str_concat(ptr %t10, ptr @.str4975) + %t11 = call ptr @lp_str_concat(ptr %t10, ptr @.str4978) %t12 = call ptr @fn_emit_bind(ptr %t11) store ptr %t12, ptr %retval br label %ret @@ -53169,7 +53222,7 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str4976) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str4979) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -53194,18 +53247,18 @@ then0: %t23 = load ptr, ptr %t22 %t24 = getelementptr inbounds %Cmp_Val, ptr %t23, i32 0, i32 0 %t25 = load ptr, ptr %t24 - %t26 = call ptr @lp_str_concat(ptr @.str4977, ptr %t25) - %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str4978) + %t26 = call ptr @lp_str_concat(ptr @.str4980, ptr %t25) + %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str4981) %t28 = call ptr @fn_emit_bind(ptr %t27) store ptr %t28, ptr %t29 %t30 = load ptr, ptr %t29 - %t31 = call ptr @lp_str_concat(ptr @.str4979, ptr %t30) - %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str4980) + %t31 = call ptr @lp_str_concat(ptr @.str4982, ptr %t30) + %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str4983) %t33 = load ptr, ptr %t22 %t34 = getelementptr inbounds %Cmp_Val, ptr %t33, i32 0, i32 0 %t35 = load ptr, ptr %t34 %t36 = call ptr @lp_str_concat(ptr %t32, ptr %t35) - %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str4981) + %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str4984) %t38 = call ptr @fn_emit_bind(ptr %t37) store ptr %t38, ptr %t39 %t40 = load ptr, ptr %t13 @@ -53215,42 +53268,42 @@ then0: %t44 = call ptr @fn_fx_div_code(ptr %t42, ptr %t43) store ptr %t44, ptr %t45 %t46 = load ptr, ptr %t45 - %t47 = call ptr @lp_str_concat(ptr @.str4982, ptr %t46) - %t48 = call ptr @lp_str_concat(ptr %t47, ptr @.str4983) + %t47 = call ptr @lp_str_concat(ptr @.str4985, ptr %t46) + %t48 = call ptr @lp_str_concat(ptr %t47, ptr @.str4986) %t49 = call ptr @fn_emit_bind(ptr %t48) store ptr %t49, ptr %t50 %t51 = load ptr, ptr %t50 - %t52 = call ptr @lp_str_concat(ptr @.str4984, ptr %t51) - %t53 = call ptr @lp_str_concat(ptr %t52, ptr @.str4985) + %t52 = call ptr @lp_str_concat(ptr @.str4987, ptr %t51) + %t53 = call ptr @lp_str_concat(ptr %t52, ptr @.str4988) %t54 = load ptr, ptr %t45 %t55 = call ptr @lp_str_concat(ptr %t53, ptr %t54) %t56 = call ptr @fn_emit_bind(ptr %t55) store ptr %t56, ptr %t57 %t58 = load ptr, ptr %t57 - %t59 = call ptr @lp_str_concat(ptr @.str4986, ptr %t58) - %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str4987) + %t59 = call ptr @lp_str_concat(ptr @.str4989, ptr %t58) + %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str4990) %t61 = call ptr @fn_emit_bind(ptr %t60) store ptr %t61, ptr %t62 %t63 = load ptr, ptr %t62 - %t64 = call ptr @lp_str_concat(ptr @.str4988, ptr %t63) - %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str4989) + %t64 = call ptr @lp_str_concat(ptr @.str4991, ptr %t63) + %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str4992) %t66 = load ptr, ptr %t57 %t67 = call ptr @lp_str_concat(ptr %t65, ptr %t66) %t68 = call ptr @fn_emit_bind(ptr %t67) store ptr %t68, ptr %t69 %t70 = load ptr, ptr %t29 - %t71 = call ptr @lp_str_concat(ptr @.str4990, ptr %t70) - %t72 = call ptr @lp_str_concat(ptr %t71, ptr @.str4991) + %t71 = call ptr @lp_str_concat(ptr @.str4993, ptr %t70) + %t72 = call ptr @lp_str_concat(ptr %t71, ptr @.str4994) %t73 = load ptr, ptr %t69 %t74 = call ptr @lp_str_concat(ptr %t72, ptr %t73) - %t75 = call ptr @lp_str_concat(ptr %t74, ptr @.str4992) + %t75 = call ptr @lp_str_concat(ptr %t74, ptr @.str4995) %t76 = call ptr @fn_emit_bind(ptr %t75) - %t77 = call ptr @fn_val(ptr %t76, ptr @.str4993) + %t77 = call ptr @fn_val(ptr %t76, ptr @.str4996) store ptr %t77, ptr %retval br label %ret ifend2: %t78 = load ptr, ptr %t0 - %t79 = call i32 @lp_str_eq(ptr %t78, ptr @.str4994) + %t79 = call i32 @lp_str_eq(ptr %t78, ptr @.str4997) %t80 = icmp ne i32 %t79, 0 br i1 %t80, label %then3, label %ifend5 then3: @@ -53284,15 +53337,15 @@ then3: %t108 = call ptr @fn_fx_div_code(ptr %t106, ptr %t107) store ptr %t108, ptr %t109 %t110 = load ptr, ptr %t109 - %t111 = call ptr @lp_str_concat(ptr @.str4995, ptr %t110) - %t112 = call ptr @lp_str_concat(ptr %t111, ptr @.str4996) + %t111 = call ptr @lp_str_concat(ptr @.str4998, ptr %t110) + %t112 = call ptr @lp_str_concat(ptr %t111, ptr @.str4999) %t113 = call ptr @fn_emit_bind(ptr %t112) - %t114 = call ptr @fn_val(ptr %t113, ptr @.str4997) + %t114 = call ptr @fn_val(ptr %t113, ptr @.str5000) store ptr %t114, ptr %retval br label %ret ifend5: %t115 = load ptr, ptr %t0 - %t116 = call i32 @lp_str_eq(ptr %t115, ptr @.str4998) + %t116 = call i32 @lp_str_eq(ptr %t115, ptr @.str5001) %t117 = icmp ne i32 %t116, 0 br i1 %t117, label %then6, label %ifend8 then6: @@ -53326,34 +53379,34 @@ then6: %t145 = call ptr @fn_fx_div_code(ptr %t143, ptr %t144) store ptr %t145, ptr %t146 %t147 = load ptr, ptr %t146 - %t148 = call ptr @lp_str_concat(ptr @.str4999, ptr %t147) - %t149 = call ptr @lp_str_concat(ptr %t148, ptr @.str5000) + %t148 = call ptr @lp_str_concat(ptr @.str5002, ptr %t147) + %t149 = call ptr @lp_str_concat(ptr %t148, ptr @.str5003) %t150 = call ptr @fn_emit_bind(ptr %t149) store ptr %t150, ptr %t151 %t152 = load ptr, ptr %t151 - %t153 = call ptr @lp_str_concat(ptr @.str5001, ptr %t152) + %t153 = call ptr @lp_str_concat(ptr @.str5004, ptr %t152) %t154 = call ptr @fn_emit_bind(ptr %t153) store ptr %t154, ptr %t155 %t156 = load ptr, ptr %t151 - %t157 = call ptr @lp_str_concat(ptr @.str5002, ptr %t156) - %t158 = call ptr @lp_str_concat(ptr %t157, ptr @.str5003) + %t157 = call ptr @lp_str_concat(ptr @.str5005, ptr %t156) + %t158 = call ptr @lp_str_concat(ptr %t157, ptr @.str5006) %t159 = call ptr @fn_emit_bind(ptr %t158) store ptr %t159, ptr %t160 %t161 = load ptr, ptr %t160 - %t162 = call ptr @lp_str_concat(ptr @.str5004, ptr %t161) - %t163 = call ptr @lp_str_concat(ptr %t162, ptr @.str5005) + %t162 = call ptr @lp_str_concat(ptr @.str5007, ptr %t161) + %t163 = call ptr @lp_str_concat(ptr %t162, ptr @.str5008) %t164 = load ptr, ptr %t151 %t165 = call ptr @lp_str_concat(ptr %t163, ptr %t164) - %t166 = call ptr @lp_str_concat(ptr %t165, ptr @.str5006) + %t166 = call ptr @lp_str_concat(ptr %t165, ptr @.str5009) %t167 = load ptr, ptr %t155 %t168 = call ptr @lp_str_concat(ptr %t166, ptr %t167) %t169 = call ptr @fn_emit_bind(ptr %t168) - %t170 = call ptr @fn_val(ptr %t169, ptr @.str5007) + %t170 = call ptr @fn_val(ptr %t169, ptr @.str5010) store ptr %t170, ptr %retval br label %ret ifend8: %t171 = load ptr, ptr %t0 - %t172 = call i32 @lp_str_eq(ptr %t171, ptr @.str5008) + %t172 = call i32 @lp_str_eq(ptr %t171, ptr @.str5011) %t173 = icmp ne i32 %t172, 0 br i1 %t173, label %then9, label %ifend11 then9: @@ -53379,10 +53432,10 @@ then12: %t191 = load ptr, ptr %t190 %t192 = getelementptr inbounds %Cmp_Val, ptr %t191, i32 0, i32 0 %t193 = load ptr, ptr %t192 - %t194 = call ptr @lp_str_concat(ptr @.str5009, ptr %t193) - %t195 = call ptr @lp_str_concat(ptr %t194, ptr @.str5010) + %t194 = call ptr @lp_str_concat(ptr @.str5012, ptr %t193) + %t195 = call ptr @lp_str_concat(ptr %t194, ptr @.str5013) %t196 = call ptr @fn_emit_bind(ptr %t195) - %t197 = call ptr @fn_val(ptr %t196, ptr @.str5011) + %t197 = call ptr @fn_val(ptr %t196, ptr @.str5014) store ptr %t197, ptr %retval br label %ret ifend14: @@ -53407,8 +53460,8 @@ ifend14: %t216 = load ptr, ptr %t206 %t217 = getelementptr inbounds %Cmp_Val, ptr %t216, i32 0, i32 0 %t218 = load ptr, ptr %t217 - %t219 = call ptr @lp_str_concat(ptr @.str5012, ptr %t218) - %t220 = call ptr @lp_str_concat(ptr %t219, ptr @.str5013) + %t219 = call ptr @lp_str_concat(ptr @.str5015, ptr %t218) + %t220 = call ptr @lp_str_concat(ptr %t219, ptr @.str5016) %t221 = load ptr, ptr %t215 %t222 = getelementptr inbounds %Cmp_Val, ptr %t221, i32 0, i32 0 %t223 = load ptr, ptr %t222 @@ -53416,15 +53469,15 @@ ifend14: %t225 = call ptr @fn_emit_bind(ptr %t224) store ptr %t225, ptr %t226 %t227 = load ptr, ptr %t226 - %t228 = call ptr @lp_str_concat(ptr @.str5014, ptr %t227) - %t229 = call ptr @lp_str_concat(ptr %t228, ptr @.str5015) + %t228 = call ptr @lp_str_concat(ptr @.str5017, ptr %t227) + %t229 = call ptr @lp_str_concat(ptr %t228, ptr @.str5018) %t230 = call ptr @fn_emit_bind(ptr %t229) - %t231 = call ptr @fn_val(ptr %t230, ptr @.str5016) + %t231 = call ptr @fn_val(ptr %t230, ptr @.str5019) store ptr %t231, ptr %retval br label %ret ifend11: %t232 = load ptr, ptr %t0 - %t233 = call i32 @lp_str_eq(ptr %t232, ptr @.str5017) + %t233 = call i32 @lp_str_eq(ptr %t232, ptr @.str5020) %t234 = icmp ne i32 %t233, 0 br i1 %t234, label %then15, label %ifend17 then15: @@ -53453,7 +53506,7 @@ then15: %t257 = icmp ne i32 %t256, 0 br i1 %t257, label %then18, label %ifend20 then18: - call void @fn_perr(ptr @.str5018) + call void @fn_perr(ptr @.str5021) br label %ifend20 ifend20: %t258 = load ptr, ptr %t251 @@ -53463,12 +53516,12 @@ ifend20: %t262 = getelementptr inbounds %Cmp_Val, ptr %t261, i32 0, i32 0 %t263 = load ptr, ptr %t262 %t264 = call ptr @fn_ease_eval(i32 %t260, ptr %t263) - %t265 = call ptr @fn_val(ptr %t264, ptr @.str5019) + %t265 = call ptr @fn_val(ptr %t264, ptr @.str5022) store ptr %t265, ptr %retval br label %ret ifend17: %t266 = load ptr, ptr %t0 - %t267 = call i32 @lp_str_eq(ptr %t266, ptr @.str5020) + %t267 = call i32 @lp_str_eq(ptr %t266, ptr @.str5023) %t268 = icmp ne i32 %t267, 0 br i1 %t268, label %then21, label %ifend23 then21: @@ -53509,12 +53562,12 @@ then21: %t303 = getelementptr inbounds %Cmp_Val, ptr %t302, i32 0, i32 0 %t304 = load ptr, ptr %t303 %t305 = call ptr @fn_fx_lerp_code(ptr %t298, ptr %t301, ptr %t304) - %t306 = call ptr @fn_val(ptr %t305, ptr @.str5021) + %t306 = call ptr @fn_val(ptr %t305, ptr @.str5024) store ptr %t306, ptr %retval br label %ret ifend23: %t307 = load ptr, ptr %t0 - %t308 = call i32 @lp_str_eq(ptr %t307, ptr @.str5022) + %t308 = call i32 @lp_str_eq(ptr %t307, ptr @.str5025) %t309 = icmp ne i32 %t308, 0 br i1 %t309, label %then24, label %ifend26 then24: @@ -53548,8 +53601,8 @@ then24: %t337 = load ptr, ptr %t327 %t338 = getelementptr inbounds %Cmp_Val, ptr %t337, i32 0, i32 0 %t339 = load ptr, ptr %t338 - %t340 = call ptr @lp_str_concat(ptr @.str5023, ptr %t339) - %t341 = call ptr @lp_str_concat(ptr %t340, ptr @.str5024) + %t340 = call ptr @lp_str_concat(ptr @.str5026, ptr %t339) + %t341 = call ptr @lp_str_concat(ptr %t340, ptr @.str5027) %t342 = load ptr, ptr %t318 %t343 = getelementptr inbounds %Cmp_Val, ptr %t342, i32 0, i32 0 %t344 = load ptr, ptr %t343 @@ -53557,53 +53610,53 @@ then24: %t346 = call ptr @fn_emit_bind(ptr %t345) store ptr %t346, ptr %t347 %t348 = load ptr, ptr %t347 - %t349 = call ptr @lp_str_concat(ptr @.str5025, ptr %t348) - %t350 = call ptr @lp_str_concat(ptr %t349, ptr @.str5026) + %t349 = call ptr @lp_str_concat(ptr @.str5028, ptr %t348) + %t350 = call ptr @lp_str_concat(ptr %t349, ptr @.str5029) %t351 = call ptr @fn_emit_bind(ptr %t350) store ptr %t351, ptr %t352 %t353 = load ptr, ptr %t336 %t354 = getelementptr inbounds %Cmp_Val, ptr %t353, i32 0, i32 0 %t355 = load ptr, ptr %t354 - %t356 = call ptr @lp_str_concat(ptr @.str5027, ptr %t355) - %t357 = call ptr @lp_str_concat(ptr %t356, ptr @.str5028) + %t356 = call ptr @lp_str_concat(ptr @.str5030, ptr %t355) + %t357 = call ptr @lp_str_concat(ptr %t356, ptr @.str5031) %t358 = call ptr @fn_emit_bind(ptr %t357) store ptr %t358, ptr %t359 %t360 = load ptr, ptr %t352 - %t361 = call ptr @lp_str_concat(ptr @.str5029, ptr %t360) - %t362 = call ptr @lp_str_concat(ptr %t361, ptr @.str5030) + %t361 = call ptr @lp_str_concat(ptr @.str5032, ptr %t360) + %t362 = call ptr @lp_str_concat(ptr %t361, ptr @.str5033) %t363 = load ptr, ptr %t359 %t364 = call ptr @lp_str_concat(ptr %t362, ptr %t363) %t365 = call ptr @fn_emit_bind(ptr %t364) store ptr %t365, ptr %t366 %t367 = load ptr, ptr %t366 - %t368 = call ptr @lp_str_concat(ptr @.str5031, ptr %t367) - %t369 = call ptr @lp_str_concat(ptr %t368, ptr @.str5032) + %t368 = call ptr @lp_str_concat(ptr @.str5034, ptr %t367) + %t369 = call ptr @lp_str_concat(ptr %t368, ptr @.str5035) %t370 = call ptr @fn_emit_bind(ptr %t369) store ptr %t370, ptr %t371 %t372 = load ptr, ptr %t371 - %t373 = call ptr @lp_str_concat(ptr @.str5033, ptr %t372) - %t374 = call ptr @lp_str_concat(ptr %t373, ptr @.str5034) + %t373 = call ptr @lp_str_concat(ptr @.str5036, ptr %t372) + %t374 = call ptr @lp_str_concat(ptr %t373, ptr @.str5037) %t375 = call ptr @fn_emit_bind(ptr %t374) store ptr %t375, ptr %t376 %t377 = load ptr, ptr %t376 - %t378 = call ptr @lp_str_concat(ptr @.str5035, ptr %t377) - %t379 = call ptr @lp_str_concat(ptr %t378, ptr @.str5036) + %t378 = call ptr @lp_str_concat(ptr @.str5038, ptr %t377) + %t379 = call ptr @lp_str_concat(ptr %t378, ptr @.str5039) %t380 = call ptr @fn_emit_bind(ptr %t379) store ptr %t380, ptr %t381 %t382 = load ptr, ptr %t318 %t383 = getelementptr inbounds %Cmp_Val, ptr %t382, i32 0, i32 0 %t384 = load ptr, ptr %t383 - %t385 = call ptr @lp_str_concat(ptr @.str5037, ptr %t384) - %t386 = call ptr @lp_str_concat(ptr %t385, ptr @.str5038) + %t385 = call ptr @lp_str_concat(ptr @.str5040, ptr %t384) + %t386 = call ptr @lp_str_concat(ptr %t385, ptr @.str5041) %t387 = load ptr, ptr %t381 %t388 = call ptr @lp_str_concat(ptr %t386, ptr %t387) %t389 = call ptr @fn_emit_bind(ptr %t388) - %t390 = call ptr @fn_val(ptr %t389, ptr @.str5039) + %t390 = call ptr @fn_val(ptr %t389, ptr @.str5042) store ptr %t390, ptr %retval br label %ret ifend26: %t391 = load ptr, ptr %t0 - %t392 = call i32 @lp_str_eq(ptr %t391, ptr @.str5040) + %t392 = call i32 @lp_str_eq(ptr %t391, ptr @.str5043) %t393 = icmp ne i32 %t392, 0 br i1 %t393, label %then27, label %ifend29 then27: @@ -53671,7 +53724,7 @@ then27: %t455 = load ptr, ptr %t447 %t456 = load ptr, ptr %t454 %t457 = call ptr @fn_vec_pack(ptr %t455, ptr %t456) - %t458 = call ptr @fn_val(ptr %t457, ptr @.str5041) + %t458 = call ptr @fn_val(ptr %t457, ptr @.str5044) store ptr %t458, ptr %retval br label %ret ifend29: @@ -53705,11 +53758,11 @@ ifend29: %t486 = load ptr, ptr %t467 %t487 = getelementptr inbounds %Cmp_Val, ptr %t486, i32 0, i32 0 %t488 = load ptr, ptr %t487 - %t489 = call ptr @fn_color_ch(ptr %t488, ptr @.str5042) + %t489 = call ptr @fn_color_ch(ptr %t488, ptr @.str5045) %t490 = load ptr, ptr %t476 %t491 = getelementptr inbounds %Cmp_Val, ptr %t490, i32 0, i32 0 %t492 = load ptr, ptr %t491 - %t493 = call ptr @fn_color_ch(ptr %t492, ptr @.str5043) + %t493 = call ptr @fn_color_ch(ptr %t492, ptr @.str5046) %t494 = load ptr, ptr %t485 %t495 = getelementptr inbounds %Cmp_Val, ptr %t494, i32 0, i32 0 %t496 = load ptr, ptr %t495 @@ -53718,11 +53771,11 @@ ifend29: %t499 = load ptr, ptr %t467 %t500 = getelementptr inbounds %Cmp_Val, ptr %t499, i32 0, i32 0 %t501 = load ptr, ptr %t500 - %t502 = call ptr @fn_color_ch(ptr %t501, ptr @.str5044) + %t502 = call ptr @fn_color_ch(ptr %t501, ptr @.str5047) %t503 = load ptr, ptr %t476 %t504 = getelementptr inbounds %Cmp_Val, ptr %t503, i32 0, i32 0 %t505 = load ptr, ptr %t504 - %t506 = call ptr @fn_color_ch(ptr %t505, ptr @.str5045) + %t506 = call ptr @fn_color_ch(ptr %t505, ptr @.str5048) %t507 = load ptr, ptr %t485 %t508 = getelementptr inbounds %Cmp_Val, ptr %t507, i32 0, i32 0 %t509 = load ptr, ptr %t508 @@ -53731,11 +53784,11 @@ ifend29: %t512 = load ptr, ptr %t467 %t513 = getelementptr inbounds %Cmp_Val, ptr %t512, i32 0, i32 0 %t514 = load ptr, ptr %t513 - %t515 = call ptr @fn_color_ch(ptr %t514, ptr @.str5046) + %t515 = call ptr @fn_color_ch(ptr %t514, ptr @.str5049) %t516 = load ptr, ptr %t476 %t517 = getelementptr inbounds %Cmp_Val, ptr %t516, i32 0, i32 0 %t518 = load ptr, ptr %t517 - %t519 = call ptr @fn_color_ch(ptr %t518, ptr @.str5047) + %t519 = call ptr @fn_color_ch(ptr %t518, ptr @.str5050) %t520 = load ptr, ptr %t485 %t521 = getelementptr inbounds %Cmp_Val, ptr %t520, i32 0, i32 0 %t522 = load ptr, ptr %t521 @@ -53745,7 +53798,7 @@ ifend29: %t526 = load ptr, ptr %t511 %t527 = load ptr, ptr %t524 %t528 = call ptr @fn_color_pack(ptr %t525, ptr %t526, ptr %t527) - %t529 = call ptr @fn_val(ptr %t528, ptr @.str5048) + %t529 = call ptr @fn_val(ptr %t528, ptr @.str5051) store ptr %t529, ptr %retval br label %ret ret: @@ -53761,14 +53814,14 @@ entry: %t12 = alloca i32 store ptr %arg_meth, ptr %t0 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5049) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5052) %t4 = icmp ne i32 %t3, 0 %t5 = zext i1 %t4 to i32 store i32 %t5, ptr %t1 br i1 %t4, label %scend1, label %sc0 sc0: %t6 = load ptr, ptr %t0 - %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str5050) + %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str5053) %t8 = icmp ne i32 %t7, 0 %t9 = zext i1 %t8 to i32 store i32 %t9, ptr %t1 @@ -53782,14 +53835,14 @@ then2: br label %ret ifend4: %t13 = load ptr, ptr %t0 - %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str5051) + %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str5054) %t15 = icmp ne i32 %t14, 0 %t16 = zext i1 %t15 to i32 store i32 %t16, ptr %t12 br i1 %t15, label %scend6, label %sc5 sc5: %t17 = load ptr, ptr %t0 - %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str5052) + %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str5055) %t19 = icmp ne i32 %t18, 0 %t20 = zext i1 %t19 to i32 store i32 %t20, ptr %t12 @@ -53821,32 +53874,32 @@ entry: store ptr %arg_dx, ptr %t0 store ptr %arg_dy, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call ptr @lp_str_concat(ptr @.str5053, ptr %t2) - %t4 = call ptr @lp_str_concat(ptr %t3, ptr @.str5054) + %t3 = call ptr @lp_str_concat(ptr @.str5056, ptr %t2) + %t4 = call ptr @lp_str_concat(ptr %t3, ptr @.str5057) %t5 = call ptr @fn_emit_bind(ptr %t4) store ptr %t5, ptr %t6 %t7 = load ptr, ptr %t1 - %t8 = call ptr @lp_str_concat(ptr @.str5055, ptr %t7) - %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str5056) + %t8 = call ptr @lp_str_concat(ptr @.str5058, ptr %t7) + %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str5059) %t10 = call ptr @fn_emit_bind(ptr %t9) store ptr %t10, ptr %t11 %t12 = load ptr, ptr %t6 - %t13 = call ptr @lp_str_concat(ptr @.str5057, ptr %t12) - %t14 = call ptr @lp_str_concat(ptr %t13, ptr @.str5058) + %t13 = call ptr @lp_str_concat(ptr @.str5060, ptr %t12) + %t14 = call ptr @lp_str_concat(ptr %t13, ptr @.str5061) %t15 = load ptr, ptr %t6 %t16 = call ptr @lp_str_concat(ptr %t14, ptr %t15) %t17 = call ptr @fn_emit_bind(ptr %t16) store ptr %t17, ptr %t18 %t19 = load ptr, ptr %t11 - %t20 = call ptr @lp_str_concat(ptr @.str5059, ptr %t19) - %t21 = call ptr @lp_str_concat(ptr %t20, ptr @.str5060) + %t20 = call ptr @lp_str_concat(ptr @.str5062, ptr %t19) + %t21 = call ptr @lp_str_concat(ptr %t20, ptr @.str5063) %t22 = load ptr, ptr %t11 %t23 = call ptr @lp_str_concat(ptr %t21, ptr %t22) %t24 = call ptr @fn_emit_bind(ptr %t23) store ptr %t24, ptr %t25 %t26 = load ptr, ptr %t18 - %t27 = call ptr @lp_str_concat(ptr @.str5061, ptr %t26) - %t28 = call ptr @lp_str_concat(ptr %t27, ptr @.str5062) + %t27 = call ptr @lp_str_concat(ptr @.str5064, ptr %t26) + %t28 = call ptr @lp_str_concat(ptr %t27, ptr @.str5065) %t29 = load ptr, ptr %t25 %t30 = call ptr @lp_str_concat(ptr %t28, ptr %t29) %t31 = call ptr @fn_emit_bind(ptr %t30) @@ -53870,35 +53923,35 @@ entry: store ptr %arg_lo, ptr %t1 store ptr %arg_hi, ptr %t2 %t3 = load ptr, ptr %t0 - %t4 = call ptr @lp_str_concat(ptr @.str5063, ptr %t3) - %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str5064) + %t4 = call ptr @lp_str_concat(ptr @.str5066, ptr %t3) + %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str5067) %t6 = load ptr, ptr %t2 %t7 = call ptr @lp_str_concat(ptr %t5, ptr %t6) %t8 = call ptr @fn_emit_bind(ptr %t7) store ptr %t8, ptr %t9 %t10 = load ptr, ptr %t9 - %t11 = call ptr @lp_str_concat(ptr @.str5065, ptr %t10) - %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str5066) + %t11 = call ptr @lp_str_concat(ptr @.str5068, ptr %t10) + %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str5069) %t13 = load ptr, ptr %t0 %t14 = call ptr @lp_str_concat(ptr %t12, ptr %t13) - %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str5067) + %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str5070) %t16 = load ptr, ptr %t2 %t17 = call ptr @lp_str_concat(ptr %t15, ptr %t16) %t18 = call ptr @fn_emit_bind(ptr %t17) store ptr %t18, ptr %t19 %t20 = load ptr, ptr %t1 - %t21 = call ptr @lp_str_concat(ptr @.str5068, ptr %t20) - %t22 = call ptr @lp_str_concat(ptr %t21, ptr @.str5069) + %t21 = call ptr @lp_str_concat(ptr @.str5071, ptr %t20) + %t22 = call ptr @lp_str_concat(ptr %t21, ptr @.str5072) %t23 = load ptr, ptr %t19 %t24 = call ptr @lp_str_concat(ptr %t22, ptr %t23) %t25 = call ptr @fn_emit_bind(ptr %t24) store ptr %t25, ptr %t26 %t27 = load ptr, ptr %t26 - %t28 = call ptr @lp_str_concat(ptr @.str5070, ptr %t27) - %t29 = call ptr @lp_str_concat(ptr %t28, ptr @.str5071) + %t28 = call ptr @lp_str_concat(ptr @.str5073, ptr %t27) + %t29 = call ptr @lp_str_concat(ptr %t28, ptr @.str5074) %t30 = load ptr, ptr %t1 %t31 = call ptr @lp_str_concat(ptr %t29, ptr %t30) - %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str5072) + %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str5075) %t33 = load ptr, ptr %t19 %t34 = call ptr @lp_str_concat(ptr %t32, ptr %t33) %t35 = call ptr @fn_emit_bind(ptr %t34) @@ -53981,7 +54034,7 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5073) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5076) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -54060,8 +54113,8 @@ then0: %t77 = load ptr, ptr %t13 %t78 = getelementptr inbounds %Cmp_Val, ptr %t77, i32 0, i32 0 %t79 = load ptr, ptr %t78 - %t80 = call ptr @lp_str_concat(ptr @.str5074, ptr %t79) - %t81 = call ptr @lp_str_concat(ptr %t80, ptr @.str5075) + %t80 = call ptr @lp_str_concat(ptr @.str5077, ptr %t79) + %t81 = call ptr @lp_str_concat(ptr %t80, ptr @.str5078) %t82 = load ptr, ptr %t31 %t83 = getelementptr inbounds %Cmp_Val, ptr %t82, i32 0, i32 0 %t84 = load ptr, ptr %t83 @@ -54071,8 +54124,8 @@ then0: %t88 = load ptr, ptr %t49 %t89 = getelementptr inbounds %Cmp_Val, ptr %t88, i32 0, i32 0 %t90 = load ptr, ptr %t89 - %t91 = call ptr @lp_str_concat(ptr @.str5076, ptr %t90) - %t92 = call ptr @lp_str_concat(ptr %t91, ptr @.str5077) + %t91 = call ptr @lp_str_concat(ptr @.str5079, ptr %t90) + %t92 = call ptr @lp_str_concat(ptr %t91, ptr @.str5080) %t93 = load ptr, ptr %t67 %t94 = getelementptr inbounds %Cmp_Val, ptr %t93, i32 0, i32 0 %t95 = load ptr, ptr %t94 @@ -54082,8 +54135,8 @@ then0: %t99 = load ptr, ptr %t22 %t100 = getelementptr inbounds %Cmp_Val, ptr %t99, i32 0, i32 0 %t101 = load ptr, ptr %t100 - %t102 = call ptr @lp_str_concat(ptr @.str5078, ptr %t101) - %t103 = call ptr @lp_str_concat(ptr %t102, ptr @.str5079) + %t102 = call ptr @lp_str_concat(ptr @.str5081, ptr %t101) + %t103 = call ptr @lp_str_concat(ptr %t102, ptr @.str5082) %t104 = load ptr, ptr %t40 %t105 = getelementptr inbounds %Cmp_Val, ptr %t104, i32 0, i32 0 %t106 = load ptr, ptr %t105 @@ -54093,8 +54146,8 @@ then0: %t110 = load ptr, ptr %t58 %t111 = getelementptr inbounds %Cmp_Val, ptr %t110, i32 0, i32 0 %t112 = load ptr, ptr %t111 - %t113 = call ptr @lp_str_concat(ptr @.str5080, ptr %t112) - %t114 = call ptr @lp_str_concat(ptr %t113, ptr @.str5081) + %t113 = call ptr @lp_str_concat(ptr @.str5083, ptr %t112) + %t114 = call ptr @lp_str_concat(ptr %t113, ptr @.str5084) %t115 = load ptr, ptr %t76 %t116 = getelementptr inbounds %Cmp_Val, ptr %t115, i32 0, i32 0 %t117 = load ptr, ptr %t116 @@ -54104,8 +54157,8 @@ then0: %t121 = load ptr, ptr %t13 %t122 = getelementptr inbounds %Cmp_Val, ptr %t121, i32 0, i32 0 %t123 = load ptr, ptr %t122 - %t124 = call ptr @lp_str_concat(ptr @.str5082, ptr %t123) - %t125 = call ptr @lp_str_concat(ptr %t124, ptr @.str5083) + %t124 = call ptr @lp_str_concat(ptr @.str5085, ptr %t123) + %t125 = call ptr @lp_str_concat(ptr %t124, ptr @.str5086) %t126 = load ptr, ptr %t98 %t127 = call ptr @lp_str_concat(ptr %t125, ptr %t126) %t128 = call ptr @fn_emit_bind(ptr %t127) @@ -54113,8 +54166,8 @@ then0: %t130 = load ptr, ptr %t49 %t131 = getelementptr inbounds %Cmp_Val, ptr %t130, i32 0, i32 0 %t132 = load ptr, ptr %t131 - %t133 = call ptr @lp_str_concat(ptr @.str5084, ptr %t132) - %t134 = call ptr @lp_str_concat(ptr %t133, ptr @.str5085) + %t133 = call ptr @lp_str_concat(ptr @.str5087, ptr %t132) + %t134 = call ptr @lp_str_concat(ptr %t133, ptr @.str5088) %t135 = load ptr, ptr %t87 %t136 = call ptr @lp_str_concat(ptr %t134, ptr %t135) %t137 = call ptr @fn_emit_bind(ptr %t136) @@ -54122,8 +54175,8 @@ then0: %t139 = load ptr, ptr %t22 %t140 = getelementptr inbounds %Cmp_Val, ptr %t139, i32 0, i32 0 %t141 = load ptr, ptr %t140 - %t142 = call ptr @lp_str_concat(ptr @.str5086, ptr %t141) - %t143 = call ptr @lp_str_concat(ptr %t142, ptr @.str5087) + %t142 = call ptr @lp_str_concat(ptr @.str5089, ptr %t141) + %t143 = call ptr @lp_str_concat(ptr %t142, ptr @.str5090) %t144 = load ptr, ptr %t120 %t145 = call ptr @lp_str_concat(ptr %t143, ptr %t144) %t146 = call ptr @fn_emit_bind(ptr %t145) @@ -54131,43 +54184,43 @@ then0: %t148 = load ptr, ptr %t58 %t149 = getelementptr inbounds %Cmp_Val, ptr %t148, i32 0, i32 0 %t150 = load ptr, ptr %t149 - %t151 = call ptr @lp_str_concat(ptr @.str5088, ptr %t150) - %t152 = call ptr @lp_str_concat(ptr %t151, ptr @.str5089) + %t151 = call ptr @lp_str_concat(ptr @.str5091, ptr %t150) + %t152 = call ptr @lp_str_concat(ptr %t151, ptr @.str5092) %t153 = load ptr, ptr %t109 %t154 = call ptr @lp_str_concat(ptr %t152, ptr %t153) %t155 = call ptr @fn_emit_bind(ptr %t154) store ptr %t155, ptr %t156 %t157 = load ptr, ptr %t129 - %t158 = call ptr @lp_str_concat(ptr @.str5090, ptr %t157) - %t159 = call ptr @lp_str_concat(ptr %t158, ptr @.str5091) + %t158 = call ptr @lp_str_concat(ptr @.str5093, ptr %t157) + %t159 = call ptr @lp_str_concat(ptr %t158, ptr @.str5094) %t160 = load ptr, ptr %t138 %t161 = call ptr @lp_str_concat(ptr %t159, ptr %t160) %t162 = call ptr @fn_emit_bind(ptr %t161) store ptr %t162, ptr %t163 %t164 = load ptr, ptr %t147 - %t165 = call ptr @lp_str_concat(ptr @.str5092, ptr %t164) - %t166 = call ptr @lp_str_concat(ptr %t165, ptr @.str5093) + %t165 = call ptr @lp_str_concat(ptr @.str5095, ptr %t164) + %t166 = call ptr @lp_str_concat(ptr %t165, ptr @.str5096) %t167 = load ptr, ptr %t156 %t168 = call ptr @lp_str_concat(ptr %t166, ptr %t167) %t169 = call ptr @fn_emit_bind(ptr %t168) store ptr %t169, ptr %t170 %t171 = load ptr, ptr %t163 - %t172 = call ptr @lp_str_concat(ptr @.str5094, ptr %t171) - %t173 = call ptr @lp_str_concat(ptr %t172, ptr @.str5095) + %t172 = call ptr @lp_str_concat(ptr @.str5097, ptr %t171) + %t173 = call ptr @lp_str_concat(ptr %t172, ptr @.str5098) %t174 = load ptr, ptr %t170 %t175 = call ptr @lp_str_concat(ptr %t173, ptr %t174) %t176 = call ptr @fn_emit_bind(ptr %t175) store ptr %t176, ptr %t177 %t178 = load ptr, ptr %t177 - %t179 = call ptr @lp_str_concat(ptr @.str5096, ptr %t178) - %t180 = call ptr @lp_str_concat(ptr %t179, ptr @.str5097) + %t179 = call ptr @lp_str_concat(ptr @.str5099, ptr %t178) + %t180 = call ptr @lp_str_concat(ptr %t179, ptr @.str5100) %t181 = call ptr @fn_emit_bind(ptr %t180) - %t182 = call ptr @fn_val(ptr %t181, ptr @.str5098) + %t182 = call ptr @fn_val(ptr %t181, ptr @.str5101) store ptr %t182, ptr %retval br label %ret ifend2: %t183 = load ptr, ptr %t0 - %t184 = call i32 @lp_str_eq(ptr %t183, ptr @.str5099) + %t184 = call i32 @lp_str_eq(ptr %t183, ptr @.str5102) %t185 = icmp ne i32 %t184, 0 br i1 %t185, label %then3, label %ifend5 then3: @@ -54228,8 +54281,8 @@ then3: %t240 = load ptr, ptr %t212 %t241 = getelementptr inbounds %Cmp_Val, ptr %t240, i32 0, i32 0 %t242 = load ptr, ptr %t241 - %t243 = call ptr @lp_str_concat(ptr @.str5100, ptr %t242) - %t244 = call ptr @lp_str_concat(ptr %t243, ptr @.str5101) + %t243 = call ptr @lp_str_concat(ptr @.str5103, ptr %t242) + %t244 = call ptr @lp_str_concat(ptr %t243, ptr @.str5104) %t245 = load ptr, ptr %t230 %t246 = getelementptr inbounds %Cmp_Val, ptr %t245, i32 0, i32 0 %t247 = load ptr, ptr %t246 @@ -54239,8 +54292,8 @@ then3: %t251 = load ptr, ptr %t221 %t252 = getelementptr inbounds %Cmp_Val, ptr %t251, i32 0, i32 0 %t253 = load ptr, ptr %t252 - %t254 = call ptr @lp_str_concat(ptr @.str5102, ptr %t253) - %t255 = call ptr @lp_str_concat(ptr %t254, ptr @.str5103) + %t254 = call ptr @lp_str_concat(ptr @.str5105, ptr %t253) + %t255 = call ptr @lp_str_concat(ptr %t254, ptr @.str5106) %t256 = load ptr, ptr %t239 %t257 = getelementptr inbounds %Cmp_Val, ptr %t256, i32 0, i32 0 %t258 = load ptr, ptr %t257 @@ -54250,8 +54303,8 @@ then3: %t262 = load ptr, ptr %t194 %t263 = getelementptr inbounds %Cmp_Val, ptr %t262, i32 0, i32 0 %t264 = load ptr, ptr %t263 - %t265 = call ptr @lp_str_concat(ptr @.str5104, ptr %t264) - %t266 = call ptr @lp_str_concat(ptr %t265, ptr @.str5105) + %t265 = call ptr @lp_str_concat(ptr @.str5107, ptr %t264) + %t266 = call ptr @lp_str_concat(ptr %t265, ptr @.str5108) %t267 = load ptr, ptr %t212 %t268 = getelementptr inbounds %Cmp_Val, ptr %t267, i32 0, i32 0 %t269 = load ptr, ptr %t268 @@ -54261,8 +54314,8 @@ then3: %t273 = load ptr, ptr %t194 %t274 = getelementptr inbounds %Cmp_Val, ptr %t273, i32 0, i32 0 %t275 = load ptr, ptr %t274 - %t276 = call ptr @lp_str_concat(ptr @.str5106, ptr %t275) - %t277 = call ptr @lp_str_concat(ptr %t276, ptr @.str5107) + %t276 = call ptr @lp_str_concat(ptr @.str5109, ptr %t275) + %t277 = call ptr @lp_str_concat(ptr %t276, ptr @.str5110) %t278 = load ptr, ptr %t250 %t279 = call ptr @lp_str_concat(ptr %t277, ptr %t278) %t280 = call ptr @fn_emit_bind(ptr %t279) @@ -54270,8 +54323,8 @@ then3: %t282 = load ptr, ptr %t203 %t283 = getelementptr inbounds %Cmp_Val, ptr %t282, i32 0, i32 0 %t284 = load ptr, ptr %t283 - %t285 = call ptr @lp_str_concat(ptr @.str5108, ptr %t284) - %t286 = call ptr @lp_str_concat(ptr %t285, ptr @.str5109) + %t285 = call ptr @lp_str_concat(ptr @.str5111, ptr %t284) + %t286 = call ptr @lp_str_concat(ptr %t285, ptr @.str5112) %t287 = load ptr, ptr %t221 %t288 = getelementptr inbounds %Cmp_Val, ptr %t287, i32 0, i32 0 %t289 = load ptr, ptr %t288 @@ -54281,43 +54334,43 @@ then3: %t293 = load ptr, ptr %t203 %t294 = getelementptr inbounds %Cmp_Val, ptr %t293, i32 0, i32 0 %t295 = load ptr, ptr %t294 - %t296 = call ptr @lp_str_concat(ptr @.str5110, ptr %t295) - %t297 = call ptr @lp_str_concat(ptr %t296, ptr @.str5111) + %t296 = call ptr @lp_str_concat(ptr @.str5113, ptr %t295) + %t297 = call ptr @lp_str_concat(ptr %t296, ptr @.str5114) %t298 = load ptr, ptr %t261 %t299 = call ptr @lp_str_concat(ptr %t297, ptr %t298) %t300 = call ptr @fn_emit_bind(ptr %t299) store ptr %t300, ptr %t301 %t302 = load ptr, ptr %t272 - %t303 = call ptr @lp_str_concat(ptr @.str5112, ptr %t302) - %t304 = call ptr @lp_str_concat(ptr %t303, ptr @.str5113) + %t303 = call ptr @lp_str_concat(ptr @.str5115, ptr %t302) + %t304 = call ptr @lp_str_concat(ptr %t303, ptr @.str5116) %t305 = load ptr, ptr %t281 %t306 = call ptr @lp_str_concat(ptr %t304, ptr %t305) %t307 = call ptr @fn_emit_bind(ptr %t306) store ptr %t307, ptr %t308 %t309 = load ptr, ptr %t292 - %t310 = call ptr @lp_str_concat(ptr @.str5114, ptr %t309) - %t311 = call ptr @lp_str_concat(ptr %t310, ptr @.str5115) + %t310 = call ptr @lp_str_concat(ptr @.str5117, ptr %t309) + %t311 = call ptr @lp_str_concat(ptr %t310, ptr @.str5118) %t312 = load ptr, ptr %t301 %t313 = call ptr @lp_str_concat(ptr %t311, ptr %t312) %t314 = call ptr @fn_emit_bind(ptr %t313) store ptr %t314, ptr %t315 %t316 = load ptr, ptr %t308 - %t317 = call ptr @lp_str_concat(ptr @.str5116, ptr %t316) - %t318 = call ptr @lp_str_concat(ptr %t317, ptr @.str5117) + %t317 = call ptr @lp_str_concat(ptr @.str5119, ptr %t316) + %t318 = call ptr @lp_str_concat(ptr %t317, ptr @.str5120) %t319 = load ptr, ptr %t315 %t320 = call ptr @lp_str_concat(ptr %t318, ptr %t319) %t321 = call ptr @fn_emit_bind(ptr %t320) store ptr %t321, ptr %t322 %t323 = load ptr, ptr %t322 - %t324 = call ptr @lp_str_concat(ptr @.str5118, ptr %t323) - %t325 = call ptr @lp_str_concat(ptr %t324, ptr @.str5119) + %t324 = call ptr @lp_str_concat(ptr @.str5121, ptr %t323) + %t325 = call ptr @lp_str_concat(ptr %t324, ptr @.str5122) %t326 = call ptr @fn_emit_bind(ptr %t325) - %t327 = call ptr @fn_val(ptr %t326, ptr @.str5120) + %t327 = call ptr @fn_val(ptr %t326, ptr @.str5123) store ptr %t327, ptr %retval br label %ret ifend5: %t328 = load ptr, ptr %t0 - %t329 = call i32 @lp_str_eq(ptr %t328, ptr @.str5121) + %t329 = call i32 @lp_str_eq(ptr %t328, ptr @.str5124) %t330 = icmp ne i32 %t329, 0 br i1 %t330, label %then6, label %ifend8 then6: @@ -54378,8 +54431,8 @@ then6: %t385 = load ptr, ptr %t339 %t386 = getelementptr inbounds %Cmp_Val, ptr %t385, i32 0, i32 0 %t387 = load ptr, ptr %t386 - %t388 = call ptr @lp_str_concat(ptr @.str5122, ptr %t387) - %t389 = call ptr @lp_str_concat(ptr %t388, ptr @.str5123) + %t388 = call ptr @lp_str_concat(ptr @.str5125, ptr %t387) + %t389 = call ptr @lp_str_concat(ptr %t388, ptr @.str5126) %t390 = load ptr, ptr %t366 %t391 = getelementptr inbounds %Cmp_Val, ptr %t390, i32 0, i32 0 %t392 = load ptr, ptr %t391 @@ -54389,8 +54442,8 @@ then6: %t396 = load ptr, ptr %t348 %t397 = getelementptr inbounds %Cmp_Val, ptr %t396, i32 0, i32 0 %t398 = load ptr, ptr %t397 - %t399 = call ptr @lp_str_concat(ptr @.str5124, ptr %t398) - %t400 = call ptr @lp_str_concat(ptr %t399, ptr @.str5125) + %t399 = call ptr @lp_str_concat(ptr @.str5127, ptr %t398) + %t400 = call ptr @lp_str_concat(ptr %t399, ptr @.str5128) %t401 = load ptr, ptr %t375 %t402 = getelementptr inbounds %Cmp_Val, ptr %t401, i32 0, i32 0 %t403 = load ptr, ptr %t402 @@ -54404,8 +54457,8 @@ then6: %t411 = load ptr, ptr %t357 %t412 = getelementptr inbounds %Cmp_Val, ptr %t411, i32 0, i32 0 %t413 = load ptr, ptr %t412 - %t414 = call ptr @lp_str_concat(ptr @.str5126, ptr %t413) - %t415 = call ptr @lp_str_concat(ptr %t414, ptr @.str5127) + %t414 = call ptr @lp_str_concat(ptr @.str5129, ptr %t413) + %t415 = call ptr @lp_str_concat(ptr %t414, ptr @.str5130) %t416 = load ptr, ptr %t384 %t417 = getelementptr inbounds %Cmp_Val, ptr %t416, i32 0, i32 0 %t418 = load ptr, ptr %t417 @@ -54413,29 +54466,29 @@ then6: %t420 = call ptr @fn_emit_bind(ptr %t419) store ptr %t420, ptr %t421 %t422 = load ptr, ptr %t421 - %t423 = call ptr @lp_str_concat(ptr @.str5128, ptr %t422) - %t424 = call ptr @lp_str_concat(ptr %t423, ptr @.str5129) + %t423 = call ptr @lp_str_concat(ptr @.str5131, ptr %t422) + %t424 = call ptr @lp_str_concat(ptr %t423, ptr @.str5132) %t425 = call ptr @fn_emit_bind(ptr %t424) store ptr %t425, ptr %t426 %t427 = load ptr, ptr %t426 - %t428 = call ptr @lp_str_concat(ptr @.str5130, ptr %t427) - %t429 = call ptr @lp_str_concat(ptr %t428, ptr @.str5131) + %t428 = call ptr @lp_str_concat(ptr @.str5133, ptr %t427) + %t429 = call ptr @lp_str_concat(ptr %t428, ptr @.str5134) %t430 = load ptr, ptr %t426 %t431 = call ptr @lp_str_concat(ptr %t429, ptr %t430) %t432 = call ptr @fn_emit_bind(ptr %t431) store ptr %t432, ptr %t433 %t434 = load ptr, ptr %t410 - %t435 = call ptr @lp_str_concat(ptr @.str5132, ptr %t434) - %t436 = call ptr @lp_str_concat(ptr %t435, ptr @.str5133) + %t435 = call ptr @lp_str_concat(ptr @.str5135, ptr %t434) + %t436 = call ptr @lp_str_concat(ptr %t435, ptr @.str5136) %t437 = load ptr, ptr %t433 %t438 = call ptr @lp_str_concat(ptr %t436, ptr %t437) %t439 = call ptr @fn_emit_bind(ptr %t438) store ptr %t439, ptr %t440 %t441 = load ptr, ptr %t440 - %t442 = call ptr @lp_str_concat(ptr @.str5134, ptr %t441) - %t443 = call ptr @lp_str_concat(ptr %t442, ptr @.str5135) + %t442 = call ptr @lp_str_concat(ptr @.str5137, ptr %t441) + %t443 = call ptr @lp_str_concat(ptr %t442, ptr @.str5138) %t444 = call ptr @fn_emit_bind(ptr %t443) - %t445 = call ptr @fn_val(ptr %t444, ptr @.str5136) + %t445 = call ptr @fn_val(ptr %t444, ptr @.str5139) store ptr %t445, ptr %retval br label %ret ifend8: @@ -54505,8 +54558,8 @@ ifend8: %t509 = load ptr, ptr %t454 %t510 = getelementptr inbounds %Cmp_Val, ptr %t509, i32 0, i32 0 %t511 = load ptr, ptr %t510 - %t512 = call ptr @lp_str_concat(ptr @.str5137, ptr %t511) - %t513 = call ptr @lp_str_concat(ptr %t512, ptr @.str5138) + %t512 = call ptr @lp_str_concat(ptr @.str5140, ptr %t511) + %t513 = call ptr @lp_str_concat(ptr %t512, ptr @.str5141) %t514 = load ptr, ptr %t472 %t515 = getelementptr inbounds %Cmp_Val, ptr %t514, i32 0, i32 0 %t516 = load ptr, ptr %t515 @@ -54516,8 +54569,8 @@ ifend8: %t520 = load ptr, ptr %t463 %t521 = getelementptr inbounds %Cmp_Val, ptr %t520, i32 0, i32 0 %t522 = load ptr, ptr %t521 - %t523 = call ptr @lp_str_concat(ptr @.str5139, ptr %t522) - %t524 = call ptr @lp_str_concat(ptr %t523, ptr @.str5140) + %t523 = call ptr @lp_str_concat(ptr @.str5142, ptr %t522) + %t524 = call ptr @lp_str_concat(ptr %t523, ptr @.str5143) %t525 = load ptr, ptr %t481 %t526 = getelementptr inbounds %Cmp_Val, ptr %t525, i32 0, i32 0 %t527 = load ptr, ptr %t526 @@ -54545,8 +54598,8 @@ ifend8: %t549 = load ptr, ptr %t490 %t550 = getelementptr inbounds %Cmp_Val, ptr %t549, i32 0, i32 0 %t551 = load ptr, ptr %t550 - %t552 = call ptr @lp_str_concat(ptr @.str5141, ptr %t551) - %t553 = call ptr @lp_str_concat(ptr %t552, ptr @.str5142) + %t552 = call ptr @lp_str_concat(ptr @.str5144, ptr %t551) + %t553 = call ptr @lp_str_concat(ptr %t552, ptr @.str5145) %t554 = load ptr, ptr %t539 %t555 = call ptr @lp_str_concat(ptr %t553, ptr %t554) %t556 = call ptr @fn_emit_bind(ptr %t555) @@ -54554,8 +54607,8 @@ ifend8: %t558 = load ptr, ptr %t499 %t559 = getelementptr inbounds %Cmp_Val, ptr %t558, i32 0, i32 0 %t560 = load ptr, ptr %t559 - %t561 = call ptr @lp_str_concat(ptr @.str5143, ptr %t560) - %t562 = call ptr @lp_str_concat(ptr %t561, ptr @.str5144) + %t561 = call ptr @lp_str_concat(ptr @.str5146, ptr %t560) + %t562 = call ptr @lp_str_concat(ptr %t561, ptr @.str5147) %t563 = load ptr, ptr %t548 %t564 = call ptr @lp_str_concat(ptr %t562, ptr %t563) %t565 = call ptr @fn_emit_bind(ptr %t564) @@ -54567,29 +54620,29 @@ ifend8: %t571 = load ptr, ptr %t508 %t572 = getelementptr inbounds %Cmp_Val, ptr %t571, i32 0, i32 0 %t573 = load ptr, ptr %t572 - %t574 = call ptr @lp_str_concat(ptr @.str5145, ptr %t573) - %t575 = call ptr @lp_str_concat(ptr %t574, ptr @.str5146) + %t574 = call ptr @lp_str_concat(ptr @.str5148, ptr %t573) + %t575 = call ptr @lp_str_concat(ptr %t574, ptr @.str5149) %t576 = call ptr @fn_emit_bind(ptr %t575) store ptr %t576, ptr %t577 %t578 = load ptr, ptr %t577 - %t579 = call ptr @lp_str_concat(ptr @.str5147, ptr %t578) - %t580 = call ptr @lp_str_concat(ptr %t579, ptr @.str5148) + %t579 = call ptr @lp_str_concat(ptr @.str5150, ptr %t578) + %t580 = call ptr @lp_str_concat(ptr %t579, ptr @.str5151) %t581 = load ptr, ptr %t577 %t582 = call ptr @lp_str_concat(ptr %t580, ptr %t581) %t583 = call ptr @fn_emit_bind(ptr %t582) store ptr %t583, ptr %t584 %t585 = load ptr, ptr %t570 - %t586 = call ptr @lp_str_concat(ptr @.str5149, ptr %t585) - %t587 = call ptr @lp_str_concat(ptr %t586, ptr @.str5150) + %t586 = call ptr @lp_str_concat(ptr @.str5152, ptr %t585) + %t587 = call ptr @lp_str_concat(ptr %t586, ptr @.str5153) %t588 = load ptr, ptr %t584 %t589 = call ptr @lp_str_concat(ptr %t587, ptr %t588) %t590 = call ptr @fn_emit_bind(ptr %t589) store ptr %t590, ptr %t591 %t592 = load ptr, ptr %t591 - %t593 = call ptr @lp_str_concat(ptr @.str5151, ptr %t592) - %t594 = call ptr @lp_str_concat(ptr %t593, ptr @.str5152) + %t593 = call ptr @lp_str_concat(ptr @.str5154, ptr %t592) + %t594 = call ptr @lp_str_concat(ptr %t593, ptr @.str5155) %t595 = call ptr @fn_emit_bind(ptr %t594) - %t596 = call ptr @fn_val(ptr %t595, ptr @.str5153) + %t596 = call ptr @fn_val(ptr %t595, ptr @.str5156) store ptr %t596, ptr %retval br label %ret ret: @@ -54607,14 +54660,14 @@ entry: %t14 = alloca i32 store ptr %arg_meth, ptr %t0 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5154) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5157) %t4 = icmp ne i32 %t3, 0 %t5 = zext i1 %t4 to i32 store i32 %t5, ptr %t1 br i1 %t4, label %scend1, label %sc0 sc0: %t6 = load ptr, ptr %t0 - %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str5155) + %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str5158) %t8 = icmp ne i32 %t7, 0 %t9 = zext i1 %t8 to i32 store i32 %t9, ptr %t1 @@ -54628,14 +54681,14 @@ then2: br label %ret ifend4: %t15 = load ptr, ptr %t0 - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str5156) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str5159) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t14 br i1 %t17, label %scend6, label %sc5 sc5: %t19 = load ptr, ptr %t0 - %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str5157) + %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str5160) %t21 = icmp ne i32 %t20, 0 %t22 = zext i1 %t21 to i32 store i32 %t22, ptr %t14 @@ -54648,7 +54701,7 @@ scend6: br i1 %t24, label %scend8, label %sc7 sc7: %t26 = load ptr, ptr %t0 - %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str5158) + %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str5161) %t28 = icmp ne i32 %t27, 0 %t29 = zext i1 %t28 to i32 store i32 %t29, ptr %t13 @@ -54661,7 +54714,7 @@ scend8: br i1 %t31, label %scend10, label %sc9 sc9: %t33 = load ptr, ptr %t0 - %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str5159) + %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str5162) %t35 = icmp ne i32 %t34, 0 %t36 = zext i1 %t35 to i32 store i32 %t36, ptr %t12 @@ -54711,7 +54764,7 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5160) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5163) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -54727,20 +54780,20 @@ then0: %t14 = load ptr, ptr %t13 %t15 = getelementptr inbounds %Cmp_Val, ptr %t14, i32 0, i32 0 %t16 = load ptr, ptr %t15 - %t17 = call ptr @lp_str_concat(ptr @.str5161, ptr %t16) - %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str5162) + %t17 = call ptr @lp_str_concat(ptr @.str5164, ptr %t16) + %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str5165) %t19 = call ptr @fn_emit_bind(ptr %t18) store ptr %t19, ptr %t20 %t21 = load ptr, ptr %t20 - %t22 = call ptr @lp_str_concat(ptr @.str5163, ptr %t21) - %t23 = call ptr @lp_str_concat(ptr %t22, ptr @.str5164) + %t22 = call ptr @lp_str_concat(ptr @.str5166, ptr %t21) + %t23 = call ptr @lp_str_concat(ptr %t22, ptr @.str5167) %t24 = call ptr @fn_emit_bind(ptr %t23) - %t25 = call ptr @fn_val(ptr %t24, ptr @.str5165) + %t25 = call ptr @fn_val(ptr %t24, ptr @.str5168) store ptr %t25, ptr %retval br label %ret ifend2: %t26 = load ptr, ptr %t0 - %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str5166) + %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str5169) %t28 = icmp ne i32 %t27, 0 br i1 %t28, label %then3, label %ifend5 then3: @@ -54756,25 +54809,25 @@ then3: %t38 = load ptr, ptr %t37 %t39 = getelementptr inbounds %Cmp_Val, ptr %t38, i32 0, i32 0 %t40 = load ptr, ptr %t39 - %t41 = call ptr @lp_str_concat(ptr @.str5167, ptr %t40) - %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str5168) + %t41 = call ptr @lp_str_concat(ptr @.str5170, ptr %t40) + %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str5171) %t43 = call ptr @fn_emit_bind(ptr %t42) store ptr %t43, ptr %t44 %t45 = load ptr, ptr %t44 - %t46 = call ptr @lp_str_concat(ptr @.str5169, ptr %t45) - %t47 = call ptr @lp_str_concat(ptr %t46, ptr @.str5170) + %t46 = call ptr @lp_str_concat(ptr @.str5172, ptr %t45) + %t47 = call ptr @lp_str_concat(ptr %t46, ptr @.str5173) %t48 = call ptr @fn_emit_bind(ptr %t47) store ptr %t48, ptr %t49 %t50 = load ptr, ptr %t49 - %t51 = call ptr @lp_str_concat(ptr @.str5171, ptr %t50) - %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str5172) + %t51 = call ptr @lp_str_concat(ptr @.str5174, ptr %t50) + %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str5175) %t53 = call ptr @fn_emit_bind(ptr %t52) - %t54 = call ptr @fn_val(ptr %t53, ptr @.str5173) + %t54 = call ptr @fn_val(ptr %t53, ptr @.str5176) store ptr %t54, ptr %retval br label %ret ifend5: %t55 = load ptr, ptr %t0 - %t56 = call i32 @lp_str_eq(ptr %t55, ptr @.str5174) + %t56 = call i32 @lp_str_eq(ptr %t55, ptr @.str5177) %t57 = icmp ne i32 %t56, 0 br i1 %t57, label %then6, label %ifend8 then6: @@ -54808,30 +54861,30 @@ then6: %t85 = load ptr, ptr %t84 %t86 = getelementptr inbounds %Cmp_Val, ptr %t85, i32 0, i32 0 %t87 = load ptr, ptr %t86 - %t88 = call ptr @lp_str_concat(ptr @.str5175, ptr %t87) - %t89 = call ptr @lp_str_concat(ptr %t88, ptr @.str5176) + %t88 = call ptr @lp_str_concat(ptr @.str5178, ptr %t87) + %t89 = call ptr @lp_str_concat(ptr %t88, ptr @.str5179) %t90 = call ptr @fn_emit_bind(ptr %t89) store ptr %t90, ptr %t91 - call void @fn_emit(ptr @.str5177) + call void @fn_emit(ptr @.str5180) %t92 = load ptr, ptr %t66 %t93 = getelementptr inbounds %Cmp_Val, ptr %t92, i32 0, i32 0 %t94 = load ptr, ptr %t93 call void @fn_emit(ptr %t94) - call void @fn_emit(ptr @.str5178) + call void @fn_emit(ptr @.str5181) %t95 = load ptr, ptr %t75 %t96 = getelementptr inbounds %Cmp_Val, ptr %t95, i32 0, i32 0 %t97 = load ptr, ptr %t96 call void @fn_emit(ptr %t97) - call void @fn_emit(ptr @.str5179) + call void @fn_emit(ptr @.str5182) %t98 = load ptr, ptr %t91 call void @fn_emit(ptr %t98) - call void @fn_emit(ptr @.str5180) - %t99 = call ptr @fn_val(ptr @.str5181, ptr @.str5182) + call void @fn_emit(ptr @.str5183) + %t99 = call ptr @fn_val(ptr @.str5184, ptr @.str5185) store ptr %t99, ptr %retval br label %ret ifend8: %t100 = load ptr, ptr %t0 - %t101 = call i32 @lp_str_eq(ptr %t100, ptr @.str5183) + %t101 = call i32 @lp_str_eq(ptr %t100, ptr @.str5186) %t102 = icmp ne i32 %t101, 0 br i1 %t102, label %then9, label %ifend11 then9: @@ -54865,30 +54918,30 @@ then9: %t130 = load ptr, ptr %t129 %t131 = getelementptr inbounds %Cmp_Val, ptr %t130, i32 0, i32 0 %t132 = load ptr, ptr %t131 - %t133 = call ptr @lp_str_concat(ptr @.str5184, ptr %t132) - %t134 = call ptr @lp_str_concat(ptr %t133, ptr @.str5185) + %t133 = call ptr @lp_str_concat(ptr @.str5187, ptr %t132) + %t134 = call ptr @lp_str_concat(ptr %t133, ptr @.str5188) %t135 = call ptr @fn_emit_bind(ptr %t134) store ptr %t135, ptr %t136 - call void @fn_emit(ptr @.str5186) + call void @fn_emit(ptr @.str5189) %t137 = load ptr, ptr %t111 %t138 = getelementptr inbounds %Cmp_Val, ptr %t137, i32 0, i32 0 %t139 = load ptr, ptr %t138 call void @fn_emit(ptr %t139) - call void @fn_emit(ptr @.str5187) + call void @fn_emit(ptr @.str5190) %t140 = load ptr, ptr %t120 %t141 = getelementptr inbounds %Cmp_Val, ptr %t140, i32 0, i32 0 %t142 = load ptr, ptr %t141 call void @fn_emit(ptr %t142) - call void @fn_emit(ptr @.str5188) + call void @fn_emit(ptr @.str5191) %t143 = load ptr, ptr %t136 call void @fn_emit(ptr %t143) - call void @fn_emit(ptr @.str5189) - %t144 = call ptr @fn_val(ptr @.str5190, ptr @.str5191) + call void @fn_emit(ptr @.str5192) + %t144 = call ptr @fn_val(ptr @.str5193, ptr @.str5194) store ptr %t144, ptr %retval br label %ret ifend11: %t145 = load ptr, ptr %t0 - %t146 = call i32 @lp_str_eq(ptr %t145, ptr @.str5192) + %t146 = call i32 @lp_str_eq(ptr %t145, ptr @.str5195) %t147 = icmp ne i32 %t146, 0 br i1 %t147, label %then12, label %ifend14 then12: @@ -54913,8 +54966,8 @@ then12: %t166 = load ptr, ptr %t156 %t167 = getelementptr inbounds %Cmp_Val, ptr %t166, i32 0, i32 0 %t168 = load ptr, ptr %t167 - %t169 = call ptr @lp_str_concat(ptr @.str5193, ptr %t168) - %t170 = call ptr @lp_str_concat(ptr %t169, ptr @.str5194) + %t169 = call ptr @lp_str_concat(ptr @.str5196, ptr %t168) + %t170 = call ptr @lp_str_concat(ptr %t169, ptr @.str5197) %t171 = load ptr, ptr %t165 %t172 = getelementptr inbounds %Cmp_Val, ptr %t171, i32 0, i32 0 %t173 = load ptr, ptr %t172 @@ -54922,14 +54975,14 @@ then12: %t175 = call ptr @fn_emit_bind(ptr %t174) store ptr %t175, ptr %t176 %t177 = load ptr, ptr %t176 - %t178 = call ptr @lp_str_concat(ptr @.str5195, ptr %t177) + %t178 = call ptr @lp_str_concat(ptr @.str5198, ptr %t177) %t179 = call ptr @fn_emit_bind(ptr %t178) store ptr %t179, ptr %t180 %t181 = load ptr, ptr %t180 - %t182 = call ptr @lp_str_concat(ptr @.str5196, ptr %t181) - %t183 = call ptr @lp_str_concat(ptr %t182, ptr @.str5197) + %t182 = call ptr @lp_str_concat(ptr @.str5199, ptr %t181) + %t183 = call ptr @lp_str_concat(ptr %t182, ptr @.str5200) %t184 = call ptr @fn_emit_bind(ptr %t183) - %t185 = call ptr @fn_val(ptr %t184, ptr @.str5198) + %t185 = call ptr @fn_val(ptr %t184, ptr @.str5201) store ptr %t185, ptr %retval br label %ret ifend14: @@ -54963,8 +55016,8 @@ ifend14: %t213 = load ptr, ptr %t194 %t214 = getelementptr inbounds %Cmp_Val, ptr %t213, i32 0, i32 0 %t215 = load ptr, ptr %t214 - %t216 = call ptr @lp_str_concat(ptr @.str5199, ptr %t215) - %t217 = call ptr @lp_str_concat(ptr %t216, ptr @.str5200) + %t216 = call ptr @lp_str_concat(ptr @.str5202, ptr %t215) + %t217 = call ptr @lp_str_concat(ptr %t216, ptr @.str5203) %t218 = load ptr, ptr %t203 %t219 = getelementptr inbounds %Cmp_Val, ptr %t218, i32 0, i32 0 %t220 = load ptr, ptr %t219 @@ -54974,18 +55027,18 @@ ifend14: %t224 = load ptr, ptr %t212 %t225 = getelementptr inbounds %Cmp_Val, ptr %t224, i32 0, i32 0 %t226 = load ptr, ptr %t225 - %t227 = call ptr @lp_str_concat(ptr @.str5201, ptr %t226) - %t228 = call ptr @lp_str_concat(ptr %t227, ptr @.str5202) + %t227 = call ptr @lp_str_concat(ptr @.str5204, ptr %t226) + %t228 = call ptr @lp_str_concat(ptr %t227, ptr @.str5205) %t229 = call ptr @fn_emit_bind(ptr %t228) store ptr %t229, ptr %t230 - call void @fn_emit(ptr @.str5203) + call void @fn_emit(ptr @.str5206) %t231 = load ptr, ptr %t230 call void @fn_emit(ptr %t231) - call void @fn_emit(ptr @.str5204) + call void @fn_emit(ptr @.str5207) %t232 = load ptr, ptr %t223 call void @fn_emit(ptr %t232) - call void @fn_emit(ptr @.str5205) - %t233 = call ptr @fn_val(ptr @.str5206, ptr @.str5207) + call void @fn_emit(ptr @.str5208) + %t233 = call ptr @fn_val(ptr @.str5209, ptr @.str5210) store ptr %t233, ptr %retval br label %ret ret: @@ -55002,14 +55055,14 @@ entry: %t3 = alloca i32 store ptr %arg_meth, ptr %t0 %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str5208) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str5211) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t3 br i1 %t6, label %scend1, label %sc0 sc0: %t8 = load ptr, ptr %t0 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str5209) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str5212) %t10 = icmp ne i32 %t9, 0 %t11 = zext i1 %t10 to i32 store i32 %t11, ptr %t3 @@ -55022,7 +55075,7 @@ scend1: br i1 %t13, label %scend3, label %sc2 sc2: %t15 = load ptr, ptr %t0 - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str5210) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str5213) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t2 @@ -55035,7 +55088,7 @@ scend3: br i1 %t20, label %scend5, label %sc4 sc4: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str5211) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str5214) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t1 @@ -55049,7 +55102,7 @@ then6: br label %ret ifend8: %t28 = load ptr, ptr %t0 - %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str5212) + %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str5215) %t30 = icmp ne i32 %t29, 0 br i1 %t30, label %then9, label %ifend11 then9: @@ -55076,41 +55129,41 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5213) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5216) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: - %t5 = call ptr @fn_emit_bind(ptr @.str5214) - %t6 = call ptr @fn_val(ptr %t5, ptr @.str5215) + %t5 = call ptr @fn_emit_bind(ptr @.str5217) + %t6 = call ptr @fn_val(ptr %t5, ptr @.str5218) store ptr %t6, ptr %retval br label %ret ifend2: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str5216) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str5219) %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then3, label %ifend5 then3: - %t10 = call ptr @fn_val(ptr @.str5217, ptr @.str5218) + %t10 = call ptr @fn_val(ptr @.str5220, ptr @.str5221) store ptr %t10, ptr %retval br label %ret ifend5: %t11 = load ptr, ptr %t0 - %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str5219) + %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str5222) %t13 = icmp ne i32 %t12, 0 br i1 %t13, label %then6, label %ifend8 then6: - %t14 = call ptr @fn_emit_bind(ptr @.str5220) + %t14 = call ptr @fn_emit_bind(ptr @.str5223) store ptr %t14, ptr %t15 %t16 = load ptr, ptr %t15 - %t17 = call ptr @lp_str_concat(ptr @.str5221, ptr %t16) - %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str5222) + %t17 = call ptr @lp_str_concat(ptr @.str5224, ptr %t16) + %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str5225) %t19 = call ptr @fn_emit_bind(ptr %t18) - %t20 = call ptr @fn_val(ptr %t19, ptr @.str5223) + %t20 = call ptr @fn_val(ptr %t19, ptr @.str5226) store ptr %t20, ptr %retval br label %ret ifend8: %t21 = load ptr, ptr %t0 - %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str5224) + %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str5227) %t23 = icmp ne i32 %t22, 0 br i1 %t23, label %then9, label %ifend11 then9: @@ -55123,32 +55176,32 @@ then9: %t30 = load ptr, ptr %t29 %t31 = call ptr @fn_emit_expr(ptr %t30) store ptr %t31, ptr %t32 - %t33 = call ptr @fn_emit_bind(ptr @.str5225) + %t33 = call ptr @fn_emit_bind(ptr @.str5228) store ptr %t33, ptr %t34 %t35 = load ptr, ptr %t34 - %t36 = call ptr @lp_str_concat(ptr @.str5226, ptr %t35) - %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str5227) + %t36 = call ptr @lp_str_concat(ptr @.str5229, ptr %t35) + %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str5230) %t38 = call ptr @fn_emit_bind(ptr %t37) store ptr %t38, ptr %t39 %t40 = load ptr, ptr %t39 - %t41 = call ptr @lp_str_concat(ptr @.str5228, ptr %t40) - %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str5229) + %t41 = call ptr @lp_str_concat(ptr @.str5231, ptr %t40) + %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str5232) %t43 = load ptr, ptr %t32 %t44 = getelementptr inbounds %Cmp_Val, ptr %t43, i32 0, i32 0 %t45 = load ptr, ptr %t44 %t46 = call ptr @lp_str_concat(ptr %t42, ptr %t45) %t47 = call ptr @fn_emit_bind(ptr %t46) - %t48 = call ptr @fn_val(ptr %t47, ptr @.str5230) + %t48 = call ptr @fn_val(ptr %t47, ptr @.str5233) store ptr %t48, ptr %retval br label %ret ifend11: - %t49 = call ptr @fn_emit_bind(ptr @.str5231) + %t49 = call ptr @fn_emit_bind(ptr @.str5234) store ptr %t49, ptr %t50 %t51 = load ptr, ptr %t50 - %t52 = call ptr @lp_str_concat(ptr @.str5232, ptr %t51) - %t53 = call ptr @lp_str_concat(ptr %t52, ptr @.str5233) + %t52 = call ptr @lp_str_concat(ptr @.str5235, ptr %t51) + %t53 = call ptr @lp_str_concat(ptr %t52, ptr @.str5236) %t54 = call ptr @fn_emit_bind(ptr %t53) - %t55 = call ptr @fn_val(ptr %t54, ptr @.str5234) + %t55 = call ptr @fn_val(ptr %t54, ptr @.str5237) store ptr %t55, ptr %retval br label %ret ret: @@ -55168,14 +55221,14 @@ entry: %t30 = alloca i32 store ptr %arg_meth, ptr %t0 %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str5235) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str5238) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t3 br i1 %t6, label %scend1, label %sc0 sc0: %t8 = load ptr, ptr %t0 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str5236) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str5239) %t10 = icmp ne i32 %t9, 0 %t11 = zext i1 %t10 to i32 store i32 %t11, ptr %t3 @@ -55188,7 +55241,7 @@ scend1: br i1 %t13, label %scend3, label %sc2 sc2: %t15 = load ptr, ptr %t0 - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str5237) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str5240) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t2 @@ -55201,7 +55254,7 @@ scend3: br i1 %t20, label %scend5, label %sc4 sc4: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str5238) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str5241) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t1 @@ -55215,14 +55268,14 @@ then6: br label %ret ifend8: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str5239) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str5242) %t33 = icmp ne i32 %t32, 0 %t34 = zext i1 %t33 to i32 store i32 %t34, ptr %t30 br i1 %t33, label %scend10, label %sc9 sc9: %t35 = load ptr, ptr %t0 - %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str5240) + %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str5243) %t37 = icmp ne i32 %t36, 0 %t38 = zext i1 %t37 to i32 store i32 %t38, ptr %t30 @@ -55235,7 +55288,7 @@ scend10: br i1 %t40, label %scend12, label %sc11 sc11: %t42 = load ptr, ptr %t0 - %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str5241) + %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str5244) %t44 = icmp ne i32 %t43, 0 %t45 = zext i1 %t44 to i32 store i32 %t45, ptr %t29 @@ -55248,7 +55301,7 @@ scend12: br i1 %t47, label %scend14, label %sc13 sc13: %t49 = load ptr, ptr %t0 - %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str5242) + %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str5245) %t51 = icmp ne i32 %t50, 0 %t52 = zext i1 %t51 to i32 store i32 %t52, ptr %t28 @@ -55286,111 +55339,111 @@ entry: %t9 = call ptr @fn_emit_expr(ptr %t8) store ptr %t9, ptr %t10 %t11 = load ptr, ptr %t0 - %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str5243) + %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str5246) %t13 = icmp ne i32 %t12, 0 br i1 %t13, label %then0, label %ifend2 then0: %t14 = load ptr, ptr %t10 %t15 = getelementptr inbounds %Cmp_Val, ptr %t14, i32 0, i32 0 %t16 = load ptr, ptr %t15 - %t17 = call ptr @fn_val(ptr %t16, ptr @.str5244) + %t17 = call ptr @fn_val(ptr %t16, ptr @.str5247) store ptr %t17, ptr %retval br label %ret ifend2: %t18 = load ptr, ptr %t0 - %t19 = call i32 @lp_str_eq(ptr %t18, ptr @.str5245) + %t19 = call i32 @lp_str_eq(ptr %t18, ptr @.str5248) %t20 = icmp ne i32 %t19, 0 br i1 %t20, label %then3, label %ifend5 then3: %t21 = load ptr, ptr %t10 %t22 = getelementptr inbounds %Cmp_Val, ptr %t21, i32 0, i32 0 %t23 = load ptr, ptr %t22 - %t24 = call ptr @lp_str_concat(ptr @.str5246, ptr %t23) - %t25 = call ptr @lp_str_concat(ptr %t24, ptr @.str5247) + %t24 = call ptr @lp_str_concat(ptr @.str5249, ptr %t23) + %t25 = call ptr @lp_str_concat(ptr %t24, ptr @.str5250) %t26 = call ptr @fn_emit_bind(ptr %t25) - %t27 = call ptr @fn_val(ptr %t26, ptr @.str5248) + %t27 = call ptr @fn_val(ptr %t26, ptr @.str5251) store ptr %t27, ptr %retval br label %ret ifend5: %t28 = load ptr, ptr %t0 - %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str5249) + %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str5252) %t30 = icmp ne i32 %t29, 0 br i1 %t30, label %then6, label %ifend8 then6: %t31 = load ptr, ptr %t10 %t32 = getelementptr inbounds %Cmp_Val, ptr %t31, i32 0, i32 0 %t33 = load ptr, ptr %t32 - %t34 = call ptr @lp_str_concat(ptr @.str5250, ptr %t33) - %t35 = call ptr @lp_str_concat(ptr %t34, ptr @.str5251) + %t34 = call ptr @lp_str_concat(ptr @.str5253, ptr %t33) + %t35 = call ptr @lp_str_concat(ptr %t34, ptr @.str5254) %t36 = call ptr @fn_emit_bind(ptr %t35) - %t37 = call ptr @fn_val(ptr %t36, ptr @.str5252) + %t37 = call ptr @fn_val(ptr %t36, ptr @.str5255) store ptr %t37, ptr %retval br label %ret ifend8: %t38 = load ptr, ptr %t0 - %t39 = call i32 @lp_str_eq(ptr %t38, ptr @.str5253) + %t39 = call i32 @lp_str_eq(ptr %t38, ptr @.str5256) %t40 = icmp ne i32 %t39, 0 br i1 %t40, label %then9, label %ifend11 then9: %t41 = load ptr, ptr %t10 %t42 = getelementptr inbounds %Cmp_Val, ptr %t41, i32 0, i32 0 %t43 = load ptr, ptr %t42 - %t44 = call ptr @lp_str_concat(ptr @.str5254, ptr %t43) - %t45 = call ptr @lp_str_concat(ptr %t44, ptr @.str5255) + %t44 = call ptr @lp_str_concat(ptr @.str5257, ptr %t43) + %t45 = call ptr @lp_str_concat(ptr %t44, ptr @.str5258) %t46 = call ptr @fn_emit_bind(ptr %t45) - %t47 = call ptr @fn_val(ptr %t46, ptr @.str5256) + %t47 = call ptr @fn_val(ptr %t46, ptr @.str5259) store ptr %t47, ptr %retval br label %ret ifend11: %t48 = load ptr, ptr %t0 - %t49 = call i32 @lp_str_eq(ptr %t48, ptr @.str5257) + %t49 = call i32 @lp_str_eq(ptr %t48, ptr @.str5260) %t50 = icmp ne i32 %t49, 0 br i1 %t50, label %then12, label %ifend14 then12: %t51 = load ptr, ptr %t10 %t52 = getelementptr inbounds %Cmp_Val, ptr %t51, i32 0, i32 0 %t53 = load ptr, ptr %t52 - %t54 = call ptr @fn_val(ptr %t53, ptr @.str5258) + %t54 = call ptr @fn_val(ptr %t53, ptr @.str5261) store ptr %t54, ptr %retval br label %ret ifend14: %t55 = load ptr, ptr %t0 - %t56 = call i32 @lp_str_eq(ptr %t55, ptr @.str5259) + %t56 = call i32 @lp_str_eq(ptr %t55, ptr @.str5262) %t57 = icmp ne i32 %t56, 0 br i1 %t57, label %then15, label %ifend17 then15: %t58 = load ptr, ptr %t10 %t59 = getelementptr inbounds %Cmp_Val, ptr %t58, i32 0, i32 0 %t60 = load ptr, ptr %t59 - %t61 = call ptr @lp_str_concat(ptr @.str5260, ptr %t60) - %t62 = call ptr @lp_str_concat(ptr %t61, ptr @.str5261) + %t61 = call ptr @lp_str_concat(ptr @.str5263, ptr %t60) + %t62 = call ptr @lp_str_concat(ptr %t61, ptr @.str5264) %t63 = call ptr @fn_emit_bind(ptr %t62) - %t64 = call ptr @fn_val(ptr %t63, ptr @.str5262) + %t64 = call ptr @fn_val(ptr %t63, ptr @.str5265) store ptr %t64, ptr %retval br label %ret ifend17: %t65 = load ptr, ptr %t0 - %t66 = call i32 @lp_str_eq(ptr %t65, ptr @.str5263) + %t66 = call i32 @lp_str_eq(ptr %t65, ptr @.str5266) %t67 = icmp ne i32 %t66, 0 br i1 %t67, label %then18, label %ifend20 then18: %t68 = load ptr, ptr %t10 %t69 = getelementptr inbounds %Cmp_Val, ptr %t68, i32 0, i32 0 %t70 = load ptr, ptr %t69 - %t71 = call ptr @lp_str_concat(ptr @.str5264, ptr %t70) - %t72 = call ptr @lp_str_concat(ptr %t71, ptr @.str5265) + %t71 = call ptr @lp_str_concat(ptr @.str5267, ptr %t70) + %t72 = call ptr @lp_str_concat(ptr %t71, ptr @.str5268) %t73 = call ptr @fn_emit_bind(ptr %t72) - %t74 = call ptr @fn_val(ptr %t73, ptr @.str5266) + %t74 = call ptr @fn_val(ptr %t73, ptr @.str5269) store ptr %t74, ptr %retval br label %ret ifend20: %t75 = load ptr, ptr %t10 %t76 = getelementptr inbounds %Cmp_Val, ptr %t75, i32 0, i32 0 %t77 = load ptr, ptr %t76 - %t78 = call ptr @lp_str_concat(ptr @.str5267, ptr %t77) - %t79 = call ptr @lp_str_concat(ptr %t78, ptr @.str5268) + %t78 = call ptr @lp_str_concat(ptr @.str5270, ptr %t77) + %t79 = call ptr @lp_str_concat(ptr %t78, ptr @.str5271) %t80 = call ptr @fn_emit_bind(ptr %t79) - %t81 = call ptr @fn_val(ptr %t80, ptr @.str5269) + %t81 = call ptr @fn_val(ptr %t80, ptr @.str5272) store ptr %t81, ptr %retval br label %ret ret: @@ -55410,24 +55463,24 @@ entry: store ptr %arg_ed, ptr %t0 store i32 %arg_which, ptr %t1 store i32 1, ptr @g_g_uses_datert - %t2 = call ptr @fn_emit_alloca(ptr @.str5270) + %t2 = call ptr @fn_emit_alloca(ptr @.str5273) store ptr %t2, ptr %t3 - %t4 = call ptr @fn_emit_alloca(ptr @.str5271) + %t4 = call ptr @fn_emit_alloca(ptr @.str5274) store ptr %t4, ptr %t5 - %t6 = call ptr @fn_emit_alloca(ptr @.str5272) + %t6 = call ptr @fn_emit_alloca(ptr @.str5275) store ptr %t6, ptr %t7 %t8 = load ptr, ptr %t0 - %t9 = call ptr @lp_str_concat(ptr @.str5273, ptr %t8) - %t10 = call ptr @lp_str_concat(ptr %t9, ptr @.str5274) + %t9 = call ptr @lp_str_concat(ptr @.str5276, ptr %t8) + %t10 = call ptr @lp_str_concat(ptr %t9, ptr @.str5277) %t11 = load ptr, ptr %t3 %t12 = call ptr @lp_str_concat(ptr %t10, ptr %t11) - %t13 = call ptr @lp_str_concat(ptr %t12, ptr @.str5275) + %t13 = call ptr @lp_str_concat(ptr %t12, ptr @.str5278) %t14 = load ptr, ptr %t5 %t15 = call ptr @lp_str_concat(ptr %t13, ptr %t14) - %t16 = call ptr @lp_str_concat(ptr %t15, ptr @.str5276) + %t16 = call ptr @lp_str_concat(ptr %t15, ptr @.str5279) %t17 = load ptr, ptr %t7 %t18 = call ptr @lp_str_concat(ptr %t16, ptr %t17) - %t19 = call ptr @lp_str_concat(ptr %t18, ptr @.str5277) + %t19 = call ptr @lp_str_concat(ptr %t18, ptr @.str5280) call void @fn_emit(ptr %t19) %t20 = load ptr, ptr %t3 store ptr %t20, ptr %t21 @@ -55452,7 +55505,7 @@ then3: br label %ifend5 ifend5: %t32 = load ptr, ptr %t21 - %t33 = call ptr @lp_str_concat(ptr @.str5278, ptr %t32) + %t33 = call ptr @lp_str_concat(ptr @.str5281, ptr %t32) %t34 = call ptr @fn_emit_bind(ptr %t33) store ptr %t34, ptr %retval br label %ret @@ -55474,14 +55527,14 @@ entry: %t48 = alloca i32 store ptr %arg_meth, ptr %t0 %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str5279) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str5282) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t3 br i1 %t6, label %scend1, label %sc0 sc0: %t8 = load ptr, ptr %t0 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str5280) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str5283) %t10 = icmp ne i32 %t9, 0 %t11 = zext i1 %t10 to i32 store i32 %t11, ptr %t3 @@ -55494,7 +55547,7 @@ scend1: br i1 %t13, label %scend3, label %sc2 sc2: %t15 = load ptr, ptr %t0 - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str5281) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str5284) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t2 @@ -55507,7 +55560,7 @@ scend3: br i1 %t20, label %scend5, label %sc4 sc4: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str5282) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str5285) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t1 @@ -55521,14 +55574,14 @@ then6: br label %ret ifend8: %t30 = load ptr, ptr %t0 - %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str5283) + %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str5286) %t32 = icmp ne i32 %t31, 0 %t33 = zext i1 %t32 to i32 store i32 %t33, ptr %t29 br i1 %t32, label %scend10, label %sc9 sc9: %t34 = load ptr, ptr %t0 - %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str5284) + %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str5287) %t36 = icmp ne i32 %t35, 0 %t37 = zext i1 %t36 to i32 store i32 %t37, ptr %t29 @@ -55541,7 +55594,7 @@ scend10: br i1 %t39, label %scend12, label %sc11 sc11: %t41 = load ptr, ptr %t0 - %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str5285) + %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str5288) %t43 = icmp ne i32 %t42, 0 %t44 = zext i1 %t43 to i32 store i32 %t44, ptr %t28 @@ -55555,14 +55608,14 @@ then13: br label %ret ifend15: %t49 = load ptr, ptr %t0 - %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str5286) + %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str5289) %t51 = icmp ne i32 %t50, 0 %t52 = zext i1 %t51 to i32 store i32 %t52, ptr %t48 br i1 %t51, label %scend17, label %sc16 sc16: %t53 = load ptr, ptr %t0 - %t54 = call i32 @lp_str_eq(ptr %t53, ptr @.str5287) + %t54 = call i32 @lp_str_eq(ptr %t53, ptr @.str5290) %t55 = icmp ne i32 %t54, 0 %t56 = zext i1 %t55 to i32 store i32 %t56, ptr %t48 @@ -55575,7 +55628,7 @@ scend17: br i1 %t58, label %scend19, label %sc18 sc18: %t60 = load ptr, ptr %t0 - %t61 = call i32 @lp_str_eq(ptr %t60, ptr @.str5288) + %t61 = call i32 @lp_str_eq(ptr %t60, ptr @.str5291) %t62 = icmp ne i32 %t61, 0 %t63 = zext i1 %t62 to i32 store i32 %t63, ptr %t47 @@ -55636,7 +55689,7 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5289) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5292) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -55671,25 +55724,25 @@ then0: %t32 = load ptr, ptr %t13 %t33 = getelementptr inbounds %Cmp_Val, ptr %t32, i32 0, i32 0 %t34 = load ptr, ptr %t33 - %t35 = call ptr @lp_str_concat(ptr @.str5290, ptr %t34) - %t36 = call ptr @lp_str_concat(ptr %t35, ptr @.str5291) + %t35 = call ptr @lp_str_concat(ptr @.str5293, ptr %t34) + %t36 = call ptr @lp_str_concat(ptr %t35, ptr @.str5294) %t37 = load ptr, ptr %t22 %t38 = getelementptr inbounds %Cmp_Val, ptr %t37, i32 0, i32 0 %t39 = load ptr, ptr %t38 %t40 = call ptr @lp_str_concat(ptr %t36, ptr %t39) - %t41 = call ptr @lp_str_concat(ptr %t40, ptr @.str5292) + %t41 = call ptr @lp_str_concat(ptr %t40, ptr @.str5295) %t42 = load ptr, ptr %t31 %t43 = getelementptr inbounds %Cmp_Val, ptr %t42, i32 0, i32 0 %t44 = load ptr, ptr %t43 %t45 = call ptr @lp_str_concat(ptr %t41, ptr %t44) - %t46 = call ptr @lp_str_concat(ptr %t45, ptr @.str5293) + %t46 = call ptr @lp_str_concat(ptr %t45, ptr @.str5296) %t47 = call ptr @fn_emit_bind(ptr %t46) - %t48 = call ptr @fn_val(ptr %t47, ptr @.str5294) + %t48 = call ptr @fn_val(ptr %t47, ptr @.str5297) store ptr %t48, ptr %retval br label %ret ifend2: %t49 = load ptr, ptr %t0 - %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str5295) + %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str5298) %t51 = icmp ne i32 %t50, 0 br i1 %t51, label %then3, label %ifend5 then3: @@ -55706,12 +55759,12 @@ then3: %t62 = getelementptr inbounds %Cmp_Val, ptr %t61, i32 0, i32 0 %t63 = load ptr, ptr %t62 %t64 = call ptr @fn_date_component(ptr %t63, i32 0) - %t65 = call ptr @fn_val(ptr %t64, ptr @.str5296) + %t65 = call ptr @fn_val(ptr %t64, ptr @.str5299) store ptr %t65, ptr %retval br label %ret ifend5: %t66 = load ptr, ptr %t0 - %t67 = call i32 @lp_str_eq(ptr %t66, ptr @.str5297) + %t67 = call i32 @lp_str_eq(ptr %t66, ptr @.str5300) %t68 = icmp ne i32 %t67, 0 br i1 %t68, label %then6, label %ifend8 then6: @@ -55728,12 +55781,12 @@ then6: %t79 = getelementptr inbounds %Cmp_Val, ptr %t78, i32 0, i32 0 %t80 = load ptr, ptr %t79 %t81 = call ptr @fn_date_component(ptr %t80, i32 1) - %t82 = call ptr @fn_val(ptr %t81, ptr @.str5298) + %t82 = call ptr @fn_val(ptr %t81, ptr @.str5301) store ptr %t82, ptr %retval br label %ret ifend8: %t83 = load ptr, ptr %t0 - %t84 = call i32 @lp_str_eq(ptr %t83, ptr @.str5299) + %t84 = call i32 @lp_str_eq(ptr %t83, ptr @.str5302) %t85 = icmp ne i32 %t84, 0 br i1 %t85, label %then9, label %ifend11 then9: @@ -55750,12 +55803,12 @@ then9: %t96 = getelementptr inbounds %Cmp_Val, ptr %t95, i32 0, i32 0 %t97 = load ptr, ptr %t96 %t98 = call ptr @fn_date_component(ptr %t97, i32 2) - %t99 = call ptr @fn_val(ptr %t98, ptr @.str5300) + %t99 = call ptr @fn_val(ptr %t98, ptr @.str5303) store ptr %t99, ptr %retval br label %ret ifend11: %t100 = load ptr, ptr %t0 - %t101 = call i32 @lp_str_eq(ptr %t100, ptr @.str5301) + %t101 = call i32 @lp_str_eq(ptr %t100, ptr @.str5304) %t102 = icmp ne i32 %t101, 0 br i1 %t102, label %then12, label %ifend14 then12: @@ -55771,30 +55824,30 @@ then12: %t112 = load ptr, ptr %t111 %t113 = getelementptr inbounds %Cmp_Val, ptr %t112, i32 0, i32 0 %t114 = load ptr, ptr %t113 - %t115 = call ptr @lp_str_concat(ptr @.str5302, ptr %t114) - %t116 = call ptr @lp_str_concat(ptr %t115, ptr @.str5303) + %t115 = call ptr @lp_str_concat(ptr @.str5305, ptr %t114) + %t116 = call ptr @lp_str_concat(ptr %t115, ptr @.str5306) %t117 = call ptr @fn_emit_bind(ptr %t116) store ptr %t117, ptr %t118 %t119 = load ptr, ptr %t118 - %t120 = call ptr @lp_str_concat(ptr @.str5304, ptr %t119) - %t121 = call ptr @lp_str_concat(ptr %t120, ptr @.str5305) + %t120 = call ptr @lp_str_concat(ptr @.str5307, ptr %t119) + %t121 = call ptr @lp_str_concat(ptr %t120, ptr @.str5308) %t122 = call ptr @fn_emit_bind(ptr %t121) store ptr %t122, ptr %t123 %t124 = load ptr, ptr %t123 - %t125 = call ptr @lp_str_concat(ptr @.str5306, ptr %t124) - %t126 = call ptr @lp_str_concat(ptr %t125, ptr @.str5307) + %t125 = call ptr @lp_str_concat(ptr @.str5309, ptr %t124) + %t126 = call ptr @lp_str_concat(ptr %t125, ptr @.str5310) %t127 = call ptr @fn_emit_bind(ptr %t126) store ptr %t127, ptr %t128 %t129 = load ptr, ptr %t128 - %t130 = call ptr @lp_str_concat(ptr @.str5308, ptr %t129) - %t131 = call ptr @lp_str_concat(ptr %t130, ptr @.str5309) + %t130 = call ptr @lp_str_concat(ptr @.str5311, ptr %t129) + %t131 = call ptr @lp_str_concat(ptr %t130, ptr @.str5312) %t132 = call ptr @fn_emit_bind(ptr %t131) - %t133 = call ptr @fn_val(ptr %t132, ptr @.str5310) + %t133 = call ptr @fn_val(ptr %t132, ptr @.str5313) store ptr %t133, ptr %retval br label %ret ifend14: %t134 = load ptr, ptr %t0 - %t135 = call i32 @lp_str_eq(ptr %t134, ptr @.str5311) + %t135 = call i32 @lp_str_eq(ptr %t134, ptr @.str5314) %t136 = icmp ne i32 %t135, 0 br i1 %t136, label %then15, label %ifend17 then15: @@ -55810,63 +55863,63 @@ then15: %t146 = load ptr, ptr %t145 %t147 = getelementptr inbounds %Cmp_Val, ptr %t146, i32 0, i32 0 %t148 = load ptr, ptr %t147 - %t149 = call ptr @lp_str_concat(ptr @.str5312, ptr %t148) - %t150 = call ptr @lp_str_concat(ptr %t149, ptr @.str5313) + %t149 = call ptr @lp_str_concat(ptr @.str5315, ptr %t148) + %t150 = call ptr @lp_str_concat(ptr %t149, ptr @.str5316) %t151 = call ptr @fn_emit_bind(ptr %t150) store ptr %t151, ptr %t152 %t153 = load ptr, ptr %t152 - %t154 = call ptr @lp_str_concat(ptr @.str5314, ptr %t153) - %t155 = call ptr @lp_str_concat(ptr %t154, ptr @.str5315) + %t154 = call ptr @lp_str_concat(ptr @.str5317, ptr %t153) + %t155 = call ptr @lp_str_concat(ptr %t154, ptr @.str5318) %t156 = call ptr @fn_emit_bind(ptr %t155) store ptr %t156, ptr %t157 %t158 = load ptr, ptr %t145 %t159 = getelementptr inbounds %Cmp_Val, ptr %t158, i32 0, i32 0 %t160 = load ptr, ptr %t159 - %t161 = call ptr @lp_str_concat(ptr @.str5316, ptr %t160) - %t162 = call ptr @lp_str_concat(ptr %t161, ptr @.str5317) + %t161 = call ptr @lp_str_concat(ptr @.str5319, ptr %t160) + %t162 = call ptr @lp_str_concat(ptr %t161, ptr @.str5320) %t163 = call ptr @fn_emit_bind(ptr %t162) store ptr %t163, ptr %t164 %t165 = load ptr, ptr %t164 - %t166 = call ptr @lp_str_concat(ptr @.str5318, ptr %t165) - %t167 = call ptr @lp_str_concat(ptr %t166, ptr @.str5319) + %t166 = call ptr @lp_str_concat(ptr @.str5321, ptr %t165) + %t167 = call ptr @lp_str_concat(ptr %t166, ptr @.str5322) %t168 = call ptr @fn_emit_bind(ptr %t167) store ptr %t168, ptr %t169 %t170 = load ptr, ptr %t145 %t171 = getelementptr inbounds %Cmp_Val, ptr %t170, i32 0, i32 0 %t172 = load ptr, ptr %t171 - %t173 = call ptr @lp_str_concat(ptr @.str5320, ptr %t172) - %t174 = call ptr @lp_str_concat(ptr %t173, ptr @.str5321) + %t173 = call ptr @lp_str_concat(ptr @.str5323, ptr %t172) + %t174 = call ptr @lp_str_concat(ptr %t173, ptr @.str5324) %t175 = call ptr @fn_emit_bind(ptr %t174) store ptr %t175, ptr %t176 %t177 = load ptr, ptr %t176 - %t178 = call ptr @lp_str_concat(ptr @.str5322, ptr %t177) - %t179 = call ptr @lp_str_concat(ptr %t178, ptr @.str5323) + %t178 = call ptr @lp_str_concat(ptr @.str5325, ptr %t177) + %t179 = call ptr @lp_str_concat(ptr %t178, ptr @.str5326) %t180 = call ptr @fn_emit_bind(ptr %t179) store ptr %t180, ptr %t181 %t182 = load ptr, ptr %t157 - %t183 = call ptr @lp_str_concat(ptr @.str5324, ptr %t182) - %t184 = call ptr @lp_str_concat(ptr %t183, ptr @.str5325) + %t183 = call ptr @lp_str_concat(ptr @.str5327, ptr %t182) + %t184 = call ptr @lp_str_concat(ptr %t183, ptr @.str5328) %t185 = load ptr, ptr %t169 %t186 = call ptr @lp_str_concat(ptr %t184, ptr %t185) %t187 = call ptr @fn_emit_bind(ptr %t186) store ptr %t187, ptr %t188 %t189 = load ptr, ptr %t188 - %t190 = call ptr @lp_str_concat(ptr @.str5326, ptr %t189) - %t191 = call ptr @lp_str_concat(ptr %t190, ptr @.str5327) + %t190 = call ptr @lp_str_concat(ptr @.str5329, ptr %t189) + %t191 = call ptr @lp_str_concat(ptr %t190, ptr @.str5330) %t192 = load ptr, ptr %t181 %t193 = call ptr @lp_str_concat(ptr %t191, ptr %t192) %t194 = call ptr @fn_emit_bind(ptr %t193) store ptr %t194, ptr %t195 %t196 = load ptr, ptr %t195 - %t197 = call ptr @lp_str_concat(ptr @.str5328, ptr %t196) - %t198 = call ptr @lp_str_concat(ptr %t197, ptr @.str5329) + %t197 = call ptr @lp_str_concat(ptr @.str5331, ptr %t196) + %t198 = call ptr @lp_str_concat(ptr %t197, ptr @.str5332) %t199 = call ptr @fn_emit_bind(ptr %t198) - %t200 = call ptr @fn_val(ptr %t199, ptr @.str5330) + %t200 = call ptr @fn_val(ptr %t199, ptr @.str5333) store ptr %t200, ptr %retval br label %ret ifend17: %t201 = load ptr, ptr %t0 - %t202 = call i32 @lp_str_eq(ptr %t201, ptr @.str5331) + %t202 = call i32 @lp_str_eq(ptr %t201, ptr @.str5334) %t203 = icmp ne i32 %t202, 0 br i1 %t203, label %then18, label %ifend20 then18: @@ -55892,35 +55945,35 @@ then18: %t222 = load ptr, ptr %t212 %t223 = getelementptr inbounds %Cmp_Val, ptr %t222, i32 0, i32 0 %t224 = load ptr, ptr %t223 - %t225 = call ptr @lp_str_concat(ptr @.str5332, ptr %t224) - %t226 = call ptr @lp_str_concat(ptr %t225, ptr @.str5333) + %t225 = call ptr @lp_str_concat(ptr @.str5335, ptr %t224) + %t226 = call ptr @lp_str_concat(ptr %t225, ptr @.str5336) %t227 = load ptr, ptr %t221 %t228 = getelementptr inbounds %Cmp_Val, ptr %t227, i32 0, i32 0 %t229 = load ptr, ptr %t228 %t230 = call ptr @lp_str_concat(ptr %t226, ptr %t229) - %t231 = call ptr @lp_str_concat(ptr %t230, ptr @.str5334) + %t231 = call ptr @lp_str_concat(ptr %t230, ptr @.str5337) %t232 = call ptr @fn_emit_bind(ptr %t231) store ptr %t232, ptr %t233 %t234 = load ptr, ptr %t221 %t235 = getelementptr inbounds %Cmp_Val, ptr %t234, i32 0, i32 0 %t236 = load ptr, ptr %t235 - %t237 = call ptr @lp_str_concat(ptr @.str5335, ptr %t236) - %t238 = call ptr @lp_str_concat(ptr %t237, ptr @.str5336) + %t237 = call ptr @lp_str_concat(ptr @.str5338, ptr %t236) + %t238 = call ptr @lp_str_concat(ptr %t237, ptr @.str5339) %t239 = call ptr @fn_emit_bind(ptr %t238) store ptr %t239, ptr %t240 %t241 = load ptr, ptr %t212 %t242 = getelementptr inbounds %Cmp_Val, ptr %t241, i32 0, i32 0 %t243 = load ptr, ptr %t242 - %t244 = call ptr @lp_str_concat(ptr @.str5337, ptr %t243) - %t245 = call ptr @lp_str_concat(ptr %t244, ptr @.str5338) + %t244 = call ptr @lp_str_concat(ptr @.str5340, ptr %t243) + %t245 = call ptr @lp_str_concat(ptr %t244, ptr @.str5341) %t246 = call ptr @fn_emit_bind(ptr %t245) store ptr %t246, ptr %t247 %t248 = load ptr, ptr %t240 - %t249 = call ptr @lp_str_concat(ptr @.str5339, ptr %t248) - %t250 = call ptr @lp_str_concat(ptr %t249, ptr @.str5340) + %t249 = call ptr @lp_str_concat(ptr @.str5342, ptr %t248) + %t250 = call ptr @lp_str_concat(ptr %t249, ptr @.str5343) %t251 = load ptr, ptr %t247 %t252 = call ptr @lp_str_concat(ptr %t250, ptr %t251) - %t253 = call ptr @lp_str_concat(ptr %t252, ptr @.str5341) + %t253 = call ptr @lp_str_concat(ptr %t252, ptr @.str5344) %t254 = load ptr, ptr %t212 %t255 = getelementptr inbounds %Cmp_Val, ptr %t254, i32 0, i32 0 %t256 = load ptr, ptr %t255 @@ -55930,37 +55983,37 @@ then18: %t260 = load ptr, ptr %t221 %t261 = getelementptr inbounds %Cmp_Val, ptr %t260, i32 0, i32 0 %t262 = load ptr, ptr %t261 - %t263 = call ptr @lp_str_concat(ptr @.str5342, ptr %t262) - %t264 = call ptr @lp_str_concat(ptr %t263, ptr @.str5343) + %t263 = call ptr @lp_str_concat(ptr @.str5345, ptr %t262) + %t264 = call ptr @lp_str_concat(ptr %t263, ptr @.str5346) %t265 = call ptr @fn_emit_bind(ptr %t264) store ptr %t265, ptr %t266 %t267 = load ptr, ptr %t240 - %t268 = call ptr @lp_str_concat(ptr @.str5344, ptr %t267) - %t269 = call ptr @lp_str_concat(ptr %t268, ptr @.str5345) + %t268 = call ptr @lp_str_concat(ptr @.str5347, ptr %t267) + %t269 = call ptr @lp_str_concat(ptr %t268, ptr @.str5348) %t270 = load ptr, ptr %t266 %t271 = call ptr @lp_str_concat(ptr %t269, ptr %t270) %t272 = call ptr @fn_emit_bind(ptr %t271) store ptr %t272, ptr %t273 %t274 = load ptr, ptr %t259 - %t275 = call ptr @lp_str_concat(ptr @.str5346, ptr %t274) - %t276 = call ptr @lp_str_concat(ptr %t275, ptr @.str5347) + %t275 = call ptr @lp_str_concat(ptr @.str5349, ptr %t274) + %t276 = call ptr @lp_str_concat(ptr %t275, ptr @.str5350) %t277 = load ptr, ptr %t273 %t278 = call ptr @lp_str_concat(ptr %t276, ptr %t277) - %t279 = call ptr @lp_str_concat(ptr %t278, ptr @.str5348) + %t279 = call ptr @lp_str_concat(ptr %t278, ptr @.str5351) %t280 = call ptr @fn_emit_bind(ptr %t279) store ptr %t280, ptr %t281 %t282 = load ptr, ptr %t281 - %t283 = call ptr @lp_str_concat(ptr @.str5349, ptr %t282) - %t284 = call ptr @lp_str_concat(ptr %t283, ptr @.str5350) + %t283 = call ptr @lp_str_concat(ptr @.str5352, ptr %t282) + %t284 = call ptr @lp_str_concat(ptr %t283, ptr @.str5353) %t285 = load ptr, ptr %t233 %t286 = call ptr @lp_str_concat(ptr %t284, ptr %t285) %t287 = call ptr @fn_emit_bind(ptr %t286) - %t288 = call ptr @fn_val(ptr %t287, ptr @.str5351) + %t288 = call ptr @fn_val(ptr %t287, ptr @.str5354) store ptr %t288, ptr %retval br label %ret ifend20: %t289 = load ptr, ptr %t0 - %t290 = call i32 @lp_str_eq(ptr %t289, ptr @.str5352) + %t290 = call i32 @lp_str_eq(ptr %t289, ptr @.str5355) %t291 = icmp ne i32 %t290, 0 br i1 %t291, label %then21, label %ifend23 then21: @@ -55976,15 +56029,15 @@ then21: %t301 = load ptr, ptr %t300 %t302 = getelementptr inbounds %Cmp_Val, ptr %t301, i32 0, i32 0 %t303 = load ptr, ptr %t302 - %t304 = call ptr @lp_str_concat(ptr @.str5353, ptr %t303) - %t305 = call ptr @lp_str_concat(ptr %t304, ptr @.str5354) + %t304 = call ptr @lp_str_concat(ptr @.str5356, ptr %t303) + %t305 = call ptr @lp_str_concat(ptr %t304, ptr @.str5357) %t306 = call ptr @fn_emit_bind(ptr %t305) - %t307 = call ptr @fn_val(ptr %t306, ptr @.str5355) + %t307 = call ptr @fn_val(ptr %t306, ptr @.str5358) store ptr %t307, ptr %retval br label %ret ifend23: %t308 = load ptr, ptr %t0 - %t309 = call i32 @lp_str_eq(ptr %t308, ptr @.str5356) + %t309 = call i32 @lp_str_eq(ptr %t308, ptr @.str5359) %t310 = icmp ne i32 %t309, 0 br i1 %t310, label %then24, label %ifend26 then24: @@ -56009,14 +56062,14 @@ then24: %t329 = load ptr, ptr %t319 %t330 = getelementptr inbounds %Cmp_Val, ptr %t329, i32 0, i32 0 %t331 = load ptr, ptr %t330 - %t332 = call ptr @lp_str_concat(ptr @.str5357, ptr %t331) - %t333 = call ptr @lp_str_concat(ptr %t332, ptr @.str5358) + %t332 = call ptr @lp_str_concat(ptr @.str5360, ptr %t331) + %t333 = call ptr @lp_str_concat(ptr %t332, ptr @.str5361) %t334 = load ptr, ptr %t328 %t335 = getelementptr inbounds %Cmp_Val, ptr %t334, i32 0, i32 0 %t336 = load ptr, ptr %t335 %t337 = call ptr @lp_str_concat(ptr %t333, ptr %t336) %t338 = call ptr @fn_emit_bind(ptr %t337) - %t339 = call ptr @fn_val(ptr %t338, ptr @.str5359) + %t339 = call ptr @fn_val(ptr %t338, ptr @.str5362) store ptr %t339, ptr %retval br label %ret ifend26: @@ -56041,14 +56094,14 @@ ifend26: %t358 = load ptr, ptr %t348 %t359 = getelementptr inbounds %Cmp_Val, ptr %t358, i32 0, i32 0 %t360 = load ptr, ptr %t359 - %t361 = call ptr @lp_str_concat(ptr @.str5360, ptr %t360) - %t362 = call ptr @lp_str_concat(ptr %t361, ptr @.str5361) + %t361 = call ptr @lp_str_concat(ptr @.str5363, ptr %t360) + %t362 = call ptr @lp_str_concat(ptr %t361, ptr @.str5364) %t363 = load ptr, ptr %t357 %t364 = getelementptr inbounds %Cmp_Val, ptr %t363, i32 0, i32 0 %t365 = load ptr, ptr %t364 %t366 = call ptr @lp_str_concat(ptr %t362, ptr %t365) %t367 = call ptr @fn_emit_bind(ptr %t366) - %t368 = call ptr @fn_val(ptr %t367, ptr @.str5362) + %t368 = call ptr @fn_val(ptr %t367, ptr @.str5365) store ptr %t368, ptr %retval br label %ret ret: @@ -56064,18 +56117,18 @@ entry: %t10 = alloca ptr store ptr %arg_t, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call ptr @lp_str_concat(ptr @.str5363, ptr %t1) - %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str5364) + %t2 = call ptr @lp_str_concat(ptr @.str5366, ptr %t1) + %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str5367) %t4 = call ptr @fn_emit_bind(ptr %t3) store ptr %t4, ptr %t5 %t6 = load ptr, ptr %t5 - %t7 = call ptr @lp_str_concat(ptr @.str5365, ptr %t6) - %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str5366) + %t7 = call ptr @lp_str_concat(ptr @.str5368, ptr %t6) + %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str5369) %t9 = call ptr @fn_emit_bind(ptr %t8) store ptr %t9, ptr %t10 %t11 = load ptr, ptr %t10 - %t12 = call ptr @lp_str_concat(ptr @.str5367, ptr %t11) - %t13 = call ptr @lp_str_concat(ptr %t12, ptr @.str5368) + %t12 = call ptr @lp_str_concat(ptr @.str5370, ptr %t11) + %t13 = call ptr @lp_str_concat(ptr %t12, ptr @.str5371) %t14 = call ptr @fn_emit_bind(ptr %t13) store ptr %t14, ptr %retval br label %ret @@ -56095,15 +56148,15 @@ entry: %t2 = call ptr @fn_dt_secofday(ptr %t1) store ptr %t2, ptr %t3 %t4 = load ptr, ptr %t0 - %t5 = call ptr @lp_str_concat(ptr @.str5369, ptr %t4) - %t6 = call ptr @lp_str_concat(ptr %t5, ptr @.str5370) + %t5 = call ptr @lp_str_concat(ptr @.str5372, ptr %t4) + %t6 = call ptr @lp_str_concat(ptr %t5, ptr @.str5373) %t7 = load ptr, ptr %t3 %t8 = call ptr @lp_str_concat(ptr %t6, ptr %t7) %t9 = call ptr @fn_emit_bind(ptr %t8) store ptr %t9, ptr %t10 %t11 = load ptr, ptr %t10 - %t12 = call ptr @lp_str_concat(ptr @.str5371, ptr %t11) - %t13 = call ptr @lp_str_concat(ptr %t12, ptr @.str5372) + %t12 = call ptr @lp_str_concat(ptr @.str5374, ptr %t11) + %t13 = call ptr @lp_str_concat(ptr %t12, ptr @.str5375) %t14 = call ptr @fn_emit_bind(ptr %t13) store ptr %t14, ptr %retval br label %ret @@ -56126,14 +56179,14 @@ entry: %t66 = alloca i32 store ptr %arg_meth, ptr %t0 %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str5373) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str5376) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str5374) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str5377) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -56146,7 +56199,7 @@ scend1: br i1 %t12, label %scend3, label %sc2 sc2: %t14 = load ptr, ptr %t0 - %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str5375) + %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str5378) %t16 = icmp ne i32 %t15, 0 %t17 = zext i1 %t16 to i32 store i32 %t17, ptr %t1 @@ -56160,14 +56213,14 @@ then4: br label %ret ifend6: %t23 = load ptr, ptr %t0 - %t24 = call i32 @lp_str_eq(ptr %t23, ptr @.str5376) + %t24 = call i32 @lp_str_eq(ptr %t23, ptr @.str5379) %t25 = icmp ne i32 %t24, 0 %t26 = zext i1 %t25 to i32 store i32 %t26, ptr %t22 br i1 %t25, label %scend8, label %sc7 sc7: %t27 = load ptr, ptr %t0 - %t28 = call i32 @lp_str_eq(ptr %t27, ptr @.str5377) + %t28 = call i32 @lp_str_eq(ptr %t27, ptr @.str5380) %t29 = icmp ne i32 %t28, 0 %t30 = zext i1 %t29 to i32 store i32 %t30, ptr %t22 @@ -56180,7 +56233,7 @@ scend8: br i1 %t32, label %scend10, label %sc9 sc9: %t34 = load ptr, ptr %t0 - %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str5378) + %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str5381) %t36 = icmp ne i32 %t35, 0 %t37 = zext i1 %t36 to i32 store i32 %t37, ptr %t21 @@ -56193,7 +56246,7 @@ scend10: br i1 %t39, label %scend12, label %sc11 sc11: %t41 = load ptr, ptr %t0 - %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str5379) + %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str5382) %t43 = icmp ne i32 %t42, 0 %t44 = zext i1 %t43 to i32 store i32 %t44, ptr %t20 @@ -56207,14 +56260,14 @@ then13: br label %ret ifend15: %t49 = load ptr, ptr %t0 - %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str5380) + %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str5383) %t51 = icmp ne i32 %t50, 0 %t52 = zext i1 %t51 to i32 store i32 %t52, ptr %t48 br i1 %t51, label %scend17, label %sc16 sc16: %t53 = load ptr, ptr %t0 - %t54 = call i32 @lp_str_eq(ptr %t53, ptr @.str5381) + %t54 = call i32 @lp_str_eq(ptr %t53, ptr @.str5384) %t55 = icmp ne i32 %t54, 0 %t56 = zext i1 %t55 to i32 store i32 %t56, ptr %t48 @@ -56227,7 +56280,7 @@ scend17: br i1 %t58, label %scend19, label %sc18 sc18: %t60 = load ptr, ptr %t0 - %t61 = call i32 @lp_str_eq(ptr %t60, ptr @.str5382) + %t61 = call i32 @lp_str_eq(ptr %t60, ptr @.str5385) %t62 = icmp ne i32 %t61, 0 %t63 = zext i1 %t62 to i32 store i32 %t63, ptr %t47 @@ -56241,14 +56294,14 @@ then20: br label %ret ifend22: %t67 = load ptr, ptr %t0 - %t68 = call i32 @lp_str_eq(ptr %t67, ptr @.str5383) + %t68 = call i32 @lp_str_eq(ptr %t67, ptr @.str5386) %t69 = icmp ne i32 %t68, 0 %t70 = zext i1 %t69 to i32 store i32 %t70, ptr %t66 br i1 %t69, label %scend24, label %sc23 sc23: %t71 = load ptr, ptr %t0 - %t72 = call i32 @lp_str_eq(ptr %t71, ptr @.str5384) + %t72 = call i32 @lp_str_eq(ptr %t71, ptr @.str5387) %t73 = icmp ne i32 %t72, 0 %t74 = zext i1 %t73 to i32 store i32 %t74, ptr %t66 @@ -56276,11 +56329,11 @@ entry: store ptr %arg_a, ptr %t0 store ptr %arg_b, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call ptr @lp_str_concat(ptr @.str5385, ptr %t2) - %t4 = call ptr @lp_str_concat(ptr %t3, ptr @.str5386) + %t3 = call ptr @lp_str_concat(ptr @.str5388, ptr %t2) + %t4 = call ptr @lp_str_concat(ptr %t3, ptr @.str5389) %t5 = load ptr, ptr %t1 %t6 = call ptr @lp_str_concat(ptr %t4, ptr %t5) - %t7 = call ptr @lp_str_concat(ptr %t6, ptr @.str5387) + %t7 = call ptr @lp_str_concat(ptr %t6, ptr @.str5390) %t8 = call ptr @fn_emit_bind(ptr %t7) store ptr %t8, ptr %retval br label %ret @@ -56403,7 +56456,7 @@ entry: %t12 = icmp ne i32 %t11, 0 br i1 %t12, label %then0, label %ifend2 then0: - call void @fn_perr(ptr @.str5388) + call void @fn_perr(ptr @.str5391) br label %ifend2 ifend2: %t13 = load ptr, ptr %t0 @@ -56434,35 +56487,35 @@ ifend2: %t38 = load ptr, ptr %t37 %t39 = call ptr @fn_dt_epochday(ptr %t38) store ptr %t39, ptr %t40 - %t41 = call ptr @fn_emit_alloca(ptr @.str5389) + %t41 = call ptr @fn_emit_alloca(ptr @.str5392) store ptr %t41, ptr %t42 - %t43 = call ptr @fn_emit_alloca(ptr @.str5390) + %t43 = call ptr @fn_emit_alloca(ptr @.str5393) store ptr %t43, ptr %t44 - %t45 = call ptr @fn_emit_alloca(ptr @.str5391) + %t45 = call ptr @fn_emit_alloca(ptr @.str5394) store ptr %t45, ptr %t46 %t47 = load ptr, ptr %t40 - %t48 = call ptr @lp_str_concat(ptr @.str5392, ptr %t47) - %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str5393) + %t48 = call ptr @lp_str_concat(ptr @.str5395, ptr %t47) + %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str5396) %t50 = load ptr, ptr %t42 %t51 = call ptr @lp_str_concat(ptr %t49, ptr %t50) - %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str5394) + %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str5397) %t53 = load ptr, ptr %t44 %t54 = call ptr @lp_str_concat(ptr %t52, ptr %t53) - %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str5395) + %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str5398) %t56 = load ptr, ptr %t46 %t57 = call ptr @lp_str_concat(ptr %t55, ptr %t56) - %t58 = call ptr @lp_str_concat(ptr %t57, ptr @.str5396) + %t58 = call ptr @lp_str_concat(ptr %t57, ptr @.str5399) call void @fn_emit(ptr %t58) %t59 = load ptr, ptr %t42 - %t60 = call ptr @lp_str_concat(ptr @.str5397, ptr %t59) + %t60 = call ptr @lp_str_concat(ptr @.str5400, ptr %t59) %t61 = call ptr @fn_emit_bind(ptr %t60) store ptr %t61, ptr %t62 %t63 = load ptr, ptr %t44 - %t64 = call ptr @lp_str_concat(ptr @.str5398, ptr %t63) + %t64 = call ptr @lp_str_concat(ptr @.str5401, ptr %t63) %t65 = call ptr @fn_emit_bind(ptr %t64) store ptr %t65, ptr %t66 %t67 = load ptr, ptr %t46 - %t68 = call ptr @lp_str_concat(ptr @.str5399, ptr %t67) + %t68 = call ptr @lp_str_concat(ptr @.str5402, ptr %t67) %t69 = call ptr @fn_emit_bind(ptr %t68) store ptr %t69, ptr %t70 %t71 = load ptr, ptr %t21 @@ -56471,31 +56524,31 @@ ifend2: %t74 = call ptr @fn_dt_secofday(ptr %t73) store ptr %t74, ptr %t75 %t76 = load ptr, ptr %t75 - %t77 = call ptr @lp_str_concat(ptr @.str5400, ptr %t76) - %t78 = call ptr @lp_str_concat(ptr %t77, ptr @.str5401) + %t77 = call ptr @lp_str_concat(ptr @.str5403, ptr %t76) + %t78 = call ptr @lp_str_concat(ptr %t77, ptr @.str5404) %t79 = call ptr @fn_emit_bind(ptr %t78) store ptr %t79, ptr %t80 %t81 = load ptr, ptr %t75 - %t82 = call ptr @lp_str_concat(ptr @.str5402, ptr %t81) - %t83 = call ptr @lp_str_concat(ptr %t82, ptr @.str5403) + %t82 = call ptr @lp_str_concat(ptr @.str5405, ptr %t81) + %t83 = call ptr @lp_str_concat(ptr %t82, ptr @.str5406) %t84 = call ptr @fn_emit_bind(ptr %t83) store ptr %t84, ptr %t85 %t86 = load ptr, ptr %t85 - %t87 = call ptr @lp_str_concat(ptr @.str5404, ptr %t86) - %t88 = call ptr @lp_str_concat(ptr %t87, ptr @.str5405) + %t87 = call ptr @lp_str_concat(ptr @.str5407, ptr %t86) + %t88 = call ptr @lp_str_concat(ptr %t87, ptr @.str5408) %t89 = call ptr @fn_emit_bind(ptr %t88) store ptr %t89, ptr %t90 %t91 = load ptr, ptr %t75 - %t92 = call ptr @lp_str_concat(ptr @.str5406, ptr %t91) - %t93 = call ptr @lp_str_concat(ptr %t92, ptr @.str5407) + %t92 = call ptr @lp_str_concat(ptr @.str5409, ptr %t91) + %t93 = call ptr @lp_str_concat(ptr %t92, ptr @.str5410) %t94 = call ptr @fn_emit_bind(ptr %t93) store ptr %t94, ptr %t95 %t96 = load ptr, ptr %t62 - %t97 = call ptr @lp_str_concat(ptr @.str5408, ptr %t96) - %t98 = call ptr @lp_str_concat(ptr %t97, ptr @.str5409) + %t97 = call ptr @lp_str_concat(ptr @.str5411, ptr %t96) + %t98 = call ptr @lp_str_concat(ptr %t97, ptr @.str5412) %t99 = call ptr @fn_emit_bind(ptr %t98) store ptr %t99, ptr %t100 - %t101 = call ptr @fn_emit_str_const(ptr @.str5410) + %t101 = call ptr @fn_emit_str_const(ptr @.str5413) store ptr %t101, ptr %t102 %t103 = call ptr @fn_buf_new() store ptr %t103, ptr %t104 @@ -56515,7 +56568,7 @@ wbody4: %t114 = load ptr, ptr %t31 %t115 = load i32, ptr %t35 %t116 = load i32, ptr %t105 - %t117 = call i32 @fn_dt_tok_at(ptr %t114, i32 %t115, i32 %t116, ptr @.str5411, i32 4) + %t117 = call i32 @fn_dt_tok_at(ptr %t114, i32 %t115, i32 %t116, ptr @.str5414, i32 4) %t118 = icmp ne i32 %t117, 0 br i1 %t118, label %then6, label %else7 then6: @@ -56528,7 +56581,7 @@ else7: %t120 = load ptr, ptr %t31 %t121 = load i32, ptr %t35 %t122 = load i32, ptr %t105 - %t123 = call i32 @fn_dt_tok_at(ptr %t120, i32 %t121, i32 %t122, ptr @.str5412, i32 2) + %t123 = call i32 @fn_dt_tok_at(ptr %t120, i32 %t121, i32 %t122, ptr @.str5415, i32 2) %t124 = icmp ne i32 %t123, 0 br i1 %t124, label %then9, label %else10 then9: @@ -56541,7 +56594,7 @@ else10: %t126 = load ptr, ptr %t31 %t127 = load i32, ptr %t35 %t128 = load i32, ptr %t105 - %t129 = call i32 @fn_dt_tok_at(ptr %t126, i32 %t127, i32 %t128, ptr @.str5413, i32 2) + %t129 = call i32 @fn_dt_tok_at(ptr %t126, i32 %t127, i32 %t128, ptr @.str5416, i32 2) %t130 = icmp ne i32 %t129, 0 br i1 %t130, label %then12, label %else13 then12: @@ -56554,7 +56607,7 @@ else13: %t132 = load ptr, ptr %t31 %t133 = load i32, ptr %t35 %t134 = load i32, ptr %t105 - %t135 = call i32 @fn_dt_tok_at(ptr %t132, i32 %t133, i32 %t134, ptr @.str5414, i32 2) + %t135 = call i32 @fn_dt_tok_at(ptr %t132, i32 %t133, i32 %t134, ptr @.str5417, i32 2) %t136 = icmp ne i32 %t135, 0 br i1 %t136, label %then15, label %else16 then15: @@ -56567,7 +56620,7 @@ else16: %t138 = load ptr, ptr %t31 %t139 = load i32, ptr %t35 %t140 = load i32, ptr %t105 - %t141 = call i32 @fn_dt_tok_at(ptr %t138, i32 %t139, i32 %t140, ptr @.str5415, i32 2) + %t141 = call i32 @fn_dt_tok_at(ptr %t138, i32 %t139, i32 %t140, ptr @.str5418, i32 2) %t142 = icmp ne i32 %t141, 0 br i1 %t142, label %then18, label %else19 then18: @@ -56580,7 +56633,7 @@ else19: %t144 = load ptr, ptr %t31 %t145 = load i32, ptr %t35 %t146 = load i32, ptr %t105 - %t147 = call i32 @fn_dt_tok_at(ptr %t144, i32 %t145, i32 %t146, ptr @.str5416, i32 2) + %t147 = call i32 @fn_dt_tok_at(ptr %t144, i32 %t145, i32 %t146, ptr @.str5419, i32 2) %t148 = icmp ne i32 %t147, 0 br i1 %t148, label %then21, label %else22 then21: @@ -56593,7 +56646,7 @@ else22: %t150 = load ptr, ptr %t31 %t151 = load i32, ptr %t35 %t152 = load i32, ptr %t105 - %t153 = call i32 @fn_dt_tok_at(ptr %t150, i32 %t151, i32 %t152, ptr @.str5417, i32 2) + %t153 = call i32 @fn_dt_tok_at(ptr %t150, i32 %t151, i32 %t152, ptr @.str5420, i32 2) %t154 = icmp ne i32 %t153, 0 br i1 %t154, label %then24, label %ifend26 then24: @@ -56652,12 +56705,12 @@ then30: br label %ifend32 ifend32: %t181 = load ptr, ptr %t111 - %t182 = call ptr @lp_str_concat(ptr @.str5418, ptr %t181) - %t183 = call ptr @lp_str_concat(ptr %t182, ptr @.str5419) + %t182 = call ptr @lp_str_concat(ptr @.str5421, ptr %t181) + %t183 = call ptr @lp_str_concat(ptr %t182, ptr @.str5422) %t184 = load i32, ptr %t112 %t185 = call ptr @lp_int_str(i32 %t184) %t186 = call ptr @lp_str_concat(ptr %t183, ptr %t185) - %t187 = call ptr @lp_str_concat(ptr %t186, ptr @.str5420) + %t187 = call ptr @lp_str_concat(ptr %t186, ptr @.str5423) %t188 = call ptr @fn_emit_bind(ptr %t187) store ptr %t188, ptr %t189 %t190 = load ptr, ptr %t102 @@ -56694,7 +56747,7 @@ then33: br label %ifend35 ifend35: %t211 = load ptr, ptr %t102 - %t212 = call ptr @fn_val(ptr %t211, ptr @.str5421) + %t212 = call ptr @fn_val(ptr %t211, ptr @.str5424) store ptr %t212, ptr %retval br label %ret ret: @@ -56753,7 +56806,7 @@ entry: %t12 = icmp ne i32 %t11, 0 br i1 %t12, label %then0, label %ifend2 then0: - call void @fn_perr(ptr @.str5422) + call void @fn_perr(ptr @.str5425) br label %ifend2 ifend2: %t13 = load ptr, ptr %t0 @@ -56779,34 +56832,34 @@ ifend2: %t33 = call i64 @strlen(ptr %t32) %t34 = trunc i64 %t33 to i32 store i32 %t34, ptr %t35 - %t36 = call ptr @fn_emit_alloca(ptr @.str5423) + %t36 = call ptr @fn_emit_alloca(ptr @.str5426) store ptr %t36, ptr %t37 %t38 = load ptr, ptr %t37 - call void @fn_store_at(ptr @.str5424, ptr @.str5425, ptr %t38) - %t39 = call ptr @fn_emit_alloca(ptr @.str5426) + call void @fn_store_at(ptr @.str5427, ptr @.str5428, ptr %t38) + %t39 = call ptr @fn_emit_alloca(ptr @.str5429) store ptr %t39, ptr %t40 %t41 = load ptr, ptr %t40 - call void @fn_store_at(ptr @.str5427, ptr @.str5428, ptr %t41) - %t42 = call ptr @fn_emit_alloca(ptr @.str5429) + call void @fn_store_at(ptr @.str5430, ptr @.str5431, ptr %t41) + %t42 = call ptr @fn_emit_alloca(ptr @.str5432) store ptr %t42, ptr %t43 %t44 = load ptr, ptr %t43 - call void @fn_store_at(ptr @.str5430, ptr @.str5431, ptr %t44) - %t45 = call ptr @fn_emit_alloca(ptr @.str5432) + call void @fn_store_at(ptr @.str5433, ptr @.str5434, ptr %t44) + %t45 = call ptr @fn_emit_alloca(ptr @.str5435) store ptr %t45, ptr %t46 %t47 = load ptr, ptr %t46 - call void @fn_store_at(ptr @.str5433, ptr @.str5434, ptr %t47) - %t48 = call ptr @fn_emit_alloca(ptr @.str5435) + call void @fn_store_at(ptr @.str5436, ptr @.str5437, ptr %t47) + %t48 = call ptr @fn_emit_alloca(ptr @.str5438) store ptr %t48, ptr %t49 %t50 = load ptr, ptr %t49 - call void @fn_store_at(ptr @.str5436, ptr @.str5437, ptr %t50) - %t51 = call ptr @fn_emit_alloca(ptr @.str5438) + call void @fn_store_at(ptr @.str5439, ptr @.str5440, ptr %t50) + %t51 = call ptr @fn_emit_alloca(ptr @.str5441) store ptr %t51, ptr %t52 %t53 = load ptr, ptr %t52 - call void @fn_store_at(ptr @.str5439, ptr @.str5440, ptr %t53) - %t54 = call ptr @fn_emit_alloca(ptr @.str5441) + call void @fn_store_at(ptr @.str5442, ptr @.str5443, ptr %t53) + %t54 = call ptr @fn_emit_alloca(ptr @.str5444) store ptr %t54, ptr %t55 %t56 = load ptr, ptr %t55 - call void @fn_store_at(ptr @.str5442, ptr @.str5443, ptr %t56) + call void @fn_store_at(ptr @.str5445, ptr @.str5446, ptr %t56) store i32 0, ptr %t57 store i32 0, ptr %t58 br label %wcond3 @@ -56824,7 +56877,7 @@ wbody4: %t67 = load ptr, ptr %t31 %t68 = load i32, ptr %t35 %t69 = load i32, ptr %t58 - %t70 = call i32 @fn_dt_tok_at(ptr %t67, i32 %t68, i32 %t69, ptr @.str5444, i32 4) + %t70 = call i32 @fn_dt_tok_at(ptr %t67, i32 %t68, i32 %t69, ptr @.str5447, i32 4) %t71 = icmp ne i32 %t70, 0 br i1 %t71, label %then6, label %else7 then6: @@ -56837,7 +56890,7 @@ else7: %t73 = load ptr, ptr %t31 %t74 = load i32, ptr %t35 %t75 = load i32, ptr %t58 - %t76 = call i32 @fn_dt_tok_at(ptr %t73, i32 %t74, i32 %t75, ptr @.str5445, i32 2) + %t76 = call i32 @fn_dt_tok_at(ptr %t73, i32 %t74, i32 %t75, ptr @.str5448, i32 2) %t77 = icmp ne i32 %t76, 0 br i1 %t77, label %then9, label %else10 then9: @@ -56850,7 +56903,7 @@ else10: %t79 = load ptr, ptr %t31 %t80 = load i32, ptr %t35 %t81 = load i32, ptr %t58 - %t82 = call i32 @fn_dt_tok_at(ptr %t79, i32 %t80, i32 %t81, ptr @.str5446, i32 2) + %t82 = call i32 @fn_dt_tok_at(ptr %t79, i32 %t80, i32 %t81, ptr @.str5449, i32 2) %t83 = icmp ne i32 %t82, 0 br i1 %t83, label %then12, label %else13 then12: @@ -56863,7 +56916,7 @@ else13: %t85 = load ptr, ptr %t31 %t86 = load i32, ptr %t35 %t87 = load i32, ptr %t58 - %t88 = call i32 @fn_dt_tok_at(ptr %t85, i32 %t86, i32 %t87, ptr @.str5447, i32 2) + %t88 = call i32 @fn_dt_tok_at(ptr %t85, i32 %t86, i32 %t87, ptr @.str5450, i32 2) %t89 = icmp ne i32 %t88, 0 br i1 %t89, label %then15, label %else16 then15: @@ -56876,7 +56929,7 @@ else16: %t91 = load ptr, ptr %t31 %t92 = load i32, ptr %t35 %t93 = load i32, ptr %t58 - %t94 = call i32 @fn_dt_tok_at(ptr %t91, i32 %t92, i32 %t93, ptr @.str5448, i32 2) + %t94 = call i32 @fn_dt_tok_at(ptr %t91, i32 %t92, i32 %t93, ptr @.str5451, i32 2) %t95 = icmp ne i32 %t94, 0 br i1 %t95, label %then18, label %else19 then18: @@ -56889,7 +56942,7 @@ else19: %t97 = load ptr, ptr %t31 %t98 = load i32, ptr %t35 %t99 = load i32, ptr %t58 - %t100 = call i32 @fn_dt_tok_at(ptr %t97, i32 %t98, i32 %t99, ptr @.str5449, i32 2) + %t100 = call i32 @fn_dt_tok_at(ptr %t97, i32 %t98, i32 %t99, ptr @.str5452, i32 2) %t101 = icmp ne i32 %t100, 0 br i1 %t101, label %then21, label %ifend23 then21: @@ -56926,24 +56979,24 @@ else25: %t111 = load ptr, ptr %t21 %t112 = getelementptr inbounds %Cmp_Val, ptr %t111, i32 0, i32 0 %t113 = load ptr, ptr %t112 - %t114 = call ptr @lp_str_concat(ptr @.str5450, ptr %t113) - %t115 = call ptr @lp_str_concat(ptr %t114, ptr @.str5451) + %t114 = call ptr @lp_str_concat(ptr @.str5453, ptr %t113) + %t115 = call ptr @lp_str_concat(ptr %t114, ptr @.str5454) %t116 = load i32, ptr %t57 %t117 = call ptr @fn_itoa(i32 %t116) %t118 = call ptr @lp_str_concat(ptr %t115, ptr %t117) - %t119 = call ptr @lp_str_concat(ptr %t118, ptr @.str5452) + %t119 = call ptr @lp_str_concat(ptr %t118, ptr @.str5455) %t120 = load i32, ptr %t65 %t121 = call ptr @lp_int_str(i32 %t120) %t122 = call ptr @lp_str_concat(ptr %t119, ptr %t121) - %t123 = call ptr @lp_str_concat(ptr %t122, ptr @.str5453) + %t123 = call ptr @lp_str_concat(ptr %t122, ptr @.str5456) %t124 = load ptr, ptr %t37 %t125 = call ptr @lp_str_concat(ptr %t123, ptr %t124) - %t126 = call ptr @lp_str_concat(ptr %t125, ptr @.str5454) + %t126 = call ptr @lp_str_concat(ptr %t125, ptr @.str5457) %t127 = call ptr @fn_emit_bind(ptr %t126) store ptr %t127, ptr %t128 %t129 = load ptr, ptr %t128 %t130 = load ptr, ptr %t64 - call void @fn_store_at(ptr @.str5455, ptr %t129, ptr %t130) + call void @fn_store_at(ptr @.str5458, ptr %t129, ptr %t130) %t131 = load i32, ptr %t65 %t132 = load i32, ptr %t57 %t133 = add i32 %t132, %t131 @@ -56957,92 +57010,92 @@ ifend26: br label %wcond3 wend5: %t137 = load ptr, ptr %t40 - %t138 = call ptr @lp_str_concat(ptr @.str5456, ptr %t137) + %t138 = call ptr @lp_str_concat(ptr @.str5459, ptr %t137) %t139 = call ptr @fn_emit_bind(ptr %t138) store ptr %t139, ptr %t140 %t141 = load ptr, ptr %t43 - %t142 = call ptr @lp_str_concat(ptr @.str5457, ptr %t141) + %t142 = call ptr @lp_str_concat(ptr @.str5460, ptr %t141) %t143 = call ptr @fn_emit_bind(ptr %t142) store ptr %t143, ptr %t144 %t145 = load ptr, ptr %t46 - %t146 = call ptr @lp_str_concat(ptr @.str5458, ptr %t145) + %t146 = call ptr @lp_str_concat(ptr @.str5461, ptr %t145) %t147 = call ptr @fn_emit_bind(ptr %t146) store ptr %t147, ptr %t148 %t149 = load ptr, ptr %t49 - %t150 = call ptr @lp_str_concat(ptr @.str5459, ptr %t149) + %t150 = call ptr @lp_str_concat(ptr @.str5462, ptr %t149) %t151 = call ptr @fn_emit_bind(ptr %t150) store ptr %t151, ptr %t152 %t153 = load ptr, ptr %t52 - %t154 = call ptr @lp_str_concat(ptr @.str5460, ptr %t153) + %t154 = call ptr @lp_str_concat(ptr @.str5463, ptr %t153) %t155 = call ptr @fn_emit_bind(ptr %t154) store ptr %t155, ptr %t156 %t157 = load ptr, ptr %t55 - %t158 = call ptr @lp_str_concat(ptr @.str5461, ptr %t157) + %t158 = call ptr @lp_str_concat(ptr @.str5464, ptr %t157) %t159 = call ptr @fn_emit_bind(ptr %t158) store ptr %t159, ptr %t160 %t161 = load ptr, ptr %t140 - %t162 = call ptr @lp_str_concat(ptr @.str5462, ptr %t161) - %t163 = call ptr @lp_str_concat(ptr %t162, ptr @.str5463) + %t162 = call ptr @lp_str_concat(ptr @.str5465, ptr %t161) + %t163 = call ptr @lp_str_concat(ptr %t162, ptr @.str5466) %t164 = load ptr, ptr %t144 %t165 = call ptr @lp_str_concat(ptr %t163, ptr %t164) - %t166 = call ptr @lp_str_concat(ptr %t165, ptr @.str5464) + %t166 = call ptr @lp_str_concat(ptr %t165, ptr @.str5467) %t167 = load ptr, ptr %t148 %t168 = call ptr @lp_str_concat(ptr %t166, ptr %t167) - %t169 = call ptr @lp_str_concat(ptr %t168, ptr @.str5465) + %t169 = call ptr @lp_str_concat(ptr %t168, ptr @.str5468) %t170 = call ptr @fn_emit_bind(ptr %t169) store ptr %t170, ptr %t171 %t172 = load ptr, ptr %t171 - %t173 = call ptr @lp_str_concat(ptr @.str5466, ptr %t172) - %t174 = call ptr @lp_str_concat(ptr %t173, ptr @.str5467) + %t173 = call ptr @lp_str_concat(ptr @.str5469, ptr %t172) + %t174 = call ptr @lp_str_concat(ptr %t173, ptr @.str5470) %t175 = call ptr @fn_emit_bind(ptr %t174) store ptr %t175, ptr %t176 %t177 = load ptr, ptr %t152 - %t178 = call ptr @lp_str_concat(ptr @.str5468, ptr %t177) - %t179 = call ptr @lp_str_concat(ptr %t178, ptr @.str5469) + %t178 = call ptr @lp_str_concat(ptr @.str5471, ptr %t177) + %t179 = call ptr @lp_str_concat(ptr %t178, ptr @.str5472) %t180 = call ptr @fn_emit_bind(ptr %t179) store ptr %t180, ptr %t181 %t182 = load ptr, ptr %t156 - %t183 = call ptr @lp_str_concat(ptr @.str5470, ptr %t182) - %t184 = call ptr @lp_str_concat(ptr %t183, ptr @.str5471) + %t183 = call ptr @lp_str_concat(ptr @.str5473, ptr %t182) + %t184 = call ptr @lp_str_concat(ptr %t183, ptr @.str5474) %t185 = call ptr @fn_emit_bind(ptr %t184) store ptr %t185, ptr %t186 %t187 = load ptr, ptr %t176 - %t188 = call ptr @lp_str_concat(ptr @.str5472, ptr %t187) - %t189 = call ptr @lp_str_concat(ptr %t188, ptr @.str5473) + %t188 = call ptr @lp_str_concat(ptr @.str5475, ptr %t187) + %t189 = call ptr @lp_str_concat(ptr %t188, ptr @.str5476) %t190 = load ptr, ptr %t181 %t191 = call ptr @lp_str_concat(ptr %t189, ptr %t190) %t192 = call ptr @fn_emit_bind(ptr %t191) store ptr %t192, ptr %t193 %t194 = load ptr, ptr %t193 - %t195 = call ptr @lp_str_concat(ptr @.str5474, ptr %t194) - %t196 = call ptr @lp_str_concat(ptr %t195, ptr @.str5475) + %t195 = call ptr @lp_str_concat(ptr @.str5477, ptr %t194) + %t196 = call ptr @lp_str_concat(ptr %t195, ptr @.str5478) %t197 = load ptr, ptr %t186 %t198 = call ptr @lp_str_concat(ptr %t196, ptr %t197) %t199 = call ptr @fn_emit_bind(ptr %t198) store ptr %t199, ptr %t200 %t201 = load ptr, ptr %t200 - %t202 = call ptr @lp_str_concat(ptr @.str5476, ptr %t201) - %t203 = call ptr @lp_str_concat(ptr %t202, ptr @.str5477) + %t202 = call ptr @lp_str_concat(ptr @.str5479, ptr %t201) + %t203 = call ptr @lp_str_concat(ptr %t202, ptr @.str5480) %t204 = load ptr, ptr %t160 %t205 = call ptr @lp_str_concat(ptr %t203, ptr %t204) %t206 = call ptr @fn_emit_bind(ptr %t205) store ptr %t206, ptr %t207 %t208 = load ptr, ptr %t37 - %t209 = call ptr @lp_str_concat(ptr @.str5478, ptr %t208) + %t209 = call ptr @lp_str_concat(ptr @.str5481, ptr %t208) %t210 = call ptr @fn_emit_bind(ptr %t209) store ptr %t210, ptr %t211 %t212 = load ptr, ptr %t211 - %t213 = call ptr @lp_str_concat(ptr @.str5479, ptr %t212) - %t214 = call ptr @lp_str_concat(ptr %t213, ptr @.str5480) + %t213 = call ptr @lp_str_concat(ptr @.str5482, ptr %t212) + %t214 = call ptr @lp_str_concat(ptr %t213, ptr @.str5483) %t215 = call ptr @fn_emit_bind(ptr %t214) store ptr %t215, ptr %t216 %t217 = load ptr, ptr %t216 - %t218 = call ptr @lp_str_concat(ptr @.str5481, ptr %t217) - %t219 = call ptr @lp_str_concat(ptr %t218, ptr @.str5482) + %t218 = call ptr @lp_str_concat(ptr @.str5484, ptr %t217) + %t219 = call ptr @lp_str_concat(ptr %t218, ptr @.str5485) %t220 = load ptr, ptr %t207 %t221 = call ptr @lp_str_concat(ptr %t219, ptr %t220) %t222 = call ptr @fn_emit_bind(ptr %t221) - %t223 = call ptr @fn_val(ptr %t222, ptr @.str5483) + %t223 = call ptr @fn_val(ptr %t222, ptr @.str5486) store ptr %t223, ptr %retval br label %ret ret: @@ -57088,7 +57141,7 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5484) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5487) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -57098,7 +57151,7 @@ then0: br label %ret ifend2: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str5485) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str5488) %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then3, label %ifend5 then3: @@ -57108,7 +57161,7 @@ then3: br label %ret ifend5: %t12 = load ptr, ptr %t0 - %t13 = call i32 @lp_str_eq(ptr %t12, ptr @.str5486) + %t13 = call i32 @lp_str_eq(ptr %t12, ptr @.str5489) %t14 = icmp ne i32 %t13, 0 br i1 %t14, label %then6, label %ifend8 then6: @@ -57170,67 +57223,67 @@ then6: %t69 = load ptr, ptr %t23 %t70 = getelementptr inbounds %Cmp_Val, ptr %t69, i32 0, i32 0 %t71 = load ptr, ptr %t70 - %t72 = call ptr @lp_str_concat(ptr @.str5487, ptr %t71) - %t73 = call ptr @lp_str_concat(ptr %t72, ptr @.str5488) + %t72 = call ptr @lp_str_concat(ptr @.str5490, ptr %t71) + %t73 = call ptr @lp_str_concat(ptr %t72, ptr @.str5491) %t74 = load ptr, ptr %t32 %t75 = getelementptr inbounds %Cmp_Val, ptr %t74, i32 0, i32 0 %t76 = load ptr, ptr %t75 %t77 = call ptr @lp_str_concat(ptr %t73, ptr %t76) - %t78 = call ptr @lp_str_concat(ptr %t77, ptr @.str5489) + %t78 = call ptr @lp_str_concat(ptr %t77, ptr @.str5492) %t79 = load ptr, ptr %t41 %t80 = getelementptr inbounds %Cmp_Val, ptr %t79, i32 0, i32 0 %t81 = load ptr, ptr %t80 %t82 = call ptr @lp_str_concat(ptr %t78, ptr %t81) - %t83 = call ptr @lp_str_concat(ptr %t82, ptr @.str5490) + %t83 = call ptr @lp_str_concat(ptr %t82, ptr @.str5493) %t84 = call ptr @fn_emit_bind(ptr %t83) store ptr %t84, ptr %t85 %t86 = load ptr, ptr %t85 - %t87 = call ptr @lp_str_concat(ptr @.str5491, ptr %t86) - %t88 = call ptr @lp_str_concat(ptr %t87, ptr @.str5492) + %t87 = call ptr @lp_str_concat(ptr @.str5494, ptr %t86) + %t88 = call ptr @lp_str_concat(ptr %t87, ptr @.str5495) %t89 = call ptr @fn_emit_bind(ptr %t88) store ptr %t89, ptr %t90 %t91 = load ptr, ptr %t50 %t92 = getelementptr inbounds %Cmp_Val, ptr %t91, i32 0, i32 0 %t93 = load ptr, ptr %t92 - %t94 = call ptr @lp_str_concat(ptr @.str5493, ptr %t93) - %t95 = call ptr @lp_str_concat(ptr %t94, ptr @.str5494) + %t94 = call ptr @lp_str_concat(ptr @.str5496, ptr %t93) + %t95 = call ptr @lp_str_concat(ptr %t94, ptr @.str5497) %t96 = call ptr @fn_emit_bind(ptr %t95) store ptr %t96, ptr %t97 %t98 = load ptr, ptr %t59 %t99 = getelementptr inbounds %Cmp_Val, ptr %t98, i32 0, i32 0 %t100 = load ptr, ptr %t99 - %t101 = call ptr @lp_str_concat(ptr @.str5495, ptr %t100) - %t102 = call ptr @lp_str_concat(ptr %t101, ptr @.str5496) + %t101 = call ptr @lp_str_concat(ptr @.str5498, ptr %t100) + %t102 = call ptr @lp_str_concat(ptr %t101, ptr @.str5499) %t103 = call ptr @fn_emit_bind(ptr %t102) store ptr %t103, ptr %t104 %t105 = load ptr, ptr %t90 - %t106 = call ptr @lp_str_concat(ptr @.str5497, ptr %t105) - %t107 = call ptr @lp_str_concat(ptr %t106, ptr @.str5498) + %t106 = call ptr @lp_str_concat(ptr @.str5500, ptr %t105) + %t107 = call ptr @lp_str_concat(ptr %t106, ptr @.str5501) %t108 = load ptr, ptr %t97 %t109 = call ptr @lp_str_concat(ptr %t107, ptr %t108) %t110 = call ptr @fn_emit_bind(ptr %t109) store ptr %t110, ptr %t111 %t112 = load ptr, ptr %t111 - %t113 = call ptr @lp_str_concat(ptr @.str5499, ptr %t112) - %t114 = call ptr @lp_str_concat(ptr %t113, ptr @.str5500) + %t113 = call ptr @lp_str_concat(ptr @.str5502, ptr %t112) + %t114 = call ptr @lp_str_concat(ptr %t113, ptr @.str5503) %t115 = load ptr, ptr %t104 %t116 = call ptr @lp_str_concat(ptr %t114, ptr %t115) %t117 = call ptr @fn_emit_bind(ptr %t116) store ptr %t117, ptr %t118 %t119 = load ptr, ptr %t118 - %t120 = call ptr @lp_str_concat(ptr @.str5501, ptr %t119) - %t121 = call ptr @lp_str_concat(ptr %t120, ptr @.str5502) + %t120 = call ptr @lp_str_concat(ptr @.str5504, ptr %t119) + %t121 = call ptr @lp_str_concat(ptr %t120, ptr @.str5505) %t122 = load ptr, ptr %t68 %t123 = getelementptr inbounds %Cmp_Val, ptr %t122, i32 0, i32 0 %t124 = load ptr, ptr %t123 %t125 = call ptr @lp_str_concat(ptr %t121, ptr %t124) %t126 = call ptr @fn_emit_bind(ptr %t125) - %t127 = call ptr @fn_val(ptr %t126, ptr @.str5503) + %t127 = call ptr @fn_val(ptr %t126, ptr @.str5506) store ptr %t127, ptr %retval br label %ret ifend8: %t128 = load ptr, ptr %t0 - %t129 = call i32 @lp_str_eq(ptr %t128, ptr @.str5504) + %t129 = call i32 @lp_str_eq(ptr %t128, ptr @.str5507) %t130 = icmp ne i32 %t129, 0 br i1 %t130, label %then9, label %ifend11 then9: @@ -57247,12 +57300,12 @@ then9: %t141 = getelementptr inbounds %Cmp_Val, ptr %t140, i32 0, i32 0 %t142 = load ptr, ptr %t141 %t143 = call ptr @fn_dt_epochday(ptr %t142) - %t144 = call ptr @fn_val(ptr %t143, ptr @.str5505) + %t144 = call ptr @fn_val(ptr %t143, ptr @.str5508) store ptr %t144, ptr %retval br label %ret ifend11: %t145 = load ptr, ptr %t0 - %t146 = call i32 @lp_str_eq(ptr %t145, ptr @.str5506) + %t146 = call i32 @lp_str_eq(ptr %t145, ptr @.str5509) %t147 = icmp ne i32 %t146, 0 br i1 %t147, label %then12, label %ifend14 then12: @@ -57277,19 +57330,19 @@ then12: %t166 = load ptr, ptr %t156 %t167 = getelementptr inbounds %Cmp_Val, ptr %t166, i32 0, i32 0 %t168 = load ptr, ptr %t167 - %t169 = call ptr @lp_str_concat(ptr @.str5507, ptr %t168) - %t170 = call ptr @lp_str_concat(ptr %t169, ptr @.str5508) + %t169 = call ptr @lp_str_concat(ptr @.str5510, ptr %t168) + %t170 = call ptr @lp_str_concat(ptr %t169, ptr @.str5511) %t171 = load ptr, ptr %t165 %t172 = getelementptr inbounds %Cmp_Val, ptr %t171, i32 0, i32 0 %t173 = load ptr, ptr %t172 %t174 = call ptr @lp_str_concat(ptr %t170, ptr %t173) %t175 = call ptr @fn_emit_bind(ptr %t174) - %t176 = call ptr @fn_val(ptr %t175, ptr @.str5509) + %t176 = call ptr @fn_val(ptr %t175, ptr @.str5512) store ptr %t176, ptr %retval br label %ret ifend14: %t177 = load ptr, ptr %t0 - %t178 = call i32 @lp_str_eq(ptr %t177, ptr @.str5510) + %t178 = call i32 @lp_str_eq(ptr %t177, ptr @.str5513) %t179 = icmp ne i32 %t178, 0 br i1 %t179, label %then15, label %ifend17 then15: @@ -57307,12 +57360,12 @@ then15: %t191 = load ptr, ptr %t190 %t192 = call ptr @fn_dt_epochday(ptr %t191) %t193 = call ptr @fn_date_component(ptr %t192, i32 0) - %t194 = call ptr @fn_val(ptr %t193, ptr @.str5511) + %t194 = call ptr @fn_val(ptr %t193, ptr @.str5514) store ptr %t194, ptr %retval br label %ret ifend17: %t195 = load ptr, ptr %t0 - %t196 = call i32 @lp_str_eq(ptr %t195, ptr @.str5512) + %t196 = call i32 @lp_str_eq(ptr %t195, ptr @.str5515) %t197 = icmp ne i32 %t196, 0 br i1 %t197, label %then18, label %ifend20 then18: @@ -57330,12 +57383,12 @@ then18: %t209 = load ptr, ptr %t208 %t210 = call ptr @fn_dt_epochday(ptr %t209) %t211 = call ptr @fn_date_component(ptr %t210, i32 1) - %t212 = call ptr @fn_val(ptr %t211, ptr @.str5513) + %t212 = call ptr @fn_val(ptr %t211, ptr @.str5516) store ptr %t212, ptr %retval br label %ret ifend20: %t213 = load ptr, ptr %t0 - %t214 = call i32 @lp_str_eq(ptr %t213, ptr @.str5514) + %t214 = call i32 @lp_str_eq(ptr %t213, ptr @.str5517) %t215 = icmp ne i32 %t214, 0 br i1 %t215, label %then21, label %ifend23 then21: @@ -57353,12 +57406,12 @@ then21: %t227 = load ptr, ptr %t226 %t228 = call ptr @fn_dt_epochday(ptr %t227) %t229 = call ptr @fn_date_component(ptr %t228, i32 2) - %t230 = call ptr @fn_val(ptr %t229, ptr @.str5515) + %t230 = call ptr @fn_val(ptr %t229, ptr @.str5518) store ptr %t230, ptr %retval br label %ret ifend23: %t231 = load ptr, ptr %t0 - %t232 = call i32 @lp_str_eq(ptr %t231, ptr @.str5516) + %t232 = call i32 @lp_str_eq(ptr %t231, ptr @.str5519) %t233 = icmp ne i32 %t232, 0 br i1 %t233, label %then24, label %ifend26 then24: @@ -57377,30 +57430,30 @@ then24: %t246 = call ptr @fn_dt_epochday(ptr %t245) store ptr %t246, ptr %t247 %t248 = load ptr, ptr %t247 - %t249 = call ptr @lp_str_concat(ptr @.str5517, ptr %t248) - %t250 = call ptr @lp_str_concat(ptr %t249, ptr @.str5518) + %t249 = call ptr @lp_str_concat(ptr @.str5520, ptr %t248) + %t250 = call ptr @lp_str_concat(ptr %t249, ptr @.str5521) %t251 = call ptr @fn_emit_bind(ptr %t250) store ptr %t251, ptr %t252 %t253 = load ptr, ptr %t252 - %t254 = call ptr @lp_str_concat(ptr @.str5519, ptr %t253) - %t255 = call ptr @lp_str_concat(ptr %t254, ptr @.str5520) + %t254 = call ptr @lp_str_concat(ptr @.str5522, ptr %t253) + %t255 = call ptr @lp_str_concat(ptr %t254, ptr @.str5523) %t256 = call ptr @fn_emit_bind(ptr %t255) store ptr %t256, ptr %t257 %t258 = load ptr, ptr %t257 - %t259 = call ptr @lp_str_concat(ptr @.str5521, ptr %t258) - %t260 = call ptr @lp_str_concat(ptr %t259, ptr @.str5522) + %t259 = call ptr @lp_str_concat(ptr @.str5524, ptr %t258) + %t260 = call ptr @lp_str_concat(ptr %t259, ptr @.str5525) %t261 = call ptr @fn_emit_bind(ptr %t260) store ptr %t261, ptr %t262 %t263 = load ptr, ptr %t262 - %t264 = call ptr @lp_str_concat(ptr @.str5523, ptr %t263) - %t265 = call ptr @lp_str_concat(ptr %t264, ptr @.str5524) + %t264 = call ptr @lp_str_concat(ptr @.str5526, ptr %t263) + %t265 = call ptr @lp_str_concat(ptr %t264, ptr @.str5527) %t266 = call ptr @fn_emit_bind(ptr %t265) - %t267 = call ptr @fn_val(ptr %t266, ptr @.str5525) + %t267 = call ptr @fn_val(ptr %t266, ptr @.str5528) store ptr %t267, ptr %retval br label %ret ifend26: %t268 = load ptr, ptr %t0 - %t269 = call i32 @lp_str_eq(ptr %t268, ptr @.str5526) + %t269 = call i32 @lp_str_eq(ptr %t268, ptr @.str5529) %t270 = icmp ne i32 %t269, 0 br i1 %t270, label %then27, label %ifend29 then27: @@ -57419,15 +57472,15 @@ then27: %t283 = call ptr @fn_dt_secofday(ptr %t282) store ptr %t283, ptr %t284 %t285 = load ptr, ptr %t284 - %t286 = call ptr @lp_str_concat(ptr @.str5527, ptr %t285) - %t287 = call ptr @lp_str_concat(ptr %t286, ptr @.str5528) + %t286 = call ptr @lp_str_concat(ptr @.str5530, ptr %t285) + %t287 = call ptr @lp_str_concat(ptr %t286, ptr @.str5531) %t288 = call ptr @fn_emit_bind(ptr %t287) - %t289 = call ptr @fn_val(ptr %t288, ptr @.str5529) + %t289 = call ptr @fn_val(ptr %t288, ptr @.str5532) store ptr %t289, ptr %retval br label %ret ifend29: %t290 = load ptr, ptr %t0 - %t291 = call i32 @lp_str_eq(ptr %t290, ptr @.str5530) + %t291 = call i32 @lp_str_eq(ptr %t290, ptr @.str5533) %t292 = icmp ne i32 %t291, 0 br i1 %t292, label %then30, label %ifend32 then30: @@ -57446,15 +57499,15 @@ then30: %t305 = call ptr @fn_dt_secofday(ptr %t304) store ptr %t305, ptr %t306 %t307 = load ptr, ptr %t306 - %t308 = call ptr @lp_str_concat(ptr @.str5531, ptr %t307) - %t309 = call ptr @lp_str_concat(ptr %t308, ptr @.str5532) + %t308 = call ptr @lp_str_concat(ptr @.str5534, ptr %t307) + %t309 = call ptr @lp_str_concat(ptr %t308, ptr @.str5535) %t310 = call ptr @fn_emit_bind(ptr %t309) store ptr %t310, ptr %t311 %t312 = load ptr, ptr %t311 - %t313 = call ptr @lp_str_concat(ptr @.str5533, ptr %t312) - %t314 = call ptr @lp_str_concat(ptr %t313, ptr @.str5534) + %t313 = call ptr @lp_str_concat(ptr @.str5536, ptr %t312) + %t314 = call ptr @lp_str_concat(ptr %t313, ptr @.str5537) %t315 = call ptr @fn_emit_bind(ptr %t314) - %t316 = call ptr @fn_val(ptr %t315, ptr @.str5535) + %t316 = call ptr @fn_val(ptr %t315, ptr @.str5538) store ptr %t316, ptr %retval br label %ret ifend32: @@ -57473,10 +57526,10 @@ ifend32: %t329 = call ptr @fn_dt_secofday(ptr %t328) store ptr %t329, ptr %t330 %t331 = load ptr, ptr %t330 - %t332 = call ptr @lp_str_concat(ptr @.str5536, ptr %t331) - %t333 = call ptr @lp_str_concat(ptr %t332, ptr @.str5537) + %t332 = call ptr @lp_str_concat(ptr @.str5539, ptr %t331) + %t333 = call ptr @lp_str_concat(ptr %t332, ptr @.str5540) %t334 = call ptr @fn_emit_bind(ptr %t333) - %t335 = call ptr @fn_val(ptr %t334, ptr @.str5538) + %t335 = call ptr @fn_val(ptr %t334, ptr @.str5541) store ptr %t335, ptr %retval br label %ret ret: @@ -57486,9 +57539,6 @@ ret: define void @fn_emit_datetime_prelude() { entry: - call void @fn_emith(ptr @.str5539) - call void @fn_emith(ptr @.str5540) - call void @fn_emith(ptr @.str5541) call void @fn_emith(ptr @.str5542) call void @fn_emith(ptr @.str5543) call void @fn_emith(ptr @.str5544) @@ -57584,6 +57634,9 @@ entry: call void @fn_emith(ptr @.str5634) call void @fn_emith(ptr @.str5635) call void @fn_emith(ptr @.str5636) + call void @fn_emith(ptr @.str5637) + call void @fn_emith(ptr @.str5638) + call void @fn_emith(ptr @.str5639) br label %ret ret: ret void @@ -57598,14 +57651,14 @@ entry: %t3 = alloca i32 store ptr %arg_meth, ptr %t0 %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str5637) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str5640) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t3 br i1 %t6, label %scend1, label %sc0 sc0: %t8 = load ptr, ptr %t0 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str5638) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str5641) %t10 = icmp ne i32 %t9, 0 %t11 = zext i1 %t10 to i32 store i32 %t11, ptr %t3 @@ -57618,7 +57671,7 @@ scend1: br i1 %t13, label %scend3, label %sc2 sc2: %t15 = load ptr, ptr %t0 - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str5639) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str5642) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t2 @@ -57631,7 +57684,7 @@ scend3: br i1 %t20, label %scend5, label %sc4 sc4: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str5640) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str5643) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t1 @@ -57663,27 +57716,27 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5641) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5644) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: - %t5 = call ptr @fn_emit_bind(ptr @.str5642) - %t6 = call ptr @fn_val(ptr %t5, ptr @.str5643) + %t5 = call ptr @fn_emit_bind(ptr @.str5645) + %t6 = call ptr @fn_val(ptr %t5, ptr @.str5646) store ptr %t6, ptr %retval br label %ret ifend2: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str5644) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str5647) %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then3, label %ifend5 then3: - call void @fn_emit(ptr @.str5645) - %t10 = call ptr @fn_val(ptr @.str5646, ptr @.str5647) + call void @fn_emit(ptr @.str5648) + %t10 = call ptr @fn_val(ptr @.str5649, ptr @.str5650) store ptr %t10, ptr %retval br label %ret ifend5: %t11 = load ptr, ptr %t0 - %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str5648) + %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str5651) %t13 = icmp ne i32 %t12, 0 br i1 %t13, label %then6, label %ifend8 then6: @@ -57699,10 +57752,10 @@ then6: %t23 = load ptr, ptr %t22 %t24 = getelementptr inbounds %Cmp_Val, ptr %t23, i32 0, i32 0 %t25 = load ptr, ptr %t24 - %t26 = call ptr @lp_str_concat(ptr @.str5649, ptr %t25) - %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str5650) + %t26 = call ptr @lp_str_concat(ptr @.str5652, ptr %t25) + %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str5653) call void @fn_emit(ptr %t27) - %t28 = call ptr @fn_val(ptr @.str5651, ptr @.str5652) + %t28 = call ptr @fn_val(ptr @.str5654, ptr @.str5655) store ptr %t28, ptr %retval br label %ret ifend8: @@ -57715,11 +57768,11 @@ ifend8: %t35 = load ptr, ptr %t34 %t36 = call ptr @fn_emit_expr(ptr %t35) store ptr %t36, ptr %t37 - %t38 = call ptr @fn_emit_bind(ptr @.str5653) + %t38 = call ptr @fn_emit_bind(ptr @.str5656) store ptr %t38, ptr %t39 %t40 = load ptr, ptr %t39 - %t41 = call ptr @lp_str_concat(ptr @.str5654, ptr %t40) - %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str5655) + %t41 = call ptr @lp_str_concat(ptr @.str5657, ptr %t40) + %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str5658) %t43 = load ptr, ptr %t37 %t44 = getelementptr inbounds %Cmp_Val, ptr %t43, i32 0, i32 0 %t45 = load ptr, ptr %t44 @@ -57727,10 +57780,10 @@ ifend8: %t47 = call ptr @fn_emit_bind(ptr %t46) store ptr %t47, ptr %t48 %t49 = load ptr, ptr %t48 - %t50 = call ptr @lp_str_concat(ptr @.str5656, ptr %t49) - %t51 = call ptr @lp_str_concat(ptr %t50, ptr @.str5657) + %t50 = call ptr @lp_str_concat(ptr @.str5659, ptr %t49) + %t51 = call ptr @lp_str_concat(ptr %t50, ptr @.str5660) call void @fn_emit(ptr %t51) - %t52 = call ptr @fn_val(ptr @.str5658, ptr @.str5659) + %t52 = call ptr @fn_val(ptr @.str5661, ptr @.str5662) store ptr %t52, ptr %retval br label %ret ret: @@ -57748,14 +57801,14 @@ entry: %t21 = alloca i32 store ptr %arg_meth, ptr %t0 %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str5660) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str5663) %t5 = icmp ne i32 %t4, 0 %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t2 br i1 %t5, label %scend1, label %sc0 sc0: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str5661) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str5664) %t9 = icmp ne i32 %t8, 0 %t10 = zext i1 %t9 to i32 store i32 %t10, ptr %t2 @@ -57768,7 +57821,7 @@ scend1: br i1 %t12, label %scend3, label %sc2 sc2: %t14 = load ptr, ptr %t0 - %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str5662) + %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str5665) %t16 = icmp ne i32 %t15, 0 %t17 = zext i1 %t16 to i32 store i32 %t17, ptr %t1 @@ -57782,14 +57835,14 @@ then4: br label %ret ifend6: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str5663) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str5666) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t21 br i1 %t24, label %scend8, label %sc7 sc7: %t26 = load ptr, ptr %t0 - %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str5664) + %t27 = call i32 @lp_str_eq(ptr %t26, ptr @.str5667) %t28 = icmp ne i32 %t27, 0 %t29 = zext i1 %t28 to i32 store i32 %t29, ptr %t21 @@ -57802,7 +57855,7 @@ scend8: br i1 %t31, label %scend10, label %sc9 sc9: %t33 = load ptr, ptr %t0 - %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str5665) + %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str5668) %t35 = icmp ne i32 %t34, 0 %t36 = zext i1 %t35 to i32 store i32 %t36, ptr %t20 @@ -57831,15 +57884,15 @@ entry: store ptr %arg_c, ptr %t0 store ptr %arg_shift, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call ptr @lp_str_concat(ptr @.str5666, ptr %t2) - %t4 = call ptr @lp_str_concat(ptr %t3, ptr @.str5667) + %t3 = call ptr @lp_str_concat(ptr @.str5669, ptr %t2) + %t4 = call ptr @lp_str_concat(ptr %t3, ptr @.str5670) %t5 = load ptr, ptr %t1 %t6 = call ptr @lp_str_concat(ptr %t4, ptr %t5) %t7 = call ptr @fn_emit_bind(ptr %t6) store ptr %t7, ptr %t8 %t9 = load ptr, ptr %t8 - %t10 = call ptr @lp_str_concat(ptr @.str5668, ptr %t9) - %t11 = call ptr @lp_str_concat(ptr %t10, ptr @.str5669) + %t10 = call ptr @lp_str_concat(ptr @.str5671, ptr %t9) + %t11 = call ptr @lp_str_concat(ptr %t10, ptr @.str5672) %t12 = call ptr @fn_emit_bind(ptr %t11) store ptr %t12, ptr %retval br label %ret @@ -57861,25 +57914,25 @@ entry: store ptr %arg_g, ptr %t1 store ptr %arg_b, ptr %t2 %t3 = load ptr, ptr %t0 - %t4 = call ptr @lp_str_concat(ptr @.str5670, ptr %t3) - %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str5671) + %t4 = call ptr @lp_str_concat(ptr @.str5673, ptr %t3) + %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str5674) %t6 = call ptr @fn_emit_bind(ptr %t5) store ptr %t6, ptr %t7 %t8 = load ptr, ptr %t1 - %t9 = call ptr @lp_str_concat(ptr @.str5672, ptr %t8) - %t10 = call ptr @lp_str_concat(ptr %t9, ptr @.str5673) + %t9 = call ptr @lp_str_concat(ptr @.str5675, ptr %t8) + %t10 = call ptr @lp_str_concat(ptr %t9, ptr @.str5676) %t11 = call ptr @fn_emit_bind(ptr %t10) store ptr %t11, ptr %t12 %t13 = load ptr, ptr %t7 - %t14 = call ptr @lp_str_concat(ptr @.str5674, ptr %t13) - %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str5675) + %t14 = call ptr @lp_str_concat(ptr @.str5677, ptr %t13) + %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str5678) %t16 = load ptr, ptr %t12 %t17 = call ptr @lp_str_concat(ptr %t15, ptr %t16) %t18 = call ptr @fn_emit_bind(ptr %t17) store ptr %t18, ptr %t19 %t20 = load ptr, ptr %t19 - %t21 = call ptr @lp_str_concat(ptr @.str5676, ptr %t20) - %t22 = call ptr @lp_str_concat(ptr %t21, ptr @.str5677) + %t21 = call ptr @lp_str_concat(ptr @.str5679, ptr %t20) + %t22 = call ptr @lp_str_concat(ptr %t21, ptr @.str5680) %t23 = load ptr, ptr %t2 %t24 = call ptr @lp_str_concat(ptr %t22, ptr %t23) %t25 = call ptr @fn_emit_bind(ptr %t24) @@ -57903,27 +57956,27 @@ entry: store ptr %arg_ch1, ptr %t1 store ptr %arg_t, ptr %t2 %t3 = load ptr, ptr %t1 - %t4 = call ptr @lp_str_concat(ptr @.str5678, ptr %t3) - %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str5679) + %t4 = call ptr @lp_str_concat(ptr @.str5681, ptr %t3) + %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str5682) %t6 = load ptr, ptr %t0 %t7 = call ptr @lp_str_concat(ptr %t5, ptr %t6) %t8 = call ptr @fn_emit_bind(ptr %t7) store ptr %t8, ptr %t9 %t10 = load ptr, ptr %t9 - %t11 = call ptr @lp_str_concat(ptr @.str5680, ptr %t10) - %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str5681) + %t11 = call ptr @lp_str_concat(ptr @.str5683, ptr %t10) + %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str5684) %t13 = load ptr, ptr %t2 %t14 = call ptr @lp_str_concat(ptr %t12, ptr %t13) %t15 = call ptr @fn_emit_bind(ptr %t14) store ptr %t15, ptr %t16 %t17 = load ptr, ptr %t16 - %t18 = call ptr @lp_str_concat(ptr @.str5682, ptr %t17) - %t19 = call ptr @lp_str_concat(ptr %t18, ptr @.str5683) + %t18 = call ptr @lp_str_concat(ptr @.str5685, ptr %t17) + %t19 = call ptr @lp_str_concat(ptr %t18, ptr @.str5686) %t20 = call ptr @fn_emit_bind(ptr %t19) store ptr %t20, ptr %t21 %t22 = load ptr, ptr %t0 - %t23 = call ptr @lp_str_concat(ptr @.str5684, ptr %t22) - %t24 = call ptr @lp_str_concat(ptr %t23, ptr @.str5685) + %t23 = call ptr @lp_str_concat(ptr @.str5687, ptr %t22) + %t24 = call ptr @lp_str_concat(ptr %t23, ptr @.str5688) %t25 = load ptr, ptr %t21 %t26 = call ptr @lp_str_concat(ptr %t24, ptr %t25) %t27 = call ptr @fn_emit_bind(ptr %t26) @@ -57990,7 +58043,7 @@ entry: store ptr %arg_meth, ptr %t0 store ptr %arg_e, ptr %t1 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5686) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str5689) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -58031,12 +58084,12 @@ then0: %t39 = getelementptr inbounds %Cmp_Val, ptr %t38, i32 0, i32 0 %t40 = load ptr, ptr %t39 %t41 = call ptr @fn_color_pack(ptr %t34, ptr %t37, ptr %t40) - %t42 = call ptr @fn_val(ptr %t41, ptr @.str5687) + %t42 = call ptr @fn_val(ptr %t41, ptr @.str5690) store ptr %t42, ptr %retval br label %ret ifend2: %t43 = load ptr, ptr %t0 - %t44 = call i32 @lp_str_eq(ptr %t43, ptr @.str5688) + %t44 = call i32 @lp_str_eq(ptr %t43, ptr @.str5691) %t45 = icmp ne i32 %t44, 0 br i1 %t45, label %then3, label %ifend5 then3: @@ -58090,22 +58143,22 @@ then3: %t93 = load ptr, ptr %t81 %t94 = getelementptr inbounds %Cmp_Val, ptr %t93, i32 0, i32 0 %t95 = load ptr, ptr %t94 - %t96 = call ptr @lp_str_concat(ptr @.str5689, ptr %t95) - %t97 = call ptr @lp_str_concat(ptr %t96, ptr @.str5690) + %t96 = call ptr @lp_str_concat(ptr @.str5692, ptr %t95) + %t97 = call ptr @lp_str_concat(ptr %t96, ptr @.str5693) %t98 = call ptr @fn_emit_bind(ptr %t97) store ptr %t98, ptr %t99 %t100 = load ptr, ptr %t92 - %t101 = call ptr @lp_str_concat(ptr @.str5691, ptr %t100) - %t102 = call ptr @lp_str_concat(ptr %t101, ptr @.str5692) + %t101 = call ptr @lp_str_concat(ptr @.str5694, ptr %t100) + %t102 = call ptr @lp_str_concat(ptr %t101, ptr @.str5695) %t103 = load ptr, ptr %t99 %t104 = call ptr @lp_str_concat(ptr %t102, ptr %t103) %t105 = call ptr @fn_emit_bind(ptr %t104) - %t106 = call ptr @fn_val(ptr %t105, ptr @.str5693) + %t106 = call ptr @fn_val(ptr %t105, ptr @.str5696) store ptr %t106, ptr %retval br label %ret ifend5: %t107 = load ptr, ptr %t0 - %t108 = call i32 @lp_str_eq(ptr %t107, ptr @.str5694) + %t108 = call i32 @lp_str_eq(ptr %t107, ptr @.str5697) %t109 = icmp ne i32 %t108, 0 br i1 %t109, label %then6, label %ifend8 then6: @@ -58130,29 +58183,29 @@ then6: %t128 = load ptr, ptr %t118 %t129 = getelementptr inbounds %Cmp_Val, ptr %t128, i32 0, i32 0 %t130 = load ptr, ptr %t129 - %t131 = call ptr @lp_str_concat(ptr @.str5695, ptr %t130) - %t132 = call ptr @lp_str_concat(ptr %t131, ptr @.str5696) + %t131 = call ptr @lp_str_concat(ptr @.str5698, ptr %t130) + %t132 = call ptr @lp_str_concat(ptr %t131, ptr @.str5699) %t133 = call ptr @fn_emit_bind(ptr %t132) store ptr %t133, ptr %t134 %t135 = load ptr, ptr %t127 %t136 = getelementptr inbounds %Cmp_Val, ptr %t135, i32 0, i32 0 %t137 = load ptr, ptr %t136 - %t138 = call ptr @lp_str_concat(ptr @.str5697, ptr %t137) - %t139 = call ptr @lp_str_concat(ptr %t138, ptr @.str5698) + %t138 = call ptr @lp_str_concat(ptr @.str5700, ptr %t137) + %t139 = call ptr @lp_str_concat(ptr %t138, ptr @.str5701) %t140 = call ptr @fn_emit_bind(ptr %t139) store ptr %t140, ptr %t141 %t142 = load ptr, ptr %t134 - %t143 = call ptr @lp_str_concat(ptr @.str5699, ptr %t142) - %t144 = call ptr @lp_str_concat(ptr %t143, ptr @.str5700) + %t143 = call ptr @lp_str_concat(ptr @.str5702, ptr %t142) + %t144 = call ptr @lp_str_concat(ptr %t143, ptr @.str5703) %t145 = load ptr, ptr %t141 %t146 = call ptr @lp_str_concat(ptr %t144, ptr %t145) %t147 = call ptr @fn_emit_bind(ptr %t146) - %t148 = call ptr @fn_val(ptr %t147, ptr @.str5701) + %t148 = call ptr @fn_val(ptr %t147, ptr @.str5704) store ptr %t148, ptr %retval br label %ret ifend8: %t149 = load ptr, ptr %t0 - %t150 = call i32 @lp_str_eq(ptr %t149, ptr @.str5702) + %t150 = call i32 @lp_str_eq(ptr %t149, ptr @.str5705) %t151 = icmp ne i32 %t150, 0 br i1 %t151, label %then9, label %ifend11 then9: @@ -58186,11 +58239,11 @@ then9: %t179 = load ptr, ptr %t160 %t180 = getelementptr inbounds %Cmp_Val, ptr %t179, i32 0, i32 0 %t181 = load ptr, ptr %t180 - %t182 = call ptr @fn_color_ch(ptr %t181, ptr @.str5703) + %t182 = call ptr @fn_color_ch(ptr %t181, ptr @.str5706) %t183 = load ptr, ptr %t169 %t184 = getelementptr inbounds %Cmp_Val, ptr %t183, i32 0, i32 0 %t185 = load ptr, ptr %t184 - %t186 = call ptr @fn_color_ch(ptr %t185, ptr @.str5704) + %t186 = call ptr @fn_color_ch(ptr %t185, ptr @.str5707) %t187 = load ptr, ptr %t178 %t188 = getelementptr inbounds %Cmp_Val, ptr %t187, i32 0, i32 0 %t189 = load ptr, ptr %t188 @@ -58199,11 +58252,11 @@ then9: %t192 = load ptr, ptr %t160 %t193 = getelementptr inbounds %Cmp_Val, ptr %t192, i32 0, i32 0 %t194 = load ptr, ptr %t193 - %t195 = call ptr @fn_color_ch(ptr %t194, ptr @.str5705) + %t195 = call ptr @fn_color_ch(ptr %t194, ptr @.str5708) %t196 = load ptr, ptr %t169 %t197 = getelementptr inbounds %Cmp_Val, ptr %t196, i32 0, i32 0 %t198 = load ptr, ptr %t197 - %t199 = call ptr @fn_color_ch(ptr %t198, ptr @.str5706) + %t199 = call ptr @fn_color_ch(ptr %t198, ptr @.str5709) %t200 = load ptr, ptr %t178 %t201 = getelementptr inbounds %Cmp_Val, ptr %t200, i32 0, i32 0 %t202 = load ptr, ptr %t201 @@ -58212,11 +58265,11 @@ then9: %t205 = load ptr, ptr %t160 %t206 = getelementptr inbounds %Cmp_Val, ptr %t205, i32 0, i32 0 %t207 = load ptr, ptr %t206 - %t208 = call ptr @fn_color_ch(ptr %t207, ptr @.str5707) + %t208 = call ptr @fn_color_ch(ptr %t207, ptr @.str5710) %t209 = load ptr, ptr %t169 %t210 = getelementptr inbounds %Cmp_Val, ptr %t209, i32 0, i32 0 %t211 = load ptr, ptr %t210 - %t212 = call ptr @fn_color_ch(ptr %t211, ptr @.str5708) + %t212 = call ptr @fn_color_ch(ptr %t211, ptr @.str5711) %t213 = load ptr, ptr %t178 %t214 = getelementptr inbounds %Cmp_Val, ptr %t213, i32 0, i32 0 %t215 = load ptr, ptr %t214 @@ -58226,12 +58279,12 @@ then9: %t219 = load ptr, ptr %t204 %t220 = load ptr, ptr %t217 %t221 = call ptr @fn_color_pack(ptr %t218, ptr %t219, ptr %t220) - %t222 = call ptr @fn_val(ptr %t221, ptr @.str5709) + %t222 = call ptr @fn_val(ptr %t221, ptr @.str5712) store ptr %t222, ptr %retval br label %ret ifend11: %t223 = load ptr, ptr %t0 - %t224 = call i32 @lp_str_eq(ptr %t223, ptr @.str5710) + %t224 = call i32 @lp_str_eq(ptr %t223, ptr @.str5713) %t225 = icmp ne i32 %t224, 0 br i1 %t225, label %then12, label %ifend14 then12: @@ -58256,65 +58309,65 @@ then12: %t244 = load ptr, ptr %t243 %t245 = getelementptr inbounds %Cmp_Val, ptr %t244, i32 0, i32 0 %t246 = load ptr, ptr %t245 - %t247 = call ptr @lp_str_concat(ptr @.str5711, ptr %t246) + %t247 = call ptr @lp_str_concat(ptr @.str5714, ptr %t246) %t248 = call ptr @fn_emit_bind(ptr %t247) store ptr %t248, ptr %t249 %t250 = load ptr, ptr %t234 %t251 = getelementptr inbounds %Cmp_Val, ptr %t250, i32 0, i32 0 %t252 = load ptr, ptr %t251 - %t253 = call ptr @fn_color_ch(ptr %t252, ptr @.str5712) + %t253 = call ptr @fn_color_ch(ptr %t252, ptr @.str5715) store ptr %t253, ptr %t254 %t255 = load ptr, ptr %t234 %t256 = getelementptr inbounds %Cmp_Val, ptr %t255, i32 0, i32 0 %t257 = load ptr, ptr %t256 - %t258 = call ptr @fn_color_ch(ptr %t257, ptr @.str5713) + %t258 = call ptr @fn_color_ch(ptr %t257, ptr @.str5716) store ptr %t258, ptr %t259 %t260 = load ptr, ptr %t234 %t261 = getelementptr inbounds %Cmp_Val, ptr %t260, i32 0, i32 0 %t262 = load ptr, ptr %t261 - %t263 = call ptr @fn_color_ch(ptr %t262, ptr @.str5714) + %t263 = call ptr @fn_color_ch(ptr %t262, ptr @.str5717) store ptr %t263, ptr %t264 %t265 = load ptr, ptr %t254 - %t266 = call ptr @lp_str_concat(ptr @.str5715, ptr %t265) - %t267 = call ptr @lp_str_concat(ptr %t266, ptr @.str5716) + %t266 = call ptr @lp_str_concat(ptr @.str5718, ptr %t265) + %t267 = call ptr @lp_str_concat(ptr %t266, ptr @.str5719) %t268 = load ptr, ptr %t249 %t269 = call ptr @lp_str_concat(ptr %t267, ptr %t268) %t270 = call ptr @fn_emit_bind(ptr %t269) store ptr %t270, ptr %t271 %t272 = load ptr, ptr %t271 - %t273 = call ptr @lp_str_concat(ptr @.str5717, ptr %t272) - %t274 = call ptr @lp_str_concat(ptr %t273, ptr @.str5718) + %t273 = call ptr @lp_str_concat(ptr @.str5720, ptr %t272) + %t274 = call ptr @lp_str_concat(ptr %t273, ptr @.str5721) %t275 = call ptr @fn_emit_bind(ptr %t274) store ptr %t275, ptr %t276 %t277 = load ptr, ptr %t259 - %t278 = call ptr @lp_str_concat(ptr @.str5719, ptr %t277) - %t279 = call ptr @lp_str_concat(ptr %t278, ptr @.str5720) + %t278 = call ptr @lp_str_concat(ptr @.str5722, ptr %t277) + %t279 = call ptr @lp_str_concat(ptr %t278, ptr @.str5723) %t280 = load ptr, ptr %t249 %t281 = call ptr @lp_str_concat(ptr %t279, ptr %t280) %t282 = call ptr @fn_emit_bind(ptr %t281) store ptr %t282, ptr %t283 %t284 = load ptr, ptr %t283 - %t285 = call ptr @lp_str_concat(ptr @.str5721, ptr %t284) - %t286 = call ptr @lp_str_concat(ptr %t285, ptr @.str5722) + %t285 = call ptr @lp_str_concat(ptr @.str5724, ptr %t284) + %t286 = call ptr @lp_str_concat(ptr %t285, ptr @.str5725) %t287 = call ptr @fn_emit_bind(ptr %t286) store ptr %t287, ptr %t288 %t289 = load ptr, ptr %t264 - %t290 = call ptr @lp_str_concat(ptr @.str5723, ptr %t289) - %t291 = call ptr @lp_str_concat(ptr %t290, ptr @.str5724) + %t290 = call ptr @lp_str_concat(ptr @.str5726, ptr %t289) + %t291 = call ptr @lp_str_concat(ptr %t290, ptr @.str5727) %t292 = load ptr, ptr %t249 %t293 = call ptr @lp_str_concat(ptr %t291, ptr %t292) %t294 = call ptr @fn_emit_bind(ptr %t293) store ptr %t294, ptr %t295 %t296 = load ptr, ptr %t295 - %t297 = call ptr @lp_str_concat(ptr @.str5725, ptr %t296) - %t298 = call ptr @lp_str_concat(ptr %t297, ptr @.str5726) + %t297 = call ptr @lp_str_concat(ptr @.str5728, ptr %t296) + %t298 = call ptr @lp_str_concat(ptr %t297, ptr @.str5729) %t299 = call ptr @fn_emit_bind(ptr %t298) store ptr %t299, ptr %t300 %t301 = load ptr, ptr %t276 %t302 = load ptr, ptr %t288 %t303 = load ptr, ptr %t300 %t304 = call ptr @fn_color_pack(ptr %t301, ptr %t302, ptr %t303) - %t305 = call ptr @fn_val(ptr %t304, ptr @.str5727) + %t305 = call ptr @fn_val(ptr %t304, ptr @.str5730) store ptr %t305, ptr %retval br label %ret ifend14: @@ -58339,25 +58392,25 @@ ifend14: %t324 = load ptr, ptr %t314 %t325 = getelementptr inbounds %Cmp_Val, ptr %t324, i32 0, i32 0 %t326 = load ptr, ptr %t325 - %t327 = call ptr @fn_color_ch(ptr %t326, ptr @.str5728) + %t327 = call ptr @fn_color_ch(ptr %t326, ptr @.str5731) store ptr %t327, ptr %t328 %t329 = load ptr, ptr %t314 %t330 = getelementptr inbounds %Cmp_Val, ptr %t329, i32 0, i32 0 %t331 = load ptr, ptr %t330 - %t332 = call ptr @fn_color_ch(ptr %t331, ptr @.str5729) + %t332 = call ptr @fn_color_ch(ptr %t331, ptr @.str5732) store ptr %t332, ptr %t333 %t334 = load ptr, ptr %t314 %t335 = getelementptr inbounds %Cmp_Val, ptr %t334, i32 0, i32 0 %t336 = load ptr, ptr %t335 - %t337 = call ptr @fn_color_ch(ptr %t336, ptr @.str5730) + %t337 = call ptr @fn_color_ch(ptr %t336, ptr @.str5733) store ptr %t337, ptr %t338 %t339 = load ptr, ptr %t328 - %t340 = call ptr @lp_str_concat(ptr @.str5731, ptr %t339) + %t340 = call ptr @lp_str_concat(ptr @.str5734, ptr %t339) %t341 = call ptr @fn_emit_bind(ptr %t340) store ptr %t341, ptr %t342 %t343 = load ptr, ptr %t342 - %t344 = call ptr @lp_str_concat(ptr @.str5732, ptr %t343) - %t345 = call ptr @lp_str_concat(ptr %t344, ptr @.str5733) + %t344 = call ptr @lp_str_concat(ptr @.str5735, ptr %t343) + %t345 = call ptr @lp_str_concat(ptr %t344, ptr @.str5736) %t346 = load ptr, ptr %t323 %t347 = getelementptr inbounds %Cmp_Val, ptr %t346, i32 0, i32 0 %t348 = load ptr, ptr %t347 @@ -58365,24 +58418,24 @@ ifend14: %t350 = call ptr @fn_emit_bind(ptr %t349) store ptr %t350, ptr %t351 %t352 = load ptr, ptr %t351 - %t353 = call ptr @lp_str_concat(ptr @.str5734, ptr %t352) - %t354 = call ptr @lp_str_concat(ptr %t353, ptr @.str5735) + %t353 = call ptr @lp_str_concat(ptr @.str5737, ptr %t352) + %t354 = call ptr @lp_str_concat(ptr %t353, ptr @.str5738) %t355 = call ptr @fn_emit_bind(ptr %t354) store ptr %t355, ptr %t356 %t357 = load ptr, ptr %t328 - %t358 = call ptr @lp_str_concat(ptr @.str5736, ptr %t357) - %t359 = call ptr @lp_str_concat(ptr %t358, ptr @.str5737) + %t358 = call ptr @lp_str_concat(ptr @.str5739, ptr %t357) + %t359 = call ptr @lp_str_concat(ptr %t358, ptr @.str5740) %t360 = load ptr, ptr %t356 %t361 = call ptr @lp_str_concat(ptr %t359, ptr %t360) %t362 = call ptr @fn_emit_bind(ptr %t361) store ptr %t362, ptr %t363 %t364 = load ptr, ptr %t333 - %t365 = call ptr @lp_str_concat(ptr @.str5738, ptr %t364) + %t365 = call ptr @lp_str_concat(ptr @.str5741, ptr %t364) %t366 = call ptr @fn_emit_bind(ptr %t365) store ptr %t366, ptr %t367 %t368 = load ptr, ptr %t367 - %t369 = call ptr @lp_str_concat(ptr @.str5739, ptr %t368) - %t370 = call ptr @lp_str_concat(ptr %t369, ptr @.str5740) + %t369 = call ptr @lp_str_concat(ptr @.str5742, ptr %t368) + %t370 = call ptr @lp_str_concat(ptr %t369, ptr @.str5743) %t371 = load ptr, ptr %t323 %t372 = getelementptr inbounds %Cmp_Val, ptr %t371, i32 0, i32 0 %t373 = load ptr, ptr %t372 @@ -58390,24 +58443,24 @@ ifend14: %t375 = call ptr @fn_emit_bind(ptr %t374) store ptr %t375, ptr %t376 %t377 = load ptr, ptr %t376 - %t378 = call ptr @lp_str_concat(ptr @.str5741, ptr %t377) - %t379 = call ptr @lp_str_concat(ptr %t378, ptr @.str5742) + %t378 = call ptr @lp_str_concat(ptr @.str5744, ptr %t377) + %t379 = call ptr @lp_str_concat(ptr %t378, ptr @.str5745) %t380 = call ptr @fn_emit_bind(ptr %t379) store ptr %t380, ptr %t381 %t382 = load ptr, ptr %t333 - %t383 = call ptr @lp_str_concat(ptr @.str5743, ptr %t382) - %t384 = call ptr @lp_str_concat(ptr %t383, ptr @.str5744) + %t383 = call ptr @lp_str_concat(ptr @.str5746, ptr %t382) + %t384 = call ptr @lp_str_concat(ptr %t383, ptr @.str5747) %t385 = load ptr, ptr %t381 %t386 = call ptr @lp_str_concat(ptr %t384, ptr %t385) %t387 = call ptr @fn_emit_bind(ptr %t386) store ptr %t387, ptr %t388 %t389 = load ptr, ptr %t338 - %t390 = call ptr @lp_str_concat(ptr @.str5745, ptr %t389) + %t390 = call ptr @lp_str_concat(ptr @.str5748, ptr %t389) %t391 = call ptr @fn_emit_bind(ptr %t390) store ptr %t391, ptr %t392 %t393 = load ptr, ptr %t392 - %t394 = call ptr @lp_str_concat(ptr @.str5746, ptr %t393) - %t395 = call ptr @lp_str_concat(ptr %t394, ptr @.str5747) + %t394 = call ptr @lp_str_concat(ptr @.str5749, ptr %t393) + %t395 = call ptr @lp_str_concat(ptr %t394, ptr @.str5750) %t396 = load ptr, ptr %t323 %t397 = getelementptr inbounds %Cmp_Val, ptr %t396, i32 0, i32 0 %t398 = load ptr, ptr %t397 @@ -58415,13 +58468,13 @@ ifend14: %t400 = call ptr @fn_emit_bind(ptr %t399) store ptr %t400, ptr %t401 %t402 = load ptr, ptr %t401 - %t403 = call ptr @lp_str_concat(ptr @.str5748, ptr %t402) - %t404 = call ptr @lp_str_concat(ptr %t403, ptr @.str5749) + %t403 = call ptr @lp_str_concat(ptr @.str5751, ptr %t402) + %t404 = call ptr @lp_str_concat(ptr %t403, ptr @.str5752) %t405 = call ptr @fn_emit_bind(ptr %t404) store ptr %t405, ptr %t406 %t407 = load ptr, ptr %t338 - %t408 = call ptr @lp_str_concat(ptr @.str5750, ptr %t407) - %t409 = call ptr @lp_str_concat(ptr %t408, ptr @.str5751) + %t408 = call ptr @lp_str_concat(ptr @.str5753, ptr %t407) + %t409 = call ptr @lp_str_concat(ptr %t408, ptr @.str5754) %t410 = load ptr, ptr %t406 %t411 = call ptr @lp_str_concat(ptr %t409, ptr %t410) %t412 = call ptr @fn_emit_bind(ptr %t411) @@ -58430,7 +58483,7 @@ ifend14: %t415 = load ptr, ptr %t388 %t416 = load ptr, ptr %t413 %t417 = call ptr @fn_color_pack(ptr %t414, ptr %t415, ptr %t416) - %t418 = call ptr @fn_val(ptr %t417, ptr @.str5752) + %t418 = call ptr @fn_val(ptr %t417, ptr @.str5755) store ptr %t418, ptr %retval br label %ret ret: @@ -58444,7 +58497,7 @@ entry: %t0 = alloca ptr store ptr %arg_name, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call i32 @lp_str_eq(ptr %t1, ptr @.str5753) + %t2 = call i32 @lp_str_eq(ptr %t1, ptr @.str5756) %t3 = icmp ne i32 %t2, 0 br i1 %t3, label %then0, label %ifend2 then0: @@ -58452,7 +58505,7 @@ then0: br label %ret ifend2: %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str5754) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str5757) %t6 = icmp ne i32 %t5, 0 br i1 %t6, label %then3, label %ifend5 then3: @@ -58460,7 +58513,7 @@ then3: br label %ret ifend5: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str5755) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str5758) %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then6, label %ifend8 then6: @@ -58468,7 +58521,7 @@ then6: br label %ret ifend8: %t10 = load ptr, ptr %t0 - %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str5756) + %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str5759) %t12 = icmp ne i32 %t11, 0 br i1 %t12, label %then9, label %ifend11 then9: @@ -58476,7 +58529,7 @@ then9: br label %ret ifend11: %t13 = load ptr, ptr %t0 - %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str5757) + %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str5760) %t15 = icmp ne i32 %t14, 0 br i1 %t15, label %then12, label %ifend14 then12: @@ -58484,7 +58537,7 @@ then12: br label %ret ifend14: %t16 = load ptr, ptr %t0 - %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str5758) + %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str5761) %t18 = icmp ne i32 %t17, 0 br i1 %t18, label %then15, label %ifend17 then15: @@ -58492,7 +58545,7 @@ then15: br label %ret ifend17: %t19 = load ptr, ptr %t0 - %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str5759) + %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str5762) %t21 = icmp ne i32 %t20, 0 br i1 %t21, label %then18, label %ifend20 then18: @@ -58500,7 +58553,7 @@ then18: br label %ret ifend20: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str5760) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str5763) %t24 = icmp ne i32 %t23, 0 br i1 %t24, label %then21, label %ifend23 then21: @@ -58508,7 +58561,7 @@ then21: br label %ret ifend23: %t25 = load ptr, ptr %t0 - %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str5761) + %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str5764) %t27 = icmp ne i32 %t26, 0 br i1 %t27, label %then24, label %ifend26 then24: @@ -58516,7 +58569,7 @@ then24: br label %ret ifend26: %t28 = load ptr, ptr %t0 - %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str5762) + %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str5765) %t30 = icmp ne i32 %t29, 0 br i1 %t30, label %then27, label %ifend29 then27: @@ -58524,7 +58577,7 @@ then27: br label %ret ifend29: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str5763) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str5766) %t33 = icmp ne i32 %t32, 0 br i1 %t33, label %then30, label %ifend32 then30: @@ -58532,7 +58585,7 @@ then30: br label %ret ifend32: %t34 = load ptr, ptr %t0 - %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str5764) + %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str5767) %t36 = icmp ne i32 %t35, 0 br i1 %t36, label %then33, label %ifend35 then33: @@ -58540,7 +58593,7 @@ then33: br label %ret ifend35: %t37 = load ptr, ptr %t0 - %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str5765) + %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str5768) %t39 = icmp ne i32 %t38, 0 br i1 %t39, label %then36, label %ifend38 then36: @@ -58548,7 +58601,7 @@ then36: br label %ret ifend38: %t40 = load ptr, ptr %t0 - %t41 = call i32 @lp_str_eq(ptr %t40, ptr @.str5766) + %t41 = call i32 @lp_str_eq(ptr %t40, ptr @.str5769) %t42 = icmp ne i32 %t41, 0 br i1 %t42, label %then39, label %ifend41 then39: @@ -58556,7 +58609,7 @@ then39: br label %ret ifend41: %t43 = load ptr, ptr %t0 - %t44 = call i32 @lp_str_eq(ptr %t43, ptr @.str5767) + %t44 = call i32 @lp_str_eq(ptr %t43, ptr @.str5770) %t45 = icmp ne i32 %t44, 0 br i1 %t45, label %then42, label %ifend44 then42: @@ -58564,7 +58617,7 @@ then42: br label %ret ifend44: %t46 = load ptr, ptr %t0 - %t47 = call i32 @lp_str_eq(ptr %t46, ptr @.str5768) + %t47 = call i32 @lp_str_eq(ptr %t46, ptr @.str5771) %t48 = icmp ne i32 %t47, 0 br i1 %t48, label %then45, label %ifend47 then45: @@ -58572,7 +58625,7 @@ then45: br label %ret ifend47: %t49 = load ptr, ptr %t0 - %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str5769) + %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str5772) %t51 = icmp ne i32 %t50, 0 br i1 %t51, label %then48, label %ifend50 then48: @@ -58580,7 +58633,7 @@ then48: br label %ret ifend50: %t52 = load ptr, ptr %t0 - %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str5770) + %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str5773) %t54 = icmp ne i32 %t53, 0 br i1 %t54, label %then51, label %ifend53 then51: @@ -58588,7 +58641,7 @@ then51: br label %ret ifend53: %t55 = load ptr, ptr %t0 - %t56 = call i32 @lp_str_eq(ptr %t55, ptr @.str5771) + %t56 = call i32 @lp_str_eq(ptr %t55, ptr @.str5774) %t57 = icmp ne i32 %t56, 0 br i1 %t57, label %then54, label %ifend56 then54: @@ -58596,7 +58649,7 @@ then54: br label %ret ifend56: %t58 = load ptr, ptr %t0 - %t59 = call i32 @lp_str_eq(ptr %t58, ptr @.str5772) + %t59 = call i32 @lp_str_eq(ptr %t58, ptr @.str5775) %t60 = icmp ne i32 %t59, 0 br i1 %t60, label %then57, label %ifend59 then57: @@ -58604,7 +58657,7 @@ then57: br label %ret ifend59: %t61 = load ptr, ptr %t0 - %t62 = call i32 @lp_str_eq(ptr %t61, ptr @.str5773) + %t62 = call i32 @lp_str_eq(ptr %t61, ptr @.str5776) %t63 = icmp ne i32 %t62, 0 br i1 %t63, label %then60, label %ifend62 then60: @@ -58612,7 +58665,7 @@ then60: br label %ret ifend62: %t64 = load ptr, ptr %t0 - %t65 = call i32 @lp_str_eq(ptr %t64, ptr @.str5774) + %t65 = call i32 @lp_str_eq(ptr %t64, ptr @.str5777) %t66 = icmp ne i32 %t65, 0 br i1 %t66, label %then63, label %ifend65 then63: @@ -58620,7 +58673,7 @@ then63: br label %ret ifend65: %t67 = load ptr, ptr %t0 - %t68 = call i32 @lp_str_eq(ptr %t67, ptr @.str5775) + %t68 = call i32 @lp_str_eq(ptr %t67, ptr @.str5778) %t69 = icmp ne i32 %t68, 0 br i1 %t69, label %then66, label %ifend68 then66: @@ -58628,7 +58681,7 @@ then66: br label %ret ifend68: %t70 = load ptr, ptr %t0 - %t71 = call i32 @lp_str_eq(ptr %t70, ptr @.str5776) + %t71 = call i32 @lp_str_eq(ptr %t70, ptr @.str5779) %t72 = icmp ne i32 %t71, 0 br i1 %t72, label %then69, label %ifend71 then69: @@ -58636,7 +58689,7 @@ then69: br label %ret ifend71: %t73 = load ptr, ptr %t0 - %t74 = call i32 @lp_str_eq(ptr %t73, ptr @.str5777) + %t74 = call i32 @lp_str_eq(ptr %t73, ptr @.str5780) %t75 = icmp ne i32 %t74, 0 br i1 %t75, label %then72, label %ifend74 then72: @@ -58644,7 +58697,7 @@ then72: br label %ret ifend74: %t76 = load ptr, ptr %t0 - %t77 = call i32 @lp_str_eq(ptr %t76, ptr @.str5778) + %t77 = call i32 @lp_str_eq(ptr %t76, ptr @.str5781) %t78 = icmp ne i32 %t77, 0 br i1 %t78, label %then75, label %ifend77 then75: @@ -58652,7 +58705,7 @@ then75: br label %ret ifend77: %t79 = load ptr, ptr %t0 - %t80 = call i32 @lp_str_eq(ptr %t79, ptr @.str5779) + %t80 = call i32 @lp_str_eq(ptr %t79, ptr @.str5782) %t81 = icmp ne i32 %t80, 0 br i1 %t81, label %then78, label %ifend80 then78: @@ -58660,7 +58713,7 @@ then78: br label %ret ifend80: %t82 = load ptr, ptr %t0 - %t83 = call i32 @lp_str_eq(ptr %t82, ptr @.str5780) + %t83 = call i32 @lp_str_eq(ptr %t82, ptr @.str5783) %t84 = icmp ne i32 %t83, 0 br i1 %t84, label %then81, label %ifend83 then81: @@ -58668,7 +58721,7 @@ then81: br label %ret ifend83: %t85 = load ptr, ptr %t0 - %t86 = call i32 @lp_str_eq(ptr %t85, ptr @.str5781) + %t86 = call i32 @lp_str_eq(ptr %t85, ptr @.str5784) %t87 = icmp ne i32 %t86, 0 br i1 %t87, label %then84, label %ifend86 then84: @@ -58676,7 +58729,7 @@ then84: br label %ret ifend86: %t88 = load ptr, ptr %t0 - %t89 = call i32 @lp_str_eq(ptr %t88, ptr @.str5782) + %t89 = call i32 @lp_str_eq(ptr %t88, ptr @.str5785) %t90 = icmp ne i32 %t89, 0 br i1 %t90, label %then87, label %ifend89 then87: @@ -58684,7 +58737,7 @@ then87: br label %ret ifend89: %t91 = load ptr, ptr %t0 - %t92 = call i32 @lp_str_eq(ptr %t91, ptr @.str5783) + %t92 = call i32 @lp_str_eq(ptr %t91, ptr @.str5786) %t93 = icmp ne i32 %t92, 0 br i1 %t93, label %then90, label %ifend92 then90: @@ -58692,7 +58745,7 @@ then90: br label %ret ifend92: %t94 = load ptr, ptr %t0 - %t95 = call i32 @lp_str_eq(ptr %t94, ptr @.str5784) + %t95 = call i32 @lp_str_eq(ptr %t94, ptr @.str5787) %t96 = icmp ne i32 %t95, 0 br i1 %t96, label %then93, label %ifend95 then93: @@ -58700,7 +58753,7 @@ then93: br label %ret ifend95: %t97 = load ptr, ptr %t0 - %t98 = call i32 @lp_str_eq(ptr %t97, ptr @.str5785) + %t98 = call i32 @lp_str_eq(ptr %t97, ptr @.str5788) %t99 = icmp ne i32 %t98, 0 br i1 %t99, label %then96, label %ifend98 then96: @@ -58708,7 +58761,7 @@ then96: br label %ret ifend98: %t100 = load ptr, ptr %t0 - %t101 = call i32 @lp_str_eq(ptr %t100, ptr @.str5786) + %t101 = call i32 @lp_str_eq(ptr %t100, ptr @.str5789) %t102 = icmp ne i32 %t101, 0 br i1 %t102, label %then99, label %ifend101 then99: @@ -58716,7 +58769,7 @@ then99: br label %ret ifend101: %t103 = load ptr, ptr %t0 - %t104 = call i32 @lp_str_eq(ptr %t103, ptr @.str5787) + %t104 = call i32 @lp_str_eq(ptr %t103, ptr @.str5790) %t105 = icmp ne i32 %t104, 0 br i1 %t105, label %then102, label %ifend104 then102: @@ -58724,7 +58777,7 @@ then102: br label %ret ifend104: %t106 = load ptr, ptr %t0 - %t107 = call i32 @lp_str_eq(ptr %t106, ptr @.str5788) + %t107 = call i32 @lp_str_eq(ptr %t106, ptr @.str5791) %t108 = icmp ne i32 %t107, 0 br i1 %t108, label %then105, label %ifend107 then105: @@ -58732,7 +58785,7 @@ then105: br label %ret ifend107: %t109 = load ptr, ptr %t0 - %t110 = call i32 @lp_str_eq(ptr %t109, ptr @.str5789) + %t110 = call i32 @lp_str_eq(ptr %t109, ptr @.str5792) %t111 = icmp ne i32 %t110, 0 br i1 %t111, label %then108, label %ifend110 then108: @@ -58740,7 +58793,7 @@ then108: br label %ret ifend110: %t112 = load ptr, ptr %t0 - %t113 = call i32 @lp_str_eq(ptr %t112, ptr @.str5790) + %t113 = call i32 @lp_str_eq(ptr %t112, ptr @.str5793) %t114 = icmp ne i32 %t113, 0 br i1 %t114, label %then111, label %ifend113 then111: @@ -58748,7 +58801,7 @@ then111: br label %ret ifend113: %t115 = load ptr, ptr %t0 - %t116 = call i32 @lp_str_eq(ptr %t115, ptr @.str5791) + %t116 = call i32 @lp_str_eq(ptr %t115, ptr @.str5794) %t117 = icmp ne i32 %t116, 0 br i1 %t117, label %then114, label %ifend116 then114: @@ -58756,7 +58809,7 @@ then114: br label %ret ifend116: %t118 = load ptr, ptr %t0 - %t119 = call i32 @lp_str_eq(ptr %t118, ptr @.str5792) + %t119 = call i32 @lp_str_eq(ptr %t118, ptr @.str5795) %t120 = icmp ne i32 %t119, 0 br i1 %t120, label %then117, label %ifend119 then117: @@ -58764,7 +58817,7 @@ then117: br label %ret ifend119: %t121 = load ptr, ptr %t0 - %t122 = call i32 @lp_str_eq(ptr %t121, ptr @.str5793) + %t122 = call i32 @lp_str_eq(ptr %t121, ptr @.str5796) %t123 = icmp ne i32 %t122, 0 br i1 %t123, label %then120, label %ifend122 then120: @@ -58772,7 +58825,7 @@ then120: br label %ret ifend122: %t124 = load ptr, ptr %t0 - %t125 = call i32 @lp_str_eq(ptr %t124, ptr @.str5794) + %t125 = call i32 @lp_str_eq(ptr %t124, ptr @.str5797) %t126 = icmp ne i32 %t125, 0 br i1 %t126, label %then123, label %ifend125 then123: @@ -58780,7 +58833,7 @@ then123: br label %ret ifend125: %t127 = load ptr, ptr %t0 - %t128 = call i32 @lp_str_eq(ptr %t127, ptr @.str5795) + %t128 = call i32 @lp_str_eq(ptr %t127, ptr @.str5798) %t129 = icmp ne i32 %t128, 0 br i1 %t129, label %then126, label %ifend128 then126: @@ -58788,7 +58841,7 @@ then126: br label %ret ifend128: %t130 = load ptr, ptr %t0 - %t131 = call i32 @lp_str_eq(ptr %t130, ptr @.str5796) + %t131 = call i32 @lp_str_eq(ptr %t130, ptr @.str5799) %t132 = icmp ne i32 %t131, 0 br i1 %t132, label %then129, label %ifend131 then129: @@ -58796,7 +58849,7 @@ then129: br label %ret ifend131: %t133 = load ptr, ptr %t0 - %t134 = call i32 @lp_str_eq(ptr %t133, ptr @.str5797) + %t134 = call i32 @lp_str_eq(ptr %t133, ptr @.str5800) %t135 = icmp ne i32 %t134, 0 br i1 %t135, label %then132, label %ifend134 then132: @@ -58804,7 +58857,7 @@ then132: br label %ret ifend134: %t136 = load ptr, ptr %t0 - %t137 = call i32 @lp_str_eq(ptr %t136, ptr @.str5798) + %t137 = call i32 @lp_str_eq(ptr %t136, ptr @.str5801) %t138 = icmp ne i32 %t137, 0 br i1 %t138, label %then135, label %ifend137 then135: @@ -58812,7 +58865,7 @@ then135: br label %ret ifend137: %t139 = load ptr, ptr %t0 - %t140 = call i32 @lp_str_eq(ptr %t139, ptr @.str5799) + %t140 = call i32 @lp_str_eq(ptr %t139, ptr @.str5802) %t141 = icmp ne i32 %t140, 0 br i1 %t141, label %then138, label %ifend140 then138: @@ -58820,7 +58873,7 @@ then138: br label %ret ifend140: %t142 = load ptr, ptr %t0 - %t143 = call i32 @lp_str_eq(ptr %t142, ptr @.str5800) + %t143 = call i32 @lp_str_eq(ptr %t142, ptr @.str5803) %t144 = icmp ne i32 %t143, 0 br i1 %t144, label %then141, label %ifend143 then141: @@ -58828,7 +58881,7 @@ then141: br label %ret ifend143: %t145 = load ptr, ptr %t0 - %t146 = call i32 @lp_str_eq(ptr %t145, ptr @.str5801) + %t146 = call i32 @lp_str_eq(ptr %t145, ptr @.str5804) %t147 = icmp ne i32 %t146, 0 br i1 %t147, label %then144, label %ifend146 then144: @@ -58836,7 +58889,7 @@ then144: br label %ret ifend146: %t148 = load ptr, ptr %t0 - %t149 = call i32 @lp_str_eq(ptr %t148, ptr @.str5802) + %t149 = call i32 @lp_str_eq(ptr %t148, ptr @.str5805) %t150 = icmp ne i32 %t149, 0 br i1 %t150, label %then147, label %ifend149 then147: @@ -58844,7 +58897,7 @@ then147: br label %ret ifend149: %t151 = load ptr, ptr %t0 - %t152 = call i32 @lp_str_eq(ptr %t151, ptr @.str5803) + %t152 = call i32 @lp_str_eq(ptr %t151, ptr @.str5806) %t153 = icmp ne i32 %t152, 0 br i1 %t153, label %then150, label %ifend152 then150: @@ -58852,7 +58905,7 @@ then150: br label %ret ifend152: %t154 = load ptr, ptr %t0 - %t155 = call i32 @lp_str_eq(ptr %t154, ptr @.str5804) + %t155 = call i32 @lp_str_eq(ptr %t154, ptr @.str5807) %t156 = icmp ne i32 %t155, 0 br i1 %t156, label %then153, label %ifend155 then153: @@ -58860,7 +58913,7 @@ then153: br label %ret ifend155: %t157 = load ptr, ptr %t0 - %t158 = call i32 @lp_str_eq(ptr %t157, ptr @.str5805) + %t158 = call i32 @lp_str_eq(ptr %t157, ptr @.str5808) %t159 = icmp ne i32 %t158, 0 br i1 %t159, label %then156, label %ifend158 then156: @@ -58868,7 +58921,7 @@ then156: br label %ret ifend158: %t160 = load ptr, ptr %t0 - %t161 = call i32 @lp_str_eq(ptr %t160, ptr @.str5806) + %t161 = call i32 @lp_str_eq(ptr %t160, ptr @.str5809) %t162 = icmp ne i32 %t161, 0 br i1 %t162, label %then159, label %ifend161 then159: @@ -58876,7 +58929,7 @@ then159: br label %ret ifend161: %t163 = load ptr, ptr %t0 - %t164 = call i32 @lp_str_eq(ptr %t163, ptr @.str5807) + %t164 = call i32 @lp_str_eq(ptr %t163, ptr @.str5810) %t165 = icmp ne i32 %t164, 0 br i1 %t165, label %then162, label %ifend164 then162: @@ -58884,7 +58937,7 @@ then162: br label %ret ifend164: %t166 = load ptr, ptr %t0 - %t167 = call i32 @lp_str_eq(ptr %t166, ptr @.str5808) + %t167 = call i32 @lp_str_eq(ptr %t166, ptr @.str5811) %t168 = icmp ne i32 %t167, 0 br i1 %t168, label %then165, label %ifend167 then165: @@ -58892,7 +58945,7 @@ then165: br label %ret ifend167: %t169 = load ptr, ptr %t0 - %t170 = call i32 @lp_str_eq(ptr %t169, ptr @.str5809) + %t170 = call i32 @lp_str_eq(ptr %t169, ptr @.str5812) %t171 = icmp ne i32 %t170, 0 br i1 %t171, label %then168, label %ifend170 then168: @@ -58900,7 +58953,7 @@ then168: br label %ret ifend170: %t172 = load ptr, ptr %t0 - %t173 = call i32 @lp_str_eq(ptr %t172, ptr @.str5810) + %t173 = call i32 @lp_str_eq(ptr %t172, ptr @.str5813) %t174 = icmp ne i32 %t173, 0 br i1 %t174, label %then171, label %ifend173 then171: @@ -58908,7 +58961,7 @@ then171: br label %ret ifend173: %t175 = load ptr, ptr %t0 - %t176 = call i32 @lp_str_eq(ptr %t175, ptr @.str5811) + %t176 = call i32 @lp_str_eq(ptr %t175, ptr @.str5814) %t177 = icmp ne i32 %t176, 0 br i1 %t177, label %then174, label %ifend176 then174: @@ -58916,7 +58969,7 @@ then174: br label %ret ifend176: %t178 = load ptr, ptr %t0 - %t179 = call i32 @lp_str_eq(ptr %t178, ptr @.str5812) + %t179 = call i32 @lp_str_eq(ptr %t178, ptr @.str5815) %t180 = icmp ne i32 %t179, 0 br i1 %t180, label %then177, label %ifend179 then177: @@ -58924,7 +58977,7 @@ then177: br label %ret ifend179: %t181 = load ptr, ptr %t0 - %t182 = call i32 @lp_str_eq(ptr %t181, ptr @.str5813) + %t182 = call i32 @lp_str_eq(ptr %t181, ptr @.str5816) %t183 = icmp ne i32 %t182, 0 br i1 %t183, label %then180, label %ifend182 then180: @@ -58932,7 +58985,7 @@ then180: br label %ret ifend182: %t184 = load ptr, ptr %t0 - %t185 = call i32 @lp_str_eq(ptr %t184, ptr @.str5814) + %t185 = call i32 @lp_str_eq(ptr %t184, ptr @.str5817) %t186 = icmp ne i32 %t185, 0 br i1 %t186, label %then183, label %ifend185 then183: @@ -58940,7 +58993,7 @@ then183: br label %ret ifend185: %t187 = load ptr, ptr %t0 - %t188 = call i32 @lp_str_eq(ptr %t187, ptr @.str5815) + %t188 = call i32 @lp_str_eq(ptr %t187, ptr @.str5818) %t189 = icmp ne i32 %t188, 0 br i1 %t189, label %then186, label %ifend188 then186: @@ -58948,7 +59001,7 @@ then186: br label %ret ifend188: %t190 = load ptr, ptr %t0 - %t191 = call i32 @lp_str_eq(ptr %t190, ptr @.str5816) + %t191 = call i32 @lp_str_eq(ptr %t190, ptr @.str5819) %t192 = icmp ne i32 %t191, 0 br i1 %t192, label %then189, label %ifend191 then189: @@ -58956,7 +59009,7 @@ then189: br label %ret ifend191: %t193 = load ptr, ptr %t0 - %t194 = call i32 @lp_str_eq(ptr %t193, ptr @.str5817) + %t194 = call i32 @lp_str_eq(ptr %t193, ptr @.str5820) %t195 = icmp ne i32 %t194, 0 br i1 %t195, label %then192, label %ifend194 then192: @@ -58964,7 +59017,7 @@ then192: br label %ret ifend194: %t196 = load ptr, ptr %t0 - %t197 = call i32 @lp_str_eq(ptr %t196, ptr @.str5818) + %t197 = call i32 @lp_str_eq(ptr %t196, ptr @.str5821) %t198 = icmp ne i32 %t197, 0 br i1 %t198, label %then195, label %ifend197 then195: @@ -58972,7 +59025,7 @@ then195: br label %ret ifend197: %t199 = load ptr, ptr %t0 - %t200 = call i32 @lp_str_eq(ptr %t199, ptr @.str5819) + %t200 = call i32 @lp_str_eq(ptr %t199, ptr @.str5822) %t201 = icmp ne i32 %t200, 0 br i1 %t201, label %then198, label %ifend200 then198: @@ -58980,7 +59033,7 @@ then198: br label %ret ifend200: %t202 = load ptr, ptr %t0 - %t203 = call i32 @lp_str_eq(ptr %t202, ptr @.str5820) + %t203 = call i32 @lp_str_eq(ptr %t202, ptr @.str5823) %t204 = icmp ne i32 %t203, 0 br i1 %t204, label %then201, label %ifend203 then201: @@ -58988,7 +59041,7 @@ then201: br label %ret ifend203: %t205 = load ptr, ptr %t0 - %t206 = call i32 @lp_str_eq(ptr %t205, ptr @.str5821) + %t206 = call i32 @lp_str_eq(ptr %t205, ptr @.str5824) %t207 = icmp ne i32 %t206, 0 br i1 %t207, label %then204, label %ifend206 then204: @@ -58996,7 +59049,7 @@ then204: br label %ret ifend206: %t208 = load ptr, ptr %t0 - %t209 = call i32 @lp_str_eq(ptr %t208, ptr @.str5822) + %t209 = call i32 @lp_str_eq(ptr %t208, ptr @.str5825) %t210 = icmp ne i32 %t209, 0 br i1 %t210, label %then207, label %ifend209 then207: @@ -59004,7 +59057,7 @@ then207: br label %ret ifend209: %t211 = load ptr, ptr %t0 - %t212 = call i32 @lp_str_eq(ptr %t211, ptr @.str5823) + %t212 = call i32 @lp_str_eq(ptr %t211, ptr @.str5826) %t213 = icmp ne i32 %t212, 0 br i1 %t213, label %then210, label %ifend212 then210: @@ -59012,7 +59065,7 @@ then210: br label %ret ifend212: %t214 = load ptr, ptr %t0 - %t215 = call i32 @lp_str_eq(ptr %t214, ptr @.str5824) + %t215 = call i32 @lp_str_eq(ptr %t214, ptr @.str5827) %t216 = icmp ne i32 %t215, 0 br i1 %t216, label %then213, label %ifend215 then213: @@ -59020,7 +59073,7 @@ then213: br label %ret ifend215: %t217 = load ptr, ptr %t0 - %t218 = call i32 @lp_str_eq(ptr %t217, ptr @.str5825) + %t218 = call i32 @lp_str_eq(ptr %t217, ptr @.str5828) %t219 = icmp ne i32 %t218, 0 br i1 %t219, label %then216, label %ifend218 then216: @@ -59028,7 +59081,7 @@ then216: br label %ret ifend218: %t220 = load ptr, ptr %t0 - %t221 = call i32 @lp_str_eq(ptr %t220, ptr @.str5826) + %t221 = call i32 @lp_str_eq(ptr %t220, ptr @.str5829) %t222 = icmp ne i32 %t221, 0 br i1 %t222, label %then219, label %ifend221 then219: @@ -59036,7 +59089,7 @@ then219: br label %ret ifend221: %t223 = load ptr, ptr %t0 - %t224 = call i32 @lp_str_eq(ptr %t223, ptr @.str5827) + %t224 = call i32 @lp_str_eq(ptr %t223, ptr @.str5830) %t225 = icmp ne i32 %t224, 0 br i1 %t225, label %then222, label %ifend224 then222: @@ -59044,7 +59097,7 @@ then222: br label %ret ifend224: %t226 = load ptr, ptr %t0 - %t227 = call i32 @lp_str_eq(ptr %t226, ptr @.str5828) + %t227 = call i32 @lp_str_eq(ptr %t226, ptr @.str5831) %t228 = icmp ne i32 %t227, 0 br i1 %t228, label %then225, label %ifend227 then225: @@ -59052,7 +59105,7 @@ then225: br label %ret ifend227: %t229 = load ptr, ptr %t0 - %t230 = call i32 @lp_str_eq(ptr %t229, ptr @.str5829) + %t230 = call i32 @lp_str_eq(ptr %t229, ptr @.str5832) %t231 = icmp ne i32 %t230, 0 br i1 %t231, label %then228, label %ifend230 then228: @@ -59060,7 +59113,7 @@ then228: br label %ret ifend230: %t232 = load ptr, ptr %t0 - %t233 = call i32 @lp_str_eq(ptr %t232, ptr @.str5830) + %t233 = call i32 @lp_str_eq(ptr %t232, ptr @.str5833) %t234 = icmp ne i32 %t233, 0 br i1 %t234, label %then231, label %ifend233 then231: @@ -59068,7 +59121,7 @@ then231: br label %ret ifend233: %t235 = load ptr, ptr %t0 - %t236 = call i32 @lp_str_eq(ptr %t235, ptr @.str5831) + %t236 = call i32 @lp_str_eq(ptr %t235, ptr @.str5834) %t237 = icmp ne i32 %t236, 0 br i1 %t237, label %then234, label %ifend236 then234: @@ -59076,7 +59129,7 @@ then234: br label %ret ifend236: %t238 = load ptr, ptr %t0 - %t239 = call i32 @lp_str_eq(ptr %t238, ptr @.str5832) + %t239 = call i32 @lp_str_eq(ptr %t238, ptr @.str5835) %t240 = icmp ne i32 %t239, 0 br i1 %t240, label %then237, label %ifend239 then237: @@ -59084,7 +59137,7 @@ then237: br label %ret ifend239: %t241 = load ptr, ptr %t0 - %t242 = call i32 @lp_str_eq(ptr %t241, ptr @.str5833) + %t242 = call i32 @lp_str_eq(ptr %t241, ptr @.str5836) %t243 = icmp ne i32 %t242, 0 br i1 %t243, label %then240, label %ifend242 then240: @@ -59092,7 +59145,7 @@ then240: br label %ret ifend242: %t244 = load ptr, ptr %t0 - %t245 = call i32 @lp_str_eq(ptr %t244, ptr @.str5834) + %t245 = call i32 @lp_str_eq(ptr %t244, ptr @.str5837) %t246 = icmp ne i32 %t245, 0 br i1 %t246, label %then243, label %ifend245 then243: @@ -59100,7 +59153,7 @@ then243: br label %ret ifend245: %t247 = load ptr, ptr %t0 - %t248 = call i32 @lp_str_eq(ptr %t247, ptr @.str5835) + %t248 = call i32 @lp_str_eq(ptr %t247, ptr @.str5838) %t249 = icmp ne i32 %t248, 0 br i1 %t249, label %then246, label %ifend248 then246: @@ -59108,7 +59161,7 @@ then246: br label %ret ifend248: %t250 = load ptr, ptr %t0 - %t251 = call i32 @lp_str_eq(ptr %t250, ptr @.str5836) + %t251 = call i32 @lp_str_eq(ptr %t250, ptr @.str5839) %t252 = icmp ne i32 %t251, 0 br i1 %t252, label %then249, label %ifend251 then249: @@ -59116,7 +59169,7 @@ then249: br label %ret ifend251: %t253 = load ptr, ptr %t0 - %t254 = call i32 @lp_str_eq(ptr %t253, ptr @.str5837) + %t254 = call i32 @lp_str_eq(ptr %t253, ptr @.str5840) %t255 = icmp ne i32 %t254, 0 br i1 %t255, label %then252, label %ifend254 then252: @@ -59124,7 +59177,7 @@ then252: br label %ret ifend254: %t256 = load ptr, ptr %t0 - %t257 = call i32 @lp_str_eq(ptr %t256, ptr @.str5838) + %t257 = call i32 @lp_str_eq(ptr %t256, ptr @.str5841) %t258 = icmp ne i32 %t257, 0 br i1 %t258, label %then255, label %ifend257 then255: @@ -59132,7 +59185,7 @@ then255: br label %ret ifend257: %t259 = load ptr, ptr %t0 - %t260 = call i32 @lp_str_eq(ptr %t259, ptr @.str5839) + %t260 = call i32 @lp_str_eq(ptr %t259, ptr @.str5842) %t261 = icmp ne i32 %t260, 0 br i1 %t261, label %then258, label %ifend260 then258: @@ -59140,7 +59193,7 @@ then258: br label %ret ifend260: %t262 = load ptr, ptr %t0 - %t263 = call i32 @lp_str_eq(ptr %t262, ptr @.str5840) + %t263 = call i32 @lp_str_eq(ptr %t262, ptr @.str5843) %t264 = icmp ne i32 %t263, 0 br i1 %t264, label %then261, label %ifend263 then261: @@ -59148,7 +59201,7 @@ then261: br label %ret ifend263: %t265 = load ptr, ptr %t0 - %t266 = call i32 @lp_str_eq(ptr %t265, ptr @.str5841) + %t266 = call i32 @lp_str_eq(ptr %t265, ptr @.str5844) %t267 = icmp ne i32 %t266, 0 br i1 %t267, label %then264, label %ifend266 then264: @@ -59156,7 +59209,7 @@ then264: br label %ret ifend266: %t268 = load ptr, ptr %t0 - %t269 = call i32 @lp_str_eq(ptr %t268, ptr @.str5842) + %t269 = call i32 @lp_str_eq(ptr %t268, ptr @.str5845) %t270 = icmp ne i32 %t269, 0 br i1 %t270, label %then267, label %ifend269 then267: @@ -59164,7 +59217,7 @@ then267: br label %ret ifend269: %t271 = load ptr, ptr %t0 - %t272 = call i32 @lp_str_eq(ptr %t271, ptr @.str5843) + %t272 = call i32 @lp_str_eq(ptr %t271, ptr @.str5846) %t273 = icmp ne i32 %t272, 0 br i1 %t273, label %then270, label %ifend272 then270: @@ -59172,7 +59225,7 @@ then270: br label %ret ifend272: %t274 = load ptr, ptr %t0 - %t275 = call i32 @lp_str_eq(ptr %t274, ptr @.str5844) + %t275 = call i32 @lp_str_eq(ptr %t274, ptr @.str5847) %t276 = icmp ne i32 %t275, 0 br i1 %t276, label %then273, label %ifend275 then273: @@ -59180,7 +59233,7 @@ then273: br label %ret ifend275: %t277 = load ptr, ptr %t0 - %t278 = call i32 @lp_str_eq(ptr %t277, ptr @.str5845) + %t278 = call i32 @lp_str_eq(ptr %t277, ptr @.str5848) %t279 = icmp ne i32 %t278, 0 br i1 %t279, label %then276, label %ifend278 then276: @@ -59188,7 +59241,7 @@ then276: br label %ret ifend278: %t280 = load ptr, ptr %t0 - %t281 = call i32 @lp_str_eq(ptr %t280, ptr @.str5846) + %t281 = call i32 @lp_str_eq(ptr %t280, ptr @.str5849) %t282 = icmp ne i32 %t281, 0 br i1 %t282, label %then279, label %ifend281 then279: @@ -59196,7 +59249,7 @@ then279: br label %ret ifend281: %t283 = load ptr, ptr %t0 - %t284 = call i32 @lp_str_eq(ptr %t283, ptr @.str5847) + %t284 = call i32 @lp_str_eq(ptr %t283, ptr @.str5850) %t285 = icmp ne i32 %t284, 0 br i1 %t285, label %then282, label %ifend284 then282: @@ -59204,7 +59257,7 @@ then282: br label %ret ifend284: %t286 = load ptr, ptr %t0 - %t287 = call i32 @lp_str_eq(ptr %t286, ptr @.str5848) + %t287 = call i32 @lp_str_eq(ptr %t286, ptr @.str5851) %t288 = icmp ne i32 %t287, 0 br i1 %t288, label %then285, label %ifend287 then285: @@ -59212,7 +59265,7 @@ then285: br label %ret ifend287: %t289 = load ptr, ptr %t0 - %t290 = call i32 @lp_str_eq(ptr %t289, ptr @.str5849) + %t290 = call i32 @lp_str_eq(ptr %t289, ptr @.str5852) %t291 = icmp ne i32 %t290, 0 br i1 %t291, label %then288, label %ifend290 then288: @@ -59220,7 +59273,7 @@ then288: br label %ret ifend290: %t292 = load ptr, ptr %t0 - %t293 = call i32 @lp_str_eq(ptr %t292, ptr @.str5850) + %t293 = call i32 @lp_str_eq(ptr %t292, ptr @.str5853) %t294 = icmp ne i32 %t293, 0 br i1 %t294, label %then291, label %ifend293 then291: @@ -59228,7 +59281,7 @@ then291: br label %ret ifend293: %t295 = load ptr, ptr %t0 - %t296 = call i32 @lp_str_eq(ptr %t295, ptr @.str5851) + %t296 = call i32 @lp_str_eq(ptr %t295, ptr @.str5854) %t297 = icmp ne i32 %t296, 0 br i1 %t297, label %then294, label %ifend296 then294: @@ -59236,7 +59289,7 @@ then294: br label %ret ifend296: %t298 = load ptr, ptr %t0 - %t299 = call i32 @lp_str_eq(ptr %t298, ptr @.str5852) + %t299 = call i32 @lp_str_eq(ptr %t298, ptr @.str5855) %t300 = icmp ne i32 %t299, 0 br i1 %t300, label %then297, label %ifend299 then297: @@ -59244,7 +59297,7 @@ then297: br label %ret ifend299: %t301 = load ptr, ptr %t0 - %t302 = call i32 @lp_str_eq(ptr %t301, ptr @.str5853) + %t302 = call i32 @lp_str_eq(ptr %t301, ptr @.str5856) %t303 = icmp ne i32 %t302, 0 br i1 %t303, label %then300, label %ifend302 then300: @@ -59252,7 +59305,7 @@ then300: br label %ret ifend302: %t304 = load ptr, ptr %t0 - %t305 = call i32 @lp_str_eq(ptr %t304, ptr @.str5854) + %t305 = call i32 @lp_str_eq(ptr %t304, ptr @.str5857) %t306 = icmp ne i32 %t305, 0 br i1 %t306, label %then303, label %ifend305 then303: @@ -59260,7 +59313,7 @@ then303: br label %ret ifend305: %t307 = load ptr, ptr %t0 - %t308 = call i32 @lp_str_eq(ptr %t307, ptr @.str5855) + %t308 = call i32 @lp_str_eq(ptr %t307, ptr @.str5858) %t309 = icmp ne i32 %t308, 0 br i1 %t309, label %then306, label %ifend308 then306: @@ -59268,7 +59321,7 @@ then306: br label %ret ifend308: %t310 = load ptr, ptr %t0 - %t311 = call i32 @lp_str_eq(ptr %t310, ptr @.str5856) + %t311 = call i32 @lp_str_eq(ptr %t310, ptr @.str5859) %t312 = icmp ne i32 %t311, 0 br i1 %t312, label %then309, label %ifend311 then309: @@ -59276,7 +59329,7 @@ then309: br label %ret ifend311: %t313 = load ptr, ptr %t0 - %t314 = call i32 @lp_str_eq(ptr %t313, ptr @.str5857) + %t314 = call i32 @lp_str_eq(ptr %t313, ptr @.str5860) %t315 = icmp ne i32 %t314, 0 br i1 %t315, label %then312, label %ifend314 then312: @@ -59284,7 +59337,7 @@ then312: br label %ret ifend314: %t316 = load ptr, ptr %t0 - %t317 = call i32 @lp_str_eq(ptr %t316, ptr @.str5858) + %t317 = call i32 @lp_str_eq(ptr %t316, ptr @.str5861) %t318 = icmp ne i32 %t317, 0 br i1 %t318, label %then315, label %ifend317 then315: @@ -59292,7 +59345,7 @@ then315: br label %ret ifend317: %t319 = load ptr, ptr %t0 - %t320 = call i32 @lp_str_eq(ptr %t319, ptr @.str5859) + %t320 = call i32 @lp_str_eq(ptr %t319, ptr @.str5862) %t321 = icmp ne i32 %t320, 0 br i1 %t321, label %then318, label %ifend320 then318: @@ -59300,7 +59353,7 @@ then318: br label %ret ifend320: %t322 = load ptr, ptr %t0 - %t323 = call i32 @lp_str_eq(ptr %t322, ptr @.str5860) + %t323 = call i32 @lp_str_eq(ptr %t322, ptr @.str5863) %t324 = icmp ne i32 %t323, 0 br i1 %t324, label %then321, label %ifend323 then321: @@ -59308,7 +59361,7 @@ then321: br label %ret ifend323: %t325 = load ptr, ptr %t0 - %t326 = call i32 @lp_str_eq(ptr %t325, ptr @.str5861) + %t326 = call i32 @lp_str_eq(ptr %t325, ptr @.str5864) %t327 = icmp ne i32 %t326, 0 br i1 %t327, label %then324, label %ifend326 then324: @@ -59316,7 +59369,7 @@ then324: br label %ret ifend326: %t328 = load ptr, ptr %t0 - %t329 = call i32 @lp_str_eq(ptr %t328, ptr @.str5862) + %t329 = call i32 @lp_str_eq(ptr %t328, ptr @.str5865) %t330 = icmp ne i32 %t329, 0 br i1 %t330, label %then327, label %ifend329 then327: @@ -59324,7 +59377,7 @@ then327: br label %ret ifend329: %t331 = load ptr, ptr %t0 - %t332 = call i32 @lp_str_eq(ptr %t331, ptr @.str5863) + %t332 = call i32 @lp_str_eq(ptr %t331, ptr @.str5866) %t333 = icmp ne i32 %t332, 0 br i1 %t333, label %then330, label %ifend332 then330: @@ -59332,7 +59385,7 @@ then330: br label %ret ifend332: %t334 = load ptr, ptr %t0 - %t335 = call i32 @lp_str_eq(ptr %t334, ptr @.str5864) + %t335 = call i32 @lp_str_eq(ptr %t334, ptr @.str5867) %t336 = icmp ne i32 %t335, 0 br i1 %t336, label %then333, label %ifend335 then333: @@ -59340,7 +59393,7 @@ then333: br label %ret ifend335: %t337 = load ptr, ptr %t0 - %t338 = call i32 @lp_str_eq(ptr %t337, ptr @.str5865) + %t338 = call i32 @lp_str_eq(ptr %t337, ptr @.str5868) %t339 = icmp ne i32 %t338, 0 br i1 %t339, label %then336, label %ifend338 then336: @@ -59348,7 +59401,7 @@ then336: br label %ret ifend338: %t340 = load ptr, ptr %t0 - %t341 = call i32 @lp_str_eq(ptr %t340, ptr @.str5866) + %t341 = call i32 @lp_str_eq(ptr %t340, ptr @.str5869) %t342 = icmp ne i32 %t341, 0 br i1 %t342, label %then339, label %ifend341 then339: @@ -59356,7 +59409,7 @@ then339: br label %ret ifend341: %t343 = load ptr, ptr %t0 - %t344 = call i32 @lp_str_eq(ptr %t343, ptr @.str5867) + %t344 = call i32 @lp_str_eq(ptr %t343, ptr @.str5870) %t345 = icmp ne i32 %t344, 0 br i1 %t345, label %then342, label %ifend344 then342: @@ -59364,7 +59417,7 @@ then342: br label %ret ifend344: %t346 = load ptr, ptr %t0 - %t347 = call i32 @lp_str_eq(ptr %t346, ptr @.str5868) + %t347 = call i32 @lp_str_eq(ptr %t346, ptr @.str5871) %t348 = icmp ne i32 %t347, 0 br i1 %t348, label %then345, label %ifend347 then345: @@ -59372,7 +59425,7 @@ then345: br label %ret ifend347: %t349 = load ptr, ptr %t0 - %t350 = call i32 @lp_str_eq(ptr %t349, ptr @.str5869) + %t350 = call i32 @lp_str_eq(ptr %t349, ptr @.str5872) %t351 = icmp ne i32 %t350, 0 br i1 %t351, label %then348, label %ifend350 then348: @@ -59380,7 +59433,7 @@ then348: br label %ret ifend350: %t352 = load ptr, ptr %t0 - %t353 = call i32 @lp_str_eq(ptr %t352, ptr @.str5870) + %t353 = call i32 @lp_str_eq(ptr %t352, ptr @.str5873) %t354 = icmp ne i32 %t353, 0 br i1 %t354, label %then351, label %ifend353 then351: @@ -59388,7 +59441,7 @@ then351: br label %ret ifend353: %t355 = load ptr, ptr %t0 - %t356 = call i32 @lp_str_eq(ptr %t355, ptr @.str5871) + %t356 = call i32 @lp_str_eq(ptr %t355, ptr @.str5874) %t357 = icmp ne i32 %t356, 0 br i1 %t357, label %then354, label %ifend356 then354: @@ -59396,7 +59449,7 @@ then354: br label %ret ifend356: %t358 = load ptr, ptr %t0 - %t359 = call i32 @lp_str_eq(ptr %t358, ptr @.str5872) + %t359 = call i32 @lp_str_eq(ptr %t358, ptr @.str5875) %t360 = icmp ne i32 %t359, 0 br i1 %t360, label %then357, label %ifend359 then357: @@ -59404,7 +59457,7 @@ then357: br label %ret ifend359: %t361 = load ptr, ptr %t0 - %t362 = call i32 @lp_str_eq(ptr %t361, ptr @.str5873) + %t362 = call i32 @lp_str_eq(ptr %t361, ptr @.str5876) %t363 = icmp ne i32 %t362, 0 br i1 %t363, label %then360, label %ifend362 then360: @@ -59412,7 +59465,7 @@ then360: br label %ret ifend362: %t364 = load ptr, ptr %t0 - %t365 = call i32 @lp_str_eq(ptr %t364, ptr @.str5874) + %t365 = call i32 @lp_str_eq(ptr %t364, ptr @.str5877) %t366 = icmp ne i32 %t365, 0 br i1 %t366, label %then363, label %ifend365 then363: @@ -59420,7 +59473,7 @@ then363: br label %ret ifend365: %t367 = load ptr, ptr %t0 - %t368 = call i32 @lp_str_eq(ptr %t367, ptr @.str5875) + %t368 = call i32 @lp_str_eq(ptr %t367, ptr @.str5878) %t369 = icmp ne i32 %t368, 0 br i1 %t369, label %then366, label %ifend368 then366: @@ -59428,7 +59481,7 @@ then366: br label %ret ifend368: %t370 = load ptr, ptr %t0 - %t371 = call i32 @lp_str_eq(ptr %t370, ptr @.str5876) + %t371 = call i32 @lp_str_eq(ptr %t370, ptr @.str5879) %t372 = icmp ne i32 %t371, 0 br i1 %t372, label %then369, label %ifend371 then369: @@ -59436,7 +59489,7 @@ then369: br label %ret ifend371: %t373 = load ptr, ptr %t0 - %t374 = call i32 @lp_str_eq(ptr %t373, ptr @.str5877) + %t374 = call i32 @lp_str_eq(ptr %t373, ptr @.str5880) %t375 = icmp ne i32 %t374, 0 br i1 %t375, label %then372, label %ifend374 then372: @@ -59444,7 +59497,7 @@ then372: br label %ret ifend374: %t376 = load ptr, ptr %t0 - %t377 = call i32 @lp_str_eq(ptr %t376, ptr @.str5878) + %t377 = call i32 @lp_str_eq(ptr %t376, ptr @.str5881) %t378 = icmp ne i32 %t377, 0 br i1 %t378, label %then375, label %ifend377 then375: @@ -59452,7 +59505,7 @@ then375: br label %ret ifend377: %t379 = load ptr, ptr %t0 - %t380 = call i32 @lp_str_eq(ptr %t379, ptr @.str5879) + %t380 = call i32 @lp_str_eq(ptr %t379, ptr @.str5882) %t381 = icmp ne i32 %t380, 0 br i1 %t381, label %then378, label %ifend380 then378: @@ -59460,7 +59513,7 @@ then378: br label %ret ifend380: %t382 = load ptr, ptr %t0 - %t383 = call i32 @lp_str_eq(ptr %t382, ptr @.str5880) + %t383 = call i32 @lp_str_eq(ptr %t382, ptr @.str5883) %t384 = icmp ne i32 %t383, 0 br i1 %t384, label %then381, label %ifend383 then381: @@ -59468,7 +59521,7 @@ then381: br label %ret ifend383: %t385 = load ptr, ptr %t0 - %t386 = call i32 @lp_str_eq(ptr %t385, ptr @.str5881) + %t386 = call i32 @lp_str_eq(ptr %t385, ptr @.str5884) %t387 = icmp ne i32 %t386, 0 br i1 %t387, label %then384, label %ifend386 then384: @@ -59476,7 +59529,7 @@ then384: br label %ret ifend386: %t388 = load ptr, ptr %t0 - %t389 = call i32 @lp_str_eq(ptr %t388, ptr @.str5882) + %t389 = call i32 @lp_str_eq(ptr %t388, ptr @.str5885) %t390 = icmp ne i32 %t389, 0 br i1 %t390, label %then387, label %ifend389 then387: @@ -59484,7 +59537,7 @@ then387: br label %ret ifend389: %t391 = load ptr, ptr %t0 - %t392 = call i32 @lp_str_eq(ptr %t391, ptr @.str5883) + %t392 = call i32 @lp_str_eq(ptr %t391, ptr @.str5886) %t393 = icmp ne i32 %t392, 0 br i1 %t393, label %then390, label %ifend392 then390: @@ -59492,7 +59545,7 @@ then390: br label %ret ifend392: %t394 = load ptr, ptr %t0 - %t395 = call i32 @lp_str_eq(ptr %t394, ptr @.str5884) + %t395 = call i32 @lp_str_eq(ptr %t394, ptr @.str5887) %t396 = icmp ne i32 %t395, 0 br i1 %t396, label %then393, label %ifend395 then393: @@ -59500,7 +59553,7 @@ then393: br label %ret ifend395: %t397 = load ptr, ptr %t0 - %t398 = call i32 @lp_str_eq(ptr %t397, ptr @.str5885) + %t398 = call i32 @lp_str_eq(ptr %t397, ptr @.str5888) %t399 = icmp ne i32 %t398, 0 br i1 %t399, label %then396, label %ifend398 then396: @@ -59508,7 +59561,7 @@ then396: br label %ret ifend398: %t400 = load ptr, ptr %t0 - %t401 = call i32 @lp_str_eq(ptr %t400, ptr @.str5886) + %t401 = call i32 @lp_str_eq(ptr %t400, ptr @.str5889) %t402 = icmp ne i32 %t401, 0 br i1 %t402, label %then399, label %ifend401 then399: @@ -59516,7 +59569,7 @@ then399: br label %ret ifend401: %t403 = load ptr, ptr %t0 - %t404 = call i32 @lp_str_eq(ptr %t403, ptr @.str5887) + %t404 = call i32 @lp_str_eq(ptr %t403, ptr @.str5890) %t405 = icmp ne i32 %t404, 0 br i1 %t405, label %then402, label %ifend404 then402: @@ -59524,7 +59577,7 @@ then402: br label %ret ifend404: %t406 = load ptr, ptr %t0 - %t407 = call i32 @lp_str_eq(ptr %t406, ptr @.str5888) + %t407 = call i32 @lp_str_eq(ptr %t406, ptr @.str5891) %t408 = icmp ne i32 %t407, 0 br i1 %t408, label %then405, label %ifend407 then405: @@ -59532,7 +59585,7 @@ then405: br label %ret ifend407: %t409 = load ptr, ptr %t0 - %t410 = call i32 @lp_str_eq(ptr %t409, ptr @.str5889) + %t410 = call i32 @lp_str_eq(ptr %t409, ptr @.str5892) %t411 = icmp ne i32 %t410, 0 br i1 %t411, label %then408, label %ifend410 then408: @@ -59540,7 +59593,7 @@ then408: br label %ret ifend410: %t412 = load ptr, ptr %t0 - %t413 = call i32 @lp_str_eq(ptr %t412, ptr @.str5890) + %t413 = call i32 @lp_str_eq(ptr %t412, ptr @.str5893) %t414 = icmp ne i32 %t413, 0 br i1 %t414, label %then411, label %ifend413 then411: @@ -59548,7 +59601,7 @@ then411: br label %ret ifend413: %t415 = load ptr, ptr %t0 - %t416 = call i32 @lp_str_eq(ptr %t415, ptr @.str5891) + %t416 = call i32 @lp_str_eq(ptr %t415, ptr @.str5894) %t417 = icmp ne i32 %t416, 0 br i1 %t417, label %then414, label %ifend416 then414: @@ -59556,7 +59609,7 @@ then414: br label %ret ifend416: %t418 = load ptr, ptr %t0 - %t419 = call i32 @lp_str_eq(ptr %t418, ptr @.str5892) + %t419 = call i32 @lp_str_eq(ptr %t418, ptr @.str5895) %t420 = icmp ne i32 %t419, 0 br i1 %t420, label %then417, label %ifend419 then417: @@ -59564,7 +59617,7 @@ then417: br label %ret ifend419: %t421 = load ptr, ptr %t0 - %t422 = call i32 @lp_str_eq(ptr %t421, ptr @.str5893) + %t422 = call i32 @lp_str_eq(ptr %t421, ptr @.str5896) %t423 = icmp ne i32 %t422, 0 br i1 %t423, label %then420, label %ifend422 then420: @@ -59572,7 +59625,7 @@ then420: br label %ret ifend422: %t424 = load ptr, ptr %t0 - %t425 = call i32 @lp_str_eq(ptr %t424, ptr @.str5894) + %t425 = call i32 @lp_str_eq(ptr %t424, ptr @.str5897) %t426 = icmp ne i32 %t425, 0 br i1 %t426, label %then423, label %ifend425 then423: @@ -59580,7 +59633,7 @@ then423: br label %ret ifend425: %t427 = load ptr, ptr %t0 - %t428 = call i32 @lp_str_eq(ptr %t427, ptr @.str5895) + %t428 = call i32 @lp_str_eq(ptr %t427, ptr @.str5898) %t429 = icmp ne i32 %t428, 0 br i1 %t429, label %then426, label %ifend428 then426: @@ -59588,7 +59641,7 @@ then426: br label %ret ifend428: %t430 = load ptr, ptr %t0 - %t431 = call i32 @lp_str_eq(ptr %t430, ptr @.str5896) + %t431 = call i32 @lp_str_eq(ptr %t430, ptr @.str5899) %t432 = icmp ne i32 %t431, 0 br i1 %t432, label %then429, label %ifend431 then429: @@ -59596,7 +59649,7 @@ then429: br label %ret ifend431: %t433 = load ptr, ptr %t0 - %t434 = call i32 @lp_str_eq(ptr %t433, ptr @.str5897) + %t434 = call i32 @lp_str_eq(ptr %t433, ptr @.str5900) %t435 = icmp ne i32 %t434, 0 br i1 %t435, label %then432, label %ifend434 then432: @@ -59604,7 +59657,7 @@ then432: br label %ret ifend434: %t436 = load ptr, ptr %t0 - %t437 = call i32 @lp_str_eq(ptr %t436, ptr @.str5898) + %t437 = call i32 @lp_str_eq(ptr %t436, ptr @.str5901) %t438 = icmp ne i32 %t437, 0 br i1 %t438, label %then435, label %ifend437 then435: @@ -59612,7 +59665,7 @@ then435: br label %ret ifend437: %t439 = load ptr, ptr %t0 - %t440 = call i32 @lp_str_eq(ptr %t439, ptr @.str5899) + %t440 = call i32 @lp_str_eq(ptr %t439, ptr @.str5902) %t441 = icmp ne i32 %t440, 0 br i1 %t441, label %then438, label %ifend440 then438: @@ -59620,7 +59673,7 @@ then438: br label %ret ifend440: %t442 = load ptr, ptr %t0 - %t443 = call i32 @lp_str_eq(ptr %t442, ptr @.str5900) + %t443 = call i32 @lp_str_eq(ptr %t442, ptr @.str5903) %t444 = icmp ne i32 %t443, 0 br i1 %t444, label %then441, label %ifend443 then441: @@ -59628,7 +59681,7 @@ then441: br label %ret ifend443: %t445 = load ptr, ptr %t0 - %t446 = call i32 @lp_str_eq(ptr %t445, ptr @.str5901) + %t446 = call i32 @lp_str_eq(ptr %t445, ptr @.str5904) %t447 = icmp ne i32 %t446, 0 br i1 %t447, label %then444, label %ifend446 then444: @@ -59636,7 +59689,7 @@ then444: br label %ret ifend446: %t448 = load ptr, ptr %t0 - %t449 = call i32 @lp_str_eq(ptr %t448, ptr @.str5902) + %t449 = call i32 @lp_str_eq(ptr %t448, ptr @.str5905) %t450 = icmp ne i32 %t449, 0 br i1 %t450, label %then447, label %ifend449 then447: @@ -59644,7 +59697,7 @@ then447: br label %ret ifend449: %t451 = load ptr, ptr %t0 - %t452 = call i32 @lp_str_eq(ptr %t451, ptr @.str5903) + %t452 = call i32 @lp_str_eq(ptr %t451, ptr @.str5906) %t453 = icmp ne i32 %t452, 0 br i1 %t453, label %then450, label %ifend452 then450: @@ -59652,7 +59705,7 @@ then450: br label %ret ifend452: %t454 = load ptr, ptr %t0 - %t455 = call i32 @lp_str_eq(ptr %t454, ptr @.str5904) + %t455 = call i32 @lp_str_eq(ptr %t454, ptr @.str5907) %t456 = icmp ne i32 %t455, 0 br i1 %t456, label %then453, label %ifend455 then453: @@ -59660,7 +59713,7 @@ then453: br label %ret ifend455: %t457 = load ptr, ptr %t0 - %t458 = call i32 @lp_str_eq(ptr %t457, ptr @.str5905) + %t458 = call i32 @lp_str_eq(ptr %t457, ptr @.str5908) %t459 = icmp ne i32 %t458, 0 br i1 %t459, label %then456, label %ifend458 then456: @@ -59668,7 +59721,7 @@ then456: br label %ret ifend458: %t460 = load ptr, ptr %t0 - %t461 = call i32 @lp_str_eq(ptr %t460, ptr @.str5906) + %t461 = call i32 @lp_str_eq(ptr %t460, ptr @.str5909) %t462 = icmp ne i32 %t461, 0 br i1 %t462, label %then459, label %ifend461 then459: @@ -59676,7 +59729,7 @@ then459: br label %ret ifend461: %t463 = load ptr, ptr %t0 - %t464 = call i32 @lp_str_eq(ptr %t463, ptr @.str5907) + %t464 = call i32 @lp_str_eq(ptr %t463, ptr @.str5910) %t465 = icmp ne i32 %t464, 0 br i1 %t465, label %then462, label %ifend464 then462: @@ -59684,7 +59737,7 @@ then462: br label %ret ifend464: %t466 = load ptr, ptr %t0 - %t467 = call i32 @lp_str_eq(ptr %t466, ptr @.str5908) + %t467 = call i32 @lp_str_eq(ptr %t466, ptr @.str5911) %t468 = icmp ne i32 %t467, 0 br i1 %t468, label %then465, label %ifend467 then465: @@ -59692,7 +59745,7 @@ then465: br label %ret ifend467: %t469 = load ptr, ptr %t0 - %t470 = call i32 @lp_str_eq(ptr %t469, ptr @.str5909) + %t470 = call i32 @lp_str_eq(ptr %t469, ptr @.str5912) %t471 = icmp ne i32 %t470, 0 br i1 %t471, label %then468, label %ifend470 then468: @@ -59700,7 +59753,7 @@ then468: br label %ret ifend470: %t472 = load ptr, ptr %t0 - %t473 = call i32 @lp_str_eq(ptr %t472, ptr @.str5910) + %t473 = call i32 @lp_str_eq(ptr %t472, ptr @.str5913) %t474 = icmp ne i32 %t473, 0 br i1 %t474, label %then471, label %ifend473 then471: @@ -59708,7 +59761,7 @@ then471: br label %ret ifend473: %t475 = load ptr, ptr %t0 - %t476 = call i32 @lp_str_eq(ptr %t475, ptr @.str5911) + %t476 = call i32 @lp_str_eq(ptr %t475, ptr @.str5914) %t477 = icmp ne i32 %t476, 0 br i1 %t477, label %then474, label %ifend476 then474: @@ -59716,7 +59769,7 @@ then474: br label %ret ifend476: %t478 = load ptr, ptr %t0 - %t479 = call i32 @lp_str_eq(ptr %t478, ptr @.str5912) + %t479 = call i32 @lp_str_eq(ptr %t478, ptr @.str5915) %t480 = icmp ne i32 %t479, 0 br i1 %t480, label %then477, label %ifend479 then477: @@ -59724,7 +59777,7 @@ then477: br label %ret ifend479: %t481 = load ptr, ptr %t0 - %t482 = call i32 @lp_str_eq(ptr %t481, ptr @.str5913) + %t482 = call i32 @lp_str_eq(ptr %t481, ptr @.str5916) %t483 = icmp ne i32 %t482, 0 br i1 %t483, label %then480, label %ifend482 then480: @@ -59732,7 +59785,7 @@ then480: br label %ret ifend482: %t484 = load ptr, ptr %t0 - %t485 = call i32 @lp_str_eq(ptr %t484, ptr @.str5914) + %t485 = call i32 @lp_str_eq(ptr %t484, ptr @.str5917) %t486 = icmp ne i32 %t485, 0 br i1 %t486, label %then483, label %ifend485 then483: @@ -59740,7 +59793,7 @@ then483: br label %ret ifend485: %t487 = load ptr, ptr %t0 - %t488 = call i32 @lp_str_eq(ptr %t487, ptr @.str5915) + %t488 = call i32 @lp_str_eq(ptr %t487, ptr @.str5918) %t489 = icmp ne i32 %t488, 0 br i1 %t489, label %then486, label %ifend488 then486: @@ -59748,7 +59801,7 @@ then486: br label %ret ifend488: %t490 = load ptr, ptr %t0 - %t491 = call i32 @lp_str_eq(ptr %t490, ptr @.str5916) + %t491 = call i32 @lp_str_eq(ptr %t490, ptr @.str5919) %t492 = icmp ne i32 %t491, 0 br i1 %t492, label %then489, label %ifend491 then489: @@ -59756,7 +59809,7 @@ then489: br label %ret ifend491: %t493 = load ptr, ptr %t0 - %t494 = call i32 @lp_str_eq(ptr %t493, ptr @.str5917) + %t494 = call i32 @lp_str_eq(ptr %t493, ptr @.str5920) %t495 = icmp ne i32 %t494, 0 br i1 %t495, label %then492, label %ifend494 then492: @@ -59764,7 +59817,7 @@ then492: br label %ret ifend494: %t496 = load ptr, ptr %t0 - %t497 = call i32 @lp_str_eq(ptr %t496, ptr @.str5918) + %t497 = call i32 @lp_str_eq(ptr %t496, ptr @.str5921) %t498 = icmp ne i32 %t497, 0 br i1 %t498, label %then495, label %ifend497 then495: @@ -59772,7 +59825,7 @@ then495: br label %ret ifend497: %t499 = load ptr, ptr %t0 - %t500 = call i32 @lp_str_eq(ptr %t499, ptr @.str5919) + %t500 = call i32 @lp_str_eq(ptr %t499, ptr @.str5922) %t501 = icmp ne i32 %t500, 0 br i1 %t501, label %then498, label %ifend500 then498: @@ -59780,7 +59833,7 @@ then498: br label %ret ifend500: %t502 = load ptr, ptr %t0 - %t503 = call i32 @lp_str_eq(ptr %t502, ptr @.str5920) + %t503 = call i32 @lp_str_eq(ptr %t502, ptr @.str5923) %t504 = icmp ne i32 %t503, 0 br i1 %t504, label %then501, label %ifend503 then501: @@ -59788,7 +59841,7 @@ then501: br label %ret ifend503: %t505 = load ptr, ptr %t0 - %t506 = call i32 @lp_str_eq(ptr %t505, ptr @.str5921) + %t506 = call i32 @lp_str_eq(ptr %t505, ptr @.str5924) %t507 = icmp ne i32 %t506, 0 br i1 %t507, label %then504, label %ifend506 then504: @@ -59796,7 +59849,7 @@ then504: br label %ret ifend506: %t508 = load ptr, ptr %t0 - %t509 = call i32 @lp_str_eq(ptr %t508, ptr @.str5922) + %t509 = call i32 @lp_str_eq(ptr %t508, ptr @.str5925) %t510 = icmp ne i32 %t509, 0 br i1 %t510, label %then507, label %ifend509 then507: @@ -59804,7 +59857,7 @@ then507: br label %ret ifend509: %t511 = load ptr, ptr %t0 - %t512 = call i32 @lp_str_eq(ptr %t511, ptr @.str5923) + %t512 = call i32 @lp_str_eq(ptr %t511, ptr @.str5926) %t513 = icmp ne i32 %t512, 0 br i1 %t513, label %then510, label %ifend512 then510: @@ -59812,7 +59865,7 @@ then510: br label %ret ifend512: %t514 = load ptr, ptr %t0 - %t515 = call i32 @lp_str_eq(ptr %t514, ptr @.str5924) + %t515 = call i32 @lp_str_eq(ptr %t514, ptr @.str5927) %t516 = icmp ne i32 %t515, 0 br i1 %t516, label %then513, label %ifend515 then513: @@ -59820,7 +59873,7 @@ then513: br label %ret ifend515: %t517 = load ptr, ptr %t0 - %t518 = call i32 @lp_str_eq(ptr %t517, ptr @.str5925) + %t518 = call i32 @lp_str_eq(ptr %t517, ptr @.str5928) %t519 = icmp ne i32 %t518, 0 br i1 %t519, label %then516, label %ifend518 then516: @@ -59828,7 +59881,7 @@ then516: br label %ret ifend518: %t520 = load ptr, ptr %t0 - %t521 = call i32 @lp_str_eq(ptr %t520, ptr @.str5926) + %t521 = call i32 @lp_str_eq(ptr %t520, ptr @.str5929) %t522 = icmp ne i32 %t521, 0 br i1 %t522, label %then519, label %ifend521 then519: @@ -59836,7 +59889,7 @@ then519: br label %ret ifend521: %t523 = load ptr, ptr %t0 - %t524 = call i32 @lp_str_eq(ptr %t523, ptr @.str5927) + %t524 = call i32 @lp_str_eq(ptr %t523, ptr @.str5930) %t525 = icmp ne i32 %t524, 0 br i1 %t525, label %then522, label %ifend524 then522: @@ -59844,7 +59897,7 @@ then522: br label %ret ifend524: %t526 = load ptr, ptr %t0 - %t527 = call i32 @lp_str_eq(ptr %t526, ptr @.str5928) + %t527 = call i32 @lp_str_eq(ptr %t526, ptr @.str5931) %t528 = icmp ne i32 %t527, 0 br i1 %t528, label %then525, label %ifend527 then525: @@ -59852,7 +59905,7 @@ then525: br label %ret ifend527: %t529 = load ptr, ptr %t0 - %t530 = call i32 @lp_str_eq(ptr %t529, ptr @.str5929) + %t530 = call i32 @lp_str_eq(ptr %t529, ptr @.str5932) %t531 = icmp ne i32 %t530, 0 br i1 %t531, label %then528, label %ifend530 then528: @@ -59860,7 +59913,7 @@ then528: br label %ret ifend530: %t532 = load ptr, ptr %t0 - %t533 = call i32 @lp_str_eq(ptr %t532, ptr @.str5930) + %t533 = call i32 @lp_str_eq(ptr %t532, ptr @.str5933) %t534 = icmp ne i32 %t533, 0 br i1 %t534, label %then531, label %ifend533 then531: @@ -59868,7 +59921,7 @@ then531: br label %ret ifend533: %t535 = load ptr, ptr %t0 - %t536 = call i32 @lp_str_eq(ptr %t535, ptr @.str5931) + %t536 = call i32 @lp_str_eq(ptr %t535, ptr @.str5934) %t537 = icmp ne i32 %t536, 0 br i1 %t537, label %then534, label %ifend536 then534: @@ -59876,7 +59929,7 @@ then534: br label %ret ifend536: %t538 = load ptr, ptr %t0 - %t539 = call i32 @lp_str_eq(ptr %t538, ptr @.str5932) + %t539 = call i32 @lp_str_eq(ptr %t538, ptr @.str5935) %t540 = icmp ne i32 %t539, 0 br i1 %t540, label %then537, label %ifend539 then537: @@ -59884,7 +59937,7 @@ then537: br label %ret ifend539: %t541 = load ptr, ptr %t0 - %t542 = call i32 @lp_str_eq(ptr %t541, ptr @.str5933) + %t542 = call i32 @lp_str_eq(ptr %t541, ptr @.str5936) %t543 = icmp ne i32 %t542, 0 br i1 %t543, label %then540, label %ifend542 then540: @@ -59892,7 +59945,7 @@ then540: br label %ret ifend542: %t544 = load ptr, ptr %t0 - %t545 = call i32 @lp_str_eq(ptr %t544, ptr @.str5934) + %t545 = call i32 @lp_str_eq(ptr %t544, ptr @.str5937) %t546 = icmp ne i32 %t545, 0 br i1 %t546, label %then543, label %ifend545 then543: @@ -59900,7 +59953,7 @@ then543: br label %ret ifend545: %t547 = load ptr, ptr %t0 - %t548 = call i32 @lp_str_eq(ptr %t547, ptr @.str5935) + %t548 = call i32 @lp_str_eq(ptr %t547, ptr @.str5938) %t549 = icmp ne i32 %t548, 0 br i1 %t549, label %then546, label %ifend548 then546: @@ -59908,7 +59961,7 @@ then546: br label %ret ifend548: %t550 = load ptr, ptr %t0 - %t551 = call i32 @lp_str_eq(ptr %t550, ptr @.str5936) + %t551 = call i32 @lp_str_eq(ptr %t550, ptr @.str5939) %t552 = icmp ne i32 %t551, 0 br i1 %t552, label %then549, label %ifend551 then549: @@ -59916,7 +59969,7 @@ then549: br label %ret ifend551: %t553 = load ptr, ptr %t0 - %t554 = call i32 @lp_str_eq(ptr %t553, ptr @.str5937) + %t554 = call i32 @lp_str_eq(ptr %t553, ptr @.str5940) %t555 = icmp ne i32 %t554, 0 br i1 %t555, label %then552, label %ifend554 then552: @@ -59924,7 +59977,7 @@ then552: br label %ret ifend554: %t556 = load ptr, ptr %t0 - %t557 = call i32 @lp_str_eq(ptr %t556, ptr @.str5938) + %t557 = call i32 @lp_str_eq(ptr %t556, ptr @.str5941) %t558 = icmp ne i32 %t557, 0 br i1 %t558, label %then555, label %ifend557 then555: @@ -59932,7 +59985,7 @@ then555: br label %ret ifend557: %t559 = load ptr, ptr %t0 - %t560 = call i32 @lp_str_eq(ptr %t559, ptr @.str5939) + %t560 = call i32 @lp_str_eq(ptr %t559, ptr @.str5942) %t561 = icmp ne i32 %t560, 0 br i1 %t561, label %then558, label %ifend560 then558: @@ -59940,7 +59993,7 @@ then558: br label %ret ifend560: %t562 = load ptr, ptr %t0 - %t563 = call i32 @lp_str_eq(ptr %t562, ptr @.str5940) + %t563 = call i32 @lp_str_eq(ptr %t562, ptr @.str5943) %t564 = icmp ne i32 %t563, 0 br i1 %t564, label %then561, label %ifend563 then561: @@ -59948,7 +60001,7 @@ then561: br label %ret ifend563: %t565 = load ptr, ptr %t0 - %t566 = call i32 @lp_str_eq(ptr %t565, ptr @.str5941) + %t566 = call i32 @lp_str_eq(ptr %t565, ptr @.str5944) %t567 = icmp ne i32 %t566, 0 br i1 %t567, label %then564, label %ifend566 then564: @@ -59956,7 +60009,7 @@ then564: br label %ret ifend566: %t568 = load ptr, ptr %t0 - %t569 = call i32 @lp_str_eq(ptr %t568, ptr @.str5942) + %t569 = call i32 @lp_str_eq(ptr %t568, ptr @.str5945) %t570 = icmp ne i32 %t569, 0 br i1 %t570, label %then567, label %ifend569 then567: @@ -59964,7 +60017,7 @@ then567: br label %ret ifend569: %t571 = load ptr, ptr %t0 - %t572 = call i32 @lp_str_eq(ptr %t571, ptr @.str5943) + %t572 = call i32 @lp_str_eq(ptr %t571, ptr @.str5946) %t573 = icmp ne i32 %t572, 0 br i1 %t573, label %then570, label %ifend572 then570: @@ -59972,7 +60025,7 @@ then570: br label %ret ifend572: %t574 = load ptr, ptr %t0 - %t575 = call i32 @lp_str_eq(ptr %t574, ptr @.str5944) + %t575 = call i32 @lp_str_eq(ptr %t574, ptr @.str5947) %t576 = icmp ne i32 %t575, 0 br i1 %t576, label %then573, label %ifend575 then573: @@ -59980,7 +60033,7 @@ then573: br label %ret ifend575: %t577 = load ptr, ptr %t0 - %t578 = call i32 @lp_str_eq(ptr %t577, ptr @.str5945) + %t578 = call i32 @lp_str_eq(ptr %t577, ptr @.str5948) %t579 = icmp ne i32 %t578, 0 br i1 %t579, label %then576, label %ifend578 then576: @@ -59988,7 +60041,7 @@ then576: br label %ret ifend578: %t580 = load ptr, ptr %t0 - %t581 = call i32 @lp_str_eq(ptr %t580, ptr @.str5946) + %t581 = call i32 @lp_str_eq(ptr %t580, ptr @.str5949) %t582 = icmp ne i32 %t581, 0 br i1 %t582, label %then579, label %ifend581 then579: @@ -59996,7 +60049,7 @@ then579: br label %ret ifend581: %t583 = load ptr, ptr %t0 - %t584 = call i32 @lp_str_eq(ptr %t583, ptr @.str5947) + %t584 = call i32 @lp_str_eq(ptr %t583, ptr @.str5950) %t585 = icmp ne i32 %t584, 0 br i1 %t585, label %then582, label %ifend584 then582: @@ -60004,7 +60057,7 @@ then582: br label %ret ifend584: %t586 = load ptr, ptr %t0 - %t587 = call i32 @lp_str_eq(ptr %t586, ptr @.str5948) + %t587 = call i32 @lp_str_eq(ptr %t586, ptr @.str5951) %t588 = icmp ne i32 %t587, 0 br i1 %t588, label %then585, label %ifend587 then585: @@ -60012,7 +60065,7 @@ then585: br label %ret ifend587: %t589 = load ptr, ptr %t0 - %t590 = call i32 @lp_str_eq(ptr %t589, ptr @.str5949) + %t590 = call i32 @lp_str_eq(ptr %t589, ptr @.str5952) %t591 = icmp ne i32 %t590, 0 br i1 %t591, label %then588, label %ifend590 then588: @@ -60020,7 +60073,7 @@ then588: br label %ret ifend590: %t592 = load ptr, ptr %t0 - %t593 = call i32 @lp_str_eq(ptr %t592, ptr @.str5950) + %t593 = call i32 @lp_str_eq(ptr %t592, ptr @.str5953) %t594 = icmp ne i32 %t593, 0 br i1 %t594, label %then591, label %ifend593 then591: @@ -60028,7 +60081,7 @@ then591: br label %ret ifend593: %t595 = load ptr, ptr %t0 - %t596 = call i32 @lp_str_eq(ptr %t595, ptr @.str5951) + %t596 = call i32 @lp_str_eq(ptr %t595, ptr @.str5954) %t597 = icmp ne i32 %t596, 0 br i1 %t597, label %then594, label %ifend596 then594: @@ -60036,7 +60089,7 @@ then594: br label %ret ifend596: %t598 = load ptr, ptr %t0 - %t599 = call i32 @lp_str_eq(ptr %t598, ptr @.str5952) + %t599 = call i32 @lp_str_eq(ptr %t598, ptr @.str5955) %t600 = icmp ne i32 %t599, 0 br i1 %t600, label %then597, label %ifend599 then597: @@ -60044,7 +60097,7 @@ then597: br label %ret ifend599: %t601 = load ptr, ptr %t0 - %t602 = call i32 @lp_str_eq(ptr %t601, ptr @.str5953) + %t602 = call i32 @lp_str_eq(ptr %t601, ptr @.str5956) %t603 = icmp ne i32 %t602, 0 br i1 %t603, label %then600, label %ifend602 then600: @@ -60052,7 +60105,7 @@ then600: br label %ret ifend602: %t604 = load ptr, ptr %t0 - %t605 = call i32 @lp_str_eq(ptr %t604, ptr @.str5954) + %t605 = call i32 @lp_str_eq(ptr %t604, ptr @.str5957) %t606 = icmp ne i32 %t605, 0 br i1 %t606, label %then603, label %ifend605 then603: @@ -60060,7 +60113,7 @@ then603: br label %ret ifend605: %t607 = load ptr, ptr %t0 - %t608 = call i32 @lp_str_eq(ptr %t607, ptr @.str5955) + %t608 = call i32 @lp_str_eq(ptr %t607, ptr @.str5958) %t609 = icmp ne i32 %t608, 0 br i1 %t609, label %then606, label %ifend608 then606: @@ -60068,7 +60121,7 @@ then606: br label %ret ifend608: %t610 = load ptr, ptr %t0 - %t611 = call i32 @lp_str_eq(ptr %t610, ptr @.str5956) + %t611 = call i32 @lp_str_eq(ptr %t610, ptr @.str5959) %t612 = icmp ne i32 %t611, 0 br i1 %t612, label %then609, label %ifend611 then609: @@ -60076,7 +60129,7 @@ then609: br label %ret ifend611: %t613 = load ptr, ptr %t0 - %t614 = call i32 @lp_str_eq(ptr %t613, ptr @.str5957) + %t614 = call i32 @lp_str_eq(ptr %t613, ptr @.str5960) %t615 = icmp ne i32 %t614, 0 br i1 %t615, label %then612, label %ifend614 then612: @@ -60084,7 +60137,7 @@ then612: br label %ret ifend614: %t616 = load ptr, ptr %t0 - %t617 = call i32 @lp_str_eq(ptr %t616, ptr @.str5958) + %t617 = call i32 @lp_str_eq(ptr %t616, ptr @.str5961) %t618 = icmp ne i32 %t617, 0 br i1 %t618, label %then615, label %ifend617 then615: @@ -60092,7 +60145,7 @@ then615: br label %ret ifend617: %t619 = load ptr, ptr %t0 - %t620 = call i32 @lp_str_eq(ptr %t619, ptr @.str5959) + %t620 = call i32 @lp_str_eq(ptr %t619, ptr @.str5962) %t621 = icmp ne i32 %t620, 0 br i1 %t621, label %then618, label %ifend620 then618: @@ -60100,7 +60153,7 @@ then618: br label %ret ifend620: %t622 = load ptr, ptr %t0 - %t623 = call i32 @lp_str_eq(ptr %t622, ptr @.str5960) + %t623 = call i32 @lp_str_eq(ptr %t622, ptr @.str5963) %t624 = icmp ne i32 %t623, 0 br i1 %t624, label %then621, label %ifend623 then621: @@ -60108,7 +60161,7 @@ then621: br label %ret ifend623: %t625 = load ptr, ptr %t0 - %t626 = call i32 @lp_str_eq(ptr %t625, ptr @.str5961) + %t626 = call i32 @lp_str_eq(ptr %t625, ptr @.str5964) %t627 = icmp ne i32 %t626, 0 br i1 %t627, label %then624, label %ifend626 then624: @@ -60116,7 +60169,7 @@ then624: br label %ret ifend626: %t628 = load ptr, ptr %t0 - %t629 = call i32 @lp_str_eq(ptr %t628, ptr @.str5962) + %t629 = call i32 @lp_str_eq(ptr %t628, ptr @.str5965) %t630 = icmp ne i32 %t629, 0 br i1 %t630, label %then627, label %ifend629 then627: @@ -60124,7 +60177,7 @@ then627: br label %ret ifend629: %t631 = load ptr, ptr %t0 - %t632 = call i32 @lp_str_eq(ptr %t631, ptr @.str5963) + %t632 = call i32 @lp_str_eq(ptr %t631, ptr @.str5966) %t633 = icmp ne i32 %t632, 0 br i1 %t633, label %then630, label %ifend632 then630: @@ -60132,7 +60185,7 @@ then630: br label %ret ifend632: %t634 = load ptr, ptr %t0 - %t635 = call i32 @lp_str_eq(ptr %t634, ptr @.str5964) + %t635 = call i32 @lp_str_eq(ptr %t634, ptr @.str5967) %t636 = icmp ne i32 %t635, 0 br i1 %t636, label %then633, label %ifend635 then633: @@ -60140,7 +60193,7 @@ then633: br label %ret ifend635: %t637 = load ptr, ptr %t0 - %t638 = call i32 @lp_str_eq(ptr %t637, ptr @.str5965) + %t638 = call i32 @lp_str_eq(ptr %t637, ptr @.str5968) %t639 = icmp ne i32 %t638, 0 br i1 %t639, label %then636, label %ifend638 then636: @@ -60148,7 +60201,7 @@ then636: br label %ret ifend638: %t640 = load ptr, ptr %t0 - %t641 = call i32 @lp_str_eq(ptr %t640, ptr @.str5966) + %t641 = call i32 @lp_str_eq(ptr %t640, ptr @.str5969) %t642 = icmp ne i32 %t641, 0 br i1 %t642, label %then639, label %ifend641 then639: @@ -60156,7 +60209,7 @@ then639: br label %ret ifend641: %t643 = load ptr, ptr %t0 - %t644 = call i32 @lp_str_eq(ptr %t643, ptr @.str5967) + %t644 = call i32 @lp_str_eq(ptr %t643, ptr @.str5970) %t645 = icmp ne i32 %t644, 0 br i1 %t645, label %then642, label %ifend644 then642: @@ -60164,7 +60217,7 @@ then642: br label %ret ifend644: %t646 = load ptr, ptr %t0 - %t647 = call i32 @lp_str_eq(ptr %t646, ptr @.str5968) + %t647 = call i32 @lp_str_eq(ptr %t646, ptr @.str5971) %t648 = icmp ne i32 %t647, 0 br i1 %t648, label %then645, label %ifend647 then645: @@ -60172,7 +60225,7 @@ then645: br label %ret ifend647: %t649 = load ptr, ptr %t0 - %t650 = call i32 @lp_str_eq(ptr %t649, ptr @.str5969) + %t650 = call i32 @lp_str_eq(ptr %t649, ptr @.str5972) %t651 = icmp ne i32 %t650, 0 br i1 %t651, label %then648, label %ifend650 then648: @@ -60180,7 +60233,7 @@ then648: br label %ret ifend650: %t652 = load ptr, ptr %t0 - %t653 = call i32 @lp_str_eq(ptr %t652, ptr @.str5970) + %t653 = call i32 @lp_str_eq(ptr %t652, ptr @.str5973) %t654 = icmp ne i32 %t653, 0 br i1 %t654, label %then651, label %ifend653 then651: @@ -60188,7 +60241,7 @@ then651: br label %ret ifend653: %t655 = load ptr, ptr %t0 - %t656 = call i32 @lp_str_eq(ptr %t655, ptr @.str5971) + %t656 = call i32 @lp_str_eq(ptr %t655, ptr @.str5974) %t657 = icmp ne i32 %t656, 0 br i1 %t657, label %then654, label %ifend656 then654: @@ -60196,7 +60249,7 @@ then654: br label %ret ifend656: %t658 = load ptr, ptr %t0 - %t659 = call i32 @lp_str_eq(ptr %t658, ptr @.str5972) + %t659 = call i32 @lp_str_eq(ptr %t658, ptr @.str5975) %t660 = icmp ne i32 %t659, 0 br i1 %t660, label %then657, label %ifend659 then657: @@ -60204,7 +60257,7 @@ then657: br label %ret ifend659: %t661 = load ptr, ptr %t0 - %t662 = call i32 @lp_str_eq(ptr %t661, ptr @.str5973) + %t662 = call i32 @lp_str_eq(ptr %t661, ptr @.str5976) %t663 = icmp ne i32 %t662, 0 br i1 %t663, label %then660, label %ifend662 then660: @@ -60227,7 +60280,7 @@ entry: %t79 = alloca i32 store ptr %arg_name, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call i32 @lp_str_eq(ptr %t1, ptr @.str5974) + %t2 = call i32 @lp_str_eq(ptr %t1, ptr @.str5977) %t3 = icmp ne i32 %t2, 0 br i1 %t3, label %then0, label %ifend2 then0: @@ -60235,7 +60288,7 @@ then0: br label %ret ifend2: %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str5975) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str5978) %t6 = icmp ne i32 %t5, 0 br i1 %t6, label %then3, label %ifend5 then3: @@ -60243,7 +60296,7 @@ then3: br label %ret ifend5: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str5976) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str5979) %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then6, label %ifend8 then6: @@ -60251,7 +60304,7 @@ then6: br label %ret ifend8: %t10 = load ptr, ptr %t0 - %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str5977) + %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str5980) %t12 = icmp ne i32 %t11, 0 br i1 %t12, label %then9, label %ifend11 then9: @@ -60259,7 +60312,7 @@ then9: br label %ret ifend11: %t13 = load ptr, ptr %t0 - %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str5978) + %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str5981) %t15 = icmp ne i32 %t14, 0 br i1 %t15, label %then12, label %ifend14 then12: @@ -60267,7 +60320,7 @@ then12: br label %ret ifend14: %t16 = load ptr, ptr %t0 - %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str5979) + %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str5982) %t18 = icmp ne i32 %t17, 0 br i1 %t18, label %then15, label %ifend17 then15: @@ -60275,7 +60328,7 @@ then15: br label %ret ifend17: %t19 = load ptr, ptr %t0 - %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str5980) + %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str5983) %t21 = icmp ne i32 %t20, 0 br i1 %t21, label %then18, label %ifend20 then18: @@ -60283,7 +60336,7 @@ then18: br label %ret ifend20: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str5981) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str5984) %t24 = icmp ne i32 %t23, 0 br i1 %t24, label %then21, label %ifend23 then21: @@ -60291,7 +60344,7 @@ then21: br label %ret ifend23: %t25 = load ptr, ptr %t0 - %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str5982) + %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str5985) %t27 = icmp ne i32 %t26, 0 br i1 %t27, label %then24, label %ifend26 then24: @@ -60299,7 +60352,7 @@ then24: br label %ret ifend26: %t28 = load ptr, ptr %t0 - %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str5983) + %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str5986) %t30 = icmp ne i32 %t29, 0 br i1 %t30, label %then27, label %ifend29 then27: @@ -60307,7 +60360,7 @@ then27: br label %ret ifend29: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str5984) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str5987) %t33 = icmp ne i32 %t32, 0 br i1 %t33, label %then30, label %ifend32 then30: @@ -60315,7 +60368,7 @@ then30: br label %ret ifend32: %t34 = load ptr, ptr %t0 - %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str5985) + %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str5988) %t36 = icmp ne i32 %t35, 0 br i1 %t36, label %then33, label %ifend35 then33: @@ -60323,7 +60376,7 @@ then33: br label %ret ifend35: %t37 = load ptr, ptr %t0 - %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str5986) + %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str5989) %t39 = icmp ne i32 %t38, 0 br i1 %t39, label %then36, label %ifend38 then36: @@ -60331,7 +60384,7 @@ then36: br label %ret ifend38: %t40 = load ptr, ptr %t0 - %t41 = call i32 @lp_str_eq(ptr %t40, ptr @.str5987) + %t41 = call i32 @lp_str_eq(ptr %t40, ptr @.str5990) %t42 = icmp ne i32 %t41, 0 br i1 %t42, label %then39, label %ifend41 then39: @@ -60339,7 +60392,7 @@ then39: br label %ret ifend41: %t43 = load ptr, ptr %t0 - %t44 = call i32 @lp_str_eq(ptr %t43, ptr @.str5988) + %t44 = call i32 @lp_str_eq(ptr %t43, ptr @.str5991) %t45 = icmp ne i32 %t44, 0 br i1 %t45, label %then42, label %ifend44 then42: @@ -60347,7 +60400,7 @@ then42: br label %ret ifend44: %t46 = load ptr, ptr %t0 - %t47 = call i32 @lp_str_eq(ptr %t46, ptr @.str5989) + %t47 = call i32 @lp_str_eq(ptr %t46, ptr @.str5992) %t48 = icmp ne i32 %t47, 0 br i1 %t48, label %then45, label %ifend47 then45: @@ -60355,7 +60408,7 @@ then45: br label %ret ifend47: %t49 = load ptr, ptr %t0 - %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str5990) + %t50 = call i32 @lp_str_eq(ptr %t49, ptr @.str5993) %t51 = icmp ne i32 %t50, 0 br i1 %t51, label %then48, label %ifend50 then48: @@ -60363,7 +60416,7 @@ then48: br label %ret ifend50: %t52 = load ptr, ptr %t0 - %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str5991) + %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str5994) %t54 = icmp ne i32 %t53, 0 br i1 %t54, label %then51, label %ifend53 then51: @@ -60371,7 +60424,7 @@ then51: br label %ret ifend53: %t55 = load ptr, ptr %t0 - %t56 = call i32 @lp_str_eq(ptr %t55, ptr @.str5992) + %t56 = call i32 @lp_str_eq(ptr %t55, ptr @.str5995) %t57 = icmp ne i32 %t56, 0 br i1 %t57, label %then54, label %ifend56 then54: @@ -60379,7 +60432,7 @@ then54: br label %ret ifend56: %t58 = load ptr, ptr %t0 - %t59 = call i32 @lp_str_eq(ptr %t58, ptr @.str5993) + %t59 = call i32 @lp_str_eq(ptr %t58, ptr @.str5996) %t60 = icmp ne i32 %t59, 0 br i1 %t60, label %then57, label %ifend59 then57: @@ -60387,7 +60440,7 @@ then57: br label %ret ifend59: %t61 = load ptr, ptr %t0 - %t62 = call i32 @lp_str_eq(ptr %t61, ptr @.str5994) + %t62 = call i32 @lp_str_eq(ptr %t61, ptr @.str5997) %t63 = icmp ne i32 %t62, 0 br i1 %t63, label %then60, label %ifend62 then60: @@ -60395,7 +60448,7 @@ then60: br label %ret ifend62: %t64 = load ptr, ptr %t0 - %t65 = call i32 @lp_str_eq(ptr %t64, ptr @.str5995) + %t65 = call i32 @lp_str_eq(ptr %t64, ptr @.str5998) %t66 = icmp ne i32 %t65, 0 br i1 %t66, label %then63, label %ifend65 then63: @@ -60458,13 +60511,13 @@ entry: %t5 = alloca ptr store ptr %arg_llt, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call ptr @lp_str_concat(ptr @.str5996, ptr %t1) - %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str5997) + %t2 = call ptr @lp_str_concat(ptr @.str5999, ptr %t1) + %t3 = call ptr @lp_str_concat(ptr %t2, ptr @.str6000) %t4 = call ptr @fn_emit_bind(ptr %t3) store ptr %t4, ptr %t5 %t6 = load ptr, ptr %t5 - %t7 = call ptr @lp_str_concat(ptr @.str5998, ptr %t6) - %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str5999) + %t7 = call ptr @lp_str_concat(ptr @.str6001, ptr %t6) + %t8 = call ptr @lp_str_concat(ptr %t7, ptr @.str6002) %t9 = call ptr @fn_emit_bind(ptr %t8) store ptr %t9, ptr %retval br label %ret @@ -60568,7 +60621,7 @@ entry: %t8 = icmp ne i32 %t7, 0 br i1 %t8, label %then0, label %ifend2 then0: - call void @fn_perr(ptr @.str6000) + call void @fn_perr(ptr @.str6003) br label %ifend2 ifend2: %t9 = load ptr, ptr %t0 @@ -60578,8 +60631,8 @@ ifend2: %t13 = call ptr @fn_emit_sizeof(ptr %t12) store ptr %t13, ptr %t14 %t15 = load ptr, ptr %t14 - %t16 = call ptr @lp_str_concat(ptr @.str6001, ptr %t15) - %t17 = call ptr @lp_str_concat(ptr %t16, ptr @.str6002) + %t16 = call ptr @lp_str_concat(ptr @.str6004, ptr %t15) + %t17 = call ptr @lp_str_concat(ptr %t16, ptr @.str6005) %t18 = call ptr @fn_emit_bind(ptr %t17) store ptr %t18, ptr %t19 store i32 0, ptr %t20 @@ -60607,32 +60660,32 @@ wbody4: store ptr %t37, ptr %t38 %t39 = call ptr @fn_nreg() store ptr %t39, ptr %t40 - call void @fn_emit(ptr @.str6003) + call void @fn_emit(ptr @.str6006) %t41 = load ptr, ptr %t40 call void @fn_emit(ptr %t41) - call void @fn_emit(ptr @.str6004) + call void @fn_emit(ptr @.str6007) %t42 = load ptr, ptr %t11 call void @fn_emit(ptr %t42) - call void @fn_emit(ptr @.str6005) + call void @fn_emit(ptr @.str6008) %t43 = load ptr, ptr %t19 call void @fn_emit(ptr %t43) - call void @fn_emit(ptr @.str6006) + call void @fn_emit(ptr @.str6009) %t44 = load i32, ptr %t20 %t45 = call ptr @fn_itoa(i32 %t44) call void @fn_emit(ptr %t45) - call void @fn_emit(ptr @.str6007) + call void @fn_emit(ptr @.str6010) %t46 = load ptr, ptr %t38 %t47 = getelementptr inbounds %Cmp_Node, ptr %t46, i32 0, i32 3 %t48 = load ptr, ptr %t47 %t49 = call ptr @fn_llty(ptr %t48) store ptr %t49, ptr %t50 - store ptr @.str6008, ptr %t51 + store ptr @.str6011, ptr %t51 %t52 = load ptr, ptr %t50 - %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str6009) + %t53 = call i32 @lp_str_eq(ptr %t52, ptr @.str6012) %t54 = icmp ne i32 %t53, 0 br i1 %t54, label %then6, label %ifend8 then6: - store ptr @.str6010, ptr %t51 + store ptr @.str6013, ptr %t51 br label %ifend8 ifend8: %t55 = load ptr, ptr %t38 @@ -60675,16 +60728,16 @@ then12: store ptr %t84, ptr %t51 br label %ifend14 ifend14: - call void @fn_emit(ptr @.str6011) + call void @fn_emit(ptr @.str6014) %t85 = load ptr, ptr %t50 call void @fn_emit(ptr %t85) - call void @fn_emit(ptr @.str6012) + call void @fn_emit(ptr @.str6015) %t86 = load ptr, ptr %t51 call void @fn_emit(ptr %t86) - call void @fn_emit(ptr @.str6013) + call void @fn_emit(ptr @.str6016) %t87 = load ptr, ptr %t40 call void @fn_emit(ptr %t87) - call void @fn_emit(ptr @.str6014) + call void @fn_emit(ptr @.str6017) %t88 = load i32, ptr %t20 %t89 = add i32 %t88, 1 store i32 %t89, ptr %t20 @@ -60710,52 +60763,52 @@ entry: %t14 = alloca ptr %t19 = alloca ptr store ptr %arg_ty, ptr %t0 - %t1 = call ptr @fn_emit_sizeof(ptr @.str6015) + %t1 = call ptr @fn_emit_sizeof(ptr @.str6018) store ptr %t1, ptr %t2 %t3 = load ptr, ptr %t2 - %t4 = call ptr @lp_str_concat(ptr @.str6016, ptr %t3) - %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str6017) + %t4 = call ptr @lp_str_concat(ptr @.str6019, ptr %t3) + %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str6020) %t6 = call ptr @fn_emit_bind(ptr %t5) store ptr %t6, ptr %t7 %t8 = call ptr @fn_nreg() store ptr %t8, ptr %t9 - call void @fn_emit(ptr @.str6018) + call void @fn_emit(ptr @.str6021) %t10 = load ptr, ptr %t9 call void @fn_emit(ptr %t10) - call void @fn_emit(ptr @.str6019) + call void @fn_emit(ptr @.str6022) %t11 = load ptr, ptr %t7 call void @fn_emit(ptr %t11) - call void @fn_emit(ptr @.str6020) - call void @fn_emit(ptr @.str6021) + call void @fn_emit(ptr @.str6023) + call void @fn_emit(ptr @.str6024) %t12 = load ptr, ptr %t9 call void @fn_emit(ptr %t12) - call void @fn_emit(ptr @.str6022) + call void @fn_emit(ptr @.str6025) %t13 = call ptr @fn_nreg() store ptr %t13, ptr %t14 - call void @fn_emit(ptr @.str6023) + call void @fn_emit(ptr @.str6026) %t15 = load ptr, ptr %t14 call void @fn_emit(ptr %t15) - call void @fn_emit(ptr @.str6024) + call void @fn_emit(ptr @.str6027) %t16 = load ptr, ptr %t7 call void @fn_emit(ptr %t16) - call void @fn_emit(ptr @.str6025) - call void @fn_emit(ptr @.str6026) + call void @fn_emit(ptr @.str6028) + call void @fn_emit(ptr @.str6029) %t17 = load ptr, ptr %t14 call void @fn_emit(ptr %t17) - call void @fn_emit(ptr @.str6027) + call void @fn_emit(ptr @.str6030) %t18 = call ptr @fn_nreg() store ptr %t18, ptr %t19 - call void @fn_emit(ptr @.str6028) + call void @fn_emit(ptr @.str6031) %t20 = load ptr, ptr %t19 call void @fn_emit(ptr %t20) - call void @fn_emit(ptr @.str6029) + call void @fn_emit(ptr @.str6032) %t21 = load ptr, ptr %t7 call void @fn_emit(ptr %t21) - call void @fn_emit(ptr @.str6030) - call void @fn_emit(ptr @.str6031) + call void @fn_emit(ptr @.str6033) + call void @fn_emit(ptr @.str6034) %t22 = load ptr, ptr %t19 call void @fn_emit(ptr %t22) - call void @fn_emit(ptr @.str6032) + call void @fn_emit(ptr @.str6035) %t23 = load ptr, ptr %t7 %t24 = load ptr, ptr %t0 %t25 = call ptr @fn_val(ptr %t23, ptr %t24) @@ -60776,17 +60829,17 @@ entry: store i32 %arg_i, ptr %t1 %t2 = call ptr @fn_nreg() store ptr %t2, ptr %t3 - call void @fn_emit(ptr @.str6033) + call void @fn_emit(ptr @.str6036) %t4 = load ptr, ptr %t3 call void @fn_emit(ptr %t4) - call void @fn_emit(ptr @.str6034) + call void @fn_emit(ptr @.str6037) %t5 = load ptr, ptr %t0 call void @fn_emit(ptr %t5) - call void @fn_emit(ptr @.str6035) + call void @fn_emit(ptr @.str6038) %t6 = load i32, ptr %t1 %t7 = call ptr @fn_itoa(i32 %t6) call void @fn_emit(ptr %t7) - call void @fn_emit(ptr @.str6036) + call void @fn_emit(ptr @.str6039) %t8 = load ptr, ptr %t3 store ptr %t8, ptr %retval br label %ret @@ -60825,24 +60878,24 @@ then0: %t18 = call ptr @fn_slice_field(ptr %t17, i32 1) store ptr %t18, ptr %t19 %t20 = load ptr, ptr %t19 - %t21 = call ptr @lp_str_concat(ptr @.str6037, ptr %t20) + %t21 = call ptr @lp_str_concat(ptr @.str6040, ptr %t20) %t22 = call ptr @fn_emit_bind(ptr %t21) - %t23 = call ptr @fn_val(ptr %t22, ptr @.str6038) + %t23 = call ptr @fn_val(ptr %t22, ptr @.str6041) store ptr %t23, ptr %retval br label %ret ifend2: %t24 = load ptr, ptr %t9 %t25 = getelementptr inbounds %Cmp_Val, ptr %t24, i32 0, i32 0 %t26 = load ptr, ptr %t25 - %t27 = call ptr @lp_str_concat(ptr @.str6039, ptr %t26) - %t28 = call ptr @lp_str_concat(ptr %t27, ptr @.str6040) + %t27 = call ptr @lp_str_concat(ptr @.str6042, ptr %t26) + %t28 = call ptr @lp_str_concat(ptr %t27, ptr @.str6043) %t29 = call ptr @fn_emit_bind(ptr %t28) store ptr %t29, ptr %t30 %t31 = load ptr, ptr %t30 - %t32 = call ptr @lp_str_concat(ptr @.str6041, ptr %t31) - %t33 = call ptr @lp_str_concat(ptr %t32, ptr @.str6042) + %t32 = call ptr @lp_str_concat(ptr @.str6044, ptr %t31) + %t33 = call ptr @lp_str_concat(ptr %t32, ptr @.str6045) %t34 = call ptr @fn_emit_bind(ptr %t33) - %t35 = call ptr @fn_val(ptr %t34, ptr @.str6043) + %t35 = call ptr @fn_val(ptr %t34, ptr @.str6046) store ptr %t35, ptr %retval br label %ret ret: @@ -60882,7 +60935,7 @@ entry: %t24 = load ptr, ptr %t23 %t25 = call ptr @fn_emit_expr(ptr %t24) call void @fn_emit_push_into(ptr %t12, ptr %t17, ptr %t25) - %t26 = call ptr @fn_val(ptr @.str6044, ptr @.str6045) + %t26 = call ptr @fn_val(ptr @.str6047, ptr @.str6048) store ptr %t26, ptr %retval br label %ret ret: @@ -60911,7 +60964,7 @@ entry: %t8 = icmp ne i32 %t7, 0 br i1 %t8, label %then0, label %ifend2 then0: - call void @fn_perr(ptr @.str6046) + call void @fn_perr(ptr @.str6049) br label %ifend2 ifend2: %t9 = load ptr, ptr %t0 @@ -60926,7 +60979,7 @@ ifend2: %t18 = load ptr, ptr %t17 %t19 = getelementptr inbounds %Cmp_Val, ptr %t18, i32 0, i32 1 %t20 = load ptr, ptr %t19 - %t21 = call ptr @lp_str_concat(ptr @.str6047, ptr %t20) + %t21 = call ptr @lp_str_concat(ptr @.str6050, ptr %t20) store ptr %t21, ptr %t22 %t23 = load ptr, ptr %t17 %t24 = getelementptr inbounds %Cmp_Val, ptr %t23, i32 0, i32 1 @@ -60981,8 +61034,8 @@ then6: %t66 = load ptr, ptr %t17 %t67 = getelementptr inbounds %Cmp_Val, ptr %t66, i32 0, i32 1 %t68 = load ptr, ptr %t67 - %t69 = call ptr @lp_str_concat(ptr @.str6048, ptr %t68) - %t70 = call ptr @lp_str_concat(ptr %t69, ptr @.str6049) + %t69 = call ptr @lp_str_concat(ptr @.str6051, ptr %t68) + %t70 = call ptr @lp_str_concat(ptr %t69, ptr @.str6052) %t71 = load ptr, ptr %t55 %t72 = getelementptr inbounds %Cmp_Val, ptr %t71, i32 0, i32 1 %t73 = load ptr, ptr %t72 @@ -61046,50 +61099,50 @@ entry: %t10 = call ptr @fn_slice_field(ptr %t9, i32 0) store ptr %t10, ptr %t11 %t12 = load ptr, ptr %t5 - %t13 = call ptr @lp_str_concat(ptr @.str6050, ptr %t12) + %t13 = call ptr @lp_str_concat(ptr @.str6053, ptr %t12) %t14 = call ptr @fn_emit_bind(ptr %t13) store ptr %t14, ptr %t15 %t16 = load ptr, ptr %t8 - %t17 = call ptr @lp_str_concat(ptr @.str6051, ptr %t16) + %t17 = call ptr @lp_str_concat(ptr @.str6054, ptr %t16) %t18 = call ptr @fn_emit_bind(ptr %t17) store ptr %t18, ptr %t19 %t20 = load ptr, ptr %t15 - %t21 = call ptr @lp_str_concat(ptr @.str6052, ptr %t20) - %t22 = call ptr @lp_str_concat(ptr %t21, ptr @.str6053) + %t21 = call ptr @lp_str_concat(ptr @.str6055, ptr %t20) + %t22 = call ptr @lp_str_concat(ptr %t21, ptr @.str6056) %t23 = load ptr, ptr %t19 %t24 = call ptr @lp_str_concat(ptr %t22, ptr %t23) %t25 = call ptr @fn_emit_bind(ptr %t24) store ptr %t25, ptr %t26 - %t27 = call ptr @fn_lbl(ptr @.str6054) + %t27 = call ptr @fn_lbl(ptr @.str6057) store ptr %t27, ptr %t28 - %t29 = call ptr @fn_lbl(ptr @.str6055) + %t29 = call ptr @fn_lbl(ptr @.str6058) store ptr %t29, ptr %t30 - call void @fn_emit(ptr @.str6056) + call void @fn_emit(ptr @.str6059) %t31 = load ptr, ptr %t26 call void @fn_emit(ptr %t31) - call void @fn_emit(ptr @.str6057) + call void @fn_emit(ptr @.str6060) %t32 = load ptr, ptr %t28 call void @fn_emit(ptr %t32) - call void @fn_emit(ptr @.str6058) + call void @fn_emit(ptr @.str6061) %t33 = load ptr, ptr %t30 call void @fn_emit(ptr %t33) - call void @fn_emit(ptr @.str6059) + call void @fn_emit(ptr @.str6062) %t34 = load ptr, ptr %t28 call void @fn_emit(ptr %t34) - call void @fn_emit(ptr @.str6060) + call void @fn_emit(ptr @.str6063) %t35 = load ptr, ptr %t19 - %t36 = call ptr @lp_str_concat(ptr @.str6061, ptr %t35) - %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str6062) + %t36 = call ptr @lp_str_concat(ptr @.str6064, ptr %t35) + %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str6065) %t38 = call ptr @fn_emit_bind(ptr %t37) store ptr %t38, ptr %t39 %t40 = load ptr, ptr %t19 - %t41 = call ptr @lp_str_concat(ptr @.str6063, ptr %t40) - %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str6064) + %t41 = call ptr @lp_str_concat(ptr @.str6066, ptr %t40) + %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str6067) %t43 = call ptr @fn_emit_bind(ptr %t42) store ptr %t43, ptr %t44 %t45 = load ptr, ptr %t44 - %t46 = call ptr @lp_str_concat(ptr @.str6065, ptr %t45) - %t47 = call ptr @lp_str_concat(ptr %t46, ptr @.str6066) + %t46 = call ptr @lp_str_concat(ptr @.str6068, ptr %t45) + %t47 = call ptr @lp_str_concat(ptr %t46, ptr @.str6069) %t48 = load ptr, ptr %t39 %t49 = call ptr @lp_str_concat(ptr %t47, ptr %t48) %t50 = call ptr @fn_emit_bind(ptr %t49) @@ -61098,93 +61151,93 @@ entry: %t53 = call ptr @fn_emit_sizeof(ptr %t52) store ptr %t53, ptr %t54 %t55 = load ptr, ptr %t51 - %t56 = call ptr @lp_str_concat(ptr @.str6067, ptr %t55) - %t57 = call ptr @lp_str_concat(ptr %t56, ptr @.str6068) + %t56 = call ptr @lp_str_concat(ptr @.str6070, ptr %t55) + %t57 = call ptr @lp_str_concat(ptr %t56, ptr @.str6071) %t58 = call ptr @fn_emit_bind(ptr %t57) store ptr %t58, ptr %t59 %t60 = load ptr, ptr %t59 - %t61 = call ptr @lp_str_concat(ptr @.str6069, ptr %t60) - %t62 = call ptr @lp_str_concat(ptr %t61, ptr @.str6070) + %t61 = call ptr @lp_str_concat(ptr @.str6072, ptr %t60) + %t62 = call ptr @lp_str_concat(ptr %t61, ptr @.str6073) %t63 = load ptr, ptr %t54 %t64 = call ptr @lp_str_concat(ptr %t62, ptr %t63) %t65 = call ptr @fn_emit_bind(ptr %t64) store ptr %t65, ptr %t66 %t67 = load ptr, ptr %t11 - %t68 = call ptr @lp_str_concat(ptr @.str6071, ptr %t67) + %t68 = call ptr @lp_str_concat(ptr @.str6074, ptr %t67) %t69 = call ptr @fn_emit_bind(ptr %t68) store ptr %t69, ptr %t70 %t71 = load ptr, ptr %t70 - %t72 = call ptr @lp_str_concat(ptr @.str6072, ptr %t71) - %t73 = call ptr @lp_str_concat(ptr %t72, ptr @.str6073) + %t72 = call ptr @lp_str_concat(ptr @.str6075, ptr %t71) + %t73 = call ptr @lp_str_concat(ptr %t72, ptr @.str6076) %t74 = load ptr, ptr %t66 %t75 = call ptr @lp_str_concat(ptr %t73, ptr %t74) - %t76 = call ptr @lp_str_concat(ptr %t75, ptr @.str6074) + %t76 = call ptr @lp_str_concat(ptr %t75, ptr @.str6077) %t77 = call ptr @fn_emit_bind(ptr %t76) store ptr %t77, ptr %t78 - call void @fn_emit(ptr @.str6075) + call void @fn_emit(ptr @.str6078) %t79 = load ptr, ptr %t78 call void @fn_emit(ptr %t79) - call void @fn_emit(ptr @.str6076) + call void @fn_emit(ptr @.str6079) %t80 = load ptr, ptr %t11 call void @fn_emit(ptr %t80) - call void @fn_emit(ptr @.str6077) - call void @fn_emit(ptr @.str6078) - %t81 = load ptr, ptr %t51 - call void @fn_emit(ptr %t81) - call void @fn_emit(ptr @.str6079) - %t82 = load ptr, ptr %t8 - call void @fn_emit(ptr %t82) call void @fn_emit(ptr @.str6080) call void @fn_emit(ptr @.str6081) + %t81 = load ptr, ptr %t51 + call void @fn_emit(ptr %t81) + call void @fn_emit(ptr @.str6082) + %t82 = load ptr, ptr %t8 + call void @fn_emit(ptr %t82) + call void @fn_emit(ptr @.str6083) + call void @fn_emit(ptr @.str6084) %t83 = load ptr, ptr %t30 call void @fn_emit(ptr %t83) - call void @fn_emit(ptr @.str6082) + call void @fn_emit(ptr @.str6085) %t84 = load ptr, ptr %t30 call void @fn_emit(ptr %t84) - call void @fn_emit(ptr @.str6083) + call void @fn_emit(ptr @.str6086) %t85 = load ptr, ptr %t11 - %t86 = call ptr @lp_str_concat(ptr @.str6084, ptr %t85) + %t86 = call ptr @lp_str_concat(ptr @.str6087, ptr %t85) %t87 = call ptr @fn_emit_bind(ptr %t86) store ptr %t87, ptr %t88 %t89 = call ptr @fn_nreg() store ptr %t89, ptr %t90 - call void @fn_emit(ptr @.str6085) + call void @fn_emit(ptr @.str6088) %t91 = load ptr, ptr %t90 call void @fn_emit(ptr %t91) - call void @fn_emit(ptr @.str6086) + call void @fn_emit(ptr @.str6089) %t92 = load ptr, ptr %t1 call void @fn_emit(ptr %t92) - call void @fn_emit(ptr @.str6087) + call void @fn_emit(ptr @.str6090) %t93 = load ptr, ptr %t88 call void @fn_emit(ptr %t93) - call void @fn_emit(ptr @.str6088) + call void @fn_emit(ptr @.str6091) %t94 = load ptr, ptr %t15 call void @fn_emit(ptr %t94) - call void @fn_emit(ptr @.str6089) - call void @fn_emit(ptr @.str6090) + call void @fn_emit(ptr @.str6092) + call void @fn_emit(ptr @.str6093) %t95 = load ptr, ptr %t1 call void @fn_emit(ptr %t95) - call void @fn_emit(ptr @.str6091) + call void @fn_emit(ptr @.str6094) %t96 = load ptr, ptr %t2 %t97 = getelementptr inbounds %Cmp_Val, ptr %t96, i32 0, i32 0 %t98 = load ptr, ptr %t97 call void @fn_emit(ptr %t98) - call void @fn_emit(ptr @.str6092) + call void @fn_emit(ptr @.str6095) %t99 = load ptr, ptr %t90 call void @fn_emit(ptr %t99) - call void @fn_emit(ptr @.str6093) + call void @fn_emit(ptr @.str6096) %t100 = load ptr, ptr %t15 - %t101 = call ptr @lp_str_concat(ptr @.str6094, ptr %t100) - %t102 = call ptr @lp_str_concat(ptr %t101, ptr @.str6095) + %t101 = call ptr @lp_str_concat(ptr @.str6097, ptr %t100) + %t102 = call ptr @lp_str_concat(ptr %t101, ptr @.str6098) %t103 = call ptr @fn_emit_bind(ptr %t102) store ptr %t103, ptr %t104 - call void @fn_emit(ptr @.str6096) + call void @fn_emit(ptr @.str6099) %t105 = load ptr, ptr %t104 call void @fn_emit(ptr %t105) - call void @fn_emit(ptr @.str6097) + call void @fn_emit(ptr @.str6100) %t106 = load ptr, ptr %t5 call void @fn_emit(ptr %t106) - call void @fn_emit(ptr @.str6098) + call void @fn_emit(ptr @.str6101) br label %ret ret: ret void @@ -61267,12 +61320,12 @@ then8: %t50 = call ptr @fn_emit_expr(ptr %t49) store ptr %t50, ptr %t51 %t52 = load ptr, ptr %t51 - %t53 = call ptr @fn_coerce_code(ptr %t52, ptr @.str6100) - %t54 = call ptr @lp_str_concat(ptr @.str6099, ptr %t53) - %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str6101) + %t53 = call ptr @fn_coerce_code(ptr %t52, ptr @.str6103) + %t54 = call ptr @lp_str_concat(ptr @.str6102, ptr %t53) + %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str6104) %t56 = load ptr, ptr %t1 %t57 = call ptr @lp_str_concat(ptr %t55, ptr %t56) - %t58 = call ptr @lp_str_concat(ptr %t57, ptr @.str6102) + %t58 = call ptr @lp_str_concat(ptr %t57, ptr @.str6105) call void @fn_emit(ptr %t58) br label %ifend10 else9: @@ -61318,7 +61371,7 @@ entry: %t6 = load ptr, ptr %t5 %t7 = getelementptr inbounds %Cmp_Val, ptr %t6, i32 0, i32 1 %t8 = load ptr, ptr %t7 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str6103) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str6106) %t10 = icmp eq i32 %t9, 0 %t11 = zext i1 %t10 to i32 %t12 = icmp ne i32 %t11, 0 @@ -61327,8 +61380,8 @@ then0: %t13 = load ptr, ptr %t5 %t14 = getelementptr inbounds %Cmp_Val, ptr %t13, i32 0, i32 1 %t15 = load ptr, ptr %t14 - %t16 = call ptr @lp_str_concat(ptr @.str6104, ptr %t15) - %t17 = call ptr @lp_str_concat(ptr %t16, ptr @.str6105) + %t16 = call ptr @lp_str_concat(ptr @.str6107, ptr %t15) + %t17 = call ptr @lp_str_concat(ptr %t16, ptr @.str6108) %t18 = load ptr, ptr %t0 %t19 = getelementptr inbounds %Cmp_Node, ptr %t18, i32 0, i32 8 %t20 = load i32, ptr %t19 @@ -61337,98 +61390,98 @@ then0: call void @fn_perr(ptr %t22) br label %ifend2 ifend2: - %t23 = call ptr @fn_emit_alloca(ptr @.str6106) + %t23 = call ptr @fn_emit_alloca(ptr @.str6109) store ptr %t23, ptr %t24 %t25 = load ptr, ptr %t24 - %t26 = call ptr @lp_str_concat(ptr @.str6107, ptr %t25) - %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str6108) + %t26 = call ptr @lp_str_concat(ptr @.str6110, ptr %t25) + %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str6111) call void @fn_emit(ptr %t27) %t28 = load ptr, ptr %t5 %t29 = getelementptr inbounds %Cmp_Val, ptr %t28, i32 0, i32 0 %t30 = load ptr, ptr %t29 - %t31 = call ptr @lp_str_concat(ptr @.str6109, ptr %t30) - %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str6110) + %t31 = call ptr @lp_str_concat(ptr @.str6112, ptr %t30) + %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str6113) %t33 = call ptr @fn_emit_bind(ptr %t32) store ptr %t33, ptr %t34 %t35 = load ptr, ptr %t34 - %t36 = call ptr @lp_str_concat(ptr @.str6111, ptr %t35) + %t36 = call ptr @lp_str_concat(ptr @.str6114, ptr %t35) %t37 = call ptr @fn_emit_bind(ptr %t36) store ptr %t37, ptr %t38 %t39 = load ptr, ptr %t38 - %t40 = call ptr @lp_str_concat(ptr @.str6112, ptr %t39) - %t41 = call ptr @lp_str_concat(ptr %t40, ptr @.str6113) + %t40 = call ptr @lp_str_concat(ptr @.str6115, ptr %t39) + %t41 = call ptr @lp_str_concat(ptr %t40, ptr @.str6116) %t42 = call ptr @fn_emit_bind(ptr %t41) store ptr %t42, ptr %t43 - %t44 = call ptr @fn_lbl(ptr @.str6114) + %t44 = call ptr @fn_lbl(ptr @.str6117) store ptr %t44, ptr %t45 - %t46 = call ptr @fn_lbl(ptr @.str6115) + %t46 = call ptr @fn_lbl(ptr @.str6118) store ptr %t46, ptr %t47 - %t48 = call ptr @fn_lbl(ptr @.str6116) + %t48 = call ptr @fn_lbl(ptr @.str6119) store ptr %t48, ptr %t49 %t50 = load ptr, ptr %t43 - %t51 = call ptr @lp_str_concat(ptr @.str6117, ptr %t50) - %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str6118) + %t51 = call ptr @lp_str_concat(ptr @.str6120, ptr %t50) + %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str6121) %t53 = load ptr, ptr %t45 %t54 = call ptr @lp_str_concat(ptr %t52, ptr %t53) - %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str6119) + %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str6122) %t56 = load ptr, ptr %t47 %t57 = call ptr @lp_str_concat(ptr %t55, ptr %t56) - %t58 = call ptr @lp_str_concat(ptr %t57, ptr @.str6120) + %t58 = call ptr @lp_str_concat(ptr %t57, ptr @.str6123) call void @fn_emit(ptr %t58) %t59 = load ptr, ptr %t45 - %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str6121) + %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str6124) call void @fn_emit(ptr %t60) store i32 0, ptr @g_g_term %t61 = load ptr, ptr %t5 %t62 = getelementptr inbounds %Cmp_Val, ptr %t61, i32 0, i32 0 %t63 = load ptr, ptr %t62 - %t64 = call ptr @lp_str_concat(ptr @.str6122, ptr %t63) - %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str6123) + %t64 = call ptr @lp_str_concat(ptr @.str6125, ptr %t63) + %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str6126) %t66 = call ptr @fn_emit_bind(ptr %t65) store ptr %t66, ptr %t67 %t68 = load ptr, ptr %t67 - %t69 = call ptr @lp_str_concat(ptr @.str6124, ptr %t68) + %t69 = call ptr @lp_str_concat(ptr @.str6127, ptr %t68) %t70 = call ptr @fn_emit_bind(ptr %t69) store ptr %t70, ptr %t71 %t72 = load ptr, ptr %t71 - %t73 = call ptr @lp_str_concat(ptr @.str6125, ptr %t72) - %t74 = call ptr @lp_str_concat(ptr %t73, ptr @.str6126) + %t73 = call ptr @lp_str_concat(ptr @.str6128, ptr %t72) + %t74 = call ptr @lp_str_concat(ptr %t73, ptr @.str6129) %t75 = load ptr, ptr %t24 %t76 = call ptr @lp_str_concat(ptr %t74, ptr %t75) - %t77 = call ptr @lp_str_concat(ptr %t76, ptr @.str6127) + %t77 = call ptr @lp_str_concat(ptr %t76, ptr @.str6130) call void @fn_emit(ptr %t77) %t78 = load ptr, ptr %t49 - %t79 = call ptr @lp_str_concat(ptr @.str6128, ptr %t78) - %t80 = call ptr @lp_str_concat(ptr %t79, ptr @.str6129) + %t79 = call ptr @lp_str_concat(ptr @.str6131, ptr %t78) + %t80 = call ptr @lp_str_concat(ptr %t79, ptr @.str6132) call void @fn_emit(ptr %t80) %t81 = load ptr, ptr %t47 - %t82 = call ptr @lp_str_concat(ptr %t81, ptr @.str6130) + %t82 = call ptr @lp_str_concat(ptr %t81, ptr @.str6133) call void @fn_emit(ptr %t82) store i32 0, ptr @g_g_term %t83 = load ptr, ptr %t5 %t84 = getelementptr inbounds %Cmp_Val, ptr %t83, i32 0, i32 0 %t85 = load ptr, ptr %t84 - %t86 = call ptr @lp_str_concat(ptr @.str6131, ptr %t85) - %t87 = call ptr @lp_str_concat(ptr %t86, ptr @.str6132) + %t86 = call ptr @lp_str_concat(ptr @.str6134, ptr %t85) + %t87 = call ptr @lp_str_concat(ptr %t86, ptr @.str6135) %t88 = call ptr @fn_emit_bind(ptr %t87) store ptr %t88, ptr %t89 %t90 = load ptr, ptr %t89 - %t91 = call ptr @lp_str_concat(ptr @.str6133, ptr %t90) + %t91 = call ptr @lp_str_concat(ptr @.str6136, ptr %t90) %t92 = call ptr @fn_emit_bind(ptr %t91) store ptr %t92, ptr %t93 - %t94 = call ptr @fn_emit_alloca(ptr @.str6134) + %t94 = call ptr @fn_emit_alloca(ptr @.str6137) store ptr %t94, ptr %t95 %t96 = load ptr, ptr %t93 - %t97 = call ptr @lp_str_concat(ptr @.str6135, ptr %t96) - %t98 = call ptr @lp_str_concat(ptr %t97, ptr @.str6136) + %t97 = call ptr @lp_str_concat(ptr @.str6138, ptr %t96) + %t98 = call ptr @lp_str_concat(ptr %t97, ptr @.str6139) %t99 = load ptr, ptr %t95 %t100 = call ptr @lp_str_concat(ptr %t98, ptr %t99) - %t101 = call ptr @lp_str_concat(ptr %t100, ptr @.str6137) + %t101 = call ptr @lp_str_concat(ptr %t100, ptr @.str6140) call void @fn_emit(ptr %t101) %t102 = load i32, ptr @g_nloc store i32 %t102, ptr %t103 %t104 = load ptr, ptr %t95 - call void @fn_loc_push(ptr @.str6138, ptr %t104, ptr @.str6139) + call void @fn_loc_push(ptr @.str6141, ptr %t104, ptr @.str6142) %t105 = load ptr, ptr %t0 %t106 = getelementptr inbounds %Cmp_Node, ptr %t105, i32 0, i32 5 %t107 = load ptr, ptr %t106 @@ -61443,19 +61496,19 @@ ifend2: br i1 %t113, label %then3, label %ifend5 then3: %t114 = load ptr, ptr %t49 - %t115 = call ptr @lp_str_concat(ptr @.str6140, ptr %t114) - %t116 = call ptr @lp_str_concat(ptr %t115, ptr @.str6141) + %t115 = call ptr @lp_str_concat(ptr @.str6143, ptr %t114) + %t116 = call ptr @lp_str_concat(ptr %t115, ptr @.str6144) call void @fn_emit(ptr %t116) br label %ifend5 ifend5: %t117 = load ptr, ptr %t49 - %t118 = call ptr @lp_str_concat(ptr %t117, ptr @.str6142) + %t118 = call ptr @lp_str_concat(ptr %t117, ptr @.str6145) call void @fn_emit(ptr %t118) store i32 0, ptr @g_g_term %t119 = load ptr, ptr %t24 - %t120 = call ptr @lp_str_concat(ptr @.str6143, ptr %t119) + %t120 = call ptr @lp_str_concat(ptr @.str6146, ptr %t119) %t121 = call ptr @fn_emit_bind(ptr %t120) - %t122 = call ptr @fn_val(ptr %t121, ptr @.str6144) + %t122 = call ptr @fn_val(ptr %t121, ptr @.str6147) store ptr %t122, ptr %retval br label %ret ret: @@ -61473,8 +61526,8 @@ entry: store ptr %arg_ty, ptr %t1 %t2 = load ptr, ptr %t1 %t3 = call ptr @fn_llty(ptr %t2) - %t4 = call ptr @lp_str_concat(ptr @.str6145, ptr %t3) - %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str6146) + %t4 = call ptr @lp_str_concat(ptr @.str6148, ptr %t3) + %t5 = call ptr @lp_str_concat(ptr %t4, ptr @.str6149) %t6 = load ptr, ptr %t0 %t7 = call ptr @lp_str_concat(ptr %t5, ptr %t6) %t8 = call ptr @fn_emit_bind(ptr %t7) @@ -61503,7 +61556,7 @@ entry: %t49 = alloca ptr %t54 = alloca ptr store ptr %arg_e, ptr %t0 - %t1 = call ptr @fn_emit_alloca(ptr @.str6147) + %t1 = call ptr @fn_emit_alloca(ptr @.str6150) store ptr %t1, ptr %t2 %t3 = load ptr, ptr %t0 %t4 = getelementptr inbounds %Cmp_Node, ptr %t3, i32 0, i32 4 @@ -61513,60 +61566,60 @@ entry: %t8 = load ptr, ptr %t7 %t9 = getelementptr inbounds %Cmp_Val, ptr %t8, i32 0, i32 0 %t10 = load ptr, ptr %t9 - %t11 = call ptr @lp_str_concat(ptr @.str6148, ptr %t10) - %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str6149) + %t11 = call ptr @lp_str_concat(ptr @.str6151, ptr %t10) + %t12 = call ptr @lp_str_concat(ptr %t11, ptr @.str6152) %t13 = call ptr @fn_emit_bind(ptr %t12) store ptr %t13, ptr %t14 %t15 = load ptr, ptr %t14 - %t16 = call ptr @lp_str_concat(ptr @.str6150, ptr %t15) - %t17 = call ptr @lp_str_concat(ptr %t16, ptr @.str6151) + %t16 = call ptr @lp_str_concat(ptr @.str6153, ptr %t15) + %t17 = call ptr @lp_str_concat(ptr %t16, ptr @.str6154) %t18 = call ptr @fn_emit_bind(ptr %t17) store ptr %t18, ptr %t19 - call void @fn_emit(ptr @.str6152) + call void @fn_emit(ptr @.str6155) %t20 = load ptr, ptr %t19 call void @fn_emit(ptr %t20) - call void @fn_emit(ptr @.str6153) + call void @fn_emit(ptr @.str6156) %t21 = load ptr, ptr %t2 call void @fn_emit(ptr %t21) - call void @fn_emit(ptr @.str6154) - %t22 = call ptr @fn_lbl(ptr @.str6155) + call void @fn_emit(ptr @.str6157) + %t22 = call ptr @fn_lbl(ptr @.str6158) store ptr %t22, ptr %t23 - %t24 = call ptr @fn_lbl(ptr @.str6156) + %t24 = call ptr @fn_lbl(ptr @.str6159) store ptr %t24, ptr %t25 %t26 = load ptr, ptr %t0 %t27 = getelementptr inbounds %Cmp_Node, ptr %t26, i32 0, i32 1 %t28 = load ptr, ptr %t27 - %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str6157) + %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str6160) %t30 = icmp ne i32 %t29, 0 br i1 %t30, label %then0, label %else1 then0: - call void @fn_emit(ptr @.str6158) + call void @fn_emit(ptr @.str6161) %t31 = load ptr, ptr %t14 call void @fn_emit(ptr %t31) - call void @fn_emit(ptr @.str6159) + call void @fn_emit(ptr @.str6162) %t32 = load ptr, ptr %t23 call void @fn_emit(ptr %t32) - call void @fn_emit(ptr @.str6160) + call void @fn_emit(ptr @.str6163) %t33 = load ptr, ptr %t25 call void @fn_emit(ptr %t33) - call void @fn_emit(ptr @.str6161) + call void @fn_emit(ptr @.str6164) br label %ifend2 else1: - call void @fn_emit(ptr @.str6162) + call void @fn_emit(ptr @.str6165) %t34 = load ptr, ptr %t14 call void @fn_emit(ptr %t34) - call void @fn_emit(ptr @.str6163) + call void @fn_emit(ptr @.str6166) %t35 = load ptr, ptr %t25 call void @fn_emit(ptr %t35) - call void @fn_emit(ptr @.str6164) + call void @fn_emit(ptr @.str6167) %t36 = load ptr, ptr %t23 call void @fn_emit(ptr %t36) - call void @fn_emit(ptr @.str6165) + call void @fn_emit(ptr @.str6168) br label %ifend2 ifend2: %t37 = load ptr, ptr %t23 call void @fn_emit(ptr %t37) - call void @fn_emit(ptr @.str6166) + call void @fn_emit(ptr @.str6169) %t38 = load ptr, ptr %t0 %t39 = getelementptr inbounds %Cmp_Node, ptr %t38, i32 0, i32 5 %t40 = load ptr, ptr %t39 @@ -61575,33 +61628,33 @@ ifend2: %t43 = load ptr, ptr %t42 %t44 = getelementptr inbounds %Cmp_Val, ptr %t43, i32 0, i32 0 %t45 = load ptr, ptr %t44 - %t46 = call ptr @lp_str_concat(ptr @.str6167, ptr %t45) - %t47 = call ptr @lp_str_concat(ptr %t46, ptr @.str6168) + %t46 = call ptr @lp_str_concat(ptr @.str6170, ptr %t45) + %t47 = call ptr @lp_str_concat(ptr %t46, ptr @.str6171) %t48 = call ptr @fn_emit_bind(ptr %t47) store ptr %t48, ptr %t49 %t50 = load ptr, ptr %t49 - %t51 = call ptr @lp_str_concat(ptr @.str6169, ptr %t50) - %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str6170) + %t51 = call ptr @lp_str_concat(ptr @.str6172, ptr %t50) + %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str6173) %t53 = call ptr @fn_emit_bind(ptr %t52) store ptr %t53, ptr %t54 - call void @fn_emit(ptr @.str6171) + call void @fn_emit(ptr @.str6174) %t55 = load ptr, ptr %t54 call void @fn_emit(ptr %t55) - call void @fn_emit(ptr @.str6172) + call void @fn_emit(ptr @.str6175) %t56 = load ptr, ptr %t2 call void @fn_emit(ptr %t56) - call void @fn_emit(ptr @.str6173) - call void @fn_emit(ptr @.str6174) + call void @fn_emit(ptr @.str6176) + call void @fn_emit(ptr @.str6177) %t57 = load ptr, ptr %t25 call void @fn_emit(ptr %t57) - call void @fn_emit(ptr @.str6175) + call void @fn_emit(ptr @.str6178) %t58 = load ptr, ptr %t25 call void @fn_emit(ptr %t58) - call void @fn_emit(ptr @.str6176) + call void @fn_emit(ptr @.str6179) %t59 = load ptr, ptr %t2 - %t60 = call ptr @lp_str_concat(ptr @.str6177, ptr %t59) + %t60 = call ptr @lp_str_concat(ptr @.str6180, ptr %t59) %t61 = call ptr @fn_emit_bind(ptr %t60) - %t62 = call ptr @fn_val(ptr %t61, ptr @.str6178) + %t62 = call ptr @fn_val(ptr %t61, ptr @.str6181) store ptr %t62, ptr %retval br label %ret ret: @@ -61615,46 +61668,46 @@ entry: %t0 = alloca ptr store ptr %arg_op, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call i32 @lp_str_eq(ptr %t1, ptr @.str6179) + %t2 = call i32 @lp_str_eq(ptr %t1, ptr @.str6182) %t3 = icmp ne i32 %t2, 0 br i1 %t3, label %then0, label %ifend2 then0: - store ptr @.str6180, ptr %retval + store ptr @.str6183, ptr %retval br label %ret ifend2: %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str6181) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str6184) %t6 = icmp ne i32 %t5, 0 br i1 %t6, label %then3, label %ifend5 then3: - store ptr @.str6182, ptr %retval + store ptr @.str6185, ptr %retval br label %ret ifend5: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str6183) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str6186) %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then6, label %ifend8 then6: - store ptr @.str6184, ptr %retval + store ptr @.str6187, ptr %retval br label %ret ifend8: %t10 = load ptr, ptr %t0 - %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str6185) + %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str6188) %t12 = icmp ne i32 %t11, 0 br i1 %t12, label %then9, label %ifend11 then9: - store ptr @.str6186, ptr %retval + store ptr @.str6189, ptr %retval br label %ret ifend11: %t13 = load ptr, ptr %t0 - %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str6187) + %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str6190) %t15 = icmp ne i32 %t14, 0 br i1 %t15, label %then12, label %ifend14 then12: - store ptr @.str6188, ptr %retval + store ptr @.str6191, ptr %retval br label %ret ifend14: - store ptr @.str6189, ptr %retval + store ptr @.str6192, ptr %retval br label %ret ret: %t16 = load ptr, ptr %retval @@ -61672,14 +61725,14 @@ entry: %t5 = alloca i32 store ptr %arg_op, ptr %t0 %t6 = load ptr, ptr %t0 - %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str6190) + %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str6193) %t8 = icmp ne i32 %t7, 0 %t9 = zext i1 %t8 to i32 store i32 %t9, ptr %t5 br i1 %t8, label %scend1, label %sc0 sc0: %t10 = load ptr, ptr %t0 - %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str6191) + %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str6194) %t12 = icmp ne i32 %t11, 0 %t13 = zext i1 %t12 to i32 store i32 %t13, ptr %t5 @@ -61692,7 +61745,7 @@ scend1: br i1 %t15, label %scend3, label %sc2 sc2: %t17 = load ptr, ptr %t0 - %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str6192) + %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str6195) %t19 = icmp ne i32 %t18, 0 %t20 = zext i1 %t19 to i32 store i32 %t20, ptr %t4 @@ -61705,7 +61758,7 @@ scend3: br i1 %t22, label %scend5, label %sc4 sc4: %t24 = load ptr, ptr %t0 - %t25 = call i32 @lp_str_eq(ptr %t24, ptr @.str6193) + %t25 = call i32 @lp_str_eq(ptr %t24, ptr @.str6196) %t26 = icmp ne i32 %t25, 0 %t27 = zext i1 %t26 to i32 store i32 %t27, ptr %t3 @@ -61718,7 +61771,7 @@ scend5: br i1 %t29, label %scend7, label %sc6 sc6: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str6194) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str6197) %t33 = icmp ne i32 %t32, 0 %t34 = zext i1 %t33 to i32 store i32 %t34, ptr %t2 @@ -61731,7 +61784,7 @@ scend7: br i1 %t36, label %scend9, label %sc8 sc8: %t38 = load ptr, ptr %t0 - %t39 = call i32 @lp_str_eq(ptr %t38, ptr @.str6195) + %t39 = call i32 @lp_str_eq(ptr %t38, ptr @.str6198) %t40 = icmp ne i32 %t39, 0 %t41 = zext i1 %t40 to i32 store i32 %t41, ptr %t1 @@ -61751,78 +61804,78 @@ entry: %t0 = alloca ptr store ptr %arg_op, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call i32 @lp_str_eq(ptr %t1, ptr @.str6196) + %t2 = call i32 @lp_str_eq(ptr %t1, ptr @.str6199) %t3 = icmp ne i32 %t2, 0 br i1 %t3, label %then0, label %ifend2 then0: - store ptr @.str6197, ptr %retval + store ptr @.str6200, ptr %retval br label %ret ifend2: %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str6198) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str6201) %t6 = icmp ne i32 %t5, 0 br i1 %t6, label %then3, label %ifend5 then3: - store ptr @.str6199, ptr %retval + store ptr @.str6202, ptr %retval br label %ret ifend5: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str6200) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str6203) %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then6, label %ifend8 then6: - store ptr @.str6201, ptr %retval + store ptr @.str6204, ptr %retval br label %ret ifend8: %t10 = load ptr, ptr %t0 - %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str6202) + %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str6205) %t12 = icmp ne i32 %t11, 0 br i1 %t12, label %then9, label %ifend11 then9: - store ptr @.str6203, ptr %retval + store ptr @.str6206, ptr %retval br label %ret ifend11: %t13 = load ptr, ptr %t0 - %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str6204) + %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str6207) %t15 = icmp ne i32 %t14, 0 br i1 %t15, label %then12, label %ifend14 then12: - store ptr @.str6205, ptr %retval + store ptr @.str6208, ptr %retval br label %ret ifend14: %t16 = load ptr, ptr %t0 - %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str6206) + %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str6209) %t18 = icmp ne i32 %t17, 0 br i1 %t18, label %then15, label %ifend17 then15: - store ptr @.str6207, ptr %retval + store ptr @.str6210, ptr %retval br label %ret ifend17: %t19 = load ptr, ptr %t0 - %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str6208) + %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str6211) %t21 = icmp ne i32 %t20, 0 br i1 %t21, label %then18, label %ifend20 then18: - store ptr @.str6209, ptr %retval + store ptr @.str6212, ptr %retval br label %ret ifend20: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str6210) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str6213) %t24 = icmp ne i32 %t23, 0 br i1 %t24, label %then21, label %ifend23 then21: - store ptr @.str6211, ptr %retval + store ptr @.str6214, ptr %retval br label %ret ifend23: %t25 = load ptr, ptr %t0 - %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str6212) + %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str6215) %t27 = icmp ne i32 %t26, 0 br i1 %t27, label %then24, label %ifend26 then24: - store ptr @.str6213, ptr %retval + store ptr @.str6216, ptr %retval br label %ret ifend26: - store ptr @.str6214, ptr %retval + store ptr @.str6217, ptr %retval br label %ret ret: %t28 = load ptr, ptr %retval @@ -61837,7 +61890,7 @@ entry: %t1 = load ptr, ptr %t0 %t2 = getelementptr inbounds %Cmp_Val, ptr %t1, i32 0, i32 1 %t3 = load ptr, ptr %t2 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str6215) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str6218) %t5 = icmp ne i32 %t4, 0 br i1 %t5, label %then0, label %ifend2 then0: @@ -61850,8 +61903,8 @@ ifend2: %t9 = load ptr, ptr %t0 %t10 = getelementptr inbounds %Cmp_Val, ptr %t9, i32 0, i32 0 %t11 = load ptr, ptr %t10 - %t12 = call ptr @lp_str_concat(ptr @.str6216, ptr %t11) - %t13 = call ptr @lp_str_concat(ptr %t12, ptr @.str6217) + %t12 = call ptr @lp_str_concat(ptr @.str6219, ptr %t11) + %t13 = call ptr @lp_str_concat(ptr %t12, ptr @.str6220) %t14 = call ptr @fn_emit_bind(ptr %t13) store ptr %t14, ptr %retval br label %ret @@ -61892,14 +61945,14 @@ then0: br label %ret ifend2: %t18 = load ptr, ptr %t4 - %t19 = call i32 @lp_str_eq(ptr %t18, ptr @.str6218) + %t19 = call i32 @lp_str_eq(ptr %t18, ptr @.str6221) %t20 = icmp ne i32 %t19, 0 %t21 = zext i1 %t20 to i32 store i32 %t21, ptr %t17 br i1 %t20, label %sc3, label %scend4 sc3: %t22 = load ptr, ptr %t9 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str6219) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str6222) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t17 @@ -61912,21 +61965,21 @@ then5: %t28 = load ptr, ptr %t0 %t29 = getelementptr inbounds %Cmp_Val, ptr %t28, i32 0, i32 0 %t30 = load ptr, ptr %t29 - %t31 = call ptr @lp_str_concat(ptr @.str6220, ptr %t30) - %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str6221) + %t31 = call ptr @lp_str_concat(ptr @.str6223, ptr %t30) + %t32 = call ptr @lp_str_concat(ptr %t31, ptr @.str6224) %t33 = call ptr @fn_emit_bind(ptr %t32) store ptr %t33, ptr %retval br label %ret ifend7: %t35 = load ptr, ptr %t4 - %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str6222) + %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str6225) %t37 = icmp ne i32 %t36, 0 %t38 = zext i1 %t37 to i32 store i32 %t38, ptr %t34 br i1 %t37, label %sc8, label %scend9 sc8: %t39 = load ptr, ptr %t9 - %t40 = call i32 @lp_str_eq(ptr %t39, ptr @.str6223) + %t40 = call i32 @lp_str_eq(ptr %t39, ptr @.str6226) %t41 = icmp ne i32 %t40, 0 %t42 = zext i1 %t41 to i32 store i32 %t42, ptr %t34 @@ -61939,8 +61992,8 @@ then10: %t45 = load ptr, ptr %t0 %t46 = getelementptr inbounds %Cmp_Val, ptr %t45, i32 0, i32 0 %t47 = load ptr, ptr %t46 - %t48 = call ptr @lp_str_concat(ptr @.str6224, ptr %t47) - %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str6225) + %t48 = call ptr @lp_str_concat(ptr @.str6227, ptr %t47) + %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str6228) %t50 = call ptr @fn_emit_bind(ptr %t49) store ptr %t50, ptr %retval br label %ret @@ -61964,7 +62017,7 @@ entry: %t2 = getelementptr inbounds %Cmp_Val, ptr %t1, i32 0, i32 1 %t3 = load ptr, ptr %t2 %t4 = call ptr @fn_llty(ptr %t3) - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str6226) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str6229) %t6 = icmp ne i32 %t5, 0 br i1 %t6, label %then0, label %ifend2 then0: @@ -61977,8 +62030,8 @@ ifend2: %t10 = load ptr, ptr %t0 %t11 = getelementptr inbounds %Cmp_Val, ptr %t10, i32 0, i32 0 %t12 = load ptr, ptr %t11 - %t13 = call ptr @lp_str_concat(ptr @.str6227, ptr %t12) - %t14 = call ptr @lp_str_concat(ptr %t13, ptr @.str6228) + %t13 = call ptr @lp_str_concat(ptr @.str6230, ptr %t12) + %t14 = call ptr @lp_str_concat(ptr %t13, ptr @.str6231) %t15 = call ptr @fn_emit_bind(ptr %t14) store ptr %t15, ptr %retval br label %ret @@ -62000,57 +62053,57 @@ entry: store ptr %arg_b, ptr %t2 store i32 1, ptr @g_g_uses_str %t3 = load ptr, ptr %t0 - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str6229) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str6232) %t5 = icmp ne i32 %t4, 0 br i1 %t5, label %then0, label %ifend2 then0: %t6 = load ptr, ptr %t1 %t7 = getelementptr inbounds %Cmp_Val, ptr %t6, i32 0, i32 0 %t8 = load ptr, ptr %t7 - %t9 = call ptr @lp_str_concat(ptr @.str6230, ptr %t8) - %t10 = call ptr @lp_str_concat(ptr %t9, ptr @.str6231) + %t9 = call ptr @lp_str_concat(ptr @.str6233, ptr %t8) + %t10 = call ptr @lp_str_concat(ptr %t9, ptr @.str6234) %t11 = load ptr, ptr %t2 %t12 = getelementptr inbounds %Cmp_Val, ptr %t11, i32 0, i32 0 %t13 = load ptr, ptr %t12 %t14 = call ptr @lp_str_concat(ptr %t10, ptr %t13) - %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str6232) + %t15 = call ptr @lp_str_concat(ptr %t14, ptr @.str6235) %t16 = call ptr @fn_emit_bind(ptr %t15) - %t17 = call ptr @fn_val(ptr %t16, ptr @.str6233) + %t17 = call ptr @fn_val(ptr %t16, ptr @.str6236) store ptr %t17, ptr %retval br label %ret ifend2: %t18 = load ptr, ptr %t1 %t19 = getelementptr inbounds %Cmp_Val, ptr %t18, i32 0, i32 0 %t20 = load ptr, ptr %t19 - %t21 = call ptr @lp_str_concat(ptr @.str6234, ptr %t20) - %t22 = call ptr @lp_str_concat(ptr %t21, ptr @.str6235) + %t21 = call ptr @lp_str_concat(ptr @.str6237, ptr %t20) + %t22 = call ptr @lp_str_concat(ptr %t21, ptr @.str6238) %t23 = load ptr, ptr %t2 %t24 = getelementptr inbounds %Cmp_Val, ptr %t23, i32 0, i32 0 %t25 = load ptr, ptr %t24 %t26 = call ptr @lp_str_concat(ptr %t22, ptr %t25) - %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str6236) + %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str6239) %t28 = call ptr @fn_emit_bind(ptr %t27) store ptr %t28, ptr %t29 %t30 = load ptr, ptr %t0 - %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str6237) + %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str6240) %t32 = icmp ne i32 %t31, 0 br i1 %t32, label %then3, label %ifend5 then3: %t33 = load ptr, ptr %t29 - %t34 = call ptr @lp_str_concat(ptr @.str6238, ptr %t33) - %t35 = call ptr @lp_str_concat(ptr %t34, ptr @.str6239) + %t34 = call ptr @lp_str_concat(ptr @.str6241, ptr %t33) + %t35 = call ptr @lp_str_concat(ptr %t34, ptr @.str6242) %t36 = call ptr @fn_emit_bind(ptr %t35) store ptr %t36, ptr %t37 %t38 = load ptr, ptr %t37 - %t39 = call ptr @lp_str_concat(ptr @.str6240, ptr %t38) - %t40 = call ptr @lp_str_concat(ptr %t39, ptr @.str6241) + %t39 = call ptr @lp_str_concat(ptr @.str6243, ptr %t38) + %t40 = call ptr @lp_str_concat(ptr %t39, ptr @.str6244) %t41 = call ptr @fn_emit_bind(ptr %t40) - %t42 = call ptr @fn_val(ptr %t41, ptr @.str6242) + %t42 = call ptr @fn_val(ptr %t41, ptr @.str6245) store ptr %t42, ptr %retval br label %ret ifend5: %t43 = load ptr, ptr %t29 - %t44 = call ptr @fn_val(ptr %t43, ptr @.str6243) + %t44 = call ptr @fn_val(ptr %t43, ptr @.str6246) store ptr %t44, ptr %retval br label %ret ret: @@ -62065,14 +62118,14 @@ entry: %t1 = alloca i32 store ptr %arg_ty, ptr %t0 %t2 = load ptr, ptr %t0 - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str6244) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str6247) %t4 = icmp ne i32 %t3, 0 %t5 = zext i1 %t4 to i32 store i32 %t5, ptr %t1 br i1 %t4, label %scend1, label %sc0 sc0: %t6 = load ptr, ptr %t0 - %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str6245) + %t7 = call i32 @lp_str_eq(ptr %t6, ptr @.str6248) %t8 = icmp ne i32 %t7, 0 %t9 = zext i1 %t8 to i32 store i32 %t9, ptr %t1 @@ -62086,7 +62139,7 @@ then2: store ptr %t12, ptr %retval br label %ret ifend4: - store ptr @.str6246, ptr %retval + store ptr @.str6249, ptr %retval br label %ret ret: %t13 = load ptr, ptr %retval @@ -62106,7 +62159,7 @@ entry: %t2 = load ptr, ptr %t0 %t3 = getelementptr inbounds %Cmp_Node, ptr %t2, i32 0, i32 1 %t4 = load ptr, ptr %t3 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str6247) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str6250) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t1 @@ -62115,7 +62168,7 @@ sc0: %t8 = load ptr, ptr %t0 %t9 = getelementptr inbounds %Cmp_Node, ptr %t8, i32 0, i32 1 %t10 = load ptr, ptr %t9 - %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str6248) + %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str6251) %t12 = icmp ne i32 %t11, 0 %t13 = zext i1 %t12 to i32 store i32 %t13, ptr %t1 @@ -62224,7 +62277,7 @@ entry: %t6 = getelementptr inbounds %Cmp_Val, ptr %t5, i32 0, i32 1 %t7 = load ptr, ptr %t6 %t8 = call ptr @fn_llty(ptr %t7) - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str6249) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str6252) %t10 = icmp ne i32 %t9, 0 %t11 = zext i1 %t10 to i32 store i32 %t11, ptr %t4 @@ -62234,7 +62287,7 @@ sc0: %t13 = getelementptr inbounds %Cmp_Val, ptr %t12, i32 0, i32 1 %t14 = load ptr, ptr %t13 %t15 = call ptr @fn_llty(ptr %t14) - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str6250) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str6253) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t4 @@ -62247,25 +62300,25 @@ scend1: br i1 %t22, label %then2, label %ifend4 then2: %t23 = load ptr, ptr %t0 - %t24 = call i32 @lp_str_eq(ptr %t23, ptr @.str6251) + %t24 = call i32 @lp_str_eq(ptr %t23, ptr @.str6254) %t25 = icmp ne i32 %t24, 0 br i1 %t25, label %then5, label %ifend7 then5: %t26 = load ptr, ptr %t1 %t27 = load ptr, ptr %t2 - %t28 = call ptr @fn_emit_str_op(ptr @.str6252, ptr %t26, ptr %t27) + %t28 = call ptr @fn_emit_str_op(ptr @.str6255, ptr %t26, ptr %t27) store ptr %t28, ptr %retval br label %ret ifend7: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str6253) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str6256) %t33 = icmp ne i32 %t32, 0 %t34 = zext i1 %t33 to i32 store i32 %t34, ptr %t30 br i1 %t33, label %scend9, label %sc8 sc8: %t35 = load ptr, ptr %t0 - %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str6254) + %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str6257) %t37 = icmp ne i32 %t36, 0 %t38 = zext i1 %t37 to i32 store i32 %t38, ptr %t30 @@ -62301,7 +62354,7 @@ ifend4: %t54 = load ptr, ptr %t1 %t55 = getelementptr inbounds %Cmp_Val, ptr %t54, i32 0, i32 1 %t56 = load ptr, ptr %t55 - %t57 = call i32 @lp_str_eq(ptr %t56, ptr @.str6255) + %t57 = call i32 @lp_str_eq(ptr %t56, ptr @.str6258) %t58 = icmp ne i32 %t57, 0 %t59 = zext i1 %t58 to i32 store i32 %t59, ptr %t53 @@ -62310,7 +62363,7 @@ sc15: %t60 = load ptr, ptr %t2 %t61 = getelementptr inbounds %Cmp_Val, ptr %t60, i32 0, i32 1 %t62 = load ptr, ptr %t61 - %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str6256) + %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str6259) %t64 = icmp ne i32 %t63, 0 %t65 = zext i1 %t64 to i32 store i32 %t65, ptr %t53 @@ -62322,7 +62375,7 @@ scend16: %t72 = getelementptr inbounds %Cmp_Val, ptr %t71, i32 0, i32 1 %t73 = load ptr, ptr %t72 %t74 = call ptr @fn_llty(ptr %t73) - %t75 = call i32 @lp_str_eq(ptr %t74, ptr @.str6257) + %t75 = call i32 @lp_str_eq(ptr %t74, ptr @.str6260) %t76 = icmp ne i32 %t75, 0 %t77 = zext i1 %t76 to i32 store i32 %t77, ptr %t70 @@ -62332,7 +62385,7 @@ sc17: %t79 = getelementptr inbounds %Cmp_Val, ptr %t78, i32 0, i32 1 %t80 = load ptr, ptr %t79 %t81 = call ptr @fn_llty(ptr %t80) - %t82 = call i32 @lp_str_eq(ptr %t81, ptr @.str6258) + %t82 = call i32 @lp_str_eq(ptr %t81, ptr @.str6261) %t83 = icmp ne i32 %t82, 0 %t84 = zext i1 %t83 to i32 store i32 %t84, ptr %t70 @@ -62381,7 +62434,7 @@ then23: %t111 = getelementptr inbounds %Cmp_Val, ptr %t110, i32 0, i32 0 %t112 = load ptr, ptr %t111 store ptr %t112, ptr %t113 - store ptr @.str6259, ptr %t114 + store ptr @.str6262, ptr %t114 %t115 = load i32, ptr %t67 %t116 = icmp ne i32 %t115, 0 br i1 %t116, label %then26, label %else27 @@ -62398,7 +62451,7 @@ else27: %t122 = icmp ne i32 %t121, 0 br i1 %t122, label %then29, label %else30 then29: - store ptr @.str6260, ptr %t114 + store ptr @.str6263, ptr %t114 %t123 = load ptr, ptr %t1 %t124 = call ptr @fn_to_long(ptr %t123) store ptr %t124, ptr %t109 @@ -62411,7 +62464,7 @@ else30: %t129 = getelementptr inbounds %Cmp_Val, ptr %t128, i32 0, i32 1 %t130 = load ptr, ptr %t129 %t131 = call ptr @fn_llty(ptr %t130) - %t132 = call i32 @lp_str_eq(ptr %t131, ptr @.str6261) + %t132 = call i32 @lp_str_eq(ptr %t131, ptr @.str6264) %t133 = icmp ne i32 %t132, 0 %t134 = zext i1 %t133 to i32 store i32 %t134, ptr %t127 @@ -62421,7 +62474,7 @@ sc32: %t136 = getelementptr inbounds %Cmp_Val, ptr %t135, i32 0, i32 1 %t137 = load ptr, ptr %t136 %t138 = call ptr @fn_llty(ptr %t137) - %t139 = call i32 @lp_str_eq(ptr %t138, ptr @.str6262) + %t139 = call i32 @lp_str_eq(ptr %t138, ptr @.str6265) %t140 = icmp ne i32 %t139, 0 %t141 = zext i1 %t140 to i32 store i32 %t141, ptr %t127 @@ -62431,7 +62484,7 @@ scend33: %t143 = icmp ne i32 %t142, 0 br i1 %t143, label %then34, label %ifend36 then34: - store ptr @.str6263, ptr %t114 + store ptr @.str6266, ptr %t114 br label %ifend36 ifend36: br label %ifend31 @@ -62440,23 +62493,23 @@ ifend31: ifend28: %t144 = load ptr, ptr %t0 %t145 = call ptr @fn_cmp_code(ptr %t144) - %t146 = call ptr @lp_str_concat(ptr @.str6264, ptr %t145) - %t147 = call ptr @lp_str_concat(ptr %t146, ptr @.str6265) + %t146 = call ptr @lp_str_concat(ptr @.str6267, ptr %t145) + %t147 = call ptr @lp_str_concat(ptr %t146, ptr @.str6268) %t148 = load ptr, ptr %t114 %t149 = call ptr @lp_str_concat(ptr %t147, ptr %t148) - %t150 = call ptr @lp_str_concat(ptr %t149, ptr @.str6266) + %t150 = call ptr @lp_str_concat(ptr %t149, ptr @.str6269) %t151 = load ptr, ptr %t109 %t152 = call ptr @lp_str_concat(ptr %t150, ptr %t151) - %t153 = call ptr @lp_str_concat(ptr %t152, ptr @.str6267) + %t153 = call ptr @lp_str_concat(ptr %t152, ptr @.str6270) %t154 = load ptr, ptr %t113 %t155 = call ptr @lp_str_concat(ptr %t153, ptr %t154) %t156 = call ptr @fn_emit_bind(ptr %t155) store ptr %t156, ptr %t157 %t158 = load ptr, ptr %t157 - %t159 = call ptr @lp_str_concat(ptr @.str6268, ptr %t158) - %t160 = call ptr @lp_str_concat(ptr %t159, ptr @.str6269) + %t159 = call ptr @lp_str_concat(ptr @.str6271, ptr %t158) + %t160 = call ptr @lp_str_concat(ptr %t159, ptr @.str6272) %t161 = call ptr @fn_emit_bind(ptr %t160) - %t162 = call ptr @fn_val(ptr %t161, ptr @.str6270) + %t162 = call ptr @fn_val(ptr %t161, ptr @.str6273) store ptr %t162, ptr %retval br label %ret ifend25: @@ -62472,14 +62525,14 @@ then37: store ptr %t169, ptr %t170 %t171 = load ptr, ptr %t0 %t172 = call ptr @fn_arith_code(ptr %t171) - %t173 = call ptr @lp_str_concat(ptr %t172, ptr @.str6271) + %t173 = call ptr @lp_str_concat(ptr %t172, ptr @.str6274) %t174 = load ptr, ptr %t167 %t175 = call ptr @lp_str_concat(ptr %t173, ptr %t174) - %t176 = call ptr @lp_str_concat(ptr %t175, ptr @.str6272) + %t176 = call ptr @lp_str_concat(ptr %t175, ptr @.str6275) %t177 = load ptr, ptr %t170 %t178 = call ptr @lp_str_concat(ptr %t176, ptr %t177) %t179 = call ptr @fn_emit_bind(ptr %t178) - %t180 = call ptr @fn_val(ptr %t179, ptr @.str6273) + %t180 = call ptr @fn_val(ptr %t179, ptr @.str6276) store ptr %t180, ptr %retval br label %ret ifend39: @@ -62494,98 +62547,98 @@ then40: %t187 = call ptr @fn_to_fixed(ptr %t186) store ptr %t187, ptr %t188 %t189 = load ptr, ptr %t0 - %t190 = call i32 @lp_str_eq(ptr %t189, ptr @.str6274) + %t190 = call i32 @lp_str_eq(ptr %t189, ptr @.str6277) %t191 = icmp ne i32 %t190, 0 br i1 %t191, label %then43, label %ifend45 then43: %t192 = load ptr, ptr %t185 - %t193 = call ptr @lp_str_concat(ptr @.str6275, ptr %t192) - %t194 = call ptr @lp_str_concat(ptr %t193, ptr @.str6276) + %t193 = call ptr @lp_str_concat(ptr @.str6278, ptr %t192) + %t194 = call ptr @lp_str_concat(ptr %t193, ptr @.str6279) %t195 = call ptr @fn_emit_bind(ptr %t194) store ptr %t195, ptr %t196 %t197 = load ptr, ptr %t188 - %t198 = call ptr @lp_str_concat(ptr @.str6277, ptr %t197) - %t199 = call ptr @lp_str_concat(ptr %t198, ptr @.str6278) + %t198 = call ptr @lp_str_concat(ptr @.str6280, ptr %t197) + %t199 = call ptr @lp_str_concat(ptr %t198, ptr @.str6281) %t200 = call ptr @fn_emit_bind(ptr %t199) store ptr %t200, ptr %t201 %t202 = load ptr, ptr %t196 - %t203 = call ptr @lp_str_concat(ptr @.str6279, ptr %t202) - %t204 = call ptr @lp_str_concat(ptr %t203, ptr @.str6280) + %t203 = call ptr @lp_str_concat(ptr @.str6282, ptr %t202) + %t204 = call ptr @lp_str_concat(ptr %t203, ptr @.str6283) %t205 = load ptr, ptr %t201 %t206 = call ptr @lp_str_concat(ptr %t204, ptr %t205) %t207 = call ptr @fn_emit_bind(ptr %t206) store ptr %t207, ptr %t208 %t209 = load ptr, ptr %t208 - %t210 = call ptr @lp_str_concat(ptr @.str6281, ptr %t209) - %t211 = call ptr @lp_str_concat(ptr %t210, ptr @.str6282) + %t210 = call ptr @lp_str_concat(ptr @.str6284, ptr %t209) + %t211 = call ptr @lp_str_concat(ptr %t210, ptr @.str6285) %t212 = call ptr @fn_emit_bind(ptr %t211) store ptr %t212, ptr %t213 %t214 = load ptr, ptr %t213 - %t215 = call ptr @lp_str_concat(ptr @.str6283, ptr %t214) - %t216 = call ptr @lp_str_concat(ptr %t215, ptr @.str6284) + %t215 = call ptr @lp_str_concat(ptr @.str6286, ptr %t214) + %t216 = call ptr @lp_str_concat(ptr %t215, ptr @.str6287) %t217 = call ptr @fn_emit_bind(ptr %t216) - %t218 = call ptr @fn_val(ptr %t217, ptr @.str6285) + %t218 = call ptr @fn_val(ptr %t217, ptr @.str6288) store ptr %t218, ptr %retval br label %ret ifend45: %t219 = load ptr, ptr %t0 - %t220 = call i32 @lp_str_eq(ptr %t219, ptr @.str6286) + %t220 = call i32 @lp_str_eq(ptr %t219, ptr @.str6289) %t221 = icmp ne i32 %t220, 0 br i1 %t221, label %then46, label %ifend48 then46: %t222 = load ptr, ptr %t185 - %t223 = call ptr @lp_str_concat(ptr @.str6287, ptr %t222) - %t224 = call ptr @lp_str_concat(ptr %t223, ptr @.str6288) + %t223 = call ptr @lp_str_concat(ptr @.str6290, ptr %t222) + %t224 = call ptr @lp_str_concat(ptr %t223, ptr @.str6291) %t225 = call ptr @fn_emit_bind(ptr %t224) store ptr %t225, ptr %t226 %t227 = load ptr, ptr %t226 - %t228 = call ptr @lp_str_concat(ptr @.str6289, ptr %t227) - %t229 = call ptr @lp_str_concat(ptr %t228, ptr @.str6290) + %t228 = call ptr @lp_str_concat(ptr @.str6292, ptr %t227) + %t229 = call ptr @lp_str_concat(ptr %t228, ptr @.str6293) %t230 = call ptr @fn_emit_bind(ptr %t229) store ptr %t230, ptr %t231 %t232 = load ptr, ptr %t188 - %t233 = call ptr @lp_str_concat(ptr @.str6291, ptr %t232) - %t234 = call ptr @lp_str_concat(ptr %t233, ptr @.str6292) + %t233 = call ptr @lp_str_concat(ptr @.str6294, ptr %t232) + %t234 = call ptr @lp_str_concat(ptr %t233, ptr @.str6295) %t235 = call ptr @fn_emit_bind(ptr %t234) store ptr %t235, ptr %t236 %t237 = load ptr, ptr %t231 - %t238 = call ptr @lp_str_concat(ptr @.str6293, ptr %t237) - %t239 = call ptr @lp_str_concat(ptr %t238, ptr @.str6294) + %t238 = call ptr @lp_str_concat(ptr @.str6296, ptr %t237) + %t239 = call ptr @lp_str_concat(ptr %t238, ptr @.str6297) %t240 = load ptr, ptr %t236 %t241 = call ptr @lp_str_concat(ptr %t239, ptr %t240) %t242 = call ptr @fn_emit_bind(ptr %t241) store ptr %t242, ptr %t243 %t244 = load ptr, ptr %t243 - %t245 = call ptr @lp_str_concat(ptr @.str6295, ptr %t244) - %t246 = call ptr @lp_str_concat(ptr %t245, ptr @.str6296) + %t245 = call ptr @lp_str_concat(ptr @.str6298, ptr %t244) + %t246 = call ptr @lp_str_concat(ptr %t245, ptr @.str6299) %t247 = call ptr @fn_emit_bind(ptr %t246) - %t248 = call ptr @fn_val(ptr %t247, ptr @.str6297) + %t248 = call ptr @fn_val(ptr %t247, ptr @.str6300) store ptr %t248, ptr %retval br label %ret ifend48: %t249 = load ptr, ptr %t0 %t250 = call ptr @fn_arith_code(ptr %t249) - %t251 = call ptr @lp_str_concat(ptr %t250, ptr @.str6298) + %t251 = call ptr @lp_str_concat(ptr %t250, ptr @.str6301) %t252 = load ptr, ptr %t185 %t253 = call ptr @lp_str_concat(ptr %t251, ptr %t252) - %t254 = call ptr @lp_str_concat(ptr %t253, ptr @.str6299) + %t254 = call ptr @lp_str_concat(ptr %t253, ptr @.str6302) %t255 = load ptr, ptr %t188 %t256 = call ptr @lp_str_concat(ptr %t254, ptr %t255) %t257 = call ptr @fn_emit_bind(ptr %t256) store ptr %t257, ptr %t258 %t259 = load ptr, ptr %t258 - %t260 = call ptr @fn_val(ptr %t259, ptr @.str6300) + %t260 = call ptr @fn_val(ptr %t259, ptr @.str6303) store ptr %t260, ptr %retval br label %ret ifend42: %t261 = load ptr, ptr %t0 %t262 = call ptr @fn_arith_code(ptr %t261) - %t263 = call ptr @lp_str_concat(ptr %t262, ptr @.str6301) + %t263 = call ptr @lp_str_concat(ptr %t262, ptr @.str6304) %t264 = load ptr, ptr %t1 %t265 = getelementptr inbounds %Cmp_Val, ptr %t264, i32 0, i32 0 %t266 = load ptr, ptr %t265 %t267 = call ptr @lp_str_concat(ptr %t263, ptr %t266) - %t268 = call ptr @lp_str_concat(ptr %t267, ptr @.str6302) + %t268 = call ptr @lp_str_concat(ptr %t267, ptr @.str6305) %t269 = load ptr, ptr %t2 %t270 = getelementptr inbounds %Cmp_Val, ptr %t269, i32 0, i32 0 %t271 = load ptr, ptr %t270 @@ -62593,7 +62646,7 @@ ifend42: %t273 = call ptr @fn_emit_bind(ptr %t272) store ptr %t273, ptr %t274 %t275 = load ptr, ptr %t274 - %t276 = call ptr @fn_val(ptr %t275, ptr @.str6303) + %t276 = call ptr @fn_val(ptr %t275, ptr @.str6306) store ptr %t276, ptr %retval br label %ret ret: @@ -62700,7 +62753,7 @@ wbody4: %t29 = icmp ne i32 %t28, 0 br i1 %t29, label %then6, label %ifend8 then6: - call void @fn_perr(ptr @.str6304) + call void @fn_perr(ptr @.str6307) br label %ifend8 ifend8: %t30 = load i32, ptr %t7 @@ -62721,7 +62774,7 @@ wend5: %t42 = icmp ne i32 %t41, 0 br i1 %t42, label %then9, label %ifend11 then9: - call void @fn_perr(ptr @.str6305) + call void @fn_perr(ptr @.str6308) br label %ifend11 ifend11: %t43 = getelementptr %LSlice, ptr null, i32 1 @@ -62809,7 +62862,7 @@ then21: %t104 = load i32, ptr %t50 %t105 = getelementptr inbounds ptr, ptr %t103, i32 %t104 %t106 = load ptr, ptr %t105 - %t107 = call ptr @lp_str_concat(ptr @.str6306, ptr %t106) + %t107 = call ptr @lp_str_concat(ptr @.str6309, ptr %t106) call void @fn_perr(ptr %t107) br label %ifend23 ifend23: @@ -63065,53 +63118,53 @@ entry: store ptr %arg_msgsym, ptr %t1 store ptr %arg_got, ptr %t2 store ptr %arg_want, ptr %t3 - %t4 = call ptr @fn_lbl(ptr @.str6307) + %t4 = call ptr @fn_lbl(ptr @.str6310) store ptr %t4, ptr %t5 - %t6 = call ptr @fn_lbl(ptr @.str6308) + %t6 = call ptr @fn_lbl(ptr @.str6311) store ptr %t6, ptr %t7 %t8 = load ptr, ptr %t0 - %t9 = call ptr @lp_str_concat(ptr @.str6309, ptr %t8) - %t10 = call ptr @lp_str_concat(ptr %t9, ptr @.str6310) + %t9 = call ptr @lp_str_concat(ptr @.str6312, ptr %t8) + %t10 = call ptr @lp_str_concat(ptr %t9, ptr @.str6313) %t11 = load ptr, ptr %t5 %t12 = call ptr @lp_str_concat(ptr %t10, ptr %t11) - %t13 = call ptr @lp_str_concat(ptr %t12, ptr @.str6311) + %t13 = call ptr @lp_str_concat(ptr %t12, ptr @.str6314) %t14 = load ptr, ptr %t7 %t15 = call ptr @lp_str_concat(ptr %t13, ptr %t14) - %t16 = call ptr @lp_str_concat(ptr %t15, ptr @.str6312) + %t16 = call ptr @lp_str_concat(ptr %t15, ptr @.str6315) call void @fn_emit(ptr %t16) %t17 = load ptr, ptr %t7 - %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str6313) + %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str6316) call void @fn_emit(ptr %t18) - call void @fn_emit(ptr @.str6314) + call void @fn_emit(ptr @.str6317) %t19 = load ptr, ptr %t2 - %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str6315) + %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str6318) %t21 = icmp ne i32 %t20, 0 br i1 %t21, label %then0, label %else1 then0: %t22 = load ptr, ptr %t1 - %t23 = call ptr @lp_str_concat(ptr @.str6316, ptr %t22) - %t24 = call ptr @lp_str_concat(ptr %t23, ptr @.str6317) + %t23 = call ptr @lp_str_concat(ptr @.str6319, ptr %t22) + %t24 = call ptr @lp_str_concat(ptr %t23, ptr @.str6320) call void @fn_emit(ptr %t24) br label %ifend2 else1: %t25 = load ptr, ptr %t1 - %t26 = call ptr @lp_str_concat(ptr @.str6318, ptr %t25) - %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str6319) + %t26 = call ptr @lp_str_concat(ptr @.str6321, ptr %t25) + %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str6322) %t28 = load ptr, ptr %t2 %t29 = call ptr @lp_str_concat(ptr %t27, ptr %t28) - %t30 = call ptr @lp_str_concat(ptr %t29, ptr @.str6320) + %t30 = call ptr @lp_str_concat(ptr %t29, ptr @.str6323) %t31 = load ptr, ptr %t3 %t32 = call ptr @lp_str_concat(ptr %t30, ptr %t31) - %t33 = call ptr @lp_str_concat(ptr %t32, ptr @.str6321) + %t33 = call ptr @lp_str_concat(ptr %t32, ptr @.str6324) call void @fn_emit(ptr %t33) br label %ifend2 ifend2: %t34 = load ptr, ptr %t5 - %t35 = call ptr @lp_str_concat(ptr @.str6322, ptr %t34) - %t36 = call ptr @lp_str_concat(ptr %t35, ptr @.str6323) + %t35 = call ptr @lp_str_concat(ptr @.str6325, ptr %t34) + %t36 = call ptr @lp_str_concat(ptr %t35, ptr @.str6326) call void @fn_emit(ptr %t36) %t37 = load ptr, ptr %t5 - %t38 = call ptr @lp_str_concat(ptr %t37, ptr @.str6324) + %t38 = call ptr @lp_str_concat(ptr %t37, ptr @.str6327) call void @fn_emit(ptr %t38) br label %ret ret: @@ -63250,7 +63303,7 @@ entry: %t3 = call ptr @fn_itoa(i32 1024) store ptr %t3, ptr %t4 %t5 = load ptr, ptr %t1 - %t6 = call i32 @lp_str_eq(ptr %t5, ptr @.str6325) + %t6 = call i32 @lp_str_eq(ptr %t5, ptr @.str6328) %t7 = icmp ne i32 %t6, 0 br i1 %t7, label %then0, label %ifend2 then0: @@ -63265,7 +63318,7 @@ then0: br i1 %t15, label %then3, label %ifend5 then3: %t16 = load ptr, ptr %t0 - %t17 = call ptr @lp_str_concat(ptr %t16, ptr @.str6326) + %t17 = call ptr @lp_str_concat(ptr %t16, ptr @.str6329) call void @fn_perr(ptr %t17) br label %ifend5 ifend5: @@ -63329,7 +63382,7 @@ put7: store ptr %t60, ptr %t61 %t62 = load ptr, ptr %t61 %t63 = getelementptr inbounds %Cmp_Node, ptr %t62, i32 0, i32 1 - store ptr @.str6327, ptr %t63 + store ptr @.str6330, ptr %t63 %t64 = load ptr, ptr %t19 %t65 = getelementptr inbounds %Cmp_Node, ptr %t64, i32 0, i32 7 %t66 = load ptr, ptr %t65 @@ -63372,7 +63425,7 @@ put9: store ptr %t93, ptr %t94 %t95 = load ptr, ptr %t94 %t96 = getelementptr inbounds %Cmp_Node, ptr %t95, i32 0, i32 1 - store ptr @.str6328, ptr %t96 + store ptr @.str6331, ptr %t96 %t97 = load ptr, ptr %t92 %t98 = getelementptr inbounds %Cmp_Node, ptr %t97, i32 0, i32 4 %t99 = load ptr, ptr %t94 @@ -63415,12 +63468,12 @@ put11: store i32 %t126, ptr %t109 %t127 = load ptr, ptr %t19 call void @fn_emit_query(ptr %t127) - %t128 = call ptr @fn_val(ptr @.str6329, ptr @.str6330) + %t128 = call ptr @fn_val(ptr @.str6332, ptr @.str6333) store ptr %t128, ptr %retval br label %ret ifend2: %t129 = load ptr, ptr %t1 - %t130 = call i32 @lp_str_eq(ptr %t129, ptr @.str6331) + %t130 = call i32 @lp_str_eq(ptr %t129, ptr @.str6334) %t131 = icmp ne i32 %t130, 0 br i1 %t131, label %then12, label %ifend14 then12: @@ -63435,136 +63488,136 @@ then12: br i1 %t139, label %then15, label %ifend17 then15: %t140 = load ptr, ptr %t0 - %t141 = call ptr @lp_str_concat(ptr %t140, ptr @.str6332) + %t141 = call ptr @lp_str_concat(ptr %t140, ptr @.str6335) call void @fn_perr(ptr %t141) br label %ifend17 ifend17: - %t142 = call ptr @fn_emit_alloca(ptr @.str6333) + %t142 = call ptr @fn_emit_alloca(ptr @.str6336) store ptr %t142, ptr %t143 %t144 = load ptr, ptr %t143 - call void @fn_store_at(ptr @.str6334, ptr @.str6335, ptr %t144) - %t145 = call ptr @fn_emit_alloca(ptr @.str6336) + call void @fn_store_at(ptr @.str6337, ptr @.str6338, ptr %t144) + %t145 = call ptr @fn_emit_alloca(ptr @.str6339) store ptr %t145, ptr %t146 %t147 = load ptr, ptr %t146 - call void @fn_store_at(ptr @.str6337, ptr @.str6338, ptr %t147) - %t148 = call ptr @fn_lbl(ptr @.str6339) + call void @fn_store_at(ptr @.str6340, ptr @.str6341, ptr %t147) + %t148 = call ptr @fn_lbl(ptr @.str6342) store ptr %t148, ptr %t149 - %t150 = call ptr @fn_lbl(ptr @.str6340) + %t150 = call ptr @fn_lbl(ptr @.str6343) store ptr %t150, ptr %t151 - %t152 = call ptr @fn_lbl(ptr @.str6341) + %t152 = call ptr @fn_lbl(ptr @.str6344) store ptr %t152, ptr %t153 - %t154 = call ptr @fn_lbl(ptr @.str6342) + %t154 = call ptr @fn_lbl(ptr @.str6345) store ptr %t154, ptr %t155 - call void @fn_emit(ptr @.str6343) + call void @fn_emit(ptr @.str6346) %t156 = load ptr, ptr %t149 call void @fn_emit(ptr %t156) - call void @fn_emit(ptr @.str6344) + call void @fn_emit(ptr @.str6347) %t157 = load ptr, ptr %t149 call void @fn_emit(ptr %t157) - call void @fn_emit(ptr @.str6345) + call void @fn_emit(ptr @.str6348) %t158 = load ptr, ptr %t143 - %t159 = call ptr @lp_str_concat(ptr @.str6346, ptr %t158) + %t159 = call ptr @lp_str_concat(ptr @.str6349, ptr %t158) %t160 = call ptr @fn_emit_bind(ptr %t159) store ptr %t160, ptr %t161 - %t162 = call ptr @fn_emit_bind(ptr @.str6347) + %t162 = call ptr @fn_emit_bind(ptr @.str6350) store ptr %t162, ptr %t163 %t164 = load ptr, ptr %t161 - %t165 = call ptr @lp_str_concat(ptr @.str6348, ptr %t164) - %t166 = call ptr @lp_str_concat(ptr %t165, ptr @.str6349) + %t165 = call ptr @lp_str_concat(ptr @.str6351, ptr %t164) + %t166 = call ptr @lp_str_concat(ptr %t165, ptr @.str6352) %t167 = load ptr, ptr %t163 %t168 = call ptr @lp_str_concat(ptr %t166, ptr %t167) %t169 = call ptr @fn_emit_bind(ptr %t168) store ptr %t169, ptr %t170 - call void @fn_emit(ptr @.str6350) + call void @fn_emit(ptr @.str6353) %t171 = load ptr, ptr %t170 call void @fn_emit(ptr %t171) - call void @fn_emit(ptr @.str6351) + call void @fn_emit(ptr @.str6354) %t172 = load ptr, ptr %t151 call void @fn_emit(ptr %t172) - call void @fn_emit(ptr @.str6352) + call void @fn_emit(ptr @.str6355) %t173 = load ptr, ptr %t155 call void @fn_emit(ptr %t173) - call void @fn_emit(ptr @.str6353) + call void @fn_emit(ptr @.str6356) %t174 = load ptr, ptr %t151 call void @fn_emit(ptr %t174) - call void @fn_emit(ptr @.str6354) + call void @fn_emit(ptr @.str6357) %t175 = load ptr, ptr %t4 - %t176 = call ptr @lp_str_concat(ptr @.str6355, ptr %t175) - %t177 = call ptr @lp_str_concat(ptr %t176, ptr @.str6356) + %t176 = call ptr @lp_str_concat(ptr @.str6358, ptr %t175) + %t177 = call ptr @lp_str_concat(ptr %t176, ptr @.str6359) %t178 = load ptr, ptr %t161 %t179 = call ptr @lp_str_concat(ptr %t177, ptr %t178) %t180 = call ptr @fn_emit_bind(ptr %t179) store ptr %t180, ptr %t181 %t182 = load ptr, ptr %t181 - %t183 = call ptr @lp_str_concat(ptr @.str6357, ptr %t182) + %t183 = call ptr @lp_str_concat(ptr @.str6360, ptr %t182) %t184 = call ptr @fn_emit_bind(ptr %t183) store ptr %t184, ptr %t185 %t186 = load ptr, ptr %t4 - %t187 = call ptr @lp_str_concat(ptr @.str6358, ptr %t186) - %t188 = call ptr @lp_str_concat(ptr %t187, ptr @.str6359) + %t187 = call ptr @lp_str_concat(ptr @.str6361, ptr %t186) + %t188 = call ptr @lp_str_concat(ptr %t187, ptr @.str6362) %t189 = load ptr, ptr %t0 %t190 = call ptr @lp_str_concat(ptr %t188, ptr %t189) - %t191 = call ptr @lp_str_concat(ptr %t190, ptr @.str6360) + %t191 = call ptr @lp_str_concat(ptr %t190, ptr @.str6363) %t192 = load ptr, ptr %t161 %t193 = call ptr @lp_str_concat(ptr %t191, ptr %t192) %t194 = call ptr @fn_emit_bind(ptr %t193) store ptr %t194, ptr %t195 %t196 = load ptr, ptr %t195 - %t197 = call ptr @lp_str_concat(ptr @.str6361, ptr %t196) + %t197 = call ptr @lp_str_concat(ptr @.str6364, ptr %t196) %t198 = call ptr @fn_emit_bind(ptr %t197) store ptr %t198, ptr %t199 %t200 = load ptr, ptr %t199 - %t201 = call ptr @lp_str_concat(ptr @.str6362, ptr %t200) - %t202 = call ptr @lp_str_concat(ptr %t201, ptr @.str6363) + %t201 = call ptr @lp_str_concat(ptr @.str6365, ptr %t200) + %t202 = call ptr @lp_str_concat(ptr %t201, ptr @.str6366) %t203 = call ptr @fn_emit_bind(ptr %t202) store ptr %t203, ptr %t204 %t205 = load ptr, ptr %t185 - %t206 = call ptr @lp_str_concat(ptr @.str6364, ptr %t205) - %t207 = call ptr @lp_str_concat(ptr %t206, ptr @.str6365) + %t206 = call ptr @lp_str_concat(ptr @.str6367, ptr %t205) + %t207 = call ptr @lp_str_concat(ptr %t206, ptr @.str6368) %t208 = load ptr, ptr %t204 %t209 = call ptr @lp_str_concat(ptr %t207, ptr %t208) %t210 = call ptr @fn_emit_bind(ptr %t209) store ptr %t210, ptr %t211 %t212 = load ptr, ptr %t146 - %t213 = call ptr @lp_str_concat(ptr @.str6366, ptr %t212) + %t213 = call ptr @lp_str_concat(ptr @.str6369, ptr %t212) %t214 = call ptr @fn_emit_bind(ptr %t213) store ptr %t214, ptr %t215 %t216 = load ptr, ptr %t215 - %t217 = call ptr @lp_str_concat(ptr @.str6367, ptr %t216) - %t218 = call ptr @lp_str_concat(ptr %t217, ptr @.str6368) + %t217 = call ptr @lp_str_concat(ptr @.str6370, ptr %t216) + %t218 = call ptr @lp_str_concat(ptr %t217, ptr @.str6371) %t219 = load ptr, ptr %t211 %t220 = call ptr @lp_str_concat(ptr %t218, ptr %t219) %t221 = call ptr @fn_emit_bind(ptr %t220) store ptr %t221, ptr %t222 %t223 = load ptr, ptr %t222 %t224 = load ptr, ptr %t146 - call void @fn_store_at(ptr @.str6369, ptr %t223, ptr %t224) - call void @fn_emit(ptr @.str6370) + call void @fn_store_at(ptr @.str6372, ptr %t223, ptr %t224) + call void @fn_emit(ptr @.str6373) %t225 = load ptr, ptr %t153 call void @fn_emit(ptr %t225) - call void @fn_emit(ptr @.str6371) + call void @fn_emit(ptr @.str6374) %t226 = load ptr, ptr %t153 call void @fn_emit(ptr %t226) - call void @fn_emit(ptr @.str6372) + call void @fn_emit(ptr @.str6375) %t227 = load ptr, ptr %t161 - %t228 = call ptr @lp_str_concat(ptr @.str6373, ptr %t227) - %t229 = call ptr @lp_str_concat(ptr %t228, ptr @.str6374) + %t228 = call ptr @lp_str_concat(ptr @.str6376, ptr %t227) + %t229 = call ptr @lp_str_concat(ptr %t228, ptr @.str6377) %t230 = call ptr @fn_emit_bind(ptr %t229) store ptr %t230, ptr %t231 %t232 = load ptr, ptr %t231 %t233 = load ptr, ptr %t143 - call void @fn_store_at(ptr @.str6375, ptr %t232, ptr %t233) - call void @fn_emit(ptr @.str6376) + call void @fn_store_at(ptr @.str6378, ptr %t232, ptr %t233) + call void @fn_emit(ptr @.str6379) %t234 = load ptr, ptr %t149 call void @fn_emit(ptr %t234) - call void @fn_emit(ptr @.str6377) + call void @fn_emit(ptr @.str6380) %t235 = load ptr, ptr %t155 call void @fn_emit(ptr %t235) - call void @fn_emit(ptr @.str6378) + call void @fn_emit(ptr @.str6381) %t236 = load ptr, ptr %t146 - %t237 = call ptr @lp_str_concat(ptr @.str6379, ptr %t236) + %t237 = call ptr @lp_str_concat(ptr @.str6382, ptr %t236) %t238 = call ptr @fn_emit_bind(ptr %t237) - %t239 = call ptr @fn_val(ptr %t238, ptr @.str6380) + %t239 = call ptr @fn_val(ptr %t238, ptr @.str6383) store ptr %t239, ptr %retval br label %ret ifend14: @@ -63579,10 +63632,10 @@ ifend14: br i1 %t247, label %then18, label %ifend20 then18: %t248 = load ptr, ptr %t0 - %t249 = call ptr @lp_str_concat(ptr %t248, ptr @.str6381) + %t249 = call ptr @lp_str_concat(ptr %t248, ptr @.str6384) %t250 = load ptr, ptr %t1 %t251 = call ptr @lp_str_concat(ptr %t249, ptr %t250) - %t252 = call ptr @lp_str_concat(ptr %t251, ptr @.str6382) + %t252 = call ptr @lp_str_concat(ptr %t251, ptr @.str6385) call void @fn_perr(ptr %t252) br label %ifend20 ifend20: @@ -63596,19 +63649,19 @@ ifend20: %t260 = call ptr @fn_emit_expr(ptr %t259) store ptr %t260, ptr %t261 %t262 = load ptr, ptr %t1 - %t263 = call i32 @lp_str_eq(ptr %t262, ptr @.str6383) + %t263 = call i32 @lp_str_eq(ptr %t262, ptr @.str6386) %t264 = icmp ne i32 %t263, 0 br i1 %t264, label %then21, label %ifend23 then21: %t265 = load ptr, ptr %t4 - %t266 = call ptr @lp_str_concat(ptr @.str6384, ptr %t265) - %t267 = call ptr @lp_str_concat(ptr %t266, ptr @.str6385) + %t266 = call ptr @lp_str_concat(ptr @.str6387, ptr %t265) + %t267 = call ptr @lp_str_concat(ptr %t266, ptr @.str6388) %t268 = load ptr, ptr %t0 %t269 = call ptr @lp_str_concat(ptr %t267, ptr %t268) - %t270 = call ptr @lp_str_concat(ptr %t269, ptr @.str6386) + %t270 = call ptr @lp_str_concat(ptr %t269, ptr @.str6389) %t271 = load ptr, ptr %t0 %t272 = call ptr @lp_str_concat(ptr %t270, ptr %t271) - %t273 = call ptr @lp_str_concat(ptr %t272, ptr @.str6387) + %t273 = call ptr @lp_str_concat(ptr %t272, ptr @.str6390) %t274 = load ptr, ptr %t261 %t275 = getelementptr inbounds %Cmp_Val, ptr %t274, i32 0, i32 0 %t276 = load ptr, ptr %t275 @@ -63624,76 +63677,76 @@ ifend23: %t283 = load ptr, ptr %t261 %t284 = getelementptr inbounds %Cmp_Val, ptr %t283, i32 0, i32 0 %t285 = load ptr, ptr %t284 - %t286 = call ptr @lp_str_concat(ptr @.str6388, ptr %t285) - %t287 = call ptr @lp_str_concat(ptr %t286, ptr @.str6389) + %t286 = call ptr @lp_str_concat(ptr @.str6391, ptr %t285) + %t287 = call ptr @lp_str_concat(ptr %t286, ptr @.str6392) %t288 = load ptr, ptr %t4 %t289 = call ptr @lp_str_concat(ptr %t287, ptr %t288) %t290 = call ptr @fn_emit_bind(ptr %t289) store ptr %t290, ptr %t291 %t292 = load ptr, ptr %t291 - %t293 = call ptr @lp_str_concat(ptr @.str6390, ptr %t292) - %t294 = call ptr @lp_str_concat(ptr %t293, ptr @.str6391) + %t293 = call ptr @lp_str_concat(ptr @.str6393, ptr %t292) + %t294 = call ptr @lp_str_concat(ptr %t293, ptr @.str6394) %t295 = load ptr, ptr %t261 %t296 = getelementptr inbounds %Cmp_Val, ptr %t295, i32 0, i32 0 %t297 = load ptr, ptr %t296 %t298 = call ptr @lp_str_concat(ptr %t294, ptr %t297) - %t299 = call ptr @lp_str_concat(ptr %t298, ptr @.str6392) + %t299 = call ptr @lp_str_concat(ptr %t298, ptr @.str6395) %t300 = call ptr @fn_emit_bind(ptr %t299) store ptr %t300, ptr %t301 %t302 = load ptr, ptr %t4 - %t303 = call ptr @lp_str_concat(ptr @.str6393, ptr %t302) - %t304 = call ptr @lp_str_concat(ptr %t303, ptr @.str6394) + %t303 = call ptr @lp_str_concat(ptr @.str6396, ptr %t302) + %t304 = call ptr @lp_str_concat(ptr %t303, ptr @.str6397) %t305 = load ptr, ptr %t301 %t306 = call ptr @lp_str_concat(ptr %t304, ptr %t305) %t307 = call ptr @fn_emit_bind(ptr %t306) store ptr %t307, ptr %t308 %t309 = load ptr, ptr %t308 - %t310 = call ptr @lp_str_concat(ptr @.str6395, ptr %t309) + %t310 = call ptr @lp_str_concat(ptr @.str6398, ptr %t309) %t311 = call ptr @fn_emit_bind(ptr %t310) store ptr %t311, ptr %t312 %t313 = load ptr, ptr %t312 - %t314 = call ptr @lp_str_concat(ptr @.str6396, ptr %t313) - %t315 = call ptr @lp_str_concat(ptr %t314, ptr @.str6397) + %t314 = call ptr @lp_str_concat(ptr @.str6399, ptr %t313) + %t315 = call ptr @lp_str_concat(ptr %t314, ptr @.str6400) %t316 = call ptr @fn_emit_bind(ptr %t315) store ptr %t316, ptr %t317 %t318 = load ptr, ptr %t4 - %t319 = call ptr @lp_str_concat(ptr @.str6398, ptr %t318) - %t320 = call ptr @lp_str_concat(ptr %t319, ptr @.str6399) + %t319 = call ptr @lp_str_concat(ptr @.str6401, ptr %t318) + %t320 = call ptr @lp_str_concat(ptr %t319, ptr @.str6402) %t321 = load ptr, ptr %t0 %t322 = call ptr @lp_str_concat(ptr %t320, ptr %t321) - %t323 = call ptr @lp_str_concat(ptr %t322, ptr @.str6400) + %t323 = call ptr @lp_str_concat(ptr %t322, ptr @.str6403) %t324 = load ptr, ptr %t301 %t325 = call ptr @lp_str_concat(ptr %t323, ptr %t324) %t326 = call ptr @fn_emit_bind(ptr %t325) store ptr %t326, ptr %t327 %t328 = load ptr, ptr %t327 - %t329 = call ptr @lp_str_concat(ptr @.str6401, ptr %t328) + %t329 = call ptr @lp_str_concat(ptr @.str6404, ptr %t328) %t330 = call ptr @fn_emit_bind(ptr %t329) store ptr %t330, ptr %t331 %t332 = load ptr, ptr %t331 - %t333 = call ptr @lp_str_concat(ptr @.str6402, ptr %t332) - %t334 = call ptr @lp_str_concat(ptr %t333, ptr @.str6403) + %t333 = call ptr @lp_str_concat(ptr @.str6405, ptr %t332) + %t334 = call ptr @lp_str_concat(ptr %t333, ptr @.str6406) %t335 = call ptr @fn_emit_bind(ptr %t334) store ptr %t335, ptr %t336 %t337 = load ptr, ptr %t291 - %t338 = call ptr @lp_str_concat(ptr @.str6404, ptr %t337) - %t339 = call ptr @lp_str_concat(ptr %t338, ptr @.str6405) + %t338 = call ptr @lp_str_concat(ptr @.str6407, ptr %t337) + %t339 = call ptr @lp_str_concat(ptr %t338, ptr @.str6408) %t340 = load ptr, ptr %t317 %t341 = call ptr @lp_str_concat(ptr %t339, ptr %t340) %t342 = call ptr @fn_emit_bind(ptr %t341) store ptr %t342, ptr %t343 %t344 = load ptr, ptr %t343 - %t345 = call ptr @lp_str_concat(ptr @.str6406, ptr %t344) - %t346 = call ptr @lp_str_concat(ptr %t345, ptr @.str6407) + %t345 = call ptr @lp_str_concat(ptr @.str6409, ptr %t344) + %t346 = call ptr @lp_str_concat(ptr %t345, ptr @.str6410) %t347 = load ptr, ptr %t336 %t348 = call ptr @lp_str_concat(ptr %t346, ptr %t347) %t349 = call ptr @fn_emit_bind(ptr %t348) store ptr %t349, ptr %t350 %t351 = load ptr, ptr %t350 - %t352 = call ptr @lp_str_concat(ptr @.str6408, ptr %t351) - %t353 = call ptr @lp_str_concat(ptr %t352, ptr @.str6409) + %t352 = call ptr @lp_str_concat(ptr @.str6411, ptr %t351) + %t353 = call ptr @lp_str_concat(ptr %t352, ptr @.str6412) %t354 = call ptr @fn_emit_bind(ptr %t353) - %t355 = call ptr @fn_val(ptr %t354, ptr @.str6410) + %t355 = call ptr @fn_val(ptr %t354, ptr @.str6413) store ptr %t355, ptr %retval br label %ret ret: @@ -63740,7 +63793,7 @@ then3: %t23 = load ptr, ptr %t16 %t24 = getelementptr inbounds %Cmp_Node, ptr %t23, i32 0, i32 1 %t25 = load ptr, ptr %t24 - %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str6411) + %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str6414) %t27 = icmp ne i32 %t26, 0 br i1 %t27, label %then6, label %ifend8 then6: @@ -63777,7 +63830,7 @@ then12: br label %ret ifend14: %t44 = load ptr, ptr %t39 - %t45 = call i32 @lp_str_eq(ptr %t44, ptr @.str6412) + %t45 = call i32 @lp_str_eq(ptr %t44, ptr @.str6415) store i32 %t45, ptr %retval br label %ret ret: @@ -63813,11 +63866,15 @@ entry: %t3521 = alloca ptr %t3559 = alloca ptr %t14995 = alloca i32 - %t15012 = alloca i32 - %t15034 = alloca ptr - %t15041 = alloca ptr - %t15042 = alloca i32 - %t15089 = alloca ptr + %t15011 = alloca ptr + %t15024 = alloca ptr + %t15025 = alloca i32 + %t15060 = alloca i32 + %t15077 = alloca i32 + %t15099 = alloca ptr + %t15106 = alloca ptr + %t15107 = alloca i32 + %t15154 = alloca ptr store ptr %arg_ns, ptr %t0 store ptr %arg_meth, ptr %t1 store ptr %arg_e, ptr %t2 @@ -63831,14 +63888,14 @@ entry: br i1 %t8, label %sc0, label %scend1 sc0: %t13 = load ptr, ptr %t1 - %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str6413) + %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str6416) %t15 = icmp ne i32 %t14, 0 %t16 = zext i1 %t15 to i32 store i32 %t16, ptr %t12 br i1 %t15, label %scend3, label %sc2 sc2: %t17 = load ptr, ptr %t1 - %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str6414) + %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str6417) %t19 = icmp ne i32 %t18, 0 %t20 = zext i1 %t19 to i32 store i32 %t20, ptr %t12 @@ -63851,7 +63908,7 @@ scend3: br i1 %t22, label %scend5, label %sc4 sc4: %t24 = load ptr, ptr %t1 - %t25 = call i32 @lp_str_eq(ptr %t24, ptr @.str6415) + %t25 = call i32 @lp_str_eq(ptr %t24, ptr @.str6418) %t26 = icmp ne i32 %t25, 0 %t27 = zext i1 %t26 to i32 store i32 %t27, ptr %t11 @@ -63864,7 +63921,7 @@ scend5: br i1 %t29, label %scend7, label %sc6 sc6: %t31 = load ptr, ptr %t1 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str6416) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str6419) %t33 = icmp ne i32 %t32, 0 %t34 = zext i1 %t33 to i32 store i32 %t34, ptr %t10 @@ -63882,7 +63939,7 @@ scend1: then8: %t40 = load ptr, ptr %t0 %t41 = call ptr @fn_ns_lower(ptr %t40) - %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str6417) + %t42 = call ptr @lp_str_concat(ptr %t41, ptr @.str6420) %t43 = load ptr, ptr %t1 %t44 = call ptr @lp_str_concat(ptr %t42, ptr %t43) %t45 = call ptr @fn_find_fn(ptr %t44) @@ -63901,7 +63958,7 @@ ifend13: br label %ifend10 ifend10: %t53 = load ptr, ptr %t0 - %t54 = call i32 @lp_str_eq(ptr %t53, ptr @.str6418) + %t54 = call i32 @lp_str_eq(ptr %t53, ptr @.str6421) %t55 = icmp ne i32 %t54, 0 br i1 %t55, label %then14, label %ifend16 then14: @@ -63917,12 +63974,12 @@ then17: br label %ret ifend19: %t62 = load ptr, ptr %t1 - %t63 = call ptr @lp_str_concat(ptr @.str6419, ptr %t62) + %t63 = call ptr @lp_str_concat(ptr @.str6422, ptr %t62) call void @fn_perr(ptr %t63) br label %ifend16 ifend16: %t64 = load ptr, ptr %t0 - %t65 = call i32 @lp_str_eq(ptr %t64, ptr @.str6420) + %t65 = call i32 @lp_str_eq(ptr %t64, ptr @.str6423) %t66 = icmp ne i32 %t65, 0 br i1 %t66, label %then20, label %ifend22 then20: @@ -63938,12 +63995,12 @@ then23: br label %ret ifend25: %t73 = load ptr, ptr %t1 - %t74 = call ptr @lp_str_concat(ptr @.str6421, ptr %t73) + %t74 = call ptr @lp_str_concat(ptr @.str6424, ptr %t73) call void @fn_perr(ptr %t74) br label %ifend22 ifend22: %t75 = load ptr, ptr %t0 - %t76 = call i32 @lp_str_eq(ptr %t75, ptr @.str6422) + %t76 = call i32 @lp_str_eq(ptr %t75, ptr @.str6425) %t77 = icmp ne i32 %t76, 0 br i1 %t77, label %then26, label %ifend28 then26: @@ -63959,12 +64016,12 @@ then29: br label %ret ifend31: %t84 = load ptr, ptr %t1 - %t85 = call ptr @lp_str_concat(ptr @.str6423, ptr %t84) + %t85 = call ptr @lp_str_concat(ptr @.str6426, ptr %t84) call void @fn_perr(ptr %t85) br label %ifend28 ifend28: %t86 = load ptr, ptr %t0 - %t87 = call i32 @lp_str_eq(ptr %t86, ptr @.str6424) + %t87 = call i32 @lp_str_eq(ptr %t86, ptr @.str6427) %t88 = icmp ne i32 %t87, 0 br i1 %t88, label %then32, label %ifend34 then32: @@ -63980,12 +64037,12 @@ then35: br label %ret ifend37: %t95 = load ptr, ptr %t1 - %t96 = call ptr @lp_str_concat(ptr @.str6425, ptr %t95) + %t96 = call ptr @lp_str_concat(ptr @.str6428, ptr %t95) call void @fn_perr(ptr %t96) br label %ifend34 ifend34: %t97 = load ptr, ptr %t0 - %t98 = call i32 @lp_str_eq(ptr %t97, ptr @.str6426) + %t98 = call i32 @lp_str_eq(ptr %t97, ptr @.str6429) %t99 = icmp ne i32 %t98, 0 br i1 %t99, label %then38, label %ifend40 then38: @@ -64003,7 +64060,7 @@ ifend43: br label %ifend40 ifend40: %t106 = load ptr, ptr %t0 - %t107 = call i32 @lp_str_eq(ptr %t106, ptr @.str6427) + %t107 = call i32 @lp_str_eq(ptr %t106, ptr @.str6430) %t108 = icmp ne i32 %t107, 0 br i1 %t108, label %then44, label %ifend46 then44: @@ -64021,7 +64078,7 @@ ifend49: br label %ifend46 ifend46: %t115 = load ptr, ptr %t0 - %t116 = call i32 @lp_str_eq(ptr %t115, ptr @.str6428) + %t116 = call i32 @lp_str_eq(ptr %t115, ptr @.str6431) %t117 = icmp ne i32 %t116, 0 br i1 %t117, label %then50, label %ifend52 then50: @@ -64037,12 +64094,12 @@ then53: br label %ret ifend55: %t124 = load ptr, ptr %t1 - %t125 = call ptr @lp_str_concat(ptr @.str6429, ptr %t124) + %t125 = call ptr @lp_str_concat(ptr @.str6432, ptr %t124) call void @fn_perr(ptr %t125) br label %ifend52 ifend52: %t126 = load ptr, ptr %t0 - %t127 = call i32 @lp_str_eq(ptr %t126, ptr @.str6430) + %t127 = call i32 @lp_str_eq(ptr %t126, ptr @.str6433) %t128 = icmp ne i32 %t127, 0 br i1 %t128, label %then56, label %ifend58 then56: @@ -64058,12 +64115,12 @@ then59: br label %ret ifend61: %t135 = load ptr, ptr %t1 - %t136 = call ptr @lp_str_concat(ptr @.str6431, ptr %t135) + %t136 = call ptr @lp_str_concat(ptr @.str6434, ptr %t135) call void @fn_perr(ptr %t136) br label %ifend58 ifend58: %t137 = load ptr, ptr %t0 - %t138 = call i32 @lp_str_eq(ptr %t137, ptr @.str6432) + %t138 = call i32 @lp_str_eq(ptr %t137, ptr @.str6435) %t139 = icmp ne i32 %t138, 0 br i1 %t139, label %then62, label %ifend64 then62: @@ -64079,12 +64136,12 @@ then65: br label %ret ifend67: %t146 = load ptr, ptr %t1 - %t147 = call ptr @lp_str_concat(ptr @.str6433, ptr %t146) + %t147 = call ptr @lp_str_concat(ptr @.str6436, ptr %t146) call void @fn_perr(ptr %t147) br label %ifend64 ifend64: %t148 = load ptr, ptr %t0 - %t149 = call i32 @lp_str_eq(ptr %t148, ptr @.str6434) + %t149 = call i32 @lp_str_eq(ptr %t148, ptr @.str6437) %t150 = icmp ne i32 %t149, 0 br i1 %t150, label %then68, label %ifend70 then68: @@ -64100,12 +64157,12 @@ then71: br label %ret ifend73: %t157 = load ptr, ptr %t1 - %t158 = call ptr @lp_str_concat(ptr @.str6435, ptr %t157) + %t158 = call ptr @lp_str_concat(ptr @.str6438, ptr %t157) call void @fn_perr(ptr %t158) br label %ifend70 ifend70: %t159 = load ptr, ptr %t0 - %t160 = call i32 @lp_str_eq(ptr %t159, ptr @.str6436) + %t160 = call i32 @lp_str_eq(ptr %t159, ptr @.str6439) %t161 = icmp ne i32 %t160, 0 br i1 %t161, label %then74, label %ifend76 then74: @@ -64121,12 +64178,12 @@ then77: br label %ret ifend79: %t168 = load ptr, ptr %t1 - %t169 = call ptr @lp_str_concat(ptr @.str6437, ptr %t168) + %t169 = call ptr @lp_str_concat(ptr @.str6440, ptr %t168) call void @fn_perr(ptr %t169) br label %ifend76 ifend76: %t170 = load ptr, ptr %t0 - %t171 = call i32 @lp_str_eq(ptr %t170, ptr @.str6438) + %t171 = call i32 @lp_str_eq(ptr %t170, ptr @.str6441) %t172 = icmp ne i32 %t171, 0 br i1 %t172, label %then80, label %ifend82 then80: @@ -64142,12 +64199,12 @@ then83: br label %ret ifend85: %t179 = load ptr, ptr %t1 - %t180 = call ptr @lp_str_concat(ptr @.str6439, ptr %t179) + %t180 = call ptr @lp_str_concat(ptr @.str6442, ptr %t179) call void @fn_perr(ptr %t180) br label %ifend82 ifend82: %t181 = load ptr, ptr %t0 - %t182 = call i32 @lp_str_eq(ptr %t181, ptr @.str6440) + %t182 = call i32 @lp_str_eq(ptr %t181, ptr @.str6443) %t183 = icmp ne i32 %t182, 0 br i1 %t183, label %then86, label %ifend88 then86: @@ -64163,12 +64220,12 @@ then89: br label %ret ifend91: %t190 = load ptr, ptr %t1 - %t191 = call ptr @lp_str_concat(ptr @.str6441, ptr %t190) + %t191 = call ptr @lp_str_concat(ptr @.str6444, ptr %t190) call void @fn_perr(ptr %t191) br label %ifend88 ifend88: %t192 = load ptr, ptr %t0 - %t193 = call i32 @lp_str_eq(ptr %t192, ptr @.str6442) + %t193 = call i32 @lp_str_eq(ptr %t192, ptr @.str6445) %t194 = icmp ne i32 %t193, 0 br i1 %t194, label %then92, label %ifend94 then92: @@ -64184,12 +64241,12 @@ then95: br label %ret ifend97: %t201 = load ptr, ptr %t1 - %t202 = call ptr @lp_str_concat(ptr @.str6443, ptr %t201) + %t202 = call ptr @lp_str_concat(ptr @.str6446, ptr %t201) call void @fn_perr(ptr %t202) br label %ifend94 ifend94: %t203 = load ptr, ptr %t0 - %t204 = call i32 @lp_str_eq(ptr %t203, ptr @.str6444) + %t204 = call i32 @lp_str_eq(ptr %t203, ptr @.str6447) %t205 = icmp ne i32 %t204, 0 br i1 %t205, label %then98, label %ifend100 then98: @@ -64205,12 +64262,12 @@ then101: br label %ret ifend103: %t212 = load ptr, ptr %t1 - %t213 = call ptr @lp_str_concat(ptr @.str6445, ptr %t212) + %t213 = call ptr @lp_str_concat(ptr @.str6448, ptr %t212) call void @fn_perr(ptr %t213) br label %ifend100 ifend100: %t214 = load ptr, ptr %t0 - %t215 = call i32 @lp_str_eq(ptr %t214, ptr @.str6446) + %t215 = call i32 @lp_str_eq(ptr %t214, ptr @.str6449) %t216 = icmp ne i32 %t215, 0 br i1 %t216, label %then104, label %ifend106 then104: @@ -64226,12 +64283,12 @@ then107: br label %ret ifend109: %t223 = load ptr, ptr %t1 - %t224 = call ptr @lp_str_concat(ptr @.str6447, ptr %t223) + %t224 = call ptr @lp_str_concat(ptr @.str6450, ptr %t223) call void @fn_perr(ptr %t224) br label %ifend106 ifend106: %t225 = load ptr, ptr %t0 - %t226 = call i32 @lp_str_eq(ptr %t225, ptr @.str6448) + %t226 = call i32 @lp_str_eq(ptr %t225, ptr @.str6451) %t227 = icmp ne i32 %t226, 0 br i1 %t227, label %then110, label %ifend112 then110: @@ -64247,12 +64304,12 @@ then113: br label %ret ifend115: %t234 = load ptr, ptr %t1 - %t235 = call ptr @lp_str_concat(ptr @.str6449, ptr %t234) + %t235 = call ptr @lp_str_concat(ptr @.str6452, ptr %t234) call void @fn_perr(ptr %t235) br label %ifend112 ifend112: %t236 = load ptr, ptr %t0 - %t237 = call i32 @lp_str_eq(ptr %t236, ptr @.str6450) + %t237 = call i32 @lp_str_eq(ptr %t236, ptr @.str6453) %t238 = icmp ne i32 %t237, 0 br i1 %t238, label %then116, label %ifend118 then116: @@ -64268,12 +64325,12 @@ then119: br label %ret ifend121: %t245 = load ptr, ptr %t1 - %t246 = call ptr @lp_str_concat(ptr @.str6451, ptr %t245) + %t246 = call ptr @lp_str_concat(ptr @.str6454, ptr %t245) call void @fn_perr(ptr %t246) br label %ifend118 ifend118: %t247 = load ptr, ptr %t0 - %t248 = call i32 @lp_str_eq(ptr %t247, ptr @.str6452) + %t248 = call i32 @lp_str_eq(ptr %t247, ptr @.str6455) %t249 = icmp ne i32 %t248, 0 br i1 %t249, label %then122, label %ifend124 then122: @@ -64289,12 +64346,12 @@ then125: br label %ret ifend127: %t256 = load ptr, ptr %t1 - %t257 = call ptr @lp_str_concat(ptr @.str6453, ptr %t256) + %t257 = call ptr @lp_str_concat(ptr @.str6456, ptr %t256) call void @fn_perr(ptr %t257) br label %ifend124 ifend124: %t258 = load ptr, ptr %t0 - %t259 = call i32 @lp_str_eq(ptr %t258, ptr @.str6454) + %t259 = call i32 @lp_str_eq(ptr %t258, ptr @.str6457) %t260 = icmp ne i32 %t259, 0 br i1 %t260, label %then128, label %ifend130 then128: @@ -64310,12 +64367,12 @@ then131: br label %ret ifend133: %t267 = load ptr, ptr %t1 - %t268 = call ptr @lp_str_concat(ptr @.str6455, ptr %t267) + %t268 = call ptr @lp_str_concat(ptr @.str6458, ptr %t267) call void @fn_perr(ptr %t268) br label %ifend130 ifend130: %t269 = load ptr, ptr %t0 - %t270 = call i32 @lp_str_eq(ptr %t269, ptr @.str6456) + %t270 = call i32 @lp_str_eq(ptr %t269, ptr @.str6459) %t271 = icmp ne i32 %t270, 0 br i1 %t271, label %then134, label %ifend136 then134: @@ -64331,12 +64388,12 @@ then137: br label %ret ifend139: %t278 = load ptr, ptr %t1 - %t279 = call ptr @lp_str_concat(ptr @.str6457, ptr %t278) + %t279 = call ptr @lp_str_concat(ptr @.str6460, ptr %t278) call void @fn_perr(ptr %t279) br label %ifend136 ifend136: %t280 = load ptr, ptr %t0 - %t281 = call i32 @lp_str_eq(ptr %t280, ptr @.str6458) + %t281 = call i32 @lp_str_eq(ptr %t280, ptr @.str6461) %t282 = icmp ne i32 %t281, 0 br i1 %t282, label %then140, label %ifend142 then140: @@ -64352,12 +64409,12 @@ then143: br label %ret ifend145: %t289 = load ptr, ptr %t1 - %t290 = call ptr @lp_str_concat(ptr @.str6459, ptr %t289) + %t290 = call ptr @lp_str_concat(ptr @.str6462, ptr %t289) call void @fn_perr(ptr %t290) br label %ifend142 ifend142: %t291 = load ptr, ptr %t0 - %t292 = call i32 @lp_str_eq(ptr %t291, ptr @.str6460) + %t292 = call i32 @lp_str_eq(ptr %t291, ptr @.str6463) %t293 = icmp ne i32 %t292, 0 br i1 %t293, label %then146, label %ifend148 then146: @@ -64373,12 +64430,12 @@ then149: br label %ret ifend151: %t300 = load ptr, ptr %t1 - %t301 = call ptr @lp_str_concat(ptr @.str6461, ptr %t300) + %t301 = call ptr @lp_str_concat(ptr @.str6464, ptr %t300) call void @fn_perr(ptr %t301) br label %ifend148 ifend148: %t302 = load ptr, ptr %t0 - %t303 = call i32 @lp_str_eq(ptr %t302, ptr @.str6462) + %t303 = call i32 @lp_str_eq(ptr %t302, ptr @.str6465) %t304 = icmp ne i32 %t303, 0 br i1 %t304, label %then152, label %ifend154 then152: @@ -64394,12 +64451,12 @@ then155: br label %ret ifend157: %t311 = load ptr, ptr %t1 - %t312 = call ptr @lp_str_concat(ptr @.str6463, ptr %t311) + %t312 = call ptr @lp_str_concat(ptr @.str6466, ptr %t311) call void @fn_perr(ptr %t312) br label %ifend154 ifend154: %t313 = load ptr, ptr %t0 - %t314 = call i32 @lp_str_eq(ptr %t313, ptr @.str6464) + %t314 = call i32 @lp_str_eq(ptr %t313, ptr @.str6467) %t315 = icmp ne i32 %t314, 0 br i1 %t315, label %then158, label %ifend160 then158: @@ -64415,12 +64472,12 @@ then161: br label %ret ifend163: %t322 = load ptr, ptr %t1 - %t323 = call ptr @lp_str_concat(ptr @.str6465, ptr %t322) + %t323 = call ptr @lp_str_concat(ptr @.str6468, ptr %t322) call void @fn_perr(ptr %t323) br label %ifend160 ifend160: %t324 = load ptr, ptr %t0 - %t325 = call i32 @lp_str_eq(ptr %t324, ptr @.str6466) + %t325 = call i32 @lp_str_eq(ptr %t324, ptr @.str6469) %t326 = icmp ne i32 %t325, 0 br i1 %t326, label %then164, label %ifend166 then164: @@ -64436,12 +64493,12 @@ then167: br label %ret ifend169: %t333 = load ptr, ptr %t1 - %t334 = call ptr @lp_str_concat(ptr @.str6467, ptr %t333) + %t334 = call ptr @lp_str_concat(ptr @.str6470, ptr %t333) call void @fn_perr(ptr %t334) br label %ifend166 ifend166: %t335 = load ptr, ptr %t0 - %t336 = call i32 @lp_str_eq(ptr %t335, ptr @.str6468) + %t336 = call i32 @lp_str_eq(ptr %t335, ptr @.str6471) %t337 = icmp ne i32 %t336, 0 br i1 %t337, label %then170, label %ifend172 then170: @@ -64457,66 +64514,66 @@ then173: br label %ret ifend175: %t344 = load ptr, ptr %t1 - %t345 = call ptr @lp_str_concat(ptr @.str6469, ptr %t344) + %t345 = call ptr @lp_str_concat(ptr @.str6472, ptr %t344) call void @fn_perr(ptr %t345) br label %ifend172 ifend172: %t346 = load ptr, ptr %t0 - %t347 = call i32 @lp_str_eq(ptr %t346, ptr @.str6470) + %t347 = call i32 @lp_str_eq(ptr %t346, ptr @.str6473) %t348 = icmp ne i32 %t347, 0 br i1 %t348, label %then176, label %ifend178 then176: %t349 = load ptr, ptr %t1 - %t350 = call i32 @lp_str_eq(ptr %t349, ptr @.str6471) + %t350 = call i32 @lp_str_eq(ptr %t349, ptr @.str6474) %t351 = icmp ne i32 %t350, 0 br i1 %t351, label %then179, label %ifend181 then179: %t352 = call ptr @fn_itoa(i32 1024) - %t353 = call ptr @fn_val(ptr %t352, ptr @.str6472) + %t353 = call ptr @fn_val(ptr %t352, ptr @.str6475) store ptr %t353, ptr %retval br label %ret ifend181: %t354 = load ptr, ptr %t1 - %t355 = call i32 @lp_str_eq(ptr %t354, ptr @.str6473) + %t355 = call i32 @lp_str_eq(ptr %t354, ptr @.str6476) %t356 = icmp ne i32 %t355, 0 br i1 %t356, label %then182, label %ifend184 then182: - %t357 = call ptr @fn_emit_bind(ptr @.str6474) - %t358 = call ptr @fn_val(ptr %t357, ptr @.str6475) + %t357 = call ptr @fn_emit_bind(ptr @.str6477) + %t358 = call ptr @fn_val(ptr %t357, ptr @.str6478) store ptr %t358, ptr %retval br label %ret ifend184: %t359 = load ptr, ptr %t1 - %t360 = call i32 @lp_str_eq(ptr %t359, ptr @.str6476) + %t360 = call i32 @lp_str_eq(ptr %t359, ptr @.str6479) %t361 = icmp ne i32 %t360, 0 br i1 %t361, label %then185, label %ifend187 then185: - %t362 = call ptr @fn_emit_bind(ptr @.str6477) - %t363 = call ptr @fn_val(ptr %t362, ptr @.str6478) + %t362 = call ptr @fn_emit_bind(ptr @.str6480) + %t363 = call ptr @fn_val(ptr %t362, ptr @.str6481) store ptr %t363, ptr %retval br label %ret ifend187: %t364 = load ptr, ptr %t1 - %t365 = call i32 @lp_str_eq(ptr %t364, ptr @.str6479) + %t365 = call i32 @lp_str_eq(ptr %t364, ptr @.str6482) %t366 = icmp ne i32 %t365, 0 br i1 %t366, label %then188, label %ifend190 then188: - %t367 = call ptr @fn_emit_bind(ptr @.str6480) + %t367 = call ptr @fn_emit_bind(ptr @.str6483) store ptr %t367, ptr %t368 - %t369 = call ptr @fn_emit_bind(ptr @.str6481) + %t369 = call ptr @fn_emit_bind(ptr @.str6484) store ptr %t369, ptr %t370 %t371 = load ptr, ptr %t368 - %t372 = call ptr @lp_str_concat(ptr @.str6482, ptr %t371) - %t373 = call ptr @lp_str_concat(ptr %t372, ptr @.str6483) + %t372 = call ptr @lp_str_concat(ptr @.str6485, ptr %t371) + %t373 = call ptr @lp_str_concat(ptr %t372, ptr @.str6486) %t374 = load ptr, ptr %t370 %t375 = call ptr @lp_str_concat(ptr %t373, ptr %t374) %t376 = call ptr @fn_emit_bind(ptr %t375) - %t377 = call ptr @fn_val(ptr %t376, ptr @.str6484) + %t377 = call ptr @fn_val(ptr %t376, ptr @.str6487) store ptr %t377, ptr %retval br label %ret ifend190: %t378 = load ptr, ptr %t1 - %t379 = call ptr @lp_str_concat(ptr @.str6485, ptr %t378) + %t379 = call ptr @lp_str_concat(ptr @.str6488, ptr %t378) call void @fn_perr(ptr %t379) br label %ifend178 ifend178: @@ -64532,16 +64589,16 @@ ifend178: store i32 0, ptr %t386 store ptr %t383, ptr %t387 %t388 = load ptr, ptr %t0 - %t389 = call i32 @lp_str_eq(ptr %t388, ptr @.str6486) + %t389 = call i32 @lp_str_eq(ptr %t388, ptr @.str6489) %t390 = icmp ne i32 %t389, 0 br i1 %t390, label %then191, label %ifend193 then191: %t391 = load ptr, ptr %t1 - %t392 = call i32 @lp_str_eq(ptr %t391, ptr @.str6487) + %t392 = call i32 @lp_str_eq(ptr %t391, ptr @.str6490) %t393 = icmp ne i32 %t392, 0 br i1 %t393, label %then194, label %ifend196 then194: - store ptr @.str6488, ptr %t380 + store ptr @.str6491, ptr %t380 %t394 = load ptr, ptr %t387 %t395 = getelementptr inbounds %LSlice, ptr %t394, i32 0, i32 1 %t396 = getelementptr inbounds %LSlice, ptr %t394, i32 0, i32 2 @@ -64566,17 +64623,17 @@ grow197: put198: %t410 = load ptr, ptr %t397 %t411 = getelementptr inbounds ptr, ptr %t410, i32 %t398 - store ptr @.str6489, ptr %t411 + store ptr @.str6492, ptr %t411 %t412 = add i32 %t398, 1 store i32 %t412, ptr %t395 br label %ifend196 ifend196: %t413 = load ptr, ptr %t1 - %t414 = call i32 @lp_str_eq(ptr %t413, ptr @.str6490) + %t414 = call i32 @lp_str_eq(ptr %t413, ptr @.str6493) %t415 = icmp ne i32 %t414, 0 br i1 %t415, label %then199, label %ifend201 then199: - store ptr @.str6491, ptr %t380 + store ptr @.str6494, ptr %t380 %t416 = load ptr, ptr %t387 %t417 = getelementptr inbounds %LSlice, ptr %t416, i32 0, i32 1 %t418 = getelementptr inbounds %LSlice, ptr %t416, i32 0, i32 2 @@ -64601,7 +64658,7 @@ grow202: put203: %t432 = load ptr, ptr %t419 %t433 = getelementptr inbounds ptr, ptr %t432, i32 %t420 - store ptr @.str6492, ptr %t433 + store ptr @.str6495, ptr %t433 %t434 = add i32 %t420, 1 store i32 %t434, ptr %t417 %t435 = load ptr, ptr %t387 @@ -64628,7 +64685,7 @@ grow204: put205: %t451 = load ptr, ptr %t438 %t452 = getelementptr inbounds ptr, ptr %t451, i32 %t439 - store ptr @.str6493, ptr %t452 + store ptr @.str6496, ptr %t452 %t453 = add i32 %t439, 1 store i32 %t453, ptr %t436 %t454 = load ptr, ptr %t387 @@ -64655,7 +64712,7 @@ grow206: put207: %t470 = load ptr, ptr %t457 %t471 = getelementptr inbounds ptr, ptr %t470, i32 %t458 - store ptr @.str6494, ptr %t471 + store ptr @.str6497, ptr %t471 %t472 = add i32 %t458, 1 store i32 %t472, ptr %t455 %t473 = load ptr, ptr %t387 @@ -64682,7 +64739,7 @@ grow208: put209: %t489 = load ptr, ptr %t476 %t490 = getelementptr inbounds ptr, ptr %t489, i32 %t477 - store ptr @.str6495, ptr %t490 + store ptr @.str6498, ptr %t490 %t491 = add i32 %t477, 1 store i32 %t491, ptr %t474 %t492 = load ptr, ptr %t387 @@ -64709,17 +64766,17 @@ grow210: put211: %t508 = load ptr, ptr %t495 %t509 = getelementptr inbounds ptr, ptr %t508, i32 %t496 - store ptr @.str6496, ptr %t509 + store ptr @.str6499, ptr %t509 %t510 = add i32 %t496, 1 store i32 %t510, ptr %t493 br label %ifend201 ifend201: %t511 = load ptr, ptr %t1 - %t512 = call i32 @lp_str_eq(ptr %t511, ptr @.str6497) + %t512 = call i32 @lp_str_eq(ptr %t511, ptr @.str6500) %t513 = icmp ne i32 %t512, 0 br i1 %t513, label %then212, label %ifend214 then212: - store ptr @.str6498, ptr %t380 + store ptr @.str6501, ptr %t380 %t514 = load ptr, ptr %t387 %t515 = getelementptr inbounds %LSlice, ptr %t514, i32 0, i32 1 %t516 = getelementptr inbounds %LSlice, ptr %t514, i32 0, i32 2 @@ -64744,7 +64801,7 @@ grow215: put216: %t530 = load ptr, ptr %t517 %t531 = getelementptr inbounds ptr, ptr %t530, i32 %t518 - store ptr @.str6499, ptr %t531 + store ptr @.str6502, ptr %t531 %t532 = add i32 %t518, 1 store i32 %t532, ptr %t515 %t533 = load ptr, ptr %t387 @@ -64771,7 +64828,7 @@ grow217: put218: %t549 = load ptr, ptr %t536 %t550 = getelementptr inbounds ptr, ptr %t549, i32 %t537 - store ptr @.str6500, ptr %t550 + store ptr @.str6503, ptr %t550 %t551 = add i32 %t537, 1 store i32 %t551, ptr %t534 %t552 = load ptr, ptr %t387 @@ -64798,7 +64855,7 @@ grow219: put220: %t568 = load ptr, ptr %t555 %t569 = getelementptr inbounds ptr, ptr %t568, i32 %t556 - store ptr @.str6501, ptr %t569 + store ptr @.str6504, ptr %t569 %t570 = add i32 %t556, 1 store i32 %t570, ptr %t553 %t571 = load ptr, ptr %t387 @@ -64825,7 +64882,7 @@ grow221: put222: %t587 = load ptr, ptr %t574 %t588 = getelementptr inbounds ptr, ptr %t587, i32 %t575 - store ptr @.str6502, ptr %t588 + store ptr @.str6505, ptr %t588 %t589 = add i32 %t575, 1 store i32 %t589, ptr %t572 %t590 = load ptr, ptr %t387 @@ -64852,7 +64909,7 @@ grow223: put224: %t606 = load ptr, ptr %t593 %t607 = getelementptr inbounds ptr, ptr %t606, i32 %t594 - store ptr @.str6503, ptr %t607 + store ptr @.str6506, ptr %t607 %t608 = add i32 %t594, 1 store i32 %t608, ptr %t591 %t609 = load ptr, ptr %t387 @@ -64879,7 +64936,7 @@ grow225: put226: %t625 = load ptr, ptr %t612 %t626 = getelementptr inbounds ptr, ptr %t625, i32 %t613 - store ptr @.str6504, ptr %t626 + store ptr @.str6507, ptr %t626 %t627 = add i32 %t613, 1 store i32 %t627, ptr %t610 %t628 = load ptr, ptr %t387 @@ -64906,7 +64963,7 @@ grow227: put228: %t644 = load ptr, ptr %t631 %t645 = getelementptr inbounds ptr, ptr %t644, i32 %t632 - store ptr @.str6505, ptr %t645 + store ptr @.str6508, ptr %t645 %t646 = add i32 %t632, 1 store i32 %t646, ptr %t629 %t647 = load ptr, ptr %t387 @@ -64933,17 +64990,17 @@ grow229: put230: %t663 = load ptr, ptr %t650 %t664 = getelementptr inbounds ptr, ptr %t663, i32 %t651 - store ptr @.str6506, ptr %t664 + store ptr @.str6509, ptr %t664 %t665 = add i32 %t651, 1 store i32 %t665, ptr %t648 br label %ifend214 ifend214: %t666 = load ptr, ptr %t1 - %t667 = call i32 @lp_str_eq(ptr %t666, ptr @.str6507) + %t667 = call i32 @lp_str_eq(ptr %t666, ptr @.str6510) %t668 = icmp ne i32 %t667, 0 br i1 %t668, label %then231, label %ifend233 then231: - store ptr @.str6508, ptr %t380 + store ptr @.str6511, ptr %t380 %t669 = load ptr, ptr %t387 %t670 = getelementptr inbounds %LSlice, ptr %t669, i32 0, i32 1 %t671 = getelementptr inbounds %LSlice, ptr %t669, i32 0, i32 2 @@ -64968,7 +65025,7 @@ grow234: put235: %t685 = load ptr, ptr %t672 %t686 = getelementptr inbounds ptr, ptr %t685, i32 %t673 - store ptr @.str6509, ptr %t686 + store ptr @.str6512, ptr %t686 %t687 = add i32 %t673, 1 store i32 %t687, ptr %t670 %t688 = load ptr, ptr %t387 @@ -64995,7 +65052,7 @@ grow236: put237: %t704 = load ptr, ptr %t691 %t705 = getelementptr inbounds ptr, ptr %t704, i32 %t692 - store ptr @.str6510, ptr %t705 + store ptr @.str6513, ptr %t705 %t706 = add i32 %t692, 1 store i32 %t706, ptr %t689 %t707 = load ptr, ptr %t387 @@ -65022,7 +65079,7 @@ grow238: put239: %t723 = load ptr, ptr %t710 %t724 = getelementptr inbounds ptr, ptr %t723, i32 %t711 - store ptr @.str6511, ptr %t724 + store ptr @.str6514, ptr %t724 %t725 = add i32 %t711, 1 store i32 %t725, ptr %t708 %t726 = load ptr, ptr %t387 @@ -65049,7 +65106,7 @@ grow240: put241: %t742 = load ptr, ptr %t729 %t743 = getelementptr inbounds ptr, ptr %t742, i32 %t730 - store ptr @.str6512, ptr %t743 + store ptr @.str6515, ptr %t743 %t744 = add i32 %t730, 1 store i32 %t744, ptr %t727 %t745 = load ptr, ptr %t387 @@ -65076,17 +65133,17 @@ grow242: put243: %t761 = load ptr, ptr %t748 %t762 = getelementptr inbounds ptr, ptr %t761, i32 %t749 - store ptr @.str6513, ptr %t762 + store ptr @.str6516, ptr %t762 %t763 = add i32 %t749, 1 store i32 %t763, ptr %t746 br label %ifend233 ifend233: %t764 = load ptr, ptr %t1 - %t765 = call i32 @lp_str_eq(ptr %t764, ptr @.str6514) + %t765 = call i32 @lp_str_eq(ptr %t764, ptr @.str6517) %t766 = icmp ne i32 %t765, 0 br i1 %t766, label %then244, label %ifend246 then244: - store ptr @.str6515, ptr %t380 + store ptr @.str6518, ptr %t380 %t767 = load ptr, ptr %t387 %t768 = getelementptr inbounds %LSlice, ptr %t767, i32 0, i32 1 %t769 = getelementptr inbounds %LSlice, ptr %t767, i32 0, i32 2 @@ -65111,7 +65168,7 @@ grow247: put248: %t783 = load ptr, ptr %t770 %t784 = getelementptr inbounds ptr, ptr %t783, i32 %t771 - store ptr @.str6516, ptr %t784 + store ptr @.str6519, ptr %t784 %t785 = add i32 %t771, 1 store i32 %t785, ptr %t768 %t786 = load ptr, ptr %t387 @@ -65138,7 +65195,7 @@ grow249: put250: %t802 = load ptr, ptr %t789 %t803 = getelementptr inbounds ptr, ptr %t802, i32 %t790 - store ptr @.str6517, ptr %t803 + store ptr @.str6520, ptr %t803 %t804 = add i32 %t790, 1 store i32 %t804, ptr %t787 %t805 = load ptr, ptr %t387 @@ -65165,17 +65222,17 @@ grow251: put252: %t821 = load ptr, ptr %t808 %t822 = getelementptr inbounds ptr, ptr %t821, i32 %t809 - store ptr @.str6518, ptr %t822 + store ptr @.str6521, ptr %t822 %t823 = add i32 %t809, 1 store i32 %t823, ptr %t806 br label %ifend246 ifend246: %t824 = load ptr, ptr %t1 - %t825 = call i32 @lp_str_eq(ptr %t824, ptr @.str6519) + %t825 = call i32 @lp_str_eq(ptr %t824, ptr @.str6522) %t826 = icmp ne i32 %t825, 0 br i1 %t826, label %then253, label %ifend255 then253: - store ptr @.str6520, ptr %t380 + store ptr @.str6523, ptr %t380 %t827 = load ptr, ptr %t387 %t828 = getelementptr inbounds %LSlice, ptr %t827, i32 0, i32 1 %t829 = getelementptr inbounds %LSlice, ptr %t827, i32 0, i32 2 @@ -65200,7 +65257,7 @@ grow256: put257: %t843 = load ptr, ptr %t830 %t844 = getelementptr inbounds ptr, ptr %t843, i32 %t831 - store ptr @.str6521, ptr %t844 + store ptr @.str6524, ptr %t844 %t845 = add i32 %t831, 1 store i32 %t845, ptr %t828 %t846 = load ptr, ptr %t387 @@ -65227,7 +65284,7 @@ grow258: put259: %t862 = load ptr, ptr %t849 %t863 = getelementptr inbounds ptr, ptr %t862, i32 %t850 - store ptr @.str6522, ptr %t863 + store ptr @.str6525, ptr %t863 %t864 = add i32 %t850, 1 store i32 %t864, ptr %t847 %t865 = load ptr, ptr %t387 @@ -65254,7 +65311,7 @@ grow260: put261: %t881 = load ptr, ptr %t868 %t882 = getelementptr inbounds ptr, ptr %t881, i32 %t869 - store ptr @.str6523, ptr %t882 + store ptr @.str6526, ptr %t882 %t883 = add i32 %t869, 1 store i32 %t883, ptr %t866 %t884 = load ptr, ptr %t387 @@ -65281,7 +65338,7 @@ grow262: put263: %t900 = load ptr, ptr %t887 %t901 = getelementptr inbounds ptr, ptr %t900, i32 %t888 - store ptr @.str6524, ptr %t901 + store ptr @.str6527, ptr %t901 %t902 = add i32 %t888, 1 store i32 %t902, ptr %t885 %t903 = load ptr, ptr %t387 @@ -65308,17 +65365,17 @@ grow264: put265: %t919 = load ptr, ptr %t906 %t920 = getelementptr inbounds ptr, ptr %t919, i32 %t907 - store ptr @.str6525, ptr %t920 + store ptr @.str6528, ptr %t920 %t921 = add i32 %t907, 1 store i32 %t921, ptr %t904 br label %ifend255 ifend255: %t922 = load ptr, ptr %t1 - %t923 = call i32 @lp_str_eq(ptr %t922, ptr @.str6526) + %t923 = call i32 @lp_str_eq(ptr %t922, ptr @.str6529) %t924 = icmp ne i32 %t923, 0 br i1 %t924, label %then266, label %ifend268 then266: - store ptr @.str6527, ptr %t380 + store ptr @.str6530, ptr %t380 %t925 = load ptr, ptr %t387 %t926 = getelementptr inbounds %LSlice, ptr %t925, i32 0, i32 1 %t927 = getelementptr inbounds %LSlice, ptr %t925, i32 0, i32 2 @@ -65343,7 +65400,7 @@ grow269: put270: %t941 = load ptr, ptr %t928 %t942 = getelementptr inbounds ptr, ptr %t941, i32 %t929 - store ptr @.str6528, ptr %t942 + store ptr @.str6531, ptr %t942 %t943 = add i32 %t929, 1 store i32 %t943, ptr %t926 %t944 = load ptr, ptr %t387 @@ -65370,7 +65427,7 @@ grow271: put272: %t960 = load ptr, ptr %t947 %t961 = getelementptr inbounds ptr, ptr %t960, i32 %t948 - store ptr @.str6529, ptr %t961 + store ptr @.str6532, ptr %t961 %t962 = add i32 %t948, 1 store i32 %t962, ptr %t945 %t963 = load ptr, ptr %t387 @@ -65397,7 +65454,7 @@ grow273: put274: %t979 = load ptr, ptr %t966 %t980 = getelementptr inbounds ptr, ptr %t979, i32 %t967 - store ptr @.str6530, ptr %t980 + store ptr @.str6533, ptr %t980 %t981 = add i32 %t967, 1 store i32 %t981, ptr %t964 %t982 = load ptr, ptr %t387 @@ -65424,7 +65481,7 @@ grow275: put276: %t998 = load ptr, ptr %t985 %t999 = getelementptr inbounds ptr, ptr %t998, i32 %t986 - store ptr @.str6531, ptr %t999 + store ptr @.str6534, ptr %t999 %t1000 = add i32 %t986, 1 store i32 %t1000, ptr %t983 %t1001 = load ptr, ptr %t387 @@ -65451,41 +65508,41 @@ grow277: put278: %t1017 = load ptr, ptr %t1004 %t1018 = getelementptr inbounds ptr, ptr %t1017, i32 %t1005 - store ptr @.str6532, ptr %t1018 + store ptr @.str6535, ptr %t1018 %t1019 = add i32 %t1005, 1 store i32 %t1019, ptr %t1002 br label %ifend268 ifend268: %t1020 = load ptr, ptr %t1 - %t1021 = call i32 @lp_str_eq(ptr %t1020, ptr @.str6533) + %t1021 = call i32 @lp_str_eq(ptr %t1020, ptr @.str6536) %t1022 = icmp ne i32 %t1021, 0 br i1 %t1022, label %then279, label %ifend281 then279: - store ptr @.str6534, ptr %t380 + store ptr @.str6537, ptr %t380 br label %ifend281 ifend281: %t1023 = load ptr, ptr %t1 - %t1024 = call i32 @lp_str_eq(ptr %t1023, ptr @.str6535) + %t1024 = call i32 @lp_str_eq(ptr %t1023, ptr @.str6538) %t1025 = icmp ne i32 %t1024, 0 br i1 %t1025, label %then282, label %ifend284 then282: - store ptr @.str6536, ptr %t380 + store ptr @.str6539, ptr %t380 br label %ifend284 ifend284: %t1026 = load ptr, ptr %t1 - %t1027 = call i32 @lp_str_eq(ptr %t1026, ptr @.str6537) + %t1027 = call i32 @lp_str_eq(ptr %t1026, ptr @.str6540) %t1028 = icmp ne i32 %t1027, 0 br i1 %t1028, label %then285, label %ifend287 then285: - store ptr @.str6538, ptr %t380 + store ptr @.str6541, ptr %t380 br label %ifend287 ifend287: %t1029 = load ptr, ptr %t1 - %t1030 = call i32 @lp_str_eq(ptr %t1029, ptr @.str6539) + %t1030 = call i32 @lp_str_eq(ptr %t1029, ptr @.str6542) %t1031 = icmp ne i32 %t1030, 0 br i1 %t1031, label %then288, label %ifend290 then288: - store ptr @.str6540, ptr %t380 + store ptr @.str6543, ptr %t380 %t1032 = load ptr, ptr %t387 %t1033 = getelementptr inbounds %LSlice, ptr %t1032, i32 0, i32 1 %t1034 = getelementptr inbounds %LSlice, ptr %t1032, i32 0, i32 2 @@ -65510,17 +65567,17 @@ grow291: put292: %t1048 = load ptr, ptr %t1035 %t1049 = getelementptr inbounds ptr, ptr %t1048, i32 %t1036 - store ptr @.str6541, ptr %t1049 + store ptr @.str6544, ptr %t1049 %t1050 = add i32 %t1036, 1 store i32 %t1050, ptr %t1033 br label %ifend290 ifend290: %t1051 = load ptr, ptr %t1 - %t1052 = call i32 @lp_str_eq(ptr %t1051, ptr @.str6542) + %t1052 = call i32 @lp_str_eq(ptr %t1051, ptr @.str6545) %t1053 = icmp ne i32 %t1052, 0 br i1 %t1053, label %then293, label %ifend295 then293: - store ptr @.str6543, ptr %t380 + store ptr @.str6546, ptr %t380 %t1054 = load ptr, ptr %t387 %t1055 = getelementptr inbounds %LSlice, ptr %t1054, i32 0, i32 1 %t1056 = getelementptr inbounds %LSlice, ptr %t1054, i32 0, i32 2 @@ -65545,7 +65602,7 @@ grow296: put297: %t1070 = load ptr, ptr %t1057 %t1071 = getelementptr inbounds ptr, ptr %t1070, i32 %t1058 - store ptr @.str6544, ptr %t1071 + store ptr @.str6547, ptr %t1071 %t1072 = add i32 %t1058, 1 store i32 %t1072, ptr %t1055 %t1073 = load ptr, ptr %t387 @@ -65572,7 +65629,7 @@ grow298: put299: %t1089 = load ptr, ptr %t1076 %t1090 = getelementptr inbounds ptr, ptr %t1089, i32 %t1077 - store ptr @.str6545, ptr %t1090 + store ptr @.str6548, ptr %t1090 %t1091 = add i32 %t1077, 1 store i32 %t1091, ptr %t1074 %t1092 = load ptr, ptr %t387 @@ -65599,7 +65656,7 @@ grow300: put301: %t1108 = load ptr, ptr %t1095 %t1109 = getelementptr inbounds ptr, ptr %t1108, i32 %t1096 - store ptr @.str6546, ptr %t1109 + store ptr @.str6549, ptr %t1109 %t1110 = add i32 %t1096, 1 store i32 %t1110, ptr %t1093 %t1111 = load ptr, ptr %t387 @@ -65626,7 +65683,7 @@ grow302: put303: %t1127 = load ptr, ptr %t1114 %t1128 = getelementptr inbounds ptr, ptr %t1127, i32 %t1115 - store ptr @.str6547, ptr %t1128 + store ptr @.str6550, ptr %t1128 %t1129 = add i32 %t1115, 1 store i32 %t1129, ptr %t1112 %t1130 = load ptr, ptr %t387 @@ -65653,17 +65710,17 @@ grow304: put305: %t1146 = load ptr, ptr %t1133 %t1147 = getelementptr inbounds ptr, ptr %t1146, i32 %t1134 - store ptr @.str6548, ptr %t1147 + store ptr @.str6551, ptr %t1147 %t1148 = add i32 %t1134, 1 store i32 %t1148, ptr %t1131 br label %ifend295 ifend295: %t1149 = load ptr, ptr %t1 - %t1150 = call i32 @lp_str_eq(ptr %t1149, ptr @.str6549) + %t1150 = call i32 @lp_str_eq(ptr %t1149, ptr @.str6552) %t1151 = icmp ne i32 %t1150, 0 br i1 %t1151, label %then306, label %ifend308 then306: - store ptr @.str6550, ptr %t380 + store ptr @.str6553, ptr %t380 %t1152 = load ptr, ptr %t387 %t1153 = getelementptr inbounds %LSlice, ptr %t1152, i32 0, i32 1 %t1154 = getelementptr inbounds %LSlice, ptr %t1152, i32 0, i32 2 @@ -65688,7 +65745,7 @@ grow309: put310: %t1168 = load ptr, ptr %t1155 %t1169 = getelementptr inbounds ptr, ptr %t1168, i32 %t1156 - store ptr @.str6551, ptr %t1169 + store ptr @.str6554, ptr %t1169 %t1170 = add i32 %t1156, 1 store i32 %t1170, ptr %t1153 %t1171 = load ptr, ptr %t387 @@ -65715,7 +65772,7 @@ grow311: put312: %t1187 = load ptr, ptr %t1174 %t1188 = getelementptr inbounds ptr, ptr %t1187, i32 %t1175 - store ptr @.str6552, ptr %t1188 + store ptr @.str6555, ptr %t1188 %t1189 = add i32 %t1175, 1 store i32 %t1189, ptr %t1172 %t1190 = load ptr, ptr %t387 @@ -65742,7 +65799,7 @@ grow313: put314: %t1206 = load ptr, ptr %t1193 %t1207 = getelementptr inbounds ptr, ptr %t1206, i32 %t1194 - store ptr @.str6553, ptr %t1207 + store ptr @.str6556, ptr %t1207 %t1208 = add i32 %t1194, 1 store i32 %t1208, ptr %t1191 %t1209 = load ptr, ptr %t387 @@ -65769,17 +65826,17 @@ grow315: put316: %t1225 = load ptr, ptr %t1212 %t1226 = getelementptr inbounds ptr, ptr %t1225, i32 %t1213 - store ptr @.str6554, ptr %t1226 + store ptr @.str6557, ptr %t1226 %t1227 = add i32 %t1213, 1 store i32 %t1227, ptr %t1210 br label %ifend308 ifend308: %t1228 = load ptr, ptr %t1 - %t1229 = call i32 @lp_str_eq(ptr %t1228, ptr @.str6555) + %t1229 = call i32 @lp_str_eq(ptr %t1228, ptr @.str6558) %t1230 = icmp ne i32 %t1229, 0 br i1 %t1230, label %then317, label %ifend319 then317: - store ptr @.str6556, ptr %t380 + store ptr @.str6559, ptr %t380 %t1231 = load ptr, ptr %t387 %t1232 = getelementptr inbounds %LSlice, ptr %t1231, i32 0, i32 1 %t1233 = getelementptr inbounds %LSlice, ptr %t1231, i32 0, i32 2 @@ -65804,7 +65861,7 @@ grow320: put321: %t1247 = load ptr, ptr %t1234 %t1248 = getelementptr inbounds ptr, ptr %t1247, i32 %t1235 - store ptr @.str6557, ptr %t1248 + store ptr @.str6560, ptr %t1248 %t1249 = add i32 %t1235, 1 store i32 %t1249, ptr %t1232 %t1250 = load ptr, ptr %t387 @@ -65831,7 +65888,7 @@ grow322: put323: %t1266 = load ptr, ptr %t1253 %t1267 = getelementptr inbounds ptr, ptr %t1266, i32 %t1254 - store ptr @.str6558, ptr %t1267 + store ptr @.str6561, ptr %t1267 %t1268 = add i32 %t1254, 1 store i32 %t1268, ptr %t1251 %t1269 = load ptr, ptr %t387 @@ -65858,7 +65915,7 @@ grow324: put325: %t1285 = load ptr, ptr %t1272 %t1286 = getelementptr inbounds ptr, ptr %t1285, i32 %t1273 - store ptr @.str6559, ptr %t1286 + store ptr @.str6562, ptr %t1286 %t1287 = add i32 %t1273, 1 store i32 %t1287, ptr %t1270 %t1288 = load ptr, ptr %t387 @@ -65885,17 +65942,17 @@ grow326: put327: %t1304 = load ptr, ptr %t1291 %t1305 = getelementptr inbounds ptr, ptr %t1304, i32 %t1292 - store ptr @.str6560, ptr %t1305 + store ptr @.str6563, ptr %t1305 %t1306 = add i32 %t1292, 1 store i32 %t1306, ptr %t1289 br label %ifend319 ifend319: %t1307 = load ptr, ptr %t1 - %t1308 = call i32 @lp_str_eq(ptr %t1307, ptr @.str6561) + %t1308 = call i32 @lp_str_eq(ptr %t1307, ptr @.str6564) %t1309 = icmp ne i32 %t1308, 0 br i1 %t1309, label %then328, label %ifend330 then328: - store ptr @.str6562, ptr %t380 + store ptr @.str6565, ptr %t380 %t1310 = load ptr, ptr %t387 %t1311 = getelementptr inbounds %LSlice, ptr %t1310, i32 0, i32 1 %t1312 = getelementptr inbounds %LSlice, ptr %t1310, i32 0, i32 2 @@ -65920,7 +65977,7 @@ grow331: put332: %t1326 = load ptr, ptr %t1313 %t1327 = getelementptr inbounds ptr, ptr %t1326, i32 %t1314 - store ptr @.str6563, ptr %t1327 + store ptr @.str6566, ptr %t1327 %t1328 = add i32 %t1314, 1 store i32 %t1328, ptr %t1311 %t1329 = load ptr, ptr %t387 @@ -65947,7 +66004,7 @@ grow333: put334: %t1345 = load ptr, ptr %t1332 %t1346 = getelementptr inbounds ptr, ptr %t1345, i32 %t1333 - store ptr @.str6564, ptr %t1346 + store ptr @.str6567, ptr %t1346 %t1347 = add i32 %t1333, 1 store i32 %t1347, ptr %t1330 %t1348 = load ptr, ptr %t387 @@ -65974,7 +66031,7 @@ grow335: put336: %t1364 = load ptr, ptr %t1351 %t1365 = getelementptr inbounds ptr, ptr %t1364, i32 %t1352 - store ptr @.str6565, ptr %t1365 + store ptr @.str6568, ptr %t1365 %t1366 = add i32 %t1352, 1 store i32 %t1366, ptr %t1349 %t1367 = load ptr, ptr %t387 @@ -66001,7 +66058,7 @@ grow337: put338: %t1383 = load ptr, ptr %t1370 %t1384 = getelementptr inbounds ptr, ptr %t1383, i32 %t1371 - store ptr @.str6566, ptr %t1384 + store ptr @.str6569, ptr %t1384 %t1385 = add i32 %t1371, 1 store i32 %t1385, ptr %t1368 %t1386 = load ptr, ptr %t387 @@ -66028,7 +66085,7 @@ grow339: put340: %t1402 = load ptr, ptr %t1389 %t1403 = getelementptr inbounds ptr, ptr %t1402, i32 %t1390 - store ptr @.str6567, ptr %t1403 + store ptr @.str6570, ptr %t1403 %t1404 = add i32 %t1390, 1 store i32 %t1404, ptr %t1387 %t1405 = load ptr, ptr %t387 @@ -66055,7 +66112,7 @@ grow341: put342: %t1421 = load ptr, ptr %t1408 %t1422 = getelementptr inbounds ptr, ptr %t1421, i32 %t1409 - store ptr @.str6568, ptr %t1422 + store ptr @.str6571, ptr %t1422 %t1423 = add i32 %t1409, 1 store i32 %t1423, ptr %t1406 %t1424 = load ptr, ptr %t387 @@ -66082,17 +66139,17 @@ grow343: put344: %t1440 = load ptr, ptr %t1427 %t1441 = getelementptr inbounds ptr, ptr %t1440, i32 %t1428 - store ptr @.str6569, ptr %t1441 + store ptr @.str6572, ptr %t1441 %t1442 = add i32 %t1428, 1 store i32 %t1442, ptr %t1425 br label %ifend330 ifend330: %t1443 = load ptr, ptr %t1 - %t1444 = call i32 @lp_str_eq(ptr %t1443, ptr @.str6570) + %t1444 = call i32 @lp_str_eq(ptr %t1443, ptr @.str6573) %t1445 = icmp ne i32 %t1444, 0 br i1 %t1445, label %then345, label %ifend347 then345: - store ptr @.str6571, ptr %t380 + store ptr @.str6574, ptr %t380 %t1446 = load ptr, ptr %t387 %t1447 = getelementptr inbounds %LSlice, ptr %t1446, i32 0, i32 1 %t1448 = getelementptr inbounds %LSlice, ptr %t1446, i32 0, i32 2 @@ -66117,7 +66174,7 @@ grow348: put349: %t1462 = load ptr, ptr %t1449 %t1463 = getelementptr inbounds ptr, ptr %t1462, i32 %t1450 - store ptr @.str6572, ptr %t1463 + store ptr @.str6575, ptr %t1463 %t1464 = add i32 %t1450, 1 store i32 %t1464, ptr %t1447 %t1465 = load ptr, ptr %t387 @@ -66144,7 +66201,7 @@ grow350: put351: %t1481 = load ptr, ptr %t1468 %t1482 = getelementptr inbounds ptr, ptr %t1481, i32 %t1469 - store ptr @.str6573, ptr %t1482 + store ptr @.str6576, ptr %t1482 %t1483 = add i32 %t1469, 1 store i32 %t1483, ptr %t1466 %t1484 = load ptr, ptr %t387 @@ -66171,7 +66228,7 @@ grow352: put353: %t1500 = load ptr, ptr %t1487 %t1501 = getelementptr inbounds ptr, ptr %t1500, i32 %t1488 - store ptr @.str6574, ptr %t1501 + store ptr @.str6577, ptr %t1501 %t1502 = add i32 %t1488, 1 store i32 %t1502, ptr %t1485 %t1503 = load ptr, ptr %t387 @@ -66198,7 +66255,7 @@ grow354: put355: %t1519 = load ptr, ptr %t1506 %t1520 = getelementptr inbounds ptr, ptr %t1519, i32 %t1507 - store ptr @.str6575, ptr %t1520 + store ptr @.str6578, ptr %t1520 %t1521 = add i32 %t1507, 1 store i32 %t1521, ptr %t1504 %t1522 = load ptr, ptr %t387 @@ -66225,7 +66282,7 @@ grow356: put357: %t1538 = load ptr, ptr %t1525 %t1539 = getelementptr inbounds ptr, ptr %t1538, i32 %t1526 - store ptr @.str6576, ptr %t1539 + store ptr @.str6579, ptr %t1539 %t1540 = add i32 %t1526, 1 store i32 %t1540, ptr %t1523 %t1541 = load ptr, ptr %t387 @@ -66252,7 +66309,7 @@ grow358: put359: %t1557 = load ptr, ptr %t1544 %t1558 = getelementptr inbounds ptr, ptr %t1557, i32 %t1545 - store ptr @.str6577, ptr %t1558 + store ptr @.str6580, ptr %t1558 %t1559 = add i32 %t1545, 1 store i32 %t1559, ptr %t1542 %t1560 = load ptr, ptr %t387 @@ -66279,17 +66336,17 @@ grow360: put361: %t1576 = load ptr, ptr %t1563 %t1577 = getelementptr inbounds ptr, ptr %t1576, i32 %t1564 - store ptr @.str6578, ptr %t1577 + store ptr @.str6581, ptr %t1577 %t1578 = add i32 %t1564, 1 store i32 %t1578, ptr %t1561 br label %ifend347 ifend347: %t1579 = load ptr, ptr %t1 - %t1580 = call i32 @lp_str_eq(ptr %t1579, ptr @.str6579) + %t1580 = call i32 @lp_str_eq(ptr %t1579, ptr @.str6582) %t1581 = icmp ne i32 %t1580, 0 br i1 %t1581, label %then362, label %ifend364 then362: - store ptr @.str6580, ptr %t380 + store ptr @.str6583, ptr %t380 %t1582 = load ptr, ptr %t387 %t1583 = getelementptr inbounds %LSlice, ptr %t1582, i32 0, i32 1 %t1584 = getelementptr inbounds %LSlice, ptr %t1582, i32 0, i32 2 @@ -66314,7 +66371,7 @@ grow365: put366: %t1598 = load ptr, ptr %t1585 %t1599 = getelementptr inbounds ptr, ptr %t1598, i32 %t1586 - store ptr @.str6581, ptr %t1599 + store ptr @.str6584, ptr %t1599 %t1600 = add i32 %t1586, 1 store i32 %t1600, ptr %t1583 %t1601 = load ptr, ptr %t387 @@ -66341,7 +66398,7 @@ grow367: put368: %t1617 = load ptr, ptr %t1604 %t1618 = getelementptr inbounds ptr, ptr %t1617, i32 %t1605 - store ptr @.str6582, ptr %t1618 + store ptr @.str6585, ptr %t1618 %t1619 = add i32 %t1605, 1 store i32 %t1619, ptr %t1602 %t1620 = load ptr, ptr %t387 @@ -66368,17 +66425,17 @@ grow369: put370: %t1636 = load ptr, ptr %t1623 %t1637 = getelementptr inbounds ptr, ptr %t1636, i32 %t1624 - store ptr @.str6583, ptr %t1637 + store ptr @.str6586, ptr %t1637 %t1638 = add i32 %t1624, 1 store i32 %t1638, ptr %t1621 br label %ifend364 ifend364: %t1639 = load ptr, ptr %t1 - %t1640 = call i32 @lp_str_eq(ptr %t1639, ptr @.str6584) + %t1640 = call i32 @lp_str_eq(ptr %t1639, ptr @.str6587) %t1641 = icmp ne i32 %t1640, 0 br i1 %t1641, label %then371, label %ifend373 then371: - store ptr @.str6585, ptr %t380 + store ptr @.str6588, ptr %t380 %t1642 = load ptr, ptr %t387 %t1643 = getelementptr inbounds %LSlice, ptr %t1642, i32 0, i32 1 %t1644 = getelementptr inbounds %LSlice, ptr %t1642, i32 0, i32 2 @@ -66403,7 +66460,7 @@ grow374: put375: %t1658 = load ptr, ptr %t1645 %t1659 = getelementptr inbounds ptr, ptr %t1658, i32 %t1646 - store ptr @.str6586, ptr %t1659 + store ptr @.str6589, ptr %t1659 %t1660 = add i32 %t1646, 1 store i32 %t1660, ptr %t1643 %t1661 = load ptr, ptr %t387 @@ -66430,7 +66487,7 @@ grow376: put377: %t1677 = load ptr, ptr %t1664 %t1678 = getelementptr inbounds ptr, ptr %t1677, i32 %t1665 - store ptr @.str6587, ptr %t1678 + store ptr @.str6590, ptr %t1678 %t1679 = add i32 %t1665, 1 store i32 %t1679, ptr %t1662 %t1680 = load ptr, ptr %t387 @@ -66457,7 +66514,7 @@ grow378: put379: %t1696 = load ptr, ptr %t1683 %t1697 = getelementptr inbounds ptr, ptr %t1696, i32 %t1684 - store ptr @.str6588, ptr %t1697 + store ptr @.str6591, ptr %t1697 %t1698 = add i32 %t1684, 1 store i32 %t1698, ptr %t1681 %t1699 = load ptr, ptr %t387 @@ -66484,17 +66541,17 @@ grow380: put381: %t1715 = load ptr, ptr %t1702 %t1716 = getelementptr inbounds ptr, ptr %t1715, i32 %t1703 - store ptr @.str6589, ptr %t1716 + store ptr @.str6592, ptr %t1716 %t1717 = add i32 %t1703, 1 store i32 %t1717, ptr %t1700 br label %ifend373 ifend373: %t1718 = load ptr, ptr %t1 - %t1719 = call i32 @lp_str_eq(ptr %t1718, ptr @.str6590) + %t1719 = call i32 @lp_str_eq(ptr %t1718, ptr @.str6593) %t1720 = icmp ne i32 %t1719, 0 br i1 %t1720, label %then382, label %ifend384 then382: - store ptr @.str6591, ptr %t380 + store ptr @.str6594, ptr %t380 %t1721 = load ptr, ptr %t387 %t1722 = getelementptr inbounds %LSlice, ptr %t1721, i32 0, i32 1 %t1723 = getelementptr inbounds %LSlice, ptr %t1721, i32 0, i32 2 @@ -66519,7 +66576,7 @@ grow385: put386: %t1737 = load ptr, ptr %t1724 %t1738 = getelementptr inbounds ptr, ptr %t1737, i32 %t1725 - store ptr @.str6592, ptr %t1738 + store ptr @.str6595, ptr %t1738 %t1739 = add i32 %t1725, 1 store i32 %t1739, ptr %t1722 %t1740 = load ptr, ptr %t387 @@ -66546,7 +66603,7 @@ grow387: put388: %t1756 = load ptr, ptr %t1743 %t1757 = getelementptr inbounds ptr, ptr %t1756, i32 %t1744 - store ptr @.str6593, ptr %t1757 + store ptr @.str6596, ptr %t1757 %t1758 = add i32 %t1744, 1 store i32 %t1758, ptr %t1741 %t1759 = load ptr, ptr %t387 @@ -66573,7 +66630,7 @@ grow389: put390: %t1775 = load ptr, ptr %t1762 %t1776 = getelementptr inbounds ptr, ptr %t1775, i32 %t1763 - store ptr @.str6594, ptr %t1776 + store ptr @.str6597, ptr %t1776 %t1777 = add i32 %t1763, 1 store i32 %t1777, ptr %t1760 %t1778 = load ptr, ptr %t387 @@ -66600,7 +66657,7 @@ grow391: put392: %t1794 = load ptr, ptr %t1781 %t1795 = getelementptr inbounds ptr, ptr %t1794, i32 %t1782 - store ptr @.str6595, ptr %t1795 + store ptr @.str6598, ptr %t1795 %t1796 = add i32 %t1782, 1 store i32 %t1796, ptr %t1779 %t1797 = load ptr, ptr %t387 @@ -66627,17 +66684,17 @@ grow393: put394: %t1813 = load ptr, ptr %t1800 %t1814 = getelementptr inbounds ptr, ptr %t1813, i32 %t1801 - store ptr @.str6596, ptr %t1814 + store ptr @.str6599, ptr %t1814 %t1815 = add i32 %t1801, 1 store i32 %t1815, ptr %t1798 br label %ifend384 ifend384: %t1816 = load ptr, ptr %t1 - %t1817 = call i32 @lp_str_eq(ptr %t1816, ptr @.str6597) + %t1817 = call i32 @lp_str_eq(ptr %t1816, ptr @.str6600) %t1818 = icmp ne i32 %t1817, 0 br i1 %t1818, label %then395, label %ifend397 then395: - store ptr @.str6598, ptr %t380 + store ptr @.str6601, ptr %t380 %t1819 = load ptr, ptr %t387 %t1820 = getelementptr inbounds %LSlice, ptr %t1819, i32 0, i32 1 %t1821 = getelementptr inbounds %LSlice, ptr %t1819, i32 0, i32 2 @@ -66662,7 +66719,7 @@ grow398: put399: %t1835 = load ptr, ptr %t1822 %t1836 = getelementptr inbounds ptr, ptr %t1835, i32 %t1823 - store ptr @.str6599, ptr %t1836 + store ptr @.str6602, ptr %t1836 %t1837 = add i32 %t1823, 1 store i32 %t1837, ptr %t1820 %t1838 = load ptr, ptr %t387 @@ -66689,17 +66746,17 @@ grow400: put401: %t1854 = load ptr, ptr %t1841 %t1855 = getelementptr inbounds ptr, ptr %t1854, i32 %t1842 - store ptr @.str6600, ptr %t1855 + store ptr @.str6603, ptr %t1855 %t1856 = add i32 %t1842, 1 store i32 %t1856, ptr %t1839 br label %ifend397 ifend397: %t1857 = load ptr, ptr %t1 - %t1858 = call i32 @lp_str_eq(ptr %t1857, ptr @.str6601) + %t1858 = call i32 @lp_str_eq(ptr %t1857, ptr @.str6604) %t1859 = icmp ne i32 %t1858, 0 br i1 %t1859, label %then402, label %ifend404 then402: - store ptr @.str6602, ptr %t380 + store ptr @.str6605, ptr %t380 %t1860 = load ptr, ptr %t387 %t1861 = getelementptr inbounds %LSlice, ptr %t1860, i32 0, i32 1 %t1862 = getelementptr inbounds %LSlice, ptr %t1860, i32 0, i32 2 @@ -66724,7 +66781,7 @@ grow405: put406: %t1876 = load ptr, ptr %t1863 %t1877 = getelementptr inbounds ptr, ptr %t1876, i32 %t1864 - store ptr @.str6603, ptr %t1877 + store ptr @.str6606, ptr %t1877 %t1878 = add i32 %t1864, 1 store i32 %t1878, ptr %t1861 %t1879 = load ptr, ptr %t387 @@ -66751,7 +66808,7 @@ grow407: put408: %t1895 = load ptr, ptr %t1882 %t1896 = getelementptr inbounds ptr, ptr %t1895, i32 %t1883 - store ptr @.str6604, ptr %t1896 + store ptr @.str6607, ptr %t1896 %t1897 = add i32 %t1883, 1 store i32 %t1897, ptr %t1880 %t1898 = load ptr, ptr %t387 @@ -66778,7 +66835,7 @@ grow409: put410: %t1914 = load ptr, ptr %t1901 %t1915 = getelementptr inbounds ptr, ptr %t1914, i32 %t1902 - store ptr @.str6605, ptr %t1915 + store ptr @.str6608, ptr %t1915 %t1916 = add i32 %t1902, 1 store i32 %t1916, ptr %t1899 %t1917 = load ptr, ptr %t387 @@ -66805,25 +66862,25 @@ grow411: put412: %t1933 = load ptr, ptr %t1920 %t1934 = getelementptr inbounds ptr, ptr %t1933, i32 %t1921 - store ptr @.str6606, ptr %t1934 + store ptr @.str6609, ptr %t1934 %t1935 = add i32 %t1921, 1 store i32 %t1935, ptr %t1918 br label %ifend404 ifend404: %t1936 = load ptr, ptr %t1 - %t1937 = call i32 @lp_str_eq(ptr %t1936, ptr @.str6607) + %t1937 = call i32 @lp_str_eq(ptr %t1936, ptr @.str6610) %t1938 = icmp ne i32 %t1937, 0 br i1 %t1938, label %then413, label %ifend415 then413: - store ptr @.str6608, ptr %t380 + store ptr @.str6611, ptr %t380 br label %ifend415 ifend415: %t1939 = load ptr, ptr %t1 - %t1940 = call i32 @lp_str_eq(ptr %t1939, ptr @.str6609) + %t1940 = call i32 @lp_str_eq(ptr %t1939, ptr @.str6612) %t1941 = icmp ne i32 %t1940, 0 br i1 %t1941, label %then416, label %ifend418 then416: - store ptr @.str6610, ptr %t380 + store ptr @.str6613, ptr %t380 %t1942 = load ptr, ptr %t387 %t1943 = getelementptr inbounds %LSlice, ptr %t1942, i32 0, i32 1 %t1944 = getelementptr inbounds %LSlice, ptr %t1942, i32 0, i32 2 @@ -66848,17 +66905,17 @@ grow419: put420: %t1958 = load ptr, ptr %t1945 %t1959 = getelementptr inbounds ptr, ptr %t1958, i32 %t1946 - store ptr @.str6611, ptr %t1959 + store ptr @.str6614, ptr %t1959 %t1960 = add i32 %t1946, 1 store i32 %t1960, ptr %t1943 br label %ifend418 ifend418: %t1961 = load ptr, ptr %t1 - %t1962 = call i32 @lp_str_eq(ptr %t1961, ptr @.str6612) + %t1962 = call i32 @lp_str_eq(ptr %t1961, ptr @.str6615) %t1963 = icmp ne i32 %t1962, 0 br i1 %t1963, label %then421, label %ifend423 then421: - store ptr @.str6613, ptr %t380 + store ptr @.str6616, ptr %t380 %t1964 = load ptr, ptr %t387 %t1965 = getelementptr inbounds %LSlice, ptr %t1964, i32 0, i32 1 %t1966 = getelementptr inbounds %LSlice, ptr %t1964, i32 0, i32 2 @@ -66883,17 +66940,17 @@ grow424: put425: %t1980 = load ptr, ptr %t1967 %t1981 = getelementptr inbounds ptr, ptr %t1980, i32 %t1968 - store ptr @.str6614, ptr %t1981 + store ptr @.str6617, ptr %t1981 %t1982 = add i32 %t1968, 1 store i32 %t1982, ptr %t1965 br label %ifend423 ifend423: %t1983 = load ptr, ptr %t1 - %t1984 = call i32 @lp_str_eq(ptr %t1983, ptr @.str6615) + %t1984 = call i32 @lp_str_eq(ptr %t1983, ptr @.str6618) %t1985 = icmp ne i32 %t1984, 0 br i1 %t1985, label %then426, label %ifend428 then426: - store ptr @.str6616, ptr %t380 + store ptr @.str6619, ptr %t380 %t1986 = load ptr, ptr %t387 %t1987 = getelementptr inbounds %LSlice, ptr %t1986, i32 0, i32 1 %t1988 = getelementptr inbounds %LSlice, ptr %t1986, i32 0, i32 2 @@ -66918,7 +66975,7 @@ grow429: put430: %t2002 = load ptr, ptr %t1989 %t2003 = getelementptr inbounds ptr, ptr %t2002, i32 %t1990 - store ptr @.str6617, ptr %t2003 + store ptr @.str6620, ptr %t2003 %t2004 = add i32 %t1990, 1 store i32 %t2004, ptr %t1987 %t2005 = load ptr, ptr %t387 @@ -66945,7 +67002,7 @@ grow431: put432: %t2021 = load ptr, ptr %t2008 %t2022 = getelementptr inbounds ptr, ptr %t2021, i32 %t2009 - store ptr @.str6618, ptr %t2022 + store ptr @.str6621, ptr %t2022 %t2023 = add i32 %t2009, 1 store i32 %t2023, ptr %t2006 br label %ifend428 @@ -66953,16 +67010,16 @@ ifend428: br label %ifend193 ifend193: %t2024 = load ptr, ptr %t0 - %t2025 = call i32 @lp_str_eq(ptr %t2024, ptr @.str6619) + %t2025 = call i32 @lp_str_eq(ptr %t2024, ptr @.str6622) %t2026 = icmp ne i32 %t2025, 0 br i1 %t2026, label %then433, label %ifend435 then433: %t2027 = load ptr, ptr %t1 - %t2028 = call i32 @lp_str_eq(ptr %t2027, ptr @.str6620) + %t2028 = call i32 @lp_str_eq(ptr %t2027, ptr @.str6623) %t2029 = icmp ne i32 %t2028, 0 br i1 %t2029, label %then436, label %ifend438 then436: - store ptr @.str6621, ptr %t380 + store ptr @.str6624, ptr %t380 %t2030 = load ptr, ptr %t387 %t2031 = getelementptr inbounds %LSlice, ptr %t2030, i32 0, i32 1 %t2032 = getelementptr inbounds %LSlice, ptr %t2030, i32 0, i32 2 @@ -66987,7 +67044,7 @@ grow439: put440: %t2046 = load ptr, ptr %t2033 %t2047 = getelementptr inbounds ptr, ptr %t2046, i32 %t2034 - store ptr @.str6622, ptr %t2047 + store ptr @.str6625, ptr %t2047 %t2048 = add i32 %t2034, 1 store i32 %t2048, ptr %t2031 %t2049 = load ptr, ptr %t387 @@ -67014,7 +67071,7 @@ grow441: put442: %t2065 = load ptr, ptr %t2052 %t2066 = getelementptr inbounds ptr, ptr %t2065, i32 %t2053 - store ptr @.str6623, ptr %t2066 + store ptr @.str6626, ptr %t2066 %t2067 = add i32 %t2053, 1 store i32 %t2067, ptr %t2050 %t2068 = load ptr, ptr %t387 @@ -67041,17 +67098,17 @@ grow443: put444: %t2084 = load ptr, ptr %t2071 %t2085 = getelementptr inbounds ptr, ptr %t2084, i32 %t2072 - store ptr @.str6624, ptr %t2085 + store ptr @.str6627, ptr %t2085 %t2086 = add i32 %t2072, 1 store i32 %t2086, ptr %t2069 br label %ifend438 ifend438: %t2087 = load ptr, ptr %t1 - %t2088 = call i32 @lp_str_eq(ptr %t2087, ptr @.str6625) + %t2088 = call i32 @lp_str_eq(ptr %t2087, ptr @.str6628) %t2089 = icmp ne i32 %t2088, 0 br i1 %t2089, label %then445, label %ifend447 then445: - store ptr @.str6626, ptr %t380 + store ptr @.str6629, ptr %t380 %t2090 = load ptr, ptr %t387 %t2091 = getelementptr inbounds %LSlice, ptr %t2090, i32 0, i32 1 %t2092 = getelementptr inbounds %LSlice, ptr %t2090, i32 0, i32 2 @@ -67076,7 +67133,7 @@ grow448: put449: %t2106 = load ptr, ptr %t2093 %t2107 = getelementptr inbounds ptr, ptr %t2106, i32 %t2094 - store ptr @.str6627, ptr %t2107 + store ptr @.str6630, ptr %t2107 %t2108 = add i32 %t2094, 1 store i32 %t2108, ptr %t2091 %t2109 = load ptr, ptr %t387 @@ -67103,7 +67160,7 @@ grow450: put451: %t2125 = load ptr, ptr %t2112 %t2126 = getelementptr inbounds ptr, ptr %t2125, i32 %t2113 - store ptr @.str6628, ptr %t2126 + store ptr @.str6631, ptr %t2126 %t2127 = add i32 %t2113, 1 store i32 %t2127, ptr %t2110 %t2128 = load ptr, ptr %t387 @@ -67130,17 +67187,17 @@ grow452: put453: %t2144 = load ptr, ptr %t2131 %t2145 = getelementptr inbounds ptr, ptr %t2144, i32 %t2132 - store ptr @.str6629, ptr %t2145 + store ptr @.str6632, ptr %t2145 %t2146 = add i32 %t2132, 1 store i32 %t2146, ptr %t2129 br label %ifend447 ifend447: %t2147 = load ptr, ptr %t1 - %t2148 = call i32 @lp_str_eq(ptr %t2147, ptr @.str6630) + %t2148 = call i32 @lp_str_eq(ptr %t2147, ptr @.str6633) %t2149 = icmp ne i32 %t2148, 0 br i1 %t2149, label %then454, label %ifend456 then454: - store ptr @.str6631, ptr %t380 + store ptr @.str6634, ptr %t380 %t2150 = load ptr, ptr %t387 %t2151 = getelementptr inbounds %LSlice, ptr %t2150, i32 0, i32 1 %t2152 = getelementptr inbounds %LSlice, ptr %t2150, i32 0, i32 2 @@ -67165,7 +67222,7 @@ grow457: put458: %t2166 = load ptr, ptr %t2153 %t2167 = getelementptr inbounds ptr, ptr %t2166, i32 %t2154 - store ptr @.str6632, ptr %t2167 + store ptr @.str6635, ptr %t2167 %t2168 = add i32 %t2154, 1 store i32 %t2168, ptr %t2151 %t2169 = load ptr, ptr %t387 @@ -67192,7 +67249,7 @@ grow459: put460: %t2185 = load ptr, ptr %t2172 %t2186 = getelementptr inbounds ptr, ptr %t2185, i32 %t2173 - store ptr @.str6633, ptr %t2186 + store ptr @.str6636, ptr %t2186 %t2187 = add i32 %t2173, 1 store i32 %t2187, ptr %t2170 %t2188 = load ptr, ptr %t387 @@ -67219,7 +67276,7 @@ grow461: put462: %t2204 = load ptr, ptr %t2191 %t2205 = getelementptr inbounds ptr, ptr %t2204, i32 %t2192 - store ptr @.str6634, ptr %t2205 + store ptr @.str6637, ptr %t2205 %t2206 = add i32 %t2192, 1 store i32 %t2206, ptr %t2189 %t2207 = load ptr, ptr %t387 @@ -67246,7 +67303,7 @@ grow463: put464: %t2223 = load ptr, ptr %t2210 %t2224 = getelementptr inbounds ptr, ptr %t2223, i32 %t2211 - store ptr @.str6635, ptr %t2224 + store ptr @.str6638, ptr %t2224 %t2225 = add i32 %t2211, 1 store i32 %t2225, ptr %t2208 %t2226 = load ptr, ptr %t387 @@ -67273,17 +67330,17 @@ grow465: put466: %t2242 = load ptr, ptr %t2229 %t2243 = getelementptr inbounds ptr, ptr %t2242, i32 %t2230 - store ptr @.str6636, ptr %t2243 + store ptr @.str6639, ptr %t2243 %t2244 = add i32 %t2230, 1 store i32 %t2244, ptr %t2227 br label %ifend456 ifend456: %t2245 = load ptr, ptr %t1 - %t2246 = call i32 @lp_str_eq(ptr %t2245, ptr @.str6637) + %t2246 = call i32 @lp_str_eq(ptr %t2245, ptr @.str6640) %t2247 = icmp ne i32 %t2246, 0 br i1 %t2247, label %then467, label %ifend469 then467: - store ptr @.str6638, ptr %t380 + store ptr @.str6641, ptr %t380 %t2248 = load ptr, ptr %t387 %t2249 = getelementptr inbounds %LSlice, ptr %t2248, i32 0, i32 1 %t2250 = getelementptr inbounds %LSlice, ptr %t2248, i32 0, i32 2 @@ -67308,7 +67365,7 @@ grow470: put471: %t2264 = load ptr, ptr %t2251 %t2265 = getelementptr inbounds ptr, ptr %t2264, i32 %t2252 - store ptr @.str6639, ptr %t2265 + store ptr @.str6642, ptr %t2265 %t2266 = add i32 %t2252, 1 store i32 %t2266, ptr %t2249 %t2267 = load ptr, ptr %t387 @@ -67335,7 +67392,7 @@ grow472: put473: %t2283 = load ptr, ptr %t2270 %t2284 = getelementptr inbounds ptr, ptr %t2283, i32 %t2271 - store ptr @.str6640, ptr %t2284 + store ptr @.str6643, ptr %t2284 %t2285 = add i32 %t2271, 1 store i32 %t2285, ptr %t2268 %t2286 = load ptr, ptr %t387 @@ -67362,7 +67419,7 @@ grow474: put475: %t2302 = load ptr, ptr %t2289 %t2303 = getelementptr inbounds ptr, ptr %t2302, i32 %t2290 - store ptr @.str6641, ptr %t2303 + store ptr @.str6644, ptr %t2303 %t2304 = add i32 %t2290, 1 store i32 %t2304, ptr %t2287 %t2305 = load ptr, ptr %t387 @@ -67389,7 +67446,7 @@ grow476: put477: %t2321 = load ptr, ptr %t2308 %t2322 = getelementptr inbounds ptr, ptr %t2321, i32 %t2309 - store ptr @.str6642, ptr %t2322 + store ptr @.str6645, ptr %t2322 %t2323 = add i32 %t2309, 1 store i32 %t2323, ptr %t2306 %t2324 = load ptr, ptr %t387 @@ -67416,17 +67473,17 @@ grow478: put479: %t2340 = load ptr, ptr %t2327 %t2341 = getelementptr inbounds ptr, ptr %t2340, i32 %t2328 - store ptr @.str6643, ptr %t2341 + store ptr @.str6646, ptr %t2341 %t2342 = add i32 %t2328, 1 store i32 %t2342, ptr %t2325 br label %ifend469 ifend469: %t2343 = load ptr, ptr %t1 - %t2344 = call i32 @lp_str_eq(ptr %t2343, ptr @.str6644) + %t2344 = call i32 @lp_str_eq(ptr %t2343, ptr @.str6647) %t2345 = icmp ne i32 %t2344, 0 br i1 %t2345, label %then480, label %ifend482 then480: - store ptr @.str6645, ptr %t380 + store ptr @.str6648, ptr %t380 %t2346 = load ptr, ptr %t387 %t2347 = getelementptr inbounds %LSlice, ptr %t2346, i32 0, i32 1 %t2348 = getelementptr inbounds %LSlice, ptr %t2346, i32 0, i32 2 @@ -67451,7 +67508,7 @@ grow483: put484: %t2362 = load ptr, ptr %t2349 %t2363 = getelementptr inbounds ptr, ptr %t2362, i32 %t2350 - store ptr @.str6646, ptr %t2363 + store ptr @.str6649, ptr %t2363 %t2364 = add i32 %t2350, 1 store i32 %t2364, ptr %t2347 %t2365 = load ptr, ptr %t387 @@ -67478,7 +67535,7 @@ grow485: put486: %t2381 = load ptr, ptr %t2368 %t2382 = getelementptr inbounds ptr, ptr %t2381, i32 %t2369 - store ptr @.str6647, ptr %t2382 + store ptr @.str6650, ptr %t2382 %t2383 = add i32 %t2369, 1 store i32 %t2383, ptr %t2366 %t2384 = load ptr, ptr %t387 @@ -67505,7 +67562,7 @@ grow487: put488: %t2400 = load ptr, ptr %t2387 %t2401 = getelementptr inbounds ptr, ptr %t2400, i32 %t2388 - store ptr @.str6648, ptr %t2401 + store ptr @.str6651, ptr %t2401 %t2402 = add i32 %t2388, 1 store i32 %t2402, ptr %t2385 %t2403 = load ptr, ptr %t387 @@ -67532,17 +67589,17 @@ grow489: put490: %t2419 = load ptr, ptr %t2406 %t2420 = getelementptr inbounds ptr, ptr %t2419, i32 %t2407 - store ptr @.str6649, ptr %t2420 + store ptr @.str6652, ptr %t2420 %t2421 = add i32 %t2407, 1 store i32 %t2421, ptr %t2404 br label %ifend482 ifend482: %t2422 = load ptr, ptr %t1 - %t2423 = call i32 @lp_str_eq(ptr %t2422, ptr @.str6650) + %t2423 = call i32 @lp_str_eq(ptr %t2422, ptr @.str6653) %t2424 = icmp ne i32 %t2423, 0 br i1 %t2424, label %then491, label %ifend493 then491: - store ptr @.str6651, ptr %t380 + store ptr @.str6654, ptr %t380 %t2425 = load ptr, ptr %t387 %t2426 = getelementptr inbounds %LSlice, ptr %t2425, i32 0, i32 1 %t2427 = getelementptr inbounds %LSlice, ptr %t2425, i32 0, i32 2 @@ -67567,17 +67624,17 @@ grow494: put495: %t2441 = load ptr, ptr %t2428 %t2442 = getelementptr inbounds ptr, ptr %t2441, i32 %t2429 - store ptr @.str6652, ptr %t2442 + store ptr @.str6655, ptr %t2442 %t2443 = add i32 %t2429, 1 store i32 %t2443, ptr %t2426 br label %ifend493 ifend493: %t2444 = load ptr, ptr %t1 - %t2445 = call i32 @lp_str_eq(ptr %t2444, ptr @.str6653) + %t2445 = call i32 @lp_str_eq(ptr %t2444, ptr @.str6656) %t2446 = icmp ne i32 %t2445, 0 br i1 %t2446, label %then496, label %ifend498 then496: - store ptr @.str6654, ptr %t380 + store ptr @.str6657, ptr %t380 %t2447 = load ptr, ptr %t387 %t2448 = getelementptr inbounds %LSlice, ptr %t2447, i32 0, i32 1 %t2449 = getelementptr inbounds %LSlice, ptr %t2447, i32 0, i32 2 @@ -67602,7 +67659,7 @@ grow499: put500: %t2463 = load ptr, ptr %t2450 %t2464 = getelementptr inbounds ptr, ptr %t2463, i32 %t2451 - store ptr @.str6655, ptr %t2464 + store ptr @.str6658, ptr %t2464 %t2465 = add i32 %t2451, 1 store i32 %t2465, ptr %t2448 %t2466 = load ptr, ptr %t387 @@ -67629,7 +67686,7 @@ grow501: put502: %t2482 = load ptr, ptr %t2469 %t2483 = getelementptr inbounds ptr, ptr %t2482, i32 %t2470 - store ptr @.str6656, ptr %t2483 + store ptr @.str6659, ptr %t2483 %t2484 = add i32 %t2470, 1 store i32 %t2484, ptr %t2467 %t2485 = load ptr, ptr %t387 @@ -67656,17 +67713,17 @@ grow503: put504: %t2501 = load ptr, ptr %t2488 %t2502 = getelementptr inbounds ptr, ptr %t2501, i32 %t2489 - store ptr @.str6657, ptr %t2502 + store ptr @.str6660, ptr %t2502 %t2503 = add i32 %t2489, 1 store i32 %t2503, ptr %t2486 br label %ifend498 ifend498: %t2504 = load ptr, ptr %t1 - %t2505 = call i32 @lp_str_eq(ptr %t2504, ptr @.str6658) + %t2505 = call i32 @lp_str_eq(ptr %t2504, ptr @.str6661) %t2506 = icmp ne i32 %t2505, 0 br i1 %t2506, label %then505, label %ifend507 then505: - store ptr @.str6659, ptr %t380 + store ptr @.str6662, ptr %t380 %t2507 = load ptr, ptr %t387 %t2508 = getelementptr inbounds %LSlice, ptr %t2507, i32 0, i32 1 %t2509 = getelementptr inbounds %LSlice, ptr %t2507, i32 0, i32 2 @@ -67691,7 +67748,7 @@ grow508: put509: %t2523 = load ptr, ptr %t2510 %t2524 = getelementptr inbounds ptr, ptr %t2523, i32 %t2511 - store ptr @.str6660, ptr %t2524 + store ptr @.str6663, ptr %t2524 %t2525 = add i32 %t2511, 1 store i32 %t2525, ptr %t2508 %t2526 = load ptr, ptr %t387 @@ -67718,7 +67775,7 @@ grow510: put511: %t2542 = load ptr, ptr %t2529 %t2543 = getelementptr inbounds ptr, ptr %t2542, i32 %t2530 - store ptr @.str6661, ptr %t2543 + store ptr @.str6664, ptr %t2543 %t2544 = add i32 %t2530, 1 store i32 %t2544, ptr %t2527 %t2545 = load ptr, ptr %t387 @@ -67745,7 +67802,7 @@ grow512: put513: %t2561 = load ptr, ptr %t2548 %t2562 = getelementptr inbounds ptr, ptr %t2561, i32 %t2549 - store ptr @.str6662, ptr %t2562 + store ptr @.str6665, ptr %t2562 %t2563 = add i32 %t2549, 1 store i32 %t2563, ptr %t2546 %t2564 = load ptr, ptr %t387 @@ -67772,17 +67829,17 @@ grow514: put515: %t2580 = load ptr, ptr %t2567 %t2581 = getelementptr inbounds ptr, ptr %t2580, i32 %t2568 - store ptr @.str6663, ptr %t2581 + store ptr @.str6666, ptr %t2581 %t2582 = add i32 %t2568, 1 store i32 %t2582, ptr %t2565 br label %ifend507 ifend507: %t2583 = load ptr, ptr %t1 - %t2584 = call i32 @lp_str_eq(ptr %t2583, ptr @.str6664) + %t2584 = call i32 @lp_str_eq(ptr %t2583, ptr @.str6667) %t2585 = icmp ne i32 %t2584, 0 br i1 %t2585, label %then516, label %ifend518 then516: - store ptr @.str6665, ptr %t380 + store ptr @.str6668, ptr %t380 %t2586 = load ptr, ptr %t387 %t2587 = getelementptr inbounds %LSlice, ptr %t2586, i32 0, i32 1 %t2588 = getelementptr inbounds %LSlice, ptr %t2586, i32 0, i32 2 @@ -67807,7 +67864,7 @@ grow519: put520: %t2602 = load ptr, ptr %t2589 %t2603 = getelementptr inbounds ptr, ptr %t2602, i32 %t2590 - store ptr @.str6666, ptr %t2603 + store ptr @.str6669, ptr %t2603 %t2604 = add i32 %t2590, 1 store i32 %t2604, ptr %t2587 %t2605 = load ptr, ptr %t387 @@ -67834,7 +67891,7 @@ grow521: put522: %t2621 = load ptr, ptr %t2608 %t2622 = getelementptr inbounds ptr, ptr %t2621, i32 %t2609 - store ptr @.str6667, ptr %t2622 + store ptr @.str6670, ptr %t2622 %t2623 = add i32 %t2609, 1 store i32 %t2623, ptr %t2606 %t2624 = load ptr, ptr %t387 @@ -67861,7 +67918,7 @@ grow523: put524: %t2640 = load ptr, ptr %t2627 %t2641 = getelementptr inbounds ptr, ptr %t2640, i32 %t2628 - store ptr @.str6668, ptr %t2641 + store ptr @.str6671, ptr %t2641 %t2642 = add i32 %t2628, 1 store i32 %t2642, ptr %t2625 %t2643 = load ptr, ptr %t387 @@ -67888,7 +67945,7 @@ grow525: put526: %t2659 = load ptr, ptr %t2646 %t2660 = getelementptr inbounds ptr, ptr %t2659, i32 %t2647 - store ptr @.str6669, ptr %t2660 + store ptr @.str6672, ptr %t2660 %t2661 = add i32 %t2647, 1 store i32 %t2661, ptr %t2644 %t2662 = load ptr, ptr %t387 @@ -67915,7 +67972,7 @@ grow527: put528: %t2678 = load ptr, ptr %t2665 %t2679 = getelementptr inbounds ptr, ptr %t2678, i32 %t2666 - store ptr @.str6670, ptr %t2679 + store ptr @.str6673, ptr %t2679 %t2680 = add i32 %t2666, 1 store i32 %t2680, ptr %t2663 %t2681 = load ptr, ptr %t387 @@ -67942,7 +67999,7 @@ grow529: put530: %t2697 = load ptr, ptr %t2684 %t2698 = getelementptr inbounds ptr, ptr %t2697, i32 %t2685 - store ptr @.str6671, ptr %t2698 + store ptr @.str6674, ptr %t2698 %t2699 = add i32 %t2685, 1 store i32 %t2699, ptr %t2682 %t2700 = load ptr, ptr %t387 @@ -67969,7 +68026,7 @@ grow531: put532: %t2716 = load ptr, ptr %t2703 %t2717 = getelementptr inbounds ptr, ptr %t2716, i32 %t2704 - store ptr @.str6672, ptr %t2717 + store ptr @.str6675, ptr %t2717 %t2718 = add i32 %t2704, 1 store i32 %t2718, ptr %t2701 %t2719 = load ptr, ptr %t387 @@ -67996,7 +68053,7 @@ grow533: put534: %t2735 = load ptr, ptr %t2722 %t2736 = getelementptr inbounds ptr, ptr %t2735, i32 %t2723 - store ptr @.str6673, ptr %t2736 + store ptr @.str6676, ptr %t2736 %t2737 = add i32 %t2723, 1 store i32 %t2737, ptr %t2720 %t2738 = load ptr, ptr %t387 @@ -68023,17 +68080,17 @@ grow535: put536: %t2754 = load ptr, ptr %t2741 %t2755 = getelementptr inbounds ptr, ptr %t2754, i32 %t2742 - store ptr @.str6674, ptr %t2755 + store ptr @.str6677, ptr %t2755 %t2756 = add i32 %t2742, 1 store i32 %t2756, ptr %t2739 br label %ifend518 ifend518: %t2757 = load ptr, ptr %t1 - %t2758 = call i32 @lp_str_eq(ptr %t2757, ptr @.str6675) + %t2758 = call i32 @lp_str_eq(ptr %t2757, ptr @.str6678) %t2759 = icmp ne i32 %t2758, 0 br i1 %t2759, label %then537, label %ifend539 then537: - store ptr @.str6676, ptr %t380 + store ptr @.str6679, ptr %t380 %t2760 = load ptr, ptr %t387 %t2761 = getelementptr inbounds %LSlice, ptr %t2760, i32 0, i32 1 %t2762 = getelementptr inbounds %LSlice, ptr %t2760, i32 0, i32 2 @@ -68058,17 +68115,17 @@ grow540: put541: %t2776 = load ptr, ptr %t2763 %t2777 = getelementptr inbounds ptr, ptr %t2776, i32 %t2764 - store ptr @.str6677, ptr %t2777 + store ptr @.str6680, ptr %t2777 %t2778 = add i32 %t2764, 1 store i32 %t2778, ptr %t2761 br label %ifend539 ifend539: %t2779 = load ptr, ptr %t1 - %t2780 = call i32 @lp_str_eq(ptr %t2779, ptr @.str6678) + %t2780 = call i32 @lp_str_eq(ptr %t2779, ptr @.str6681) %t2781 = icmp ne i32 %t2780, 0 br i1 %t2781, label %then542, label %ifend544 then542: - store ptr @.str6679, ptr %t380 + store ptr @.str6682, ptr %t380 %t2782 = load ptr, ptr %t387 %t2783 = getelementptr inbounds %LSlice, ptr %t2782, i32 0, i32 1 %t2784 = getelementptr inbounds %LSlice, ptr %t2782, i32 0, i32 2 @@ -68093,7 +68150,7 @@ grow545: put546: %t2798 = load ptr, ptr %t2785 %t2799 = getelementptr inbounds ptr, ptr %t2798, i32 %t2786 - store ptr @.str6680, ptr %t2799 + store ptr @.str6683, ptr %t2799 %t2800 = add i32 %t2786, 1 store i32 %t2800, ptr %t2783 br label %ifend544 @@ -68101,16 +68158,16 @@ ifend544: br label %ifend435 ifend435: %t2801 = load ptr, ptr %t0 - %t2802 = call i32 @lp_str_eq(ptr %t2801, ptr @.str6681) + %t2802 = call i32 @lp_str_eq(ptr %t2801, ptr @.str6684) %t2803 = icmp ne i32 %t2802, 0 br i1 %t2803, label %then547, label %ifend549 then547: %t2804 = load ptr, ptr %t1 - %t2805 = call i32 @lp_str_eq(ptr %t2804, ptr @.str6682) + %t2805 = call i32 @lp_str_eq(ptr %t2804, ptr @.str6685) %t2806 = icmp ne i32 %t2805, 0 br i1 %t2806, label %then550, label %ifend552 then550: - store ptr @.str6683, ptr %t380 + store ptr @.str6686, ptr %t380 %t2807 = load ptr, ptr %t387 %t2808 = getelementptr inbounds %LSlice, ptr %t2807, i32 0, i32 1 %t2809 = getelementptr inbounds %LSlice, ptr %t2807, i32 0, i32 2 @@ -68135,7 +68192,7 @@ grow553: put554: %t2823 = load ptr, ptr %t2810 %t2824 = getelementptr inbounds ptr, ptr %t2823, i32 %t2811 - store ptr @.str6684, ptr %t2824 + store ptr @.str6687, ptr %t2824 %t2825 = add i32 %t2811, 1 store i32 %t2825, ptr %t2808 br label %ifend552 @@ -68143,24 +68200,24 @@ ifend552: br label %ifend549 ifend549: %t2826 = load ptr, ptr %t0 - %t2827 = call i32 @lp_str_eq(ptr %t2826, ptr @.str6685) + %t2827 = call i32 @lp_str_eq(ptr %t2826, ptr @.str6688) %t2828 = icmp ne i32 %t2827, 0 br i1 %t2828, label %then555, label %ifend557 then555: %t2829 = load ptr, ptr %t1 - %t2830 = call i32 @lp_str_eq(ptr %t2829, ptr @.str6686) + %t2830 = call i32 @lp_str_eq(ptr %t2829, ptr @.str6689) %t2831 = icmp ne i32 %t2830, 0 br i1 %t2831, label %then558, label %ifend560 then558: - store ptr @.str6687, ptr %t380 + store ptr @.str6690, ptr %t380 br label %ifend560 ifend560: %t2832 = load ptr, ptr %t1 - %t2833 = call i32 @lp_str_eq(ptr %t2832, ptr @.str6688) + %t2833 = call i32 @lp_str_eq(ptr %t2832, ptr @.str6691) %t2834 = icmp ne i32 %t2833, 0 br i1 %t2834, label %then561, label %ifend563 then561: - store ptr @.str6689, ptr %t380 + store ptr @.str6692, ptr %t380 %t2835 = load ptr, ptr %t387 %t2836 = getelementptr inbounds %LSlice, ptr %t2835, i32 0, i32 1 %t2837 = getelementptr inbounds %LSlice, ptr %t2835, i32 0, i32 2 @@ -68185,25 +68242,25 @@ grow564: put565: %t2851 = load ptr, ptr %t2838 %t2852 = getelementptr inbounds ptr, ptr %t2851, i32 %t2839 - store ptr @.str6690, ptr %t2852 + store ptr @.str6693, ptr %t2852 %t2853 = add i32 %t2839, 1 store i32 %t2853, ptr %t2836 br label %ifend563 ifend563: %t2854 = load ptr, ptr %t1 - %t2855 = call i32 @lp_str_eq(ptr %t2854, ptr @.str6691) + %t2855 = call i32 @lp_str_eq(ptr %t2854, ptr @.str6694) %t2856 = icmp ne i32 %t2855, 0 br i1 %t2856, label %then566, label %ifend568 then566: - store ptr @.str6692, ptr %t380 + store ptr @.str6695, ptr %t380 br label %ifend568 ifend568: %t2857 = load ptr, ptr %t1 - %t2858 = call i32 @lp_str_eq(ptr %t2857, ptr @.str6693) + %t2858 = call i32 @lp_str_eq(ptr %t2857, ptr @.str6696) %t2859 = icmp ne i32 %t2858, 0 br i1 %t2859, label %then569, label %ifend571 then569: - store ptr @.str6694, ptr %t380 + store ptr @.str6697, ptr %t380 %t2860 = load ptr, ptr %t387 %t2861 = getelementptr inbounds %LSlice, ptr %t2860, i32 0, i32 1 %t2862 = getelementptr inbounds %LSlice, ptr %t2860, i32 0, i32 2 @@ -68228,17 +68285,17 @@ grow572: put573: %t2876 = load ptr, ptr %t2863 %t2877 = getelementptr inbounds ptr, ptr %t2876, i32 %t2864 - store ptr @.str6695, ptr %t2877 + store ptr @.str6698, ptr %t2877 %t2878 = add i32 %t2864, 1 store i32 %t2878, ptr %t2861 br label %ifend571 ifend571: %t2879 = load ptr, ptr %t1 - %t2880 = call i32 @lp_str_eq(ptr %t2879, ptr @.str6696) + %t2880 = call i32 @lp_str_eq(ptr %t2879, ptr @.str6699) %t2881 = icmp ne i32 %t2880, 0 br i1 %t2881, label %then574, label %ifend576 then574: - store ptr @.str6697, ptr %t380 + store ptr @.str6700, ptr %t380 %t2882 = load ptr, ptr %t387 %t2883 = getelementptr inbounds %LSlice, ptr %t2882, i32 0, i32 1 %t2884 = getelementptr inbounds %LSlice, ptr %t2882, i32 0, i32 2 @@ -68263,17 +68320,17 @@ grow577: put578: %t2898 = load ptr, ptr %t2885 %t2899 = getelementptr inbounds ptr, ptr %t2898, i32 %t2886 - store ptr @.str6698, ptr %t2899 + store ptr @.str6701, ptr %t2899 %t2900 = add i32 %t2886, 1 store i32 %t2900, ptr %t2883 br label %ifend576 ifend576: %t2901 = load ptr, ptr %t1 - %t2902 = call i32 @lp_str_eq(ptr %t2901, ptr @.str6699) + %t2902 = call i32 @lp_str_eq(ptr %t2901, ptr @.str6702) %t2903 = icmp ne i32 %t2902, 0 br i1 %t2903, label %then579, label %ifend581 then579: - store ptr @.str6700, ptr %t380 + store ptr @.str6703, ptr %t380 %t2904 = load ptr, ptr %t387 %t2905 = getelementptr inbounds %LSlice, ptr %t2904, i32 0, i32 1 %t2906 = getelementptr inbounds %LSlice, ptr %t2904, i32 0, i32 2 @@ -68298,7 +68355,7 @@ grow582: put583: %t2920 = load ptr, ptr %t2907 %t2921 = getelementptr inbounds ptr, ptr %t2920, i32 %t2908 - store ptr @.str6701, ptr %t2921 + store ptr @.str6704, ptr %t2921 %t2922 = add i32 %t2908, 1 store i32 %t2922, ptr %t2905 %t2923 = load ptr, ptr %t387 @@ -68325,32 +68382,32 @@ grow584: put585: %t2939 = load ptr, ptr %t2926 %t2940 = getelementptr inbounds ptr, ptr %t2939, i32 %t2927 - store ptr @.str6702, ptr %t2940 + store ptr @.str6705, ptr %t2940 %t2941 = add i32 %t2927, 1 store i32 %t2941, ptr %t2924 br label %ifend581 ifend581: %t2942 = load ptr, ptr %t1 - %t2943 = call i32 @lp_str_eq(ptr %t2942, ptr @.str6703) + %t2943 = call i32 @lp_str_eq(ptr %t2942, ptr @.str6706) %t2944 = icmp ne i32 %t2943, 0 br i1 %t2944, label %then586, label %ifend588 then586: - store ptr @.str6704, ptr %t380 + store ptr @.str6707, ptr %t380 br label %ifend588 ifend588: br label %ifend557 ifend557: %t2945 = load ptr, ptr %t0 - %t2946 = call i32 @lp_str_eq(ptr %t2945, ptr @.str6705) + %t2946 = call i32 @lp_str_eq(ptr %t2945, ptr @.str6708) %t2947 = icmp ne i32 %t2946, 0 br i1 %t2947, label %then589, label %ifend591 then589: %t2948 = load ptr, ptr %t1 - %t2949 = call i32 @lp_str_eq(ptr %t2948, ptr @.str6706) + %t2949 = call i32 @lp_str_eq(ptr %t2948, ptr @.str6709) %t2950 = icmp ne i32 %t2949, 0 br i1 %t2950, label %then592, label %ifend594 then592: - store ptr @.str6707, ptr %t380 + store ptr @.str6710, ptr %t380 %t2951 = load ptr, ptr %t387 %t2952 = getelementptr inbounds %LSlice, ptr %t2951, i32 0, i32 1 %t2953 = getelementptr inbounds %LSlice, ptr %t2951, i32 0, i32 2 @@ -68375,7 +68432,7 @@ grow595: put596: %t2967 = load ptr, ptr %t2954 %t2968 = getelementptr inbounds ptr, ptr %t2967, i32 %t2955 - store ptr @.str6708, ptr %t2968 + store ptr @.str6711, ptr %t2968 %t2969 = add i32 %t2955, 1 store i32 %t2969, ptr %t2952 %t2970 = load ptr, ptr %t387 @@ -68402,17 +68459,17 @@ grow597: put598: %t2986 = load ptr, ptr %t2973 %t2987 = getelementptr inbounds ptr, ptr %t2986, i32 %t2974 - store ptr @.str6709, ptr %t2987 + store ptr @.str6712, ptr %t2987 %t2988 = add i32 %t2974, 1 store i32 %t2988, ptr %t2971 br label %ifend594 ifend594: %t2989 = load ptr, ptr %t1 - %t2990 = call i32 @lp_str_eq(ptr %t2989, ptr @.str6710) + %t2990 = call i32 @lp_str_eq(ptr %t2989, ptr @.str6713) %t2991 = icmp ne i32 %t2990, 0 br i1 %t2991, label %then599, label %ifend601 then599: - store ptr @.str6711, ptr %t380 + store ptr @.str6714, ptr %t380 %t2992 = load ptr, ptr %t387 %t2993 = getelementptr inbounds %LSlice, ptr %t2992, i32 0, i32 1 %t2994 = getelementptr inbounds %LSlice, ptr %t2992, i32 0, i32 2 @@ -68437,7 +68494,7 @@ grow602: put603: %t3008 = load ptr, ptr %t2995 %t3009 = getelementptr inbounds ptr, ptr %t3008, i32 %t2996 - store ptr @.str6712, ptr %t3009 + store ptr @.str6715, ptr %t3009 %t3010 = add i32 %t2996, 1 store i32 %t3010, ptr %t2993 %t3011 = load ptr, ptr %t387 @@ -68464,7 +68521,7 @@ grow604: put605: %t3027 = load ptr, ptr %t3014 %t3028 = getelementptr inbounds ptr, ptr %t3027, i32 %t3015 - store ptr @.str6713, ptr %t3028 + store ptr @.str6716, ptr %t3028 %t3029 = add i32 %t3015, 1 store i32 %t3029, ptr %t3012 %t3030 = load ptr, ptr %t387 @@ -68491,17 +68548,17 @@ grow606: put607: %t3046 = load ptr, ptr %t3033 %t3047 = getelementptr inbounds ptr, ptr %t3046, i32 %t3034 - store ptr @.str6714, ptr %t3047 + store ptr @.str6717, ptr %t3047 %t3048 = add i32 %t3034, 1 store i32 %t3048, ptr %t3031 br label %ifend601 ifend601: %t3049 = load ptr, ptr %t1 - %t3050 = call i32 @lp_str_eq(ptr %t3049, ptr @.str6715) + %t3050 = call i32 @lp_str_eq(ptr %t3049, ptr @.str6718) %t3051 = icmp ne i32 %t3050, 0 br i1 %t3051, label %then608, label %ifend610 then608: - store ptr @.str6716, ptr %t380 + store ptr @.str6719, ptr %t380 %t3052 = load ptr, ptr %t387 %t3053 = getelementptr inbounds %LSlice, ptr %t3052, i32 0, i32 1 %t3054 = getelementptr inbounds %LSlice, ptr %t3052, i32 0, i32 2 @@ -68526,7 +68583,7 @@ grow611: put612: %t3068 = load ptr, ptr %t3055 %t3069 = getelementptr inbounds ptr, ptr %t3068, i32 %t3056 - store ptr @.str6717, ptr %t3069 + store ptr @.str6720, ptr %t3069 %t3070 = add i32 %t3056, 1 store i32 %t3070, ptr %t3053 %t3071 = load ptr, ptr %t387 @@ -68553,7 +68610,7 @@ grow613: put614: %t3087 = load ptr, ptr %t3074 %t3088 = getelementptr inbounds ptr, ptr %t3087, i32 %t3075 - store ptr @.str6718, ptr %t3088 + store ptr @.str6721, ptr %t3088 %t3089 = add i32 %t3075, 1 store i32 %t3089, ptr %t3072 %t3090 = load ptr, ptr %t387 @@ -68580,17 +68637,17 @@ grow615: put616: %t3106 = load ptr, ptr %t3093 %t3107 = getelementptr inbounds ptr, ptr %t3106, i32 %t3094 - store ptr @.str6719, ptr %t3107 + store ptr @.str6722, ptr %t3107 %t3108 = add i32 %t3094, 1 store i32 %t3108, ptr %t3091 br label %ifend610 ifend610: %t3109 = load ptr, ptr %t1 - %t3110 = call i32 @lp_str_eq(ptr %t3109, ptr @.str6720) + %t3110 = call i32 @lp_str_eq(ptr %t3109, ptr @.str6723) %t3111 = icmp ne i32 %t3110, 0 br i1 %t3111, label %then617, label %ifend619 then617: - store ptr @.str6721, ptr %t380 + store ptr @.str6724, ptr %t380 %t3112 = load ptr, ptr %t387 %t3113 = getelementptr inbounds %LSlice, ptr %t3112, i32 0, i32 1 %t3114 = getelementptr inbounds %LSlice, ptr %t3112, i32 0, i32 2 @@ -68615,7 +68672,7 @@ grow620: put621: %t3128 = load ptr, ptr %t3115 %t3129 = getelementptr inbounds ptr, ptr %t3128, i32 %t3116 - store ptr @.str6722, ptr %t3129 + store ptr @.str6725, ptr %t3129 %t3130 = add i32 %t3116, 1 store i32 %t3130, ptr %t3113 %t3131 = load ptr, ptr %t387 @@ -68642,7 +68699,7 @@ grow622: put623: %t3147 = load ptr, ptr %t3134 %t3148 = getelementptr inbounds ptr, ptr %t3147, i32 %t3135 - store ptr @.str6723, ptr %t3148 + store ptr @.str6726, ptr %t3148 %t3149 = add i32 %t3135, 1 store i32 %t3149, ptr %t3132 %t3150 = load ptr, ptr %t387 @@ -68669,17 +68726,17 @@ grow624: put625: %t3166 = load ptr, ptr %t3153 %t3167 = getelementptr inbounds ptr, ptr %t3166, i32 %t3154 - store ptr @.str6724, ptr %t3167 + store ptr @.str6727, ptr %t3167 %t3168 = add i32 %t3154, 1 store i32 %t3168, ptr %t3151 br label %ifend619 ifend619: %t3169 = load ptr, ptr %t1 - %t3170 = call i32 @lp_str_eq(ptr %t3169, ptr @.str6725) + %t3170 = call i32 @lp_str_eq(ptr %t3169, ptr @.str6728) %t3171 = icmp ne i32 %t3170, 0 br i1 %t3171, label %then626, label %ifend628 then626: - store ptr @.str6726, ptr %t380 + store ptr @.str6729, ptr %t380 %t3172 = load ptr, ptr %t387 %t3173 = getelementptr inbounds %LSlice, ptr %t3172, i32 0, i32 1 %t3174 = getelementptr inbounds %LSlice, ptr %t3172, i32 0, i32 2 @@ -68704,17 +68761,17 @@ grow629: put630: %t3188 = load ptr, ptr %t3175 %t3189 = getelementptr inbounds ptr, ptr %t3188, i32 %t3176 - store ptr @.str6727, ptr %t3189 + store ptr @.str6730, ptr %t3189 %t3190 = add i32 %t3176, 1 store i32 %t3190, ptr %t3173 br label %ifend628 ifend628: %t3191 = load ptr, ptr %t1 - %t3192 = call i32 @lp_str_eq(ptr %t3191, ptr @.str6728) + %t3192 = call i32 @lp_str_eq(ptr %t3191, ptr @.str6731) %t3193 = icmp ne i32 %t3192, 0 br i1 %t3193, label %then631, label %ifend633 then631: - store ptr @.str6729, ptr %t380 + store ptr @.str6732, ptr %t380 %t3194 = load ptr, ptr %t387 %t3195 = getelementptr inbounds %LSlice, ptr %t3194, i32 0, i32 1 %t3196 = getelementptr inbounds %LSlice, ptr %t3194, i32 0, i32 2 @@ -68739,7 +68796,7 @@ grow634: put635: %t3210 = load ptr, ptr %t3197 %t3211 = getelementptr inbounds ptr, ptr %t3210, i32 %t3198 - store ptr @.str6730, ptr %t3211 + store ptr @.str6733, ptr %t3211 %t3212 = add i32 %t3198, 1 store i32 %t3212, ptr %t3195 br label %ifend633 @@ -68747,16 +68804,16 @@ ifend633: br label %ifend591 ifend591: %t3213 = load ptr, ptr %t0 - %t3214 = call i32 @lp_str_eq(ptr %t3213, ptr @.str6731) + %t3214 = call i32 @lp_str_eq(ptr %t3213, ptr @.str6734) %t3215 = icmp ne i32 %t3214, 0 br i1 %t3215, label %then636, label %ifend638 then636: %t3216 = load ptr, ptr %t1 - %t3217 = call i32 @lp_str_eq(ptr %t3216, ptr @.str6732) + %t3217 = call i32 @lp_str_eq(ptr %t3216, ptr @.str6735) %t3218 = icmp ne i32 %t3217, 0 br i1 %t3218, label %then639, label %ifend641 then639: - store ptr @.str6733, ptr %t380 + store ptr @.str6736, ptr %t380 %t3219 = load ptr, ptr %t387 %t3220 = getelementptr inbounds %LSlice, ptr %t3219, i32 0, i32 1 %t3221 = getelementptr inbounds %LSlice, ptr %t3219, i32 0, i32 2 @@ -68781,7 +68838,7 @@ grow642: put643: %t3235 = load ptr, ptr %t3222 %t3236 = getelementptr inbounds ptr, ptr %t3235, i32 %t3223 - store ptr @.str6734, ptr %t3236 + store ptr @.str6737, ptr %t3236 %t3237 = add i32 %t3223, 1 store i32 %t3237, ptr %t3220 %t3238 = load ptr, ptr %t387 @@ -68808,7 +68865,7 @@ grow644: put645: %t3254 = load ptr, ptr %t3241 %t3255 = getelementptr inbounds ptr, ptr %t3254, i32 %t3242 - store ptr @.str6735, ptr %t3255 + store ptr @.str6738, ptr %t3255 %t3256 = add i32 %t3242, 1 store i32 %t3256, ptr %t3239 %t3257 = load ptr, ptr %t387 @@ -68835,7 +68892,7 @@ grow646: put647: %t3273 = load ptr, ptr %t3260 %t3274 = getelementptr inbounds ptr, ptr %t3273, i32 %t3261 - store ptr @.str6736, ptr %t3274 + store ptr @.str6739, ptr %t3274 %t3275 = add i32 %t3261, 1 store i32 %t3275, ptr %t3258 %t3276 = load ptr, ptr %t387 @@ -68862,17 +68919,17 @@ grow648: put649: %t3292 = load ptr, ptr %t3279 %t3293 = getelementptr inbounds ptr, ptr %t3292, i32 %t3280 - store ptr @.str6737, ptr %t3293 + store ptr @.str6740, ptr %t3293 %t3294 = add i32 %t3280, 1 store i32 %t3294, ptr %t3277 br label %ifend641 ifend641: %t3295 = load ptr, ptr %t1 - %t3296 = call i32 @lp_str_eq(ptr %t3295, ptr @.str6738) + %t3296 = call i32 @lp_str_eq(ptr %t3295, ptr @.str6741) %t3297 = icmp ne i32 %t3296, 0 br i1 %t3297, label %then650, label %ifend652 then650: - store ptr @.str6739, ptr %t380 + store ptr @.str6742, ptr %t380 %t3298 = load ptr, ptr %t387 %t3299 = getelementptr inbounds %LSlice, ptr %t3298, i32 0, i32 1 %t3300 = getelementptr inbounds %LSlice, ptr %t3298, i32 0, i32 2 @@ -68897,7 +68954,7 @@ grow653: put654: %t3314 = load ptr, ptr %t3301 %t3315 = getelementptr inbounds ptr, ptr %t3314, i32 %t3302 - store ptr @.str6740, ptr %t3315 + store ptr @.str6743, ptr %t3315 %t3316 = add i32 %t3302, 1 store i32 %t3316, ptr %t3299 %t3317 = load ptr, ptr %t387 @@ -68924,7 +68981,7 @@ grow655: put656: %t3333 = load ptr, ptr %t3320 %t3334 = getelementptr inbounds ptr, ptr %t3333, i32 %t3321 - store ptr @.str6741, ptr %t3334 + store ptr @.str6744, ptr %t3334 %t3335 = add i32 %t3321, 1 store i32 %t3335, ptr %t3318 %t3336 = load ptr, ptr %t387 @@ -68951,7 +69008,7 @@ grow657: put658: %t3352 = load ptr, ptr %t3339 %t3353 = getelementptr inbounds ptr, ptr %t3352, i32 %t3340 - store ptr @.str6742, ptr %t3353 + store ptr @.str6745, ptr %t3353 %t3354 = add i32 %t3340, 1 store i32 %t3354, ptr %t3337 %t3355 = load ptr, ptr %t387 @@ -68978,28 +69035,28 @@ grow659: put660: %t3371 = load ptr, ptr %t3358 %t3372 = getelementptr inbounds ptr, ptr %t3371, i32 %t3359 - store ptr @.str6743, ptr %t3372 + store ptr @.str6746, ptr %t3372 %t3373 = add i32 %t3359, 1 store i32 %t3373, ptr %t3356 br label %ifend652 ifend652: %t3374 = load ptr, ptr %t1 - %t3375 = call i32 @lp_str_eq(ptr %t3374, ptr @.str6744) + %t3375 = call i32 @lp_str_eq(ptr %t3374, ptr @.str6747) %t3376 = icmp ne i32 %t3375, 0 br i1 %t3376, label %then661, label %ifend663 then661: - store ptr @.str6745, ptr %t380 + store ptr @.str6748, ptr %t380 br label %ifend663 ifend663: br label %ifend638 ifend638: %t3377 = load ptr, ptr %t0 - %t3378 = call i32 @lp_str_eq(ptr %t3377, ptr @.str6746) + %t3378 = call i32 @lp_str_eq(ptr %t3377, ptr @.str6749) %t3379 = icmp ne i32 %t3378, 0 br i1 %t3379, label %then664, label %ifend666 then664: %t3380 = load ptr, ptr %t1 - %t3381 = call i32 @lp_str_eq(ptr %t3380, ptr @.str6747) + %t3381 = call i32 @lp_str_eq(ptr %t3380, ptr @.str6750) %t3382 = icmp ne i32 %t3381, 0 br i1 %t3382, label %then667, label %ifend669 then667: @@ -69009,10 +69066,10 @@ then667: %t3386 = icmp ne i32 %t3385, 0 br i1 %t3386, label %then670, label %ifend672 then670: - call void @fn_perr(ptr @.str6748) + call void @fn_perr(ptr @.str6751) br label %ifend672 ifend672: - %t3387 = call ptr @fn_find_comp(ptr @.str6749) + %t3387 = call ptr @fn_find_comp(ptr @.str6752) store ptr %t3387, ptr %t3388 %t3389 = load ptr, ptr %t3388 %t3390 = icmp eq ptr %t3389, null @@ -69020,7 +69077,7 @@ ifend672: %t3392 = icmp ne i32 %t3391, 0 br i1 %t3392, label %then673, label %ifend675 then673: - call void @fn_perr(ptr @.str6750) + call void @fn_perr(ptr @.str6753) br label %ifend675 ifend675: %t3393 = getelementptr %LSlice, ptr null, i32 1 @@ -69057,7 +69114,7 @@ grow676: put677: %t3416 = load ptr, ptr %t3403 %t3417 = getelementptr inbounds ptr, ptr %t3416, i32 %t3404 - store ptr @.str6751, ptr %t3417 + store ptr @.str6754, ptr %t3417 %t3418 = add i32 %t3404, 1 store i32 %t3418, ptr %t3401 %t3419 = load ptr, ptr %t3399 @@ -69084,7 +69141,7 @@ grow678: put679: %t3435 = load ptr, ptr %t3422 %t3436 = getelementptr inbounds ptr, ptr %t3435, i32 %t3423 - store ptr @.str6752, ptr %t3436 + store ptr @.str6755, ptr %t3436 %t3437 = add i32 %t3423, 1 store i32 %t3437, ptr %t3420 %t3438 = load ptr, ptr %t2 @@ -69111,33 +69168,33 @@ put679: %t3458 = load ptr, ptr %t3448 %t3459 = getelementptr inbounds %Cmp_Val, ptr %t3458, i32 0, i32 0 %t3460 = load ptr, ptr %t3459 - %t3461 = call ptr @lp_str_concat(ptr @.str6753, ptr %t3460) - %t3462 = call ptr @lp_str_concat(ptr %t3461, ptr @.str6754) + %t3461 = call ptr @lp_str_concat(ptr @.str6756, ptr %t3460) + %t3462 = call ptr @lp_str_concat(ptr %t3461, ptr @.str6757) %t3463 = call ptr @fn_emit_bind(ptr %t3462) store ptr %t3463, ptr %t3464 %t3465 = call ptr @fn_itoa(i32 1024) store ptr %t3465, ptr %t3466 %t3467 = load ptr, ptr %t3466 - %t3468 = call ptr @lp_str_concat(ptr @.str6755, ptr %t3467) - %t3469 = call ptr @lp_str_concat(ptr %t3468, ptr @.str6756) + %t3468 = call ptr @lp_str_concat(ptr @.str6758, ptr %t3467) + %t3469 = call ptr @lp_str_concat(ptr %t3468, ptr @.str6759) %t3470 = load ptr, ptr %t3464 %t3471 = call ptr @lp_str_concat(ptr %t3469, ptr %t3470) %t3472 = call ptr @fn_emit_bind(ptr %t3471) store ptr %t3472, ptr %t3473 %t3474 = load ptr, ptr %t3473 - %t3475 = call ptr @lp_str_concat(ptr @.str6757, ptr %t3474) - %t3476 = call ptr @lp_str_concat(ptr %t3475, ptr @.str6758) + %t3475 = call ptr @lp_str_concat(ptr @.str6760, ptr %t3474) + %t3476 = call ptr @lp_str_concat(ptr %t3475, ptr @.str6761) %t3477 = load ptr, ptr %t3388 - %t3478 = call i32 @fn_field_index(ptr %t3477, ptr @.str6759) + %t3478 = call i32 @fn_field_index(ptr %t3477, ptr @.str6762) %t3479 = call ptr @fn_itoa(i32 %t3478) %t3480 = call ptr @lp_str_concat(ptr %t3476, ptr %t3479) %t3481 = call ptr @fn_emit_bind(ptr %t3480) store ptr %t3481, ptr %t3482 %t3483 = load ptr, ptr %t3473 - %t3484 = call ptr @lp_str_concat(ptr @.str6760, ptr %t3483) - %t3485 = call ptr @lp_str_concat(ptr %t3484, ptr @.str6761) + %t3484 = call ptr @lp_str_concat(ptr @.str6763, ptr %t3483) + %t3485 = call ptr @lp_str_concat(ptr %t3484, ptr @.str6764) %t3486 = load ptr, ptr %t3388 - %t3487 = call i32 @fn_field_index(ptr %t3486, ptr @.str6762) + %t3487 = call i32 @fn_field_index(ptr %t3486, ptr @.str6765) %t3488 = call ptr @fn_itoa(i32 %t3487) %t3489 = call ptr @lp_str_concat(ptr %t3485, ptr %t3488) %t3490 = call ptr @fn_emit_bind(ptr %t3489) @@ -69152,27 +69209,27 @@ put679: %t3499 = load ptr, ptr %t3498 %t3500 = call ptr @fn_vec_y(ptr %t3499) store ptr %t3500, ptr %t3501 - call void @fn_emit(ptr @.str6763) + call void @fn_emit(ptr @.str6766) %t3502 = load ptr, ptr %t3496 call void @fn_emit(ptr %t3502) - call void @fn_emit(ptr @.str6764) + call void @fn_emit(ptr @.str6767) %t3503 = load ptr, ptr %t3482 call void @fn_emit(ptr %t3503) - call void @fn_emit(ptr @.str6765) - call void @fn_emit(ptr @.str6766) + call void @fn_emit(ptr @.str6768) + call void @fn_emit(ptr @.str6769) %t3504 = load ptr, ptr %t3501 call void @fn_emit(ptr %t3504) - call void @fn_emit(ptr @.str6767) + call void @fn_emit(ptr @.str6770) %t3505 = load ptr, ptr %t3491 call void @fn_emit(ptr %t3505) - call void @fn_emit(ptr @.str6768) + call void @fn_emit(ptr @.str6771) %t3506 = load ptr, ptr %t3464 - %t3507 = call ptr @fn_val(ptr %t3506, ptr @.str6769) + %t3507 = call ptr @fn_val(ptr %t3506, ptr @.str6772) store ptr %t3507, ptr %retval br label %ret ifend669: %t3508 = load ptr, ptr %t1 - %t3509 = call i32 @lp_str_eq(ptr %t3508, ptr @.str6770) + %t3509 = call i32 @lp_str_eq(ptr %t3508, ptr @.str6773) %t3510 = icmp ne i32 %t3509, 0 br i1 %t3510, label %then680, label %ifend682 then680: @@ -69182,7 +69239,7 @@ then680: %t3514 = icmp ne i32 %t3513, 0 br i1 %t3514, label %then683, label %ifend685 then683: - call void @fn_perr(ptr @.str6771) + call void @fn_perr(ptr @.str6774) br label %ifend685 ifend685: %t3515 = getelementptr %LSlice, ptr null, i32 1 @@ -69219,7 +69276,7 @@ grow686: put687: %t3538 = load ptr, ptr %t3525 %t3539 = getelementptr inbounds ptr, ptr %t3538, i32 %t3526 - store ptr @.str6772, ptr %t3539 + store ptr @.str6775, ptr %t3539 %t3540 = add i32 %t3526, 1 store i32 %t3540, ptr %t3523 %t3541 = load ptr, ptr %t2 @@ -69235,7 +69292,7 @@ put687: %t3550 = icmp ne i32 %t3549, 0 br i1 %t3550, label %then688, label %ifend690 then688: - call void @fn_perr(ptr @.str6773) + call void @fn_perr(ptr @.str6776) br label %ifend690 ifend690: %t3551 = load ptr, ptr %t2 @@ -69250,29 +69307,29 @@ ifend690: %t3560 = load ptr, ptr %t3559 %t3561 = getelementptr inbounds %Cmp_Val, ptr %t3560, i32 0, i32 0 %t3562 = load ptr, ptr %t3561 - %t3563 = call ptr @lp_str_concat(ptr @.str6774, ptr %t3562) - %t3564 = call ptr @lp_str_concat(ptr %t3563, ptr @.str6775) + %t3563 = call ptr @lp_str_concat(ptr @.str6777, ptr %t3562) + %t3564 = call ptr @lp_str_concat(ptr %t3563, ptr @.str6778) %t3565 = call ptr @fn_emit_bind(ptr %t3564) - %t3566 = call ptr @fn_val(ptr %t3565, ptr @.str6776) + %t3566 = call ptr @fn_val(ptr %t3565, ptr @.str6779) store ptr %t3566, ptr %retval br label %ret ifend682: %t3567 = load ptr, ptr %t1 - %t3568 = call ptr @lp_str_concat(ptr @.str6777, ptr %t3567) + %t3568 = call ptr @lp_str_concat(ptr @.str6780, ptr %t3567) call void @fn_perr(ptr %t3568) br label %ifend666 ifend666: %t3569 = load ptr, ptr %t0 - %t3570 = call i32 @lp_str_eq(ptr %t3569, ptr @.str6778) + %t3570 = call i32 @lp_str_eq(ptr %t3569, ptr @.str6781) %t3571 = icmp ne i32 %t3570, 0 br i1 %t3571, label %then691, label %ifend693 then691: %t3572 = load ptr, ptr %t1 - %t3573 = call i32 @lp_str_eq(ptr %t3572, ptr @.str6779) + %t3573 = call i32 @lp_str_eq(ptr %t3572, ptr @.str6782) %t3574 = icmp ne i32 %t3573, 0 br i1 %t3574, label %then694, label %ifend696 then694: - store ptr @.str6780, ptr %t380 + store ptr @.str6783, ptr %t380 %t3575 = load ptr, ptr %t387 %t3576 = getelementptr inbounds %LSlice, ptr %t3575, i32 0, i32 1 %t3577 = getelementptr inbounds %LSlice, ptr %t3575, i32 0, i32 2 @@ -69297,17 +69354,17 @@ grow697: put698: %t3591 = load ptr, ptr %t3578 %t3592 = getelementptr inbounds ptr, ptr %t3591, i32 %t3579 - store ptr @.str6781, ptr %t3592 + store ptr @.str6784, ptr %t3592 %t3593 = add i32 %t3579, 1 store i32 %t3593, ptr %t3576 br label %ifend696 ifend696: %t3594 = load ptr, ptr %t1 - %t3595 = call i32 @lp_str_eq(ptr %t3594, ptr @.str6782) + %t3595 = call i32 @lp_str_eq(ptr %t3594, ptr @.str6785) %t3596 = icmp ne i32 %t3595, 0 br i1 %t3596, label %then699, label %ifend701 then699: - store ptr @.str6783, ptr %t380 + store ptr @.str6786, ptr %t380 %t3597 = load ptr, ptr %t387 %t3598 = getelementptr inbounds %LSlice, ptr %t3597, i32 0, i32 1 %t3599 = getelementptr inbounds %LSlice, ptr %t3597, i32 0, i32 2 @@ -69332,17 +69389,17 @@ grow702: put703: %t3613 = load ptr, ptr %t3600 %t3614 = getelementptr inbounds ptr, ptr %t3613, i32 %t3601 - store ptr @.str6784, ptr %t3614 + store ptr @.str6787, ptr %t3614 %t3615 = add i32 %t3601, 1 store i32 %t3615, ptr %t3598 br label %ifend701 ifend701: %t3616 = load ptr, ptr %t1 - %t3617 = call i32 @lp_str_eq(ptr %t3616, ptr @.str6785) + %t3617 = call i32 @lp_str_eq(ptr %t3616, ptr @.str6788) %t3618 = icmp ne i32 %t3617, 0 br i1 %t3618, label %then704, label %ifend706 then704: - store ptr @.str6786, ptr %t380 + store ptr @.str6789, ptr %t380 %t3619 = load ptr, ptr %t387 %t3620 = getelementptr inbounds %LSlice, ptr %t3619, i32 0, i32 1 %t3621 = getelementptr inbounds %LSlice, ptr %t3619, i32 0, i32 2 @@ -69367,17 +69424,17 @@ grow707: put708: %t3635 = load ptr, ptr %t3622 %t3636 = getelementptr inbounds ptr, ptr %t3635, i32 %t3623 - store ptr @.str6787, ptr %t3636 + store ptr @.str6790, ptr %t3636 %t3637 = add i32 %t3623, 1 store i32 %t3637, ptr %t3620 br label %ifend706 ifend706: %t3638 = load ptr, ptr %t1 - %t3639 = call i32 @lp_str_eq(ptr %t3638, ptr @.str6788) + %t3639 = call i32 @lp_str_eq(ptr %t3638, ptr @.str6791) %t3640 = icmp ne i32 %t3639, 0 br i1 %t3640, label %then709, label %ifend711 then709: - store ptr @.str6789, ptr %t380 + store ptr @.str6792, ptr %t380 %t3641 = load ptr, ptr %t387 %t3642 = getelementptr inbounds %LSlice, ptr %t3641, i32 0, i32 1 %t3643 = getelementptr inbounds %LSlice, ptr %t3641, i32 0, i32 2 @@ -69402,17 +69459,17 @@ grow712: put713: %t3657 = load ptr, ptr %t3644 %t3658 = getelementptr inbounds ptr, ptr %t3657, i32 %t3645 - store ptr @.str6790, ptr %t3658 + store ptr @.str6793, ptr %t3658 %t3659 = add i32 %t3645, 1 store i32 %t3659, ptr %t3642 br label %ifend711 ifend711: %t3660 = load ptr, ptr %t1 - %t3661 = call i32 @lp_str_eq(ptr %t3660, ptr @.str6791) + %t3661 = call i32 @lp_str_eq(ptr %t3660, ptr @.str6794) %t3662 = icmp ne i32 %t3661, 0 br i1 %t3662, label %then714, label %ifend716 then714: - store ptr @.str6792, ptr %t380 + store ptr @.str6795, ptr %t380 %t3663 = load ptr, ptr %t387 %t3664 = getelementptr inbounds %LSlice, ptr %t3663, i32 0, i32 1 %t3665 = getelementptr inbounds %LSlice, ptr %t3663, i32 0, i32 2 @@ -69437,17 +69494,17 @@ grow717: put718: %t3679 = load ptr, ptr %t3666 %t3680 = getelementptr inbounds ptr, ptr %t3679, i32 %t3667 - store ptr @.str6793, ptr %t3680 + store ptr @.str6796, ptr %t3680 %t3681 = add i32 %t3667, 1 store i32 %t3681, ptr %t3664 br label %ifend716 ifend716: %t3682 = load ptr, ptr %t1 - %t3683 = call i32 @lp_str_eq(ptr %t3682, ptr @.str6794) + %t3683 = call i32 @lp_str_eq(ptr %t3682, ptr @.str6797) %t3684 = icmp ne i32 %t3683, 0 br i1 %t3684, label %then719, label %ifend721 then719: - store ptr @.str6795, ptr %t380 + store ptr @.str6798, ptr %t380 %t3685 = load ptr, ptr %t387 %t3686 = getelementptr inbounds %LSlice, ptr %t3685, i32 0, i32 1 %t3687 = getelementptr inbounds %LSlice, ptr %t3685, i32 0, i32 2 @@ -69472,7 +69529,7 @@ grow722: put723: %t3701 = load ptr, ptr %t3688 %t3702 = getelementptr inbounds ptr, ptr %t3701, i32 %t3689 - store ptr @.str6796, ptr %t3702 + store ptr @.str6799, ptr %t3702 %t3703 = add i32 %t3689, 1 store i32 %t3703, ptr %t3686 %t3704 = load ptr, ptr %t387 @@ -69499,17 +69556,17 @@ grow724: put725: %t3720 = load ptr, ptr %t3707 %t3721 = getelementptr inbounds ptr, ptr %t3720, i32 %t3708 - store ptr @.str6797, ptr %t3721 + store ptr @.str6800, ptr %t3721 %t3722 = add i32 %t3708, 1 store i32 %t3722, ptr %t3705 br label %ifend721 ifend721: %t3723 = load ptr, ptr %t1 - %t3724 = call i32 @lp_str_eq(ptr %t3723, ptr @.str6798) + %t3724 = call i32 @lp_str_eq(ptr %t3723, ptr @.str6801) %t3725 = icmp ne i32 %t3724, 0 br i1 %t3725, label %then726, label %ifend728 then726: - store ptr @.str6799, ptr %t380 + store ptr @.str6802, ptr %t380 %t3726 = load ptr, ptr %t387 %t3727 = getelementptr inbounds %LSlice, ptr %t3726, i32 0, i32 1 %t3728 = getelementptr inbounds %LSlice, ptr %t3726, i32 0, i32 2 @@ -69534,56 +69591,56 @@ grow729: put730: %t3742 = load ptr, ptr %t3729 %t3743 = getelementptr inbounds ptr, ptr %t3742, i32 %t3730 - store ptr @.str6800, ptr %t3743 + store ptr @.str6803, ptr %t3743 %t3744 = add i32 %t3730, 1 store i32 %t3744, ptr %t3727 br label %ifend728 ifend728: %t3745 = load ptr, ptr %t1 - %t3746 = call i32 @lp_str_eq(ptr %t3745, ptr @.str6801) + %t3746 = call i32 @lp_str_eq(ptr %t3745, ptr @.str6804) %t3747 = icmp ne i32 %t3746, 0 br i1 %t3747, label %then731, label %ifend733 then731: - store ptr @.str6802, ptr %t380 + store ptr @.str6805, ptr %t380 br label %ifend733 ifend733: %t3748 = load ptr, ptr %t1 - %t3749 = call i32 @lp_str_eq(ptr %t3748, ptr @.str6803) + %t3749 = call i32 @lp_str_eq(ptr %t3748, ptr @.str6806) %t3750 = icmp ne i32 %t3749, 0 br i1 %t3750, label %then734, label %ifend736 then734: - store ptr @.str6804, ptr %t380 + store ptr @.str6807, ptr %t380 br label %ifend736 ifend736: %t3751 = load ptr, ptr %t1 - %t3752 = call i32 @lp_str_eq(ptr %t3751, ptr @.str6805) + %t3752 = call i32 @lp_str_eq(ptr %t3751, ptr @.str6808) %t3753 = icmp ne i32 %t3752, 0 br i1 %t3753, label %then737, label %ifend739 then737: - store ptr @.str6806, ptr %t380 + store ptr @.str6809, ptr %t380 br label %ifend739 ifend739: %t3754 = load ptr, ptr %t1 - %t3755 = call i32 @lp_str_eq(ptr %t3754, ptr @.str6807) + %t3755 = call i32 @lp_str_eq(ptr %t3754, ptr @.str6810) %t3756 = icmp ne i32 %t3755, 0 br i1 %t3756, label %then740, label %ifend742 then740: - store ptr @.str6808, ptr %t380 + store ptr @.str6811, ptr %t380 br label %ifend742 ifend742: br label %ifend693 ifend693: %t3757 = load ptr, ptr %t0 - %t3758 = call i32 @lp_str_eq(ptr %t3757, ptr @.str6809) + %t3758 = call i32 @lp_str_eq(ptr %t3757, ptr @.str6812) %t3759 = icmp ne i32 %t3758, 0 br i1 %t3759, label %then743, label %ifend745 then743: %t3760 = load ptr, ptr %t1 - %t3761 = call i32 @lp_str_eq(ptr %t3760, ptr @.str6810) + %t3761 = call i32 @lp_str_eq(ptr %t3760, ptr @.str6813) %t3762 = icmp ne i32 %t3761, 0 br i1 %t3762, label %then746, label %ifend748 then746: - store ptr @.str6811, ptr %t380 + store ptr @.str6814, ptr %t380 %t3763 = load ptr, ptr %t387 %t3764 = getelementptr inbounds %LSlice, ptr %t3763, i32 0, i32 1 %t3765 = getelementptr inbounds %LSlice, ptr %t3763, i32 0, i32 2 @@ -69608,7 +69665,7 @@ grow749: put750: %t3779 = load ptr, ptr %t3766 %t3780 = getelementptr inbounds ptr, ptr %t3779, i32 %t3767 - store ptr @.str6812, ptr %t3780 + store ptr @.str6815, ptr %t3780 %t3781 = add i32 %t3767, 1 store i32 %t3781, ptr %t3764 %t3782 = load ptr, ptr %t387 @@ -69635,17 +69692,17 @@ grow751: put752: %t3798 = load ptr, ptr %t3785 %t3799 = getelementptr inbounds ptr, ptr %t3798, i32 %t3786 - store ptr @.str6813, ptr %t3799 + store ptr @.str6816, ptr %t3799 %t3800 = add i32 %t3786, 1 store i32 %t3800, ptr %t3783 br label %ifend748 ifend748: %t3801 = load ptr, ptr %t1 - %t3802 = call i32 @lp_str_eq(ptr %t3801, ptr @.str6814) + %t3802 = call i32 @lp_str_eq(ptr %t3801, ptr @.str6817) %t3803 = icmp ne i32 %t3802, 0 br i1 %t3803, label %then753, label %ifend755 then753: - store ptr @.str6815, ptr %t380 + store ptr @.str6818, ptr %t380 %t3804 = load ptr, ptr %t387 %t3805 = getelementptr inbounds %LSlice, ptr %t3804, i32 0, i32 1 %t3806 = getelementptr inbounds %LSlice, ptr %t3804, i32 0, i32 2 @@ -69670,7 +69727,7 @@ grow756: put757: %t3820 = load ptr, ptr %t3807 %t3821 = getelementptr inbounds ptr, ptr %t3820, i32 %t3808 - store ptr @.str6816, ptr %t3821 + store ptr @.str6819, ptr %t3821 %t3822 = add i32 %t3808, 1 store i32 %t3822, ptr %t3805 %t3823 = load ptr, ptr %t387 @@ -69697,7 +69754,7 @@ grow758: put759: %t3839 = load ptr, ptr %t3826 %t3840 = getelementptr inbounds ptr, ptr %t3839, i32 %t3827 - store ptr @.str6817, ptr %t3840 + store ptr @.str6820, ptr %t3840 %t3841 = add i32 %t3827, 1 store i32 %t3841, ptr %t3824 %t3842 = load ptr, ptr %t387 @@ -69724,17 +69781,17 @@ grow760: put761: %t3858 = load ptr, ptr %t3845 %t3859 = getelementptr inbounds ptr, ptr %t3858, i32 %t3846 - store ptr @.str6818, ptr %t3859 + store ptr @.str6821, ptr %t3859 %t3860 = add i32 %t3846, 1 store i32 %t3860, ptr %t3843 br label %ifend755 ifend755: %t3861 = load ptr, ptr %t1 - %t3862 = call i32 @lp_str_eq(ptr %t3861, ptr @.str6819) + %t3862 = call i32 @lp_str_eq(ptr %t3861, ptr @.str6822) %t3863 = icmp ne i32 %t3862, 0 br i1 %t3863, label %then762, label %ifend764 then762: - store ptr @.str6820, ptr %t380 + store ptr @.str6823, ptr %t380 %t3864 = load ptr, ptr %t387 %t3865 = getelementptr inbounds %LSlice, ptr %t3864, i32 0, i32 1 %t3866 = getelementptr inbounds %LSlice, ptr %t3864, i32 0, i32 2 @@ -69759,17 +69816,17 @@ grow765: put766: %t3880 = load ptr, ptr %t3867 %t3881 = getelementptr inbounds ptr, ptr %t3880, i32 %t3868 - store ptr @.str6821, ptr %t3881 + store ptr @.str6824, ptr %t3881 %t3882 = add i32 %t3868, 1 store i32 %t3882, ptr %t3865 br label %ifend764 ifend764: %t3883 = load ptr, ptr %t1 - %t3884 = call i32 @lp_str_eq(ptr %t3883, ptr @.str6822) + %t3884 = call i32 @lp_str_eq(ptr %t3883, ptr @.str6825) %t3885 = icmp ne i32 %t3884, 0 br i1 %t3885, label %then767, label %ifend769 then767: - store ptr @.str6823, ptr %t380 + store ptr @.str6826, ptr %t380 %t3886 = load ptr, ptr %t387 %t3887 = getelementptr inbounds %LSlice, ptr %t3886, i32 0, i32 1 %t3888 = getelementptr inbounds %LSlice, ptr %t3886, i32 0, i32 2 @@ -69794,7 +69851,7 @@ grow770: put771: %t3902 = load ptr, ptr %t3889 %t3903 = getelementptr inbounds ptr, ptr %t3902, i32 %t3890 - store ptr @.str6824, ptr %t3903 + store ptr @.str6827, ptr %t3903 %t3904 = add i32 %t3890, 1 store i32 %t3904, ptr %t3887 %t3905 = load ptr, ptr %t387 @@ -69821,17 +69878,17 @@ grow772: put773: %t3921 = load ptr, ptr %t3908 %t3922 = getelementptr inbounds ptr, ptr %t3921, i32 %t3909 - store ptr @.str6825, ptr %t3922 + store ptr @.str6828, ptr %t3922 %t3923 = add i32 %t3909, 1 store i32 %t3923, ptr %t3906 br label %ifend769 ifend769: %t3924 = load ptr, ptr %t1 - %t3925 = call i32 @lp_str_eq(ptr %t3924, ptr @.str6826) + %t3925 = call i32 @lp_str_eq(ptr %t3924, ptr @.str6829) %t3926 = icmp ne i32 %t3925, 0 br i1 %t3926, label %then774, label %ifend776 then774: - store ptr @.str6827, ptr %t380 + store ptr @.str6830, ptr %t380 %t3927 = load ptr, ptr %t387 %t3928 = getelementptr inbounds %LSlice, ptr %t3927, i32 0, i32 1 %t3929 = getelementptr inbounds %LSlice, ptr %t3927, i32 0, i32 2 @@ -69856,7 +69913,7 @@ grow777: put778: %t3943 = load ptr, ptr %t3930 %t3944 = getelementptr inbounds ptr, ptr %t3943, i32 %t3931 - store ptr @.str6828, ptr %t3944 + store ptr @.str6831, ptr %t3944 %t3945 = add i32 %t3931, 1 store i32 %t3945, ptr %t3928 br label %ifend776 @@ -69864,16 +69921,16 @@ ifend776: br label %ifend745 ifend745: %t3946 = load ptr, ptr %t0 - %t3947 = call i32 @lp_str_eq(ptr %t3946, ptr @.str6829) + %t3947 = call i32 @lp_str_eq(ptr %t3946, ptr @.str6832) %t3948 = icmp ne i32 %t3947, 0 br i1 %t3948, label %then779, label %ifend781 then779: %t3949 = load ptr, ptr %t1 - %t3950 = call i32 @lp_str_eq(ptr %t3949, ptr @.str6830) + %t3950 = call i32 @lp_str_eq(ptr %t3949, ptr @.str6833) %t3951 = icmp ne i32 %t3950, 0 br i1 %t3951, label %then782, label %ifend784 then782: - store ptr @.str6831, ptr %t380 + store ptr @.str6834, ptr %t380 %t3952 = load ptr, ptr %t387 %t3953 = getelementptr inbounds %LSlice, ptr %t3952, i32 0, i32 1 %t3954 = getelementptr inbounds %LSlice, ptr %t3952, i32 0, i32 2 @@ -69898,7 +69955,7 @@ grow785: put786: %t3968 = load ptr, ptr %t3955 %t3969 = getelementptr inbounds ptr, ptr %t3968, i32 %t3956 - store ptr @.str6832, ptr %t3969 + store ptr @.str6835, ptr %t3969 %t3970 = add i32 %t3956, 1 store i32 %t3970, ptr %t3953 %t3971 = load ptr, ptr %t387 @@ -69925,17 +69982,17 @@ grow787: put788: %t3987 = load ptr, ptr %t3974 %t3988 = getelementptr inbounds ptr, ptr %t3987, i32 %t3975 - store ptr @.str6833, ptr %t3988 + store ptr @.str6836, ptr %t3988 %t3989 = add i32 %t3975, 1 store i32 %t3989, ptr %t3972 br label %ifend784 ifend784: %t3990 = load ptr, ptr %t1 - %t3991 = call i32 @lp_str_eq(ptr %t3990, ptr @.str6834) + %t3991 = call i32 @lp_str_eq(ptr %t3990, ptr @.str6837) %t3992 = icmp ne i32 %t3991, 0 br i1 %t3992, label %then789, label %ifend791 then789: - store ptr @.str6835, ptr %t380 + store ptr @.str6838, ptr %t380 %t3993 = load ptr, ptr %t387 %t3994 = getelementptr inbounds %LSlice, ptr %t3993, i32 0, i32 1 %t3995 = getelementptr inbounds %LSlice, ptr %t3993, i32 0, i32 2 @@ -69960,7 +70017,7 @@ grow792: put793: %t4009 = load ptr, ptr %t3996 %t4010 = getelementptr inbounds ptr, ptr %t4009, i32 %t3997 - store ptr @.str6836, ptr %t4010 + store ptr @.str6839, ptr %t4010 %t4011 = add i32 %t3997, 1 store i32 %t4011, ptr %t3994 %t4012 = load ptr, ptr %t387 @@ -69987,17 +70044,17 @@ grow794: put795: %t4028 = load ptr, ptr %t4015 %t4029 = getelementptr inbounds ptr, ptr %t4028, i32 %t4016 - store ptr @.str6837, ptr %t4029 + store ptr @.str6840, ptr %t4029 %t4030 = add i32 %t4016, 1 store i32 %t4030, ptr %t4013 br label %ifend791 ifend791: %t4031 = load ptr, ptr %t1 - %t4032 = call i32 @lp_str_eq(ptr %t4031, ptr @.str6838) + %t4032 = call i32 @lp_str_eq(ptr %t4031, ptr @.str6841) %t4033 = icmp ne i32 %t4032, 0 br i1 %t4033, label %then796, label %ifend798 then796: - store ptr @.str6839, ptr %t380 + store ptr @.str6842, ptr %t380 %t4034 = load ptr, ptr %t387 %t4035 = getelementptr inbounds %LSlice, ptr %t4034, i32 0, i32 1 %t4036 = getelementptr inbounds %LSlice, ptr %t4034, i32 0, i32 2 @@ -70022,7 +70079,7 @@ grow799: put800: %t4050 = load ptr, ptr %t4037 %t4051 = getelementptr inbounds ptr, ptr %t4050, i32 %t4038 - store ptr @.str6840, ptr %t4051 + store ptr @.str6843, ptr %t4051 %t4052 = add i32 %t4038, 1 store i32 %t4052, ptr %t4035 %t4053 = load ptr, ptr %t387 @@ -70049,17 +70106,17 @@ grow801: put802: %t4069 = load ptr, ptr %t4056 %t4070 = getelementptr inbounds ptr, ptr %t4069, i32 %t4057 - store ptr @.str6841, ptr %t4070 + store ptr @.str6844, ptr %t4070 %t4071 = add i32 %t4057, 1 store i32 %t4071, ptr %t4054 br label %ifend798 ifend798: %t4072 = load ptr, ptr %t1 - %t4073 = call i32 @lp_str_eq(ptr %t4072, ptr @.str6842) + %t4073 = call i32 @lp_str_eq(ptr %t4072, ptr @.str6845) %t4074 = icmp ne i32 %t4073, 0 br i1 %t4074, label %then803, label %ifend805 then803: - store ptr @.str6843, ptr %t380 + store ptr @.str6846, ptr %t380 %t4075 = load ptr, ptr %t387 %t4076 = getelementptr inbounds %LSlice, ptr %t4075, i32 0, i32 1 %t4077 = getelementptr inbounds %LSlice, ptr %t4075, i32 0, i32 2 @@ -70084,7 +70141,7 @@ grow806: put807: %t4091 = load ptr, ptr %t4078 %t4092 = getelementptr inbounds ptr, ptr %t4091, i32 %t4079 - store ptr @.str6844, ptr %t4092 + store ptr @.str6847, ptr %t4092 %t4093 = add i32 %t4079, 1 store i32 %t4093, ptr %t4076 %t4094 = load ptr, ptr %t387 @@ -70111,17 +70168,17 @@ grow808: put809: %t4110 = load ptr, ptr %t4097 %t4111 = getelementptr inbounds ptr, ptr %t4110, i32 %t4098 - store ptr @.str6845, ptr %t4111 + store ptr @.str6848, ptr %t4111 %t4112 = add i32 %t4098, 1 store i32 %t4112, ptr %t4095 br label %ifend805 ifend805: %t4113 = load ptr, ptr %t1 - %t4114 = call i32 @lp_str_eq(ptr %t4113, ptr @.str6846) + %t4114 = call i32 @lp_str_eq(ptr %t4113, ptr @.str6849) %t4115 = icmp ne i32 %t4114, 0 br i1 %t4115, label %then810, label %ifend812 then810: - store ptr @.str6847, ptr %t380 + store ptr @.str6850, ptr %t380 %t4116 = load ptr, ptr %t387 %t4117 = getelementptr inbounds %LSlice, ptr %t4116, i32 0, i32 1 %t4118 = getelementptr inbounds %LSlice, ptr %t4116, i32 0, i32 2 @@ -70146,7 +70203,7 @@ grow813: put814: %t4132 = load ptr, ptr %t4119 %t4133 = getelementptr inbounds ptr, ptr %t4132, i32 %t4120 - store ptr @.str6848, ptr %t4133 + store ptr @.str6851, ptr %t4133 %t4134 = add i32 %t4120, 1 store i32 %t4134, ptr %t4117 %t4135 = load ptr, ptr %t387 @@ -70173,7 +70230,7 @@ grow815: put816: %t4151 = load ptr, ptr %t4138 %t4152 = getelementptr inbounds ptr, ptr %t4151, i32 %t4139 - store ptr @.str6849, ptr %t4152 + store ptr @.str6852, ptr %t4152 %t4153 = add i32 %t4139, 1 store i32 %t4153, ptr %t4136 %t4154 = load ptr, ptr %t387 @@ -70200,17 +70257,17 @@ grow817: put818: %t4170 = load ptr, ptr %t4157 %t4171 = getelementptr inbounds ptr, ptr %t4170, i32 %t4158 - store ptr @.str6850, ptr %t4171 + store ptr @.str6853, ptr %t4171 %t4172 = add i32 %t4158, 1 store i32 %t4172, ptr %t4155 br label %ifend812 ifend812: %t4173 = load ptr, ptr %t1 - %t4174 = call i32 @lp_str_eq(ptr %t4173, ptr @.str6851) + %t4174 = call i32 @lp_str_eq(ptr %t4173, ptr @.str6854) %t4175 = icmp ne i32 %t4174, 0 br i1 %t4175, label %then819, label %ifend821 then819: - store ptr @.str6852, ptr %t380 + store ptr @.str6855, ptr %t380 %t4176 = load ptr, ptr %t387 %t4177 = getelementptr inbounds %LSlice, ptr %t4176, i32 0, i32 1 %t4178 = getelementptr inbounds %LSlice, ptr %t4176, i32 0, i32 2 @@ -70235,17 +70292,17 @@ grow822: put823: %t4192 = load ptr, ptr %t4179 %t4193 = getelementptr inbounds ptr, ptr %t4192, i32 %t4180 - store ptr @.str6853, ptr %t4193 + store ptr @.str6856, ptr %t4193 %t4194 = add i32 %t4180, 1 store i32 %t4194, ptr %t4177 br label %ifend821 ifend821: %t4195 = load ptr, ptr %t1 - %t4196 = call i32 @lp_str_eq(ptr %t4195, ptr @.str6854) + %t4196 = call i32 @lp_str_eq(ptr %t4195, ptr @.str6857) %t4197 = icmp ne i32 %t4196, 0 br i1 %t4197, label %then824, label %ifend826 then824: - store ptr @.str6855, ptr %t380 + store ptr @.str6858, ptr %t380 %t4198 = load ptr, ptr %t387 %t4199 = getelementptr inbounds %LSlice, ptr %t4198, i32 0, i32 1 %t4200 = getelementptr inbounds %LSlice, ptr %t4198, i32 0, i32 2 @@ -70270,7 +70327,7 @@ grow827: put828: %t4214 = load ptr, ptr %t4201 %t4215 = getelementptr inbounds ptr, ptr %t4214, i32 %t4202 - store ptr @.str6856, ptr %t4215 + store ptr @.str6859, ptr %t4215 %t4216 = add i32 %t4202, 1 store i32 %t4216, ptr %t4199 %t4217 = load ptr, ptr %t387 @@ -70297,7 +70354,7 @@ grow829: put830: %t4233 = load ptr, ptr %t4220 %t4234 = getelementptr inbounds ptr, ptr %t4233, i32 %t4221 - store ptr @.str6857, ptr %t4234 + store ptr @.str6860, ptr %t4234 %t4235 = add i32 %t4221, 1 store i32 %t4235, ptr %t4218 %t4236 = load ptr, ptr %t387 @@ -70324,7 +70381,7 @@ grow831: put832: %t4252 = load ptr, ptr %t4239 %t4253 = getelementptr inbounds ptr, ptr %t4252, i32 %t4240 - store ptr @.str6858, ptr %t4253 + store ptr @.str6861, ptr %t4253 %t4254 = add i32 %t4240, 1 store i32 %t4254, ptr %t4237 %t4255 = load ptr, ptr %t387 @@ -70351,7 +70408,7 @@ grow833: put834: %t4271 = load ptr, ptr %t4258 %t4272 = getelementptr inbounds ptr, ptr %t4271, i32 %t4259 - store ptr @.str6859, ptr %t4272 + store ptr @.str6862, ptr %t4272 %t4273 = add i32 %t4259, 1 store i32 %t4273, ptr %t4256 %t4274 = load ptr, ptr %t387 @@ -70378,17 +70435,17 @@ grow835: put836: %t4290 = load ptr, ptr %t4277 %t4291 = getelementptr inbounds ptr, ptr %t4290, i32 %t4278 - store ptr @.str6860, ptr %t4291 + store ptr @.str6863, ptr %t4291 %t4292 = add i32 %t4278, 1 store i32 %t4292, ptr %t4275 br label %ifend826 ifend826: %t4293 = load ptr, ptr %t1 - %t4294 = call i32 @lp_str_eq(ptr %t4293, ptr @.str6861) + %t4294 = call i32 @lp_str_eq(ptr %t4293, ptr @.str6864) %t4295 = icmp ne i32 %t4294, 0 br i1 %t4295, label %then837, label %ifend839 then837: - store ptr @.str6862, ptr %t380 + store ptr @.str6865, ptr %t380 %t4296 = load ptr, ptr %t387 %t4297 = getelementptr inbounds %LSlice, ptr %t4296, i32 0, i32 1 %t4298 = getelementptr inbounds %LSlice, ptr %t4296, i32 0, i32 2 @@ -70413,17 +70470,17 @@ grow840: put841: %t4312 = load ptr, ptr %t4299 %t4313 = getelementptr inbounds ptr, ptr %t4312, i32 %t4300 - store ptr @.str6863, ptr %t4313 + store ptr @.str6866, ptr %t4313 %t4314 = add i32 %t4300, 1 store i32 %t4314, ptr %t4297 br label %ifend839 ifend839: %t4315 = load ptr, ptr %t1 - %t4316 = call i32 @lp_str_eq(ptr %t4315, ptr @.str6864) + %t4316 = call i32 @lp_str_eq(ptr %t4315, ptr @.str6867) %t4317 = icmp ne i32 %t4316, 0 br i1 %t4317, label %then842, label %ifend844 then842: - store ptr @.str6865, ptr %t380 + store ptr @.str6868, ptr %t380 %t4318 = load ptr, ptr %t387 %t4319 = getelementptr inbounds %LSlice, ptr %t4318, i32 0, i32 1 %t4320 = getelementptr inbounds %LSlice, ptr %t4318, i32 0, i32 2 @@ -70448,17 +70505,17 @@ grow845: put846: %t4334 = load ptr, ptr %t4321 %t4335 = getelementptr inbounds ptr, ptr %t4334, i32 %t4322 - store ptr @.str6866, ptr %t4335 + store ptr @.str6869, ptr %t4335 %t4336 = add i32 %t4322, 1 store i32 %t4336, ptr %t4319 br label %ifend844 ifend844: %t4337 = load ptr, ptr %t1 - %t4338 = call i32 @lp_str_eq(ptr %t4337, ptr @.str6867) + %t4338 = call i32 @lp_str_eq(ptr %t4337, ptr @.str6870) %t4339 = icmp ne i32 %t4338, 0 br i1 %t4339, label %then847, label %ifend849 then847: - store ptr @.str6868, ptr %t380 + store ptr @.str6871, ptr %t380 %t4340 = load ptr, ptr %t387 %t4341 = getelementptr inbounds %LSlice, ptr %t4340, i32 0, i32 1 %t4342 = getelementptr inbounds %LSlice, ptr %t4340, i32 0, i32 2 @@ -70483,7 +70540,7 @@ grow850: put851: %t4356 = load ptr, ptr %t4343 %t4357 = getelementptr inbounds ptr, ptr %t4356, i32 %t4344 - store ptr @.str6869, ptr %t4357 + store ptr @.str6872, ptr %t4357 %t4358 = add i32 %t4344, 1 store i32 %t4358, ptr %t4341 %t4359 = load ptr, ptr %t387 @@ -70510,7 +70567,7 @@ grow852: put853: %t4375 = load ptr, ptr %t4362 %t4376 = getelementptr inbounds ptr, ptr %t4375, i32 %t4363 - store ptr @.str6870, ptr %t4376 + store ptr @.str6873, ptr %t4376 %t4377 = add i32 %t4363, 1 store i32 %t4377, ptr %t4360 %t4378 = load ptr, ptr %t387 @@ -70537,17 +70594,17 @@ grow854: put855: %t4394 = load ptr, ptr %t4381 %t4395 = getelementptr inbounds ptr, ptr %t4394, i32 %t4382 - store ptr @.str6871, ptr %t4395 + store ptr @.str6874, ptr %t4395 %t4396 = add i32 %t4382, 1 store i32 %t4396, ptr %t4379 br label %ifend849 ifend849: %t4397 = load ptr, ptr %t1 - %t4398 = call i32 @lp_str_eq(ptr %t4397, ptr @.str6872) + %t4398 = call i32 @lp_str_eq(ptr %t4397, ptr @.str6875) %t4399 = icmp ne i32 %t4398, 0 br i1 %t4399, label %then856, label %ifend858 then856: - store ptr @.str6873, ptr %t380 + store ptr @.str6876, ptr %t380 %t4400 = load ptr, ptr %t387 %t4401 = getelementptr inbounds %LSlice, ptr %t4400, i32 0, i32 1 %t4402 = getelementptr inbounds %LSlice, ptr %t4400, i32 0, i32 2 @@ -70572,7 +70629,7 @@ grow859: put860: %t4416 = load ptr, ptr %t4403 %t4417 = getelementptr inbounds ptr, ptr %t4416, i32 %t4404 - store ptr @.str6874, ptr %t4417 + store ptr @.str6877, ptr %t4417 %t4418 = add i32 %t4404, 1 store i32 %t4418, ptr %t4401 %t4419 = load ptr, ptr %t387 @@ -70599,17 +70656,17 @@ grow861: put862: %t4435 = load ptr, ptr %t4422 %t4436 = getelementptr inbounds ptr, ptr %t4435, i32 %t4423 - store ptr @.str6875, ptr %t4436 + store ptr @.str6878, ptr %t4436 %t4437 = add i32 %t4423, 1 store i32 %t4437, ptr %t4420 br label %ifend858 ifend858: %t4438 = load ptr, ptr %t1 - %t4439 = call i32 @lp_str_eq(ptr %t4438, ptr @.str6876) + %t4439 = call i32 @lp_str_eq(ptr %t4438, ptr @.str6879) %t4440 = icmp ne i32 %t4439, 0 br i1 %t4440, label %then863, label %ifend865 then863: - store ptr @.str6877, ptr %t380 + store ptr @.str6880, ptr %t380 %t4441 = load ptr, ptr %t387 %t4442 = getelementptr inbounds %LSlice, ptr %t4441, i32 0, i32 1 %t4443 = getelementptr inbounds %LSlice, ptr %t4441, i32 0, i32 2 @@ -70634,7 +70691,7 @@ grow866: put867: %t4457 = load ptr, ptr %t4444 %t4458 = getelementptr inbounds ptr, ptr %t4457, i32 %t4445 - store ptr @.str6878, ptr %t4458 + store ptr @.str6881, ptr %t4458 %t4459 = add i32 %t4445, 1 store i32 %t4459, ptr %t4442 %t4460 = load ptr, ptr %t387 @@ -70661,17 +70718,17 @@ grow868: put869: %t4476 = load ptr, ptr %t4463 %t4477 = getelementptr inbounds ptr, ptr %t4476, i32 %t4464 - store ptr @.str6879, ptr %t4477 + store ptr @.str6882, ptr %t4477 %t4478 = add i32 %t4464, 1 store i32 %t4478, ptr %t4461 br label %ifend865 ifend865: %t4479 = load ptr, ptr %t1 - %t4480 = call i32 @lp_str_eq(ptr %t4479, ptr @.str6880) + %t4480 = call i32 @lp_str_eq(ptr %t4479, ptr @.str6883) %t4481 = icmp ne i32 %t4480, 0 br i1 %t4481, label %then870, label %ifend872 then870: - store ptr @.str6881, ptr %t380 + store ptr @.str6884, ptr %t380 %t4482 = load ptr, ptr %t387 %t4483 = getelementptr inbounds %LSlice, ptr %t4482, i32 0, i32 1 %t4484 = getelementptr inbounds %LSlice, ptr %t4482, i32 0, i32 2 @@ -70696,40 +70753,40 @@ grow873: put874: %t4498 = load ptr, ptr %t4485 %t4499 = getelementptr inbounds ptr, ptr %t4498, i32 %t4486 - store ptr @.str6882, ptr %t4499 + store ptr @.str6885, ptr %t4499 %t4500 = add i32 %t4486, 1 store i32 %t4500, ptr %t4483 br label %ifend872 ifend872: %t4501 = load ptr, ptr %t1 - %t4502 = call i32 @lp_str_eq(ptr %t4501, ptr @.str6883) + %t4502 = call i32 @lp_str_eq(ptr %t4501, ptr @.str6886) %t4503 = icmp ne i32 %t4502, 0 br i1 %t4503, label %then875, label %ifend877 then875: - store ptr @.str6884, ptr %t380 + store ptr @.str6887, ptr %t380 br label %ifend877 ifend877: %t4504 = load ptr, ptr %t1 - %t4505 = call i32 @lp_str_eq(ptr %t4504, ptr @.str6885) + %t4505 = call i32 @lp_str_eq(ptr %t4504, ptr @.str6888) %t4506 = icmp ne i32 %t4505, 0 br i1 %t4506, label %then878, label %ifend880 then878: - store ptr @.str6886, ptr %t380 + store ptr @.str6889, ptr %t380 br label %ifend880 ifend880: br label %ifend781 ifend781: %t4507 = load ptr, ptr %t0 - %t4508 = call i32 @lp_str_eq(ptr %t4507, ptr @.str6887) + %t4508 = call i32 @lp_str_eq(ptr %t4507, ptr @.str6890) %t4509 = icmp ne i32 %t4508, 0 br i1 %t4509, label %then881, label %ifend883 then881: %t4510 = load ptr, ptr %t1 - %t4511 = call i32 @lp_str_eq(ptr %t4510, ptr @.str6888) + %t4511 = call i32 @lp_str_eq(ptr %t4510, ptr @.str6891) %t4512 = icmp ne i32 %t4511, 0 br i1 %t4512, label %then884, label %ifend886 then884: - store ptr @.str6889, ptr %t380 + store ptr @.str6892, ptr %t380 %t4513 = load ptr, ptr %t387 %t4514 = getelementptr inbounds %LSlice, ptr %t4513, i32 0, i32 1 %t4515 = getelementptr inbounds %LSlice, ptr %t4513, i32 0, i32 2 @@ -70754,7 +70811,7 @@ grow887: put888: %t4529 = load ptr, ptr %t4516 %t4530 = getelementptr inbounds ptr, ptr %t4529, i32 %t4517 - store ptr @.str6890, ptr %t4530 + store ptr @.str6893, ptr %t4530 %t4531 = add i32 %t4517, 1 store i32 %t4531, ptr %t4514 %t4532 = load ptr, ptr %t387 @@ -70781,17 +70838,17 @@ grow889: put890: %t4548 = load ptr, ptr %t4535 %t4549 = getelementptr inbounds ptr, ptr %t4548, i32 %t4536 - store ptr @.str6891, ptr %t4549 + store ptr @.str6894, ptr %t4549 %t4550 = add i32 %t4536, 1 store i32 %t4550, ptr %t4533 br label %ifend886 ifend886: %t4551 = load ptr, ptr %t1 - %t4552 = call i32 @lp_str_eq(ptr %t4551, ptr @.str6892) + %t4552 = call i32 @lp_str_eq(ptr %t4551, ptr @.str6895) %t4553 = icmp ne i32 %t4552, 0 br i1 %t4553, label %then891, label %ifend893 then891: - store ptr @.str6893, ptr %t380 + store ptr @.str6896, ptr %t380 %t4554 = load ptr, ptr %t387 %t4555 = getelementptr inbounds %LSlice, ptr %t4554, i32 0, i32 1 %t4556 = getelementptr inbounds %LSlice, ptr %t4554, i32 0, i32 2 @@ -70816,17 +70873,17 @@ grow894: put895: %t4570 = load ptr, ptr %t4557 %t4571 = getelementptr inbounds ptr, ptr %t4570, i32 %t4558 - store ptr @.str6894, ptr %t4571 + store ptr @.str6897, ptr %t4571 %t4572 = add i32 %t4558, 1 store i32 %t4572, ptr %t4555 br label %ifend893 ifend893: %t4573 = load ptr, ptr %t1 - %t4574 = call i32 @lp_str_eq(ptr %t4573, ptr @.str6895) + %t4574 = call i32 @lp_str_eq(ptr %t4573, ptr @.str6898) %t4575 = icmp ne i32 %t4574, 0 br i1 %t4575, label %then896, label %ifend898 then896: - store ptr @.str6896, ptr %t380 + store ptr @.str6899, ptr %t380 %t4576 = load ptr, ptr %t387 %t4577 = getelementptr inbounds %LSlice, ptr %t4576, i32 0, i32 1 %t4578 = getelementptr inbounds %LSlice, ptr %t4576, i32 0, i32 2 @@ -70851,17 +70908,17 @@ grow899: put900: %t4592 = load ptr, ptr %t4579 %t4593 = getelementptr inbounds ptr, ptr %t4592, i32 %t4580 - store ptr @.str6897, ptr %t4593 + store ptr @.str6900, ptr %t4593 %t4594 = add i32 %t4580, 1 store i32 %t4594, ptr %t4577 br label %ifend898 ifend898: %t4595 = load ptr, ptr %t1 - %t4596 = call i32 @lp_str_eq(ptr %t4595, ptr @.str6898) + %t4596 = call i32 @lp_str_eq(ptr %t4595, ptr @.str6901) %t4597 = icmp ne i32 %t4596, 0 br i1 %t4597, label %then901, label %ifend903 then901: - store ptr @.str6899, ptr %t380 + store ptr @.str6902, ptr %t380 %t4598 = load ptr, ptr %t387 %t4599 = getelementptr inbounds %LSlice, ptr %t4598, i32 0, i32 1 %t4600 = getelementptr inbounds %LSlice, ptr %t4598, i32 0, i32 2 @@ -70886,25 +70943,25 @@ grow904: put905: %t4614 = load ptr, ptr %t4601 %t4615 = getelementptr inbounds ptr, ptr %t4614, i32 %t4602 - store ptr @.str6900, ptr %t4615 + store ptr @.str6903, ptr %t4615 %t4616 = add i32 %t4602, 1 store i32 %t4616, ptr %t4599 br label %ifend903 ifend903: %t4617 = load ptr, ptr %t1 - %t4618 = call i32 @lp_str_eq(ptr %t4617, ptr @.str6901) + %t4618 = call i32 @lp_str_eq(ptr %t4617, ptr @.str6904) %t4619 = icmp ne i32 %t4618, 0 br i1 %t4619, label %then906, label %ifend908 then906: - store ptr @.str6902, ptr %t380 + store ptr @.str6905, ptr %t380 br label %ifend908 ifend908: %t4620 = load ptr, ptr %t1 - %t4621 = call i32 @lp_str_eq(ptr %t4620, ptr @.str6903) + %t4621 = call i32 @lp_str_eq(ptr %t4620, ptr @.str6906) %t4622 = icmp ne i32 %t4621, 0 br i1 %t4622, label %then909, label %ifend911 then909: - store ptr @.str6904, ptr %t380 + store ptr @.str6907, ptr %t380 %t4623 = load ptr, ptr %t387 %t4624 = getelementptr inbounds %LSlice, ptr %t4623, i32 0, i32 1 %t4625 = getelementptr inbounds %LSlice, ptr %t4623, i32 0, i32 2 @@ -70929,40 +70986,40 @@ grow912: put913: %t4639 = load ptr, ptr %t4626 %t4640 = getelementptr inbounds ptr, ptr %t4639, i32 %t4627 - store ptr @.str6905, ptr %t4640 + store ptr @.str6908, ptr %t4640 %t4641 = add i32 %t4627, 1 store i32 %t4641, ptr %t4624 br label %ifend911 ifend911: %t4642 = load ptr, ptr %t1 - %t4643 = call i32 @lp_str_eq(ptr %t4642, ptr @.str6906) + %t4643 = call i32 @lp_str_eq(ptr %t4642, ptr @.str6909) %t4644 = icmp ne i32 %t4643, 0 br i1 %t4644, label %then914, label %ifend916 then914: - store ptr @.str6907, ptr %t380 + store ptr @.str6910, ptr %t380 br label %ifend916 ifend916: br label %ifend883 ifend883: %t4645 = load ptr, ptr %t0 - %t4646 = call i32 @lp_str_eq(ptr %t4645, ptr @.str6908) + %t4646 = call i32 @lp_str_eq(ptr %t4645, ptr @.str6911) %t4647 = icmp ne i32 %t4646, 0 br i1 %t4647, label %then917, label %ifend919 then917: %t4648 = load ptr, ptr %t1 - %t4649 = call i32 @lp_str_eq(ptr %t4648, ptr @.str6909) + %t4649 = call i32 @lp_str_eq(ptr %t4648, ptr @.str6912) %t4650 = icmp ne i32 %t4649, 0 br i1 %t4650, label %then920, label %ifend922 then920: - store ptr @.str6910, ptr %t380 + store ptr @.str6913, ptr %t380 br label %ifend922 ifend922: %t4651 = load ptr, ptr %t1 - %t4652 = call i32 @lp_str_eq(ptr %t4651, ptr @.str6911) + %t4652 = call i32 @lp_str_eq(ptr %t4651, ptr @.str6914) %t4653 = icmp ne i32 %t4652, 0 br i1 %t4653, label %then923, label %ifend925 then923: - store ptr @.str6912, ptr %t380 + store ptr @.str6915, ptr %t380 %t4654 = load ptr, ptr %t387 %t4655 = getelementptr inbounds %LSlice, ptr %t4654, i32 0, i32 1 %t4656 = getelementptr inbounds %LSlice, ptr %t4654, i32 0, i32 2 @@ -70987,7 +71044,7 @@ grow926: put927: %t4670 = load ptr, ptr %t4657 %t4671 = getelementptr inbounds ptr, ptr %t4670, i32 %t4658 - store ptr @.str6913, ptr %t4671 + store ptr @.str6916, ptr %t4671 %t4672 = add i32 %t4658, 1 store i32 %t4672, ptr %t4655 %t4673 = load ptr, ptr %t387 @@ -71014,17 +71071,17 @@ grow928: put929: %t4689 = load ptr, ptr %t4676 %t4690 = getelementptr inbounds ptr, ptr %t4689, i32 %t4677 - store ptr @.str6914, ptr %t4690 + store ptr @.str6917, ptr %t4690 %t4691 = add i32 %t4677, 1 store i32 %t4691, ptr %t4674 br label %ifend925 ifend925: %t4692 = load ptr, ptr %t1 - %t4693 = call i32 @lp_str_eq(ptr %t4692, ptr @.str6915) + %t4693 = call i32 @lp_str_eq(ptr %t4692, ptr @.str6918) %t4694 = icmp ne i32 %t4693, 0 br i1 %t4694, label %then930, label %ifend932 then930: - store ptr @.str6916, ptr %t380 + store ptr @.str6919, ptr %t380 %t4695 = load ptr, ptr %t387 %t4696 = getelementptr inbounds %LSlice, ptr %t4695, i32 0, i32 1 %t4697 = getelementptr inbounds %LSlice, ptr %t4695, i32 0, i32 2 @@ -71049,7 +71106,7 @@ grow933: put934: %t4711 = load ptr, ptr %t4698 %t4712 = getelementptr inbounds ptr, ptr %t4711, i32 %t4699 - store ptr @.str6917, ptr %t4712 + store ptr @.str6920, ptr %t4712 %t4713 = add i32 %t4699, 1 store i32 %t4713, ptr %t4696 %t4714 = load ptr, ptr %t387 @@ -71076,7 +71133,7 @@ grow935: put936: %t4730 = load ptr, ptr %t4717 %t4731 = getelementptr inbounds ptr, ptr %t4730, i32 %t4718 - store ptr @.str6918, ptr %t4731 + store ptr @.str6921, ptr %t4731 %t4732 = add i32 %t4718, 1 store i32 %t4732, ptr %t4715 %t4733 = load ptr, ptr %t387 @@ -71103,57 +71160,57 @@ grow937: put938: %t4749 = load ptr, ptr %t4736 %t4750 = getelementptr inbounds ptr, ptr %t4749, i32 %t4737 - store ptr @.str6919, ptr %t4750 + store ptr @.str6922, ptr %t4750 %t4751 = add i32 %t4737, 1 store i32 %t4751, ptr %t4734 br label %ifend932 ifend932: %t4752 = load ptr, ptr %t1 - %t4753 = call i32 @lp_str_eq(ptr %t4752, ptr @.str6920) + %t4753 = call i32 @lp_str_eq(ptr %t4752, ptr @.str6923) %t4754 = icmp ne i32 %t4753, 0 br i1 %t4754, label %then939, label %ifend941 then939: - store ptr @.str6921, ptr %t380 + store ptr @.str6924, ptr %t380 br label %ifend941 ifend941: %t4755 = load ptr, ptr %t1 - %t4756 = call i32 @lp_str_eq(ptr %t4755, ptr @.str6922) + %t4756 = call i32 @lp_str_eq(ptr %t4755, ptr @.str6925) %t4757 = icmp ne i32 %t4756, 0 br i1 %t4757, label %then942, label %ifend944 then942: - store ptr @.str6923, ptr %t380 + store ptr @.str6926, ptr %t380 br label %ifend944 ifend944: %t4758 = load ptr, ptr %t1 - %t4759 = call i32 @lp_str_eq(ptr %t4758, ptr @.str6924) + %t4759 = call i32 @lp_str_eq(ptr %t4758, ptr @.str6927) %t4760 = icmp ne i32 %t4759, 0 br i1 %t4760, label %then945, label %ifend947 then945: - store ptr @.str6925, ptr %t380 + store ptr @.str6928, ptr %t380 br label %ifend947 ifend947: %t4761 = load ptr, ptr %t1 - %t4762 = call i32 @lp_str_eq(ptr %t4761, ptr @.str6926) + %t4762 = call i32 @lp_str_eq(ptr %t4761, ptr @.str6929) %t4763 = icmp ne i32 %t4762, 0 br i1 %t4763, label %then948, label %ifend950 then948: - store ptr @.str6927, ptr %t380 + store ptr @.str6930, ptr %t380 br label %ifend950 ifend950: %t4764 = load ptr, ptr %t1 - %t4765 = call i32 @lp_str_eq(ptr %t4764, ptr @.str6928) + %t4765 = call i32 @lp_str_eq(ptr %t4764, ptr @.str6931) %t4766 = icmp ne i32 %t4765, 0 br i1 %t4766, label %then951, label %ifend953 then951: - store ptr @.str6929, ptr %t380 + store ptr @.str6932, ptr %t380 br label %ifend953 ifend953: %t4767 = load ptr, ptr %t1 - %t4768 = call i32 @lp_str_eq(ptr %t4767, ptr @.str6930) + %t4768 = call i32 @lp_str_eq(ptr %t4767, ptr @.str6933) %t4769 = icmp ne i32 %t4768, 0 br i1 %t4769, label %then954, label %ifend956 then954: - store ptr @.str6931, ptr %t380 + store ptr @.str6934, ptr %t380 %t4770 = load ptr, ptr %t387 %t4771 = getelementptr inbounds %LSlice, ptr %t4770, i32 0, i32 1 %t4772 = getelementptr inbounds %LSlice, ptr %t4770, i32 0, i32 2 @@ -71178,7 +71235,7 @@ grow957: put958: %t4786 = load ptr, ptr %t4773 %t4787 = getelementptr inbounds ptr, ptr %t4786, i32 %t4774 - store ptr @.str6932, ptr %t4787 + store ptr @.str6935, ptr %t4787 %t4788 = add i32 %t4774, 1 store i32 %t4788, ptr %t4771 %t4789 = load ptr, ptr %t387 @@ -71205,17 +71262,17 @@ grow959: put960: %t4805 = load ptr, ptr %t4792 %t4806 = getelementptr inbounds ptr, ptr %t4805, i32 %t4793 - store ptr @.str6933, ptr %t4806 + store ptr @.str6936, ptr %t4806 %t4807 = add i32 %t4793, 1 store i32 %t4807, ptr %t4790 br label %ifend956 ifend956: %t4808 = load ptr, ptr %t1 - %t4809 = call i32 @lp_str_eq(ptr %t4808, ptr @.str6934) + %t4809 = call i32 @lp_str_eq(ptr %t4808, ptr @.str6937) %t4810 = icmp ne i32 %t4809, 0 br i1 %t4810, label %then961, label %ifend963 then961: - store ptr @.str6935, ptr %t380 + store ptr @.str6938, ptr %t380 %t4811 = load ptr, ptr %t387 %t4812 = getelementptr inbounds %LSlice, ptr %t4811, i32 0, i32 1 %t4813 = getelementptr inbounds %LSlice, ptr %t4811, i32 0, i32 2 @@ -71240,7 +71297,7 @@ grow964: put965: %t4827 = load ptr, ptr %t4814 %t4828 = getelementptr inbounds ptr, ptr %t4827, i32 %t4815 - store ptr @.str6936, ptr %t4828 + store ptr @.str6939, ptr %t4828 %t4829 = add i32 %t4815, 1 store i32 %t4829, ptr %t4812 %t4830 = load ptr, ptr %t387 @@ -71267,17 +71324,17 @@ grow966: put967: %t4846 = load ptr, ptr %t4833 %t4847 = getelementptr inbounds ptr, ptr %t4846, i32 %t4834 - store ptr @.str6937, ptr %t4847 + store ptr @.str6940, ptr %t4847 %t4848 = add i32 %t4834, 1 store i32 %t4848, ptr %t4831 br label %ifend963 ifend963: %t4849 = load ptr, ptr %t1 - %t4850 = call i32 @lp_str_eq(ptr %t4849, ptr @.str6938) + %t4850 = call i32 @lp_str_eq(ptr %t4849, ptr @.str6941) %t4851 = icmp ne i32 %t4850, 0 br i1 %t4851, label %then968, label %ifend970 then968: - store ptr @.str6939, ptr %t380 + store ptr @.str6942, ptr %t380 %t4852 = load ptr, ptr %t387 %t4853 = getelementptr inbounds %LSlice, ptr %t4852, i32 0, i32 1 %t4854 = getelementptr inbounds %LSlice, ptr %t4852, i32 0, i32 2 @@ -71302,17 +71359,17 @@ grow971: put972: %t4868 = load ptr, ptr %t4855 %t4869 = getelementptr inbounds ptr, ptr %t4868, i32 %t4856 - store ptr @.str6940, ptr %t4869 + store ptr @.str6943, ptr %t4869 %t4870 = add i32 %t4856, 1 store i32 %t4870, ptr %t4853 br label %ifend970 ifend970: %t4871 = load ptr, ptr %t1 - %t4872 = call i32 @lp_str_eq(ptr %t4871, ptr @.str6941) + %t4872 = call i32 @lp_str_eq(ptr %t4871, ptr @.str6944) %t4873 = icmp ne i32 %t4872, 0 br i1 %t4873, label %then973, label %ifend975 then973: - store ptr @.str6942, ptr %t380 + store ptr @.str6945, ptr %t380 %t4874 = load ptr, ptr %t387 %t4875 = getelementptr inbounds %LSlice, ptr %t4874, i32 0, i32 1 %t4876 = getelementptr inbounds %LSlice, ptr %t4874, i32 0, i32 2 @@ -71337,17 +71394,17 @@ grow976: put977: %t4890 = load ptr, ptr %t4877 %t4891 = getelementptr inbounds ptr, ptr %t4890, i32 %t4878 - store ptr @.str6943, ptr %t4891 + store ptr @.str6946, ptr %t4891 %t4892 = add i32 %t4878, 1 store i32 %t4892, ptr %t4875 br label %ifend975 ifend975: %t4893 = load ptr, ptr %t1 - %t4894 = call i32 @lp_str_eq(ptr %t4893, ptr @.str6944) + %t4894 = call i32 @lp_str_eq(ptr %t4893, ptr @.str6947) %t4895 = icmp ne i32 %t4894, 0 br i1 %t4895, label %then978, label %ifend980 then978: - store ptr @.str6945, ptr %t380 + store ptr @.str6948, ptr %t380 %t4896 = load ptr, ptr %t387 %t4897 = getelementptr inbounds %LSlice, ptr %t4896, i32 0, i32 1 %t4898 = getelementptr inbounds %LSlice, ptr %t4896, i32 0, i32 2 @@ -71372,17 +71429,17 @@ grow981: put982: %t4912 = load ptr, ptr %t4899 %t4913 = getelementptr inbounds ptr, ptr %t4912, i32 %t4900 - store ptr @.str6946, ptr %t4913 + store ptr @.str6949, ptr %t4913 %t4914 = add i32 %t4900, 1 store i32 %t4914, ptr %t4897 br label %ifend980 ifend980: %t4915 = load ptr, ptr %t1 - %t4916 = call i32 @lp_str_eq(ptr %t4915, ptr @.str6947) + %t4916 = call i32 @lp_str_eq(ptr %t4915, ptr @.str6950) %t4917 = icmp ne i32 %t4916, 0 br i1 %t4917, label %then983, label %ifend985 then983: - store ptr @.str6948, ptr %t380 + store ptr @.str6951, ptr %t380 %t4918 = load ptr, ptr %t387 %t4919 = getelementptr inbounds %LSlice, ptr %t4918, i32 0, i32 1 %t4920 = getelementptr inbounds %LSlice, ptr %t4918, i32 0, i32 2 @@ -71407,17 +71464,17 @@ grow986: put987: %t4934 = load ptr, ptr %t4921 %t4935 = getelementptr inbounds ptr, ptr %t4934, i32 %t4922 - store ptr @.str6949, ptr %t4935 + store ptr @.str6952, ptr %t4935 %t4936 = add i32 %t4922, 1 store i32 %t4936, ptr %t4919 br label %ifend985 ifend985: %t4937 = load ptr, ptr %t1 - %t4938 = call i32 @lp_str_eq(ptr %t4937, ptr @.str6950) + %t4938 = call i32 @lp_str_eq(ptr %t4937, ptr @.str6953) %t4939 = icmp ne i32 %t4938, 0 br i1 %t4939, label %then988, label %ifend990 then988: - store ptr @.str6951, ptr %t380 + store ptr @.str6954, ptr %t380 %t4940 = load ptr, ptr %t387 %t4941 = getelementptr inbounds %LSlice, ptr %t4940, i32 0, i32 1 %t4942 = getelementptr inbounds %LSlice, ptr %t4940, i32 0, i32 2 @@ -71442,17 +71499,17 @@ grow991: put992: %t4956 = load ptr, ptr %t4943 %t4957 = getelementptr inbounds ptr, ptr %t4956, i32 %t4944 - store ptr @.str6952, ptr %t4957 + store ptr @.str6955, ptr %t4957 %t4958 = add i32 %t4944, 1 store i32 %t4958, ptr %t4941 br label %ifend990 ifend990: %t4959 = load ptr, ptr %t1 - %t4960 = call i32 @lp_str_eq(ptr %t4959, ptr @.str6953) + %t4960 = call i32 @lp_str_eq(ptr %t4959, ptr @.str6956) %t4961 = icmp ne i32 %t4960, 0 br i1 %t4961, label %then993, label %ifend995 then993: - store ptr @.str6954, ptr %t380 + store ptr @.str6957, ptr %t380 %t4962 = load ptr, ptr %t387 %t4963 = getelementptr inbounds %LSlice, ptr %t4962, i32 0, i32 1 %t4964 = getelementptr inbounds %LSlice, ptr %t4962, i32 0, i32 2 @@ -71477,17 +71534,17 @@ grow996: put997: %t4978 = load ptr, ptr %t4965 %t4979 = getelementptr inbounds ptr, ptr %t4978, i32 %t4966 - store ptr @.str6955, ptr %t4979 + store ptr @.str6958, ptr %t4979 %t4980 = add i32 %t4966, 1 store i32 %t4980, ptr %t4963 br label %ifend995 ifend995: %t4981 = load ptr, ptr %t1 - %t4982 = call i32 @lp_str_eq(ptr %t4981, ptr @.str6956) + %t4982 = call i32 @lp_str_eq(ptr %t4981, ptr @.str6959) %t4983 = icmp ne i32 %t4982, 0 br i1 %t4983, label %then998, label %ifend1000 then998: - store ptr @.str6957, ptr %t380 + store ptr @.str6960, ptr %t380 %t4984 = load ptr, ptr %t387 %t4985 = getelementptr inbounds %LSlice, ptr %t4984, i32 0, i32 1 %t4986 = getelementptr inbounds %LSlice, ptr %t4984, i32 0, i32 2 @@ -71512,17 +71569,17 @@ grow1001: put1002: %t5000 = load ptr, ptr %t4987 %t5001 = getelementptr inbounds ptr, ptr %t5000, i32 %t4988 - store ptr @.str6958, ptr %t5001 + store ptr @.str6961, ptr %t5001 %t5002 = add i32 %t4988, 1 store i32 %t5002, ptr %t4985 br label %ifend1000 ifend1000: %t5003 = load ptr, ptr %t1 - %t5004 = call i32 @lp_str_eq(ptr %t5003, ptr @.str6959) + %t5004 = call i32 @lp_str_eq(ptr %t5003, ptr @.str6962) %t5005 = icmp ne i32 %t5004, 0 br i1 %t5005, label %then1003, label %ifend1005 then1003: - store ptr @.str6960, ptr %t380 + store ptr @.str6963, ptr %t380 %t5006 = load ptr, ptr %t387 %t5007 = getelementptr inbounds %LSlice, ptr %t5006, i32 0, i32 1 %t5008 = getelementptr inbounds %LSlice, ptr %t5006, i32 0, i32 2 @@ -71547,17 +71604,17 @@ grow1006: put1007: %t5022 = load ptr, ptr %t5009 %t5023 = getelementptr inbounds ptr, ptr %t5022, i32 %t5010 - store ptr @.str6961, ptr %t5023 + store ptr @.str6964, ptr %t5023 %t5024 = add i32 %t5010, 1 store i32 %t5024, ptr %t5007 br label %ifend1005 ifend1005: %t5025 = load ptr, ptr %t1 - %t5026 = call i32 @lp_str_eq(ptr %t5025, ptr @.str6962) + %t5026 = call i32 @lp_str_eq(ptr %t5025, ptr @.str6965) %t5027 = icmp ne i32 %t5026, 0 br i1 %t5027, label %then1008, label %ifend1010 then1008: - store ptr @.str6963, ptr %t380 + store ptr @.str6966, ptr %t380 %t5028 = load ptr, ptr %t387 %t5029 = getelementptr inbounds %LSlice, ptr %t5028, i32 0, i32 1 %t5030 = getelementptr inbounds %LSlice, ptr %t5028, i32 0, i32 2 @@ -71582,7 +71639,7 @@ grow1011: put1012: %t5044 = load ptr, ptr %t5031 %t5045 = getelementptr inbounds ptr, ptr %t5044, i32 %t5032 - store ptr @.str6964, ptr %t5045 + store ptr @.str6967, ptr %t5045 %t5046 = add i32 %t5032, 1 store i32 %t5046, ptr %t5029 %t5047 = load ptr, ptr %t387 @@ -71609,17 +71666,17 @@ grow1013: put1014: %t5063 = load ptr, ptr %t5050 %t5064 = getelementptr inbounds ptr, ptr %t5063, i32 %t5051 - store ptr @.str6965, ptr %t5064 + store ptr @.str6968, ptr %t5064 %t5065 = add i32 %t5051, 1 store i32 %t5065, ptr %t5048 br label %ifend1010 ifend1010: %t5066 = load ptr, ptr %t1 - %t5067 = call i32 @lp_str_eq(ptr %t5066, ptr @.str6966) + %t5067 = call i32 @lp_str_eq(ptr %t5066, ptr @.str6969) %t5068 = icmp ne i32 %t5067, 0 br i1 %t5068, label %then1015, label %ifend1017 then1015: - store ptr @.str6967, ptr %t380 + store ptr @.str6970, ptr %t380 %t5069 = load ptr, ptr %t387 %t5070 = getelementptr inbounds %LSlice, ptr %t5069, i32 0, i32 1 %t5071 = getelementptr inbounds %LSlice, ptr %t5069, i32 0, i32 2 @@ -71644,7 +71701,7 @@ grow1018: put1019: %t5085 = load ptr, ptr %t5072 %t5086 = getelementptr inbounds ptr, ptr %t5085, i32 %t5073 - store ptr @.str6968, ptr %t5086 + store ptr @.str6971, ptr %t5086 %t5087 = add i32 %t5073, 1 store i32 %t5087, ptr %t5070 %t5088 = load ptr, ptr %t387 @@ -71671,25 +71728,25 @@ grow1020: put1021: %t5104 = load ptr, ptr %t5091 %t5105 = getelementptr inbounds ptr, ptr %t5104, i32 %t5092 - store ptr @.str6969, ptr %t5105 + store ptr @.str6972, ptr %t5105 %t5106 = add i32 %t5092, 1 store i32 %t5106, ptr %t5089 br label %ifend1017 ifend1017: %t5107 = load ptr, ptr %t1 - %t5108 = call i32 @lp_str_eq(ptr %t5107, ptr @.str6970) + %t5108 = call i32 @lp_str_eq(ptr %t5107, ptr @.str6973) %t5109 = icmp ne i32 %t5108, 0 br i1 %t5109, label %then1022, label %ifend1024 then1022: - store ptr @.str6971, ptr %t380 + store ptr @.str6974, ptr %t380 br label %ifend1024 ifend1024: %t5110 = load ptr, ptr %t1 - %t5111 = call i32 @lp_str_eq(ptr %t5110, ptr @.str6972) + %t5111 = call i32 @lp_str_eq(ptr %t5110, ptr @.str6975) %t5112 = icmp ne i32 %t5111, 0 br i1 %t5112, label %then1025, label %ifend1027 then1025: - store ptr @.str6973, ptr %t380 + store ptr @.str6976, ptr %t380 %t5113 = load ptr, ptr %t387 %t5114 = getelementptr inbounds %LSlice, ptr %t5113, i32 0, i32 1 %t5115 = getelementptr inbounds %LSlice, ptr %t5113, i32 0, i32 2 @@ -71714,7 +71771,7 @@ grow1028: put1029: %t5129 = load ptr, ptr %t5116 %t5130 = getelementptr inbounds ptr, ptr %t5129, i32 %t5117 - store ptr @.str6974, ptr %t5130 + store ptr @.str6977, ptr %t5130 %t5131 = add i32 %t5117, 1 store i32 %t5131, ptr %t5114 %t5132 = load ptr, ptr %t387 @@ -71741,7 +71798,7 @@ grow1030: put1031: %t5148 = load ptr, ptr %t5135 %t5149 = getelementptr inbounds ptr, ptr %t5148, i32 %t5136 - store ptr @.str6975, ptr %t5149 + store ptr @.str6978, ptr %t5149 %t5150 = add i32 %t5136, 1 store i32 %t5150, ptr %t5133 %t5151 = load ptr, ptr %t387 @@ -71768,7 +71825,7 @@ grow1032: put1033: %t5167 = load ptr, ptr %t5154 %t5168 = getelementptr inbounds ptr, ptr %t5167, i32 %t5155 - store ptr @.str6976, ptr %t5168 + store ptr @.str6979, ptr %t5168 %t5169 = add i32 %t5155, 1 store i32 %t5169, ptr %t5152 %t5170 = load ptr, ptr %t387 @@ -71795,17 +71852,17 @@ grow1034: put1035: %t5186 = load ptr, ptr %t5173 %t5187 = getelementptr inbounds ptr, ptr %t5186, i32 %t5174 - store ptr @.str6977, ptr %t5187 + store ptr @.str6980, ptr %t5187 %t5188 = add i32 %t5174, 1 store i32 %t5188, ptr %t5171 br label %ifend1027 ifend1027: %t5189 = load ptr, ptr %t1 - %t5190 = call i32 @lp_str_eq(ptr %t5189, ptr @.str6978) + %t5190 = call i32 @lp_str_eq(ptr %t5189, ptr @.str6981) %t5191 = icmp ne i32 %t5190, 0 br i1 %t5191, label %then1036, label %ifend1038 then1036: - store ptr @.str6979, ptr %t380 + store ptr @.str6982, ptr %t380 %t5192 = load ptr, ptr %t387 %t5193 = getelementptr inbounds %LSlice, ptr %t5192, i32 0, i32 1 %t5194 = getelementptr inbounds %LSlice, ptr %t5192, i32 0, i32 2 @@ -71830,49 +71887,49 @@ grow1039: put1040: %t5208 = load ptr, ptr %t5195 %t5209 = getelementptr inbounds ptr, ptr %t5208, i32 %t5196 - store ptr @.str6980, ptr %t5209 + store ptr @.str6983, ptr %t5209 %t5210 = add i32 %t5196, 1 store i32 %t5210, ptr %t5193 br label %ifend1038 ifend1038: %t5211 = load ptr, ptr %t1 - %t5212 = call i32 @lp_str_eq(ptr %t5211, ptr @.str6981) + %t5212 = call i32 @lp_str_eq(ptr %t5211, ptr @.str6984) %t5213 = icmp ne i32 %t5212, 0 br i1 %t5213, label %then1041, label %ifend1043 then1041: - store ptr @.str6982, ptr %t380 + store ptr @.str6985, ptr %t380 br label %ifend1043 ifend1043: %t5214 = load ptr, ptr %t1 - %t5215 = call i32 @lp_str_eq(ptr %t5214, ptr @.str6983) + %t5215 = call i32 @lp_str_eq(ptr %t5214, ptr @.str6986) %t5216 = icmp ne i32 %t5215, 0 br i1 %t5216, label %then1044, label %ifend1046 then1044: - store ptr @.str6984, ptr %t380 + store ptr @.str6987, ptr %t380 br label %ifend1046 ifend1046: %t5217 = load ptr, ptr %t1 - %t5218 = call i32 @lp_str_eq(ptr %t5217, ptr @.str6985) + %t5218 = call i32 @lp_str_eq(ptr %t5217, ptr @.str6988) %t5219 = icmp ne i32 %t5218, 0 br i1 %t5219, label %then1047, label %ifend1049 then1047: - store ptr @.str6986, ptr %t380 + store ptr @.str6989, ptr %t380 br label %ifend1049 ifend1049: %t5220 = load ptr, ptr %t1 - %t5221 = call i32 @lp_str_eq(ptr %t5220, ptr @.str6987) + %t5221 = call i32 @lp_str_eq(ptr %t5220, ptr @.str6990) %t5222 = icmp ne i32 %t5221, 0 br i1 %t5222, label %then1050, label %ifend1052 then1050: - store ptr @.str6988, ptr %t380 + store ptr @.str6991, ptr %t380 br label %ifend1052 ifend1052: %t5223 = load ptr, ptr %t1 - %t5224 = call i32 @lp_str_eq(ptr %t5223, ptr @.str6989) + %t5224 = call i32 @lp_str_eq(ptr %t5223, ptr @.str6992) %t5225 = icmp ne i32 %t5224, 0 br i1 %t5225, label %then1053, label %ifend1055 then1053: - store ptr @.str6990, ptr %t380 + store ptr @.str6993, ptr %t380 %t5226 = load ptr, ptr %t387 %t5227 = getelementptr inbounds %LSlice, ptr %t5226, i32 0, i32 1 %t5228 = getelementptr inbounds %LSlice, ptr %t5226, i32 0, i32 2 @@ -71897,25 +71954,25 @@ grow1056: put1057: %t5242 = load ptr, ptr %t5229 %t5243 = getelementptr inbounds ptr, ptr %t5242, i32 %t5230 - store ptr @.str6991, ptr %t5243 + store ptr @.str6994, ptr %t5243 %t5244 = add i32 %t5230, 1 store i32 %t5244, ptr %t5227 br label %ifend1055 ifend1055: %t5245 = load ptr, ptr %t1 - %t5246 = call i32 @lp_str_eq(ptr %t5245, ptr @.str6992) + %t5246 = call i32 @lp_str_eq(ptr %t5245, ptr @.str6995) %t5247 = icmp ne i32 %t5246, 0 br i1 %t5247, label %then1058, label %ifend1060 then1058: - store ptr @.str6993, ptr %t380 + store ptr @.str6996, ptr %t380 br label %ifend1060 ifend1060: %t5248 = load ptr, ptr %t1 - %t5249 = call i32 @lp_str_eq(ptr %t5248, ptr @.str6994) + %t5249 = call i32 @lp_str_eq(ptr %t5248, ptr @.str6997) %t5250 = icmp ne i32 %t5249, 0 br i1 %t5250, label %then1061, label %ifend1063 then1061: - store ptr @.str6995, ptr %t380 + store ptr @.str6998, ptr %t380 %t5251 = load ptr, ptr %t387 %t5252 = getelementptr inbounds %LSlice, ptr %t5251, i32 0, i32 1 %t5253 = getelementptr inbounds %LSlice, ptr %t5251, i32 0, i32 2 @@ -71940,7 +71997,7 @@ grow1064: put1065: %t5267 = load ptr, ptr %t5254 %t5268 = getelementptr inbounds ptr, ptr %t5267, i32 %t5255 - store ptr @.str6996, ptr %t5268 + store ptr @.str6999, ptr %t5268 %t5269 = add i32 %t5255, 1 store i32 %t5269, ptr %t5252 %t5270 = load ptr, ptr %t387 @@ -71967,7 +72024,7 @@ grow1066: put1067: %t5286 = load ptr, ptr %t5273 %t5287 = getelementptr inbounds ptr, ptr %t5286, i32 %t5274 - store ptr @.str6997, ptr %t5287 + store ptr @.str7000, ptr %t5287 %t5288 = add i32 %t5274, 1 store i32 %t5288, ptr %t5271 %t5289 = load ptr, ptr %t387 @@ -71994,7 +72051,7 @@ grow1068: put1069: %t5305 = load ptr, ptr %t5292 %t5306 = getelementptr inbounds ptr, ptr %t5305, i32 %t5293 - store ptr @.str6998, ptr %t5306 + store ptr @.str7001, ptr %t5306 %t5307 = add i32 %t5293, 1 store i32 %t5307, ptr %t5290 %t5308 = load ptr, ptr %t387 @@ -72021,17 +72078,17 @@ grow1070: put1071: %t5324 = load ptr, ptr %t5311 %t5325 = getelementptr inbounds ptr, ptr %t5324, i32 %t5312 - store ptr @.str6999, ptr %t5325 + store ptr @.str7002, ptr %t5325 %t5326 = add i32 %t5312, 1 store i32 %t5326, ptr %t5309 br label %ifend1063 ifend1063: %t5327 = load ptr, ptr %t1 - %t5328 = call i32 @lp_str_eq(ptr %t5327, ptr @.str7000) + %t5328 = call i32 @lp_str_eq(ptr %t5327, ptr @.str7003) %t5329 = icmp ne i32 %t5328, 0 br i1 %t5329, label %then1072, label %ifend1074 then1072: - store ptr @.str7001, ptr %t380 + store ptr @.str7004, ptr %t380 %t5330 = load ptr, ptr %t387 %t5331 = getelementptr inbounds %LSlice, ptr %t5330, i32 0, i32 1 %t5332 = getelementptr inbounds %LSlice, ptr %t5330, i32 0, i32 2 @@ -72056,17 +72113,17 @@ grow1075: put1076: %t5346 = load ptr, ptr %t5333 %t5347 = getelementptr inbounds ptr, ptr %t5346, i32 %t5334 - store ptr @.str7002, ptr %t5347 + store ptr @.str7005, ptr %t5347 %t5348 = add i32 %t5334, 1 store i32 %t5348, ptr %t5331 br label %ifend1074 ifend1074: %t5349 = load ptr, ptr %t1 - %t5350 = call i32 @lp_str_eq(ptr %t5349, ptr @.str7003) + %t5350 = call i32 @lp_str_eq(ptr %t5349, ptr @.str7006) %t5351 = icmp ne i32 %t5350, 0 br i1 %t5351, label %then1077, label %ifend1079 then1077: - store ptr @.str7004, ptr %t380 + store ptr @.str7007, ptr %t380 %t5352 = load ptr, ptr %t387 %t5353 = getelementptr inbounds %LSlice, ptr %t5352, i32 0, i32 1 %t5354 = getelementptr inbounds %LSlice, ptr %t5352, i32 0, i32 2 @@ -72091,7 +72148,7 @@ grow1080: put1081: %t5368 = load ptr, ptr %t5355 %t5369 = getelementptr inbounds ptr, ptr %t5368, i32 %t5356 - store ptr @.str7005, ptr %t5369 + store ptr @.str7008, ptr %t5369 %t5370 = add i32 %t5356, 1 store i32 %t5370, ptr %t5353 %t5371 = load ptr, ptr %t387 @@ -72118,17 +72175,17 @@ grow1082: put1083: %t5387 = load ptr, ptr %t5374 %t5388 = getelementptr inbounds ptr, ptr %t5387, i32 %t5375 - store ptr @.str7006, ptr %t5388 + store ptr @.str7009, ptr %t5388 %t5389 = add i32 %t5375, 1 store i32 %t5389, ptr %t5372 br label %ifend1079 ifend1079: %t5390 = load ptr, ptr %t1 - %t5391 = call i32 @lp_str_eq(ptr %t5390, ptr @.str7007) + %t5391 = call i32 @lp_str_eq(ptr %t5390, ptr @.str7010) %t5392 = icmp ne i32 %t5391, 0 br i1 %t5392, label %then1084, label %ifend1086 then1084: - store ptr @.str7008, ptr %t380 + store ptr @.str7011, ptr %t380 %t5393 = load ptr, ptr %t387 %t5394 = getelementptr inbounds %LSlice, ptr %t5393, i32 0, i32 1 %t5395 = getelementptr inbounds %LSlice, ptr %t5393, i32 0, i32 2 @@ -72153,7 +72210,7 @@ grow1087: put1088: %t5409 = load ptr, ptr %t5396 %t5410 = getelementptr inbounds ptr, ptr %t5409, i32 %t5397 - store ptr @.str7009, ptr %t5410 + store ptr @.str7012, ptr %t5410 %t5411 = add i32 %t5397, 1 store i32 %t5411, ptr %t5394 %t5412 = load ptr, ptr %t387 @@ -72180,17 +72237,17 @@ grow1089: put1090: %t5428 = load ptr, ptr %t5415 %t5429 = getelementptr inbounds ptr, ptr %t5428, i32 %t5416 - store ptr @.str7010, ptr %t5429 + store ptr @.str7013, ptr %t5429 %t5430 = add i32 %t5416, 1 store i32 %t5430, ptr %t5413 br label %ifend1086 ifend1086: %t5431 = load ptr, ptr %t1 - %t5432 = call i32 @lp_str_eq(ptr %t5431, ptr @.str7011) + %t5432 = call i32 @lp_str_eq(ptr %t5431, ptr @.str7014) %t5433 = icmp ne i32 %t5432, 0 br i1 %t5433, label %then1091, label %ifend1093 then1091: - store ptr @.str7012, ptr %t380 + store ptr @.str7015, ptr %t380 %t5434 = load ptr, ptr %t387 %t5435 = getelementptr inbounds %LSlice, ptr %t5434, i32 0, i32 1 %t5436 = getelementptr inbounds %LSlice, ptr %t5434, i32 0, i32 2 @@ -72215,7 +72272,7 @@ grow1094: put1095: %t5450 = load ptr, ptr %t5437 %t5451 = getelementptr inbounds ptr, ptr %t5450, i32 %t5438 - store ptr @.str7013, ptr %t5451 + store ptr @.str7016, ptr %t5451 %t5452 = add i32 %t5438, 1 store i32 %t5452, ptr %t5435 %t5453 = load ptr, ptr %t387 @@ -72242,7 +72299,7 @@ grow1096: put1097: %t5469 = load ptr, ptr %t5456 %t5470 = getelementptr inbounds ptr, ptr %t5469, i32 %t5457 - store ptr @.str7014, ptr %t5470 + store ptr @.str7017, ptr %t5470 %t5471 = add i32 %t5457, 1 store i32 %t5471, ptr %t5454 %t5472 = load ptr, ptr %t387 @@ -72269,7 +72326,7 @@ grow1098: put1099: %t5488 = load ptr, ptr %t5475 %t5489 = getelementptr inbounds ptr, ptr %t5488, i32 %t5476 - store ptr @.str7015, ptr %t5489 + store ptr @.str7018, ptr %t5489 %t5490 = add i32 %t5476, 1 store i32 %t5490, ptr %t5473 %t5491 = load ptr, ptr %t387 @@ -72296,7 +72353,7 @@ grow1100: put1101: %t5507 = load ptr, ptr %t5494 %t5508 = getelementptr inbounds ptr, ptr %t5507, i32 %t5495 - store ptr @.str7016, ptr %t5508 + store ptr @.str7019, ptr %t5508 %t5509 = add i32 %t5495, 1 store i32 %t5509, ptr %t5492 %t5510 = load ptr, ptr %t387 @@ -72323,7 +72380,7 @@ grow1102: put1103: %t5526 = load ptr, ptr %t5513 %t5527 = getelementptr inbounds ptr, ptr %t5526, i32 %t5514 - store ptr @.str7017, ptr %t5527 + store ptr @.str7020, ptr %t5527 %t5528 = add i32 %t5514, 1 store i32 %t5528, ptr %t5511 %t5529 = load ptr, ptr %t387 @@ -72350,7 +72407,7 @@ grow1104: put1105: %t5545 = load ptr, ptr %t5532 %t5546 = getelementptr inbounds ptr, ptr %t5545, i32 %t5533 - store ptr @.str7018, ptr %t5546 + store ptr @.str7021, ptr %t5546 %t5547 = add i32 %t5533, 1 store i32 %t5547, ptr %t5530 %t5548 = load ptr, ptr %t387 @@ -72377,25 +72434,25 @@ grow1106: put1107: %t5564 = load ptr, ptr %t5551 %t5565 = getelementptr inbounds ptr, ptr %t5564, i32 %t5552 - store ptr @.str7019, ptr %t5565 + store ptr @.str7022, ptr %t5565 %t5566 = add i32 %t5552, 1 store i32 %t5566, ptr %t5549 br label %ifend1093 ifend1093: %t5567 = load ptr, ptr %t1 - %t5568 = call i32 @lp_str_eq(ptr %t5567, ptr @.str7020) + %t5568 = call i32 @lp_str_eq(ptr %t5567, ptr @.str7023) %t5569 = icmp ne i32 %t5568, 0 br i1 %t5569, label %then1108, label %ifend1110 then1108: - store ptr @.str7021, ptr %t380 + store ptr @.str7024, ptr %t380 br label %ifend1110 ifend1110: %t5570 = load ptr, ptr %t1 - %t5571 = call i32 @lp_str_eq(ptr %t5570, ptr @.str7022) + %t5571 = call i32 @lp_str_eq(ptr %t5570, ptr @.str7025) %t5572 = icmp ne i32 %t5571, 0 br i1 %t5572, label %then1111, label %ifend1113 then1111: - store ptr @.str7023, ptr %t380 + store ptr @.str7026, ptr %t380 %t5573 = load ptr, ptr %t387 %t5574 = getelementptr inbounds %LSlice, ptr %t5573, i32 0, i32 1 %t5575 = getelementptr inbounds %LSlice, ptr %t5573, i32 0, i32 2 @@ -72420,17 +72477,17 @@ grow1114: put1115: %t5589 = load ptr, ptr %t5576 %t5590 = getelementptr inbounds ptr, ptr %t5589, i32 %t5577 - store ptr @.str7024, ptr %t5590 + store ptr @.str7027, ptr %t5590 %t5591 = add i32 %t5577, 1 store i32 %t5591, ptr %t5574 br label %ifend1113 ifend1113: %t5592 = load ptr, ptr %t1 - %t5593 = call i32 @lp_str_eq(ptr %t5592, ptr @.str7025) + %t5593 = call i32 @lp_str_eq(ptr %t5592, ptr @.str7028) %t5594 = icmp ne i32 %t5593, 0 br i1 %t5594, label %then1116, label %ifend1118 then1116: - store ptr @.str7026, ptr %t380 + store ptr @.str7029, ptr %t380 %t5595 = load ptr, ptr %t387 %t5596 = getelementptr inbounds %LSlice, ptr %t5595, i32 0, i32 1 %t5597 = getelementptr inbounds %LSlice, ptr %t5595, i32 0, i32 2 @@ -72455,17 +72512,17 @@ grow1119: put1120: %t5611 = load ptr, ptr %t5598 %t5612 = getelementptr inbounds ptr, ptr %t5611, i32 %t5599 - store ptr @.str7027, ptr %t5612 + store ptr @.str7030, ptr %t5612 %t5613 = add i32 %t5599, 1 store i32 %t5613, ptr %t5596 br label %ifend1118 ifend1118: %t5614 = load ptr, ptr %t1 - %t5615 = call i32 @lp_str_eq(ptr %t5614, ptr @.str7028) + %t5615 = call i32 @lp_str_eq(ptr %t5614, ptr @.str7031) %t5616 = icmp ne i32 %t5615, 0 br i1 %t5616, label %then1121, label %ifend1123 then1121: - store ptr @.str7029, ptr %t380 + store ptr @.str7032, ptr %t380 %t5617 = load ptr, ptr %t387 %t5618 = getelementptr inbounds %LSlice, ptr %t5617, i32 0, i32 1 %t5619 = getelementptr inbounds %LSlice, ptr %t5617, i32 0, i32 2 @@ -72490,7 +72547,7 @@ grow1124: put1125: %t5633 = load ptr, ptr %t5620 %t5634 = getelementptr inbounds ptr, ptr %t5633, i32 %t5621 - store ptr @.str7030, ptr %t5634 + store ptr @.str7033, ptr %t5634 %t5635 = add i32 %t5621, 1 store i32 %t5635, ptr %t5618 %t5636 = load ptr, ptr %t387 @@ -72517,7 +72574,7 @@ grow1126: put1127: %t5652 = load ptr, ptr %t5639 %t5653 = getelementptr inbounds ptr, ptr %t5652, i32 %t5640 - store ptr @.str7031, ptr %t5653 + store ptr @.str7034, ptr %t5653 %t5654 = add i32 %t5640, 1 store i32 %t5654, ptr %t5637 %t5655 = load ptr, ptr %t387 @@ -72544,7 +72601,7 @@ grow1128: put1129: %t5671 = load ptr, ptr %t5658 %t5672 = getelementptr inbounds ptr, ptr %t5671, i32 %t5659 - store ptr @.str7032, ptr %t5672 + store ptr @.str7035, ptr %t5672 %t5673 = add i32 %t5659, 1 store i32 %t5673, ptr %t5656 %t5674 = load ptr, ptr %t387 @@ -72571,17 +72628,17 @@ grow1130: put1131: %t5690 = load ptr, ptr %t5677 %t5691 = getelementptr inbounds ptr, ptr %t5690, i32 %t5678 - store ptr @.str7033, ptr %t5691 + store ptr @.str7036, ptr %t5691 %t5692 = add i32 %t5678, 1 store i32 %t5692, ptr %t5675 br label %ifend1123 ifend1123: %t5693 = load ptr, ptr %t1 - %t5694 = call i32 @lp_str_eq(ptr %t5693, ptr @.str7034) + %t5694 = call i32 @lp_str_eq(ptr %t5693, ptr @.str7037) %t5695 = icmp ne i32 %t5694, 0 br i1 %t5695, label %then1132, label %ifend1134 then1132: - store ptr @.str7035, ptr %t380 + store ptr @.str7038, ptr %t380 %t5696 = load ptr, ptr %t387 %t5697 = getelementptr inbounds %LSlice, ptr %t5696, i32 0, i32 1 %t5698 = getelementptr inbounds %LSlice, ptr %t5696, i32 0, i32 2 @@ -72606,7 +72663,7 @@ grow1135: put1136: %t5712 = load ptr, ptr %t5699 %t5713 = getelementptr inbounds ptr, ptr %t5712, i32 %t5700 - store ptr @.str7036, ptr %t5713 + store ptr @.str7039, ptr %t5713 %t5714 = add i32 %t5700, 1 store i32 %t5714, ptr %t5697 br label %ifend1134 @@ -72614,16 +72671,16 @@ ifend1134: br label %ifend919 ifend919: %t5715 = load ptr, ptr %t0 - %t5716 = call i32 @lp_str_eq(ptr %t5715, ptr @.str7037) + %t5716 = call i32 @lp_str_eq(ptr %t5715, ptr @.str7040) %t5717 = icmp ne i32 %t5716, 0 br i1 %t5717, label %then1137, label %ifend1139 then1137: %t5718 = load ptr, ptr %t1 - %t5719 = call i32 @lp_str_eq(ptr %t5718, ptr @.str7038) + %t5719 = call i32 @lp_str_eq(ptr %t5718, ptr @.str7041) %t5720 = icmp ne i32 %t5719, 0 br i1 %t5720, label %then1140, label %ifend1142 then1140: - store ptr @.str7039, ptr %t380 + store ptr @.str7042, ptr %t380 %t5721 = load ptr, ptr %t387 %t5722 = getelementptr inbounds %LSlice, ptr %t5721, i32 0, i32 1 %t5723 = getelementptr inbounds %LSlice, ptr %t5721, i32 0, i32 2 @@ -72648,17 +72705,17 @@ grow1143: put1144: %t5737 = load ptr, ptr %t5724 %t5738 = getelementptr inbounds ptr, ptr %t5737, i32 %t5725 - store ptr @.str7040, ptr %t5738 + store ptr @.str7043, ptr %t5738 %t5739 = add i32 %t5725, 1 store i32 %t5739, ptr %t5722 br label %ifend1142 ifend1142: %t5740 = load ptr, ptr %t1 - %t5741 = call i32 @lp_str_eq(ptr %t5740, ptr @.str7041) + %t5741 = call i32 @lp_str_eq(ptr %t5740, ptr @.str7044) %t5742 = icmp ne i32 %t5741, 0 br i1 %t5742, label %then1145, label %ifend1147 then1145: - store ptr @.str7042, ptr %t380 + store ptr @.str7045, ptr %t380 %t5743 = load ptr, ptr %t387 %t5744 = getelementptr inbounds %LSlice, ptr %t5743, i32 0, i32 1 %t5745 = getelementptr inbounds %LSlice, ptr %t5743, i32 0, i32 2 @@ -72683,7 +72740,7 @@ grow1148: put1149: %t5759 = load ptr, ptr %t5746 %t5760 = getelementptr inbounds ptr, ptr %t5759, i32 %t5747 - store ptr @.str7043, ptr %t5760 + store ptr @.str7046, ptr %t5760 %t5761 = add i32 %t5747, 1 store i32 %t5761, ptr %t5744 %t5762 = load ptr, ptr %t387 @@ -72710,17 +72767,17 @@ grow1150: put1151: %t5778 = load ptr, ptr %t5765 %t5779 = getelementptr inbounds ptr, ptr %t5778, i32 %t5766 - store ptr @.str7044, ptr %t5779 + store ptr @.str7047, ptr %t5779 %t5780 = add i32 %t5766, 1 store i32 %t5780, ptr %t5763 br label %ifend1147 ifend1147: %t5781 = load ptr, ptr %t1 - %t5782 = call i32 @lp_str_eq(ptr %t5781, ptr @.str7045) + %t5782 = call i32 @lp_str_eq(ptr %t5781, ptr @.str7048) %t5783 = icmp ne i32 %t5782, 0 br i1 %t5783, label %then1152, label %ifend1154 then1152: - store ptr @.str7046, ptr %t380 + store ptr @.str7049, ptr %t380 %t5784 = load ptr, ptr %t387 %t5785 = getelementptr inbounds %LSlice, ptr %t5784, i32 0, i32 1 %t5786 = getelementptr inbounds %LSlice, ptr %t5784, i32 0, i32 2 @@ -72745,13 +72802,13 @@ grow1155: put1156: %t5800 = load ptr, ptr %t5787 %t5801 = getelementptr inbounds ptr, ptr %t5800, i32 %t5788 - store ptr @.str7047, ptr %t5801 + store ptr @.str7050, ptr %t5801 %t5802 = add i32 %t5788, 1 store i32 %t5802, ptr %t5785 br label %ifend1154 ifend1154: %t5803 = load ptr, ptr %t1 - %t5804 = call i32 @lp_str_eq(ptr %t5803, ptr @.str7048) + %t5804 = call i32 @lp_str_eq(ptr %t5803, ptr @.str7051) %t5805 = icmp ne i32 %t5804, 0 br i1 %t5805, label %then1157, label %ifend1159 then1157: @@ -72760,7 +72817,7 @@ then1157: %t5808 = icmp ne i32 %t5807, 0 br i1 %t5808, label %then1160, label %else1161 then1160: - store ptr @.str7049, ptr %t380 + store ptr @.str7052, ptr %t380 %t5809 = load ptr, ptr %t387 %t5810 = getelementptr inbounds %LSlice, ptr %t5809, i32 0, i32 1 %t5811 = getelementptr inbounds %LSlice, ptr %t5809, i32 0, i32 2 @@ -72785,12 +72842,12 @@ grow1163: put1164: %t5825 = load ptr, ptr %t5812 %t5826 = getelementptr inbounds ptr, ptr %t5825, i32 %t5813 - store ptr @.str7050, ptr %t5826 + store ptr @.str7053, ptr %t5826 %t5827 = add i32 %t5813, 1 store i32 %t5827, ptr %t5810 br label %ifend1162 else1161: - store ptr @.str7051, ptr %t380 + store ptr @.str7054, ptr %t380 %t5828 = load ptr, ptr %t387 %t5829 = getelementptr inbounds %LSlice, ptr %t5828, i32 0, i32 1 %t5830 = getelementptr inbounds %LSlice, ptr %t5828, i32 0, i32 2 @@ -72815,7 +72872,7 @@ grow1165: put1166: %t5844 = load ptr, ptr %t5831 %t5845 = getelementptr inbounds ptr, ptr %t5844, i32 %t5832 - store ptr @.str7052, ptr %t5845 + store ptr @.str7055, ptr %t5845 %t5846 = add i32 %t5832, 1 store i32 %t5846, ptr %t5829 br label %ifend1162 @@ -72823,11 +72880,11 @@ ifend1162: br label %ifend1159 ifend1159: %t5847 = load ptr, ptr %t1 - %t5848 = call i32 @lp_str_eq(ptr %t5847, ptr @.str7053) + %t5848 = call i32 @lp_str_eq(ptr %t5847, ptr @.str7056) %t5849 = icmp ne i32 %t5848, 0 br i1 %t5849, label %then1167, label %ifend1169 then1167: - store ptr @.str7054, ptr %t380 + store ptr @.str7057, ptr %t380 %t5850 = load ptr, ptr %t387 %t5851 = getelementptr inbounds %LSlice, ptr %t5850, i32 0, i32 1 %t5852 = getelementptr inbounds %LSlice, ptr %t5850, i32 0, i32 2 @@ -72852,13 +72909,13 @@ grow1170: put1171: %t5866 = load ptr, ptr %t5853 %t5867 = getelementptr inbounds ptr, ptr %t5866, i32 %t5854 - store ptr @.str7055, ptr %t5867 + store ptr @.str7058, ptr %t5867 %t5868 = add i32 %t5854, 1 store i32 %t5868, ptr %t5851 br label %ifend1169 ifend1169: %t5869 = load ptr, ptr %t1 - %t5870 = call i32 @lp_str_eq(ptr %t5869, ptr @.str7056) + %t5870 = call i32 @lp_str_eq(ptr %t5869, ptr @.str7059) %t5871 = icmp ne i32 %t5870, 0 br i1 %t5871, label %then1172, label %ifend1174 then1172: @@ -72867,7 +72924,7 @@ then1172: %t5874 = icmp ne i32 %t5873, 0 br i1 %t5874, label %then1175, label %else1176 then1175: - store ptr @.str7057, ptr %t380 + store ptr @.str7060, ptr %t380 %t5875 = load ptr, ptr %t387 %t5876 = getelementptr inbounds %LSlice, ptr %t5875, i32 0, i32 1 %t5877 = getelementptr inbounds %LSlice, ptr %t5875, i32 0, i32 2 @@ -72892,12 +72949,12 @@ grow1178: put1179: %t5891 = load ptr, ptr %t5878 %t5892 = getelementptr inbounds ptr, ptr %t5891, i32 %t5879 - store ptr @.str7058, ptr %t5892 + store ptr @.str7061, ptr %t5892 %t5893 = add i32 %t5879, 1 store i32 %t5893, ptr %t5876 br label %ifend1177 else1176: - store ptr @.str7059, ptr %t380 + store ptr @.str7062, ptr %t380 %t5894 = load ptr, ptr %t387 %t5895 = getelementptr inbounds %LSlice, ptr %t5894, i32 0, i32 1 %t5896 = getelementptr inbounds %LSlice, ptr %t5894, i32 0, i32 2 @@ -72922,7 +72979,7 @@ grow1180: put1181: %t5910 = load ptr, ptr %t5897 %t5911 = getelementptr inbounds ptr, ptr %t5910, i32 %t5898 - store ptr @.str7060, ptr %t5911 + store ptr @.str7063, ptr %t5911 %t5912 = add i32 %t5898, 1 store i32 %t5912, ptr %t5895 br label %ifend1177 @@ -72930,11 +72987,11 @@ ifend1177: br label %ifend1174 ifend1174: %t5913 = load ptr, ptr %t1 - %t5914 = call i32 @lp_str_eq(ptr %t5913, ptr @.str7061) + %t5914 = call i32 @lp_str_eq(ptr %t5913, ptr @.str7064) %t5915 = icmp ne i32 %t5914, 0 br i1 %t5915, label %then1182, label %ifend1184 then1182: - store ptr @.str7062, ptr %t380 + store ptr @.str7065, ptr %t380 %t5916 = load ptr, ptr %t387 %t5917 = getelementptr inbounds %LSlice, ptr %t5916, i32 0, i32 1 %t5918 = getelementptr inbounds %LSlice, ptr %t5916, i32 0, i32 2 @@ -72959,33 +73016,33 @@ grow1185: put1186: %t5932 = load ptr, ptr %t5919 %t5933 = getelementptr inbounds ptr, ptr %t5932, i32 %t5920 - store ptr @.str7063, ptr %t5933 + store ptr @.str7066, ptr %t5933 %t5934 = add i32 %t5920, 1 store i32 %t5934, ptr %t5917 br label %ifend1184 ifend1184: %t5935 = load ptr, ptr %t1 - %t5936 = call i32 @lp_str_eq(ptr %t5935, ptr @.str7064) + %t5936 = call i32 @lp_str_eq(ptr %t5935, ptr @.str7067) %t5937 = icmp ne i32 %t5936, 0 br i1 %t5937, label %then1187, label %ifend1189 then1187: - store ptr @.str7065, ptr %t380 + store ptr @.str7068, ptr %t380 br label %ifend1189 ifend1189: %t5938 = load ptr, ptr %t1 - %t5939 = call i32 @lp_str_eq(ptr %t5938, ptr @.str7066) + %t5939 = call i32 @lp_str_eq(ptr %t5938, ptr @.str7069) %t5940 = icmp ne i32 %t5939, 0 br i1 %t5940, label %then1190, label %ifend1192 then1190: - store ptr @.str7067, ptr %t380 + store ptr @.str7070, ptr %t380 br label %ifend1192 ifend1192: %t5941 = load ptr, ptr %t1 - %t5942 = call i32 @lp_str_eq(ptr %t5941, ptr @.str7068) + %t5942 = call i32 @lp_str_eq(ptr %t5941, ptr @.str7071) %t5943 = icmp ne i32 %t5942, 0 br i1 %t5943, label %then1193, label %ifend1195 then1193: - store ptr @.str7069, ptr %t380 + store ptr @.str7072, ptr %t380 %t5944 = load ptr, ptr %t387 %t5945 = getelementptr inbounds %LSlice, ptr %t5944, i32 0, i32 1 %t5946 = getelementptr inbounds %LSlice, ptr %t5944, i32 0, i32 2 @@ -73010,17 +73067,17 @@ grow1196: put1197: %t5960 = load ptr, ptr %t5947 %t5961 = getelementptr inbounds ptr, ptr %t5960, i32 %t5948 - store ptr @.str7070, ptr %t5961 + store ptr @.str7073, ptr %t5961 %t5962 = add i32 %t5948, 1 store i32 %t5962, ptr %t5945 br label %ifend1195 ifend1195: %t5963 = load ptr, ptr %t1 - %t5964 = call i32 @lp_str_eq(ptr %t5963, ptr @.str7071) + %t5964 = call i32 @lp_str_eq(ptr %t5963, ptr @.str7074) %t5965 = icmp ne i32 %t5964, 0 br i1 %t5965, label %then1198, label %ifend1200 then1198: - store ptr @.str7072, ptr %t380 + store ptr @.str7075, ptr %t380 %t5966 = load ptr, ptr %t387 %t5967 = getelementptr inbounds %LSlice, ptr %t5966, i32 0, i32 1 %t5968 = getelementptr inbounds %LSlice, ptr %t5966, i32 0, i32 2 @@ -73045,17 +73102,17 @@ grow1201: put1202: %t5982 = load ptr, ptr %t5969 %t5983 = getelementptr inbounds ptr, ptr %t5982, i32 %t5970 - store ptr @.str7073, ptr %t5983 + store ptr @.str7076, ptr %t5983 %t5984 = add i32 %t5970, 1 store i32 %t5984, ptr %t5967 br label %ifend1200 ifend1200: %t5985 = load ptr, ptr %t1 - %t5986 = call i32 @lp_str_eq(ptr %t5985, ptr @.str7074) + %t5986 = call i32 @lp_str_eq(ptr %t5985, ptr @.str7077) %t5987 = icmp ne i32 %t5986, 0 br i1 %t5987, label %then1203, label %ifend1205 then1203: - store ptr @.str7075, ptr %t380 + store ptr @.str7078, ptr %t380 %t5988 = load ptr, ptr %t387 %t5989 = getelementptr inbounds %LSlice, ptr %t5988, i32 0, i32 1 %t5990 = getelementptr inbounds %LSlice, ptr %t5988, i32 0, i32 2 @@ -73080,7 +73137,7 @@ grow1206: put1207: %t6004 = load ptr, ptr %t5991 %t6005 = getelementptr inbounds ptr, ptr %t6004, i32 %t5992 - store ptr @.str7076, ptr %t6005 + store ptr @.str7079, ptr %t6005 %t6006 = add i32 %t5992, 1 store i32 %t6006, ptr %t5989 br label %ifend1205 @@ -73088,16 +73145,16 @@ ifend1205: br label %ifend1139 ifend1139: %t6007 = load ptr, ptr %t0 - %t6008 = call i32 @lp_str_eq(ptr %t6007, ptr @.str7077) + %t6008 = call i32 @lp_str_eq(ptr %t6007, ptr @.str7080) %t6009 = icmp ne i32 %t6008, 0 br i1 %t6009, label %then1208, label %ifend1210 then1208: %t6010 = load ptr, ptr %t1 - %t6011 = call i32 @lp_str_eq(ptr %t6010, ptr @.str7078) + %t6011 = call i32 @lp_str_eq(ptr %t6010, ptr @.str7081) %t6012 = icmp ne i32 %t6011, 0 br i1 %t6012, label %then1211, label %ifend1213 then1211: - store ptr @.str7079, ptr %t380 + store ptr @.str7082, ptr %t380 %t6013 = load ptr, ptr %t387 %t6014 = getelementptr inbounds %LSlice, ptr %t6013, i32 0, i32 1 %t6015 = getelementptr inbounds %LSlice, ptr %t6013, i32 0, i32 2 @@ -73122,17 +73179,17 @@ grow1214: put1215: %t6029 = load ptr, ptr %t6016 %t6030 = getelementptr inbounds ptr, ptr %t6029, i32 %t6017 - store ptr @.str7080, ptr %t6030 + store ptr @.str7083, ptr %t6030 %t6031 = add i32 %t6017, 1 store i32 %t6031, ptr %t6014 br label %ifend1213 ifend1213: %t6032 = load ptr, ptr %t1 - %t6033 = call i32 @lp_str_eq(ptr %t6032, ptr @.str7081) + %t6033 = call i32 @lp_str_eq(ptr %t6032, ptr @.str7084) %t6034 = icmp ne i32 %t6033, 0 br i1 %t6034, label %then1216, label %ifend1218 then1216: - store ptr @.str7082, ptr %t380 + store ptr @.str7085, ptr %t380 %t6035 = load ptr, ptr %t387 %t6036 = getelementptr inbounds %LSlice, ptr %t6035, i32 0, i32 1 %t6037 = getelementptr inbounds %LSlice, ptr %t6035, i32 0, i32 2 @@ -73157,7 +73214,7 @@ grow1219: put1220: %t6051 = load ptr, ptr %t6038 %t6052 = getelementptr inbounds ptr, ptr %t6051, i32 %t6039 - store ptr @.str7083, ptr %t6052 + store ptr @.str7086, ptr %t6052 %t6053 = add i32 %t6039, 1 store i32 %t6053, ptr %t6036 %t6054 = load ptr, ptr %t387 @@ -73184,17 +73241,17 @@ grow1221: put1222: %t6070 = load ptr, ptr %t6057 %t6071 = getelementptr inbounds ptr, ptr %t6070, i32 %t6058 - store ptr @.str7084, ptr %t6071 + store ptr @.str7087, ptr %t6071 %t6072 = add i32 %t6058, 1 store i32 %t6072, ptr %t6055 br label %ifend1218 ifend1218: %t6073 = load ptr, ptr %t1 - %t6074 = call i32 @lp_str_eq(ptr %t6073, ptr @.str7085) + %t6074 = call i32 @lp_str_eq(ptr %t6073, ptr @.str7088) %t6075 = icmp ne i32 %t6074, 0 br i1 %t6075, label %then1223, label %ifend1225 then1223: - store ptr @.str7086, ptr %t380 + store ptr @.str7089, ptr %t380 %t6076 = load ptr, ptr %t387 %t6077 = getelementptr inbounds %LSlice, ptr %t6076, i32 0, i32 1 %t6078 = getelementptr inbounds %LSlice, ptr %t6076, i32 0, i32 2 @@ -73219,7 +73276,7 @@ grow1226: put1227: %t6092 = load ptr, ptr %t6079 %t6093 = getelementptr inbounds ptr, ptr %t6092, i32 %t6080 - store ptr @.str7087, ptr %t6093 + store ptr @.str7090, ptr %t6093 %t6094 = add i32 %t6080, 1 store i32 %t6094, ptr %t6077 %t6095 = load ptr, ptr %t387 @@ -73246,7 +73303,7 @@ grow1228: put1229: %t6111 = load ptr, ptr %t6098 %t6112 = getelementptr inbounds ptr, ptr %t6111, i32 %t6099 - store ptr @.str7088, ptr %t6112 + store ptr @.str7091, ptr %t6112 %t6113 = add i32 %t6099, 1 store i32 %t6113, ptr %t6096 %t6114 = load ptr, ptr %t387 @@ -73273,17 +73330,17 @@ grow1230: put1231: %t6130 = load ptr, ptr %t6117 %t6131 = getelementptr inbounds ptr, ptr %t6130, i32 %t6118 - store ptr @.str7089, ptr %t6131 + store ptr @.str7092, ptr %t6131 %t6132 = add i32 %t6118, 1 store i32 %t6132, ptr %t6115 br label %ifend1225 ifend1225: %t6133 = load ptr, ptr %t1 - %t6134 = call i32 @lp_str_eq(ptr %t6133, ptr @.str7090) + %t6134 = call i32 @lp_str_eq(ptr %t6133, ptr @.str7093) %t6135 = icmp ne i32 %t6134, 0 br i1 %t6135, label %then1232, label %ifend1234 then1232: - store ptr @.str7091, ptr %t380 + store ptr @.str7094, ptr %t380 %t6136 = load ptr, ptr %t387 %t6137 = getelementptr inbounds %LSlice, ptr %t6136, i32 0, i32 1 %t6138 = getelementptr inbounds %LSlice, ptr %t6136, i32 0, i32 2 @@ -73308,7 +73365,7 @@ grow1235: put1236: %t6152 = load ptr, ptr %t6139 %t6153 = getelementptr inbounds ptr, ptr %t6152, i32 %t6140 - store ptr @.str7092, ptr %t6153 + store ptr @.str7095, ptr %t6153 %t6154 = add i32 %t6140, 1 store i32 %t6154, ptr %t6137 %t6155 = load ptr, ptr %t387 @@ -73335,17 +73392,17 @@ grow1237: put1238: %t6171 = load ptr, ptr %t6158 %t6172 = getelementptr inbounds ptr, ptr %t6171, i32 %t6159 - store ptr @.str7093, ptr %t6172 + store ptr @.str7096, ptr %t6172 %t6173 = add i32 %t6159, 1 store i32 %t6173, ptr %t6156 br label %ifend1234 ifend1234: %t6174 = load ptr, ptr %t1 - %t6175 = call i32 @lp_str_eq(ptr %t6174, ptr @.str7094) + %t6175 = call i32 @lp_str_eq(ptr %t6174, ptr @.str7097) %t6176 = icmp ne i32 %t6175, 0 br i1 %t6176, label %then1239, label %ifend1241 then1239: - store ptr @.str7095, ptr %t380 + store ptr @.str7098, ptr %t380 %t6177 = load ptr, ptr %t387 %t6178 = getelementptr inbounds %LSlice, ptr %t6177, i32 0, i32 1 %t6179 = getelementptr inbounds %LSlice, ptr %t6177, i32 0, i32 2 @@ -73370,7 +73427,7 @@ grow1242: put1243: %t6193 = load ptr, ptr %t6180 %t6194 = getelementptr inbounds ptr, ptr %t6193, i32 %t6181 - store ptr @.str7096, ptr %t6194 + store ptr @.str7099, ptr %t6194 %t6195 = add i32 %t6181, 1 store i32 %t6195, ptr %t6178 %t6196 = load ptr, ptr %t387 @@ -73397,7 +73454,7 @@ grow1244: put1245: %t6212 = load ptr, ptr %t6199 %t6213 = getelementptr inbounds ptr, ptr %t6212, i32 %t6200 - store ptr @.str7097, ptr %t6213 + store ptr @.str7100, ptr %t6213 %t6214 = add i32 %t6200, 1 store i32 %t6214, ptr %t6197 %t6215 = load ptr, ptr %t387 @@ -73424,17 +73481,17 @@ grow1246: put1247: %t6231 = load ptr, ptr %t6218 %t6232 = getelementptr inbounds ptr, ptr %t6231, i32 %t6219 - store ptr @.str7098, ptr %t6232 + store ptr @.str7101, ptr %t6232 %t6233 = add i32 %t6219, 1 store i32 %t6233, ptr %t6216 br label %ifend1241 ifend1241: %t6234 = load ptr, ptr %t1 - %t6235 = call i32 @lp_str_eq(ptr %t6234, ptr @.str7099) + %t6235 = call i32 @lp_str_eq(ptr %t6234, ptr @.str7102) %t6236 = icmp ne i32 %t6235, 0 br i1 %t6236, label %then1248, label %ifend1250 then1248: - store ptr @.str7100, ptr %t380 + store ptr @.str7103, ptr %t380 %t6237 = load ptr, ptr %t387 %t6238 = getelementptr inbounds %LSlice, ptr %t6237, i32 0, i32 1 %t6239 = getelementptr inbounds %LSlice, ptr %t6237, i32 0, i32 2 @@ -73459,7 +73516,7 @@ grow1251: put1252: %t6253 = load ptr, ptr %t6240 %t6254 = getelementptr inbounds ptr, ptr %t6253, i32 %t6241 - store ptr @.str7101, ptr %t6254 + store ptr @.str7104, ptr %t6254 %t6255 = add i32 %t6241, 1 store i32 %t6255, ptr %t6238 %t6256 = load ptr, ptr %t387 @@ -73486,17 +73543,17 @@ grow1253: put1254: %t6272 = load ptr, ptr %t6259 %t6273 = getelementptr inbounds ptr, ptr %t6272, i32 %t6260 - store ptr @.str7102, ptr %t6273 + store ptr @.str7105, ptr %t6273 %t6274 = add i32 %t6260, 1 store i32 %t6274, ptr %t6257 br label %ifend1250 ifend1250: %t6275 = load ptr, ptr %t1 - %t6276 = call i32 @lp_str_eq(ptr %t6275, ptr @.str7103) + %t6276 = call i32 @lp_str_eq(ptr %t6275, ptr @.str7106) %t6277 = icmp ne i32 %t6276, 0 br i1 %t6277, label %then1255, label %ifend1257 then1255: - store ptr @.str7104, ptr %t380 + store ptr @.str7107, ptr %t380 %t6278 = load ptr, ptr %t387 %t6279 = getelementptr inbounds %LSlice, ptr %t6278, i32 0, i32 1 %t6280 = getelementptr inbounds %LSlice, ptr %t6278, i32 0, i32 2 @@ -73521,7 +73578,7 @@ grow1258: put1259: %t6294 = load ptr, ptr %t6281 %t6295 = getelementptr inbounds ptr, ptr %t6294, i32 %t6282 - store ptr @.str7105, ptr %t6295 + store ptr @.str7108, ptr %t6295 %t6296 = add i32 %t6282, 1 store i32 %t6296, ptr %t6279 %t6297 = load ptr, ptr %t387 @@ -73548,7 +73605,7 @@ grow1260: put1261: %t6313 = load ptr, ptr %t6300 %t6314 = getelementptr inbounds ptr, ptr %t6313, i32 %t6301 - store ptr @.str7106, ptr %t6314 + store ptr @.str7109, ptr %t6314 %t6315 = add i32 %t6301, 1 store i32 %t6315, ptr %t6298 %t6316 = load ptr, ptr %t387 @@ -73575,17 +73632,17 @@ grow1262: put1263: %t6332 = load ptr, ptr %t6319 %t6333 = getelementptr inbounds ptr, ptr %t6332, i32 %t6320 - store ptr @.str7107, ptr %t6333 + store ptr @.str7110, ptr %t6333 %t6334 = add i32 %t6320, 1 store i32 %t6334, ptr %t6317 br label %ifend1257 ifend1257: %t6335 = load ptr, ptr %t1 - %t6336 = call i32 @lp_str_eq(ptr %t6335, ptr @.str7108) + %t6336 = call i32 @lp_str_eq(ptr %t6335, ptr @.str7111) %t6337 = icmp ne i32 %t6336, 0 br i1 %t6337, label %then1264, label %ifend1266 then1264: - store ptr @.str7109, ptr %t380 + store ptr @.str7112, ptr %t380 %t6338 = load ptr, ptr %t387 %t6339 = getelementptr inbounds %LSlice, ptr %t6338, i32 0, i32 1 %t6340 = getelementptr inbounds %LSlice, ptr %t6338, i32 0, i32 2 @@ -73610,17 +73667,17 @@ grow1267: put1268: %t6354 = load ptr, ptr %t6341 %t6355 = getelementptr inbounds ptr, ptr %t6354, i32 %t6342 - store ptr @.str7110, ptr %t6355 + store ptr @.str7113, ptr %t6355 %t6356 = add i32 %t6342, 1 store i32 %t6356, ptr %t6339 br label %ifend1266 ifend1266: %t6357 = load ptr, ptr %t1 - %t6358 = call i32 @lp_str_eq(ptr %t6357, ptr @.str7111) + %t6358 = call i32 @lp_str_eq(ptr %t6357, ptr @.str7114) %t6359 = icmp ne i32 %t6358, 0 br i1 %t6359, label %then1269, label %ifend1271 then1269: - store ptr @.str7112, ptr %t380 + store ptr @.str7115, ptr %t380 %t6360 = load ptr, ptr %t387 %t6361 = getelementptr inbounds %LSlice, ptr %t6360, i32 0, i32 1 %t6362 = getelementptr inbounds %LSlice, ptr %t6360, i32 0, i32 2 @@ -73645,17 +73702,17 @@ grow1272: put1273: %t6376 = load ptr, ptr %t6363 %t6377 = getelementptr inbounds ptr, ptr %t6376, i32 %t6364 - store ptr @.str7113, ptr %t6377 + store ptr @.str7116, ptr %t6377 %t6378 = add i32 %t6364, 1 store i32 %t6378, ptr %t6361 br label %ifend1271 ifend1271: %t6379 = load ptr, ptr %t1 - %t6380 = call i32 @lp_str_eq(ptr %t6379, ptr @.str7114) + %t6380 = call i32 @lp_str_eq(ptr %t6379, ptr @.str7117) %t6381 = icmp ne i32 %t6380, 0 br i1 %t6381, label %then1274, label %ifend1276 then1274: - store ptr @.str7115, ptr %t380 + store ptr @.str7118, ptr %t380 %t6382 = load ptr, ptr %t387 %t6383 = getelementptr inbounds %LSlice, ptr %t6382, i32 0, i32 1 %t6384 = getelementptr inbounds %LSlice, ptr %t6382, i32 0, i32 2 @@ -73680,17 +73737,17 @@ grow1277: put1278: %t6398 = load ptr, ptr %t6385 %t6399 = getelementptr inbounds ptr, ptr %t6398, i32 %t6386 - store ptr @.str7116, ptr %t6399 + store ptr @.str7119, ptr %t6399 %t6400 = add i32 %t6386, 1 store i32 %t6400, ptr %t6383 br label %ifend1276 ifend1276: %t6401 = load ptr, ptr %t1 - %t6402 = call i32 @lp_str_eq(ptr %t6401, ptr @.str7117) + %t6402 = call i32 @lp_str_eq(ptr %t6401, ptr @.str7120) %t6403 = icmp ne i32 %t6402, 0 br i1 %t6403, label %then1279, label %ifend1281 then1279: - store ptr @.str7118, ptr %t380 + store ptr @.str7121, ptr %t380 %t6404 = load ptr, ptr %t387 %t6405 = getelementptr inbounds %LSlice, ptr %t6404, i32 0, i32 1 %t6406 = getelementptr inbounds %LSlice, ptr %t6404, i32 0, i32 2 @@ -73715,17 +73772,17 @@ grow1282: put1283: %t6420 = load ptr, ptr %t6407 %t6421 = getelementptr inbounds ptr, ptr %t6420, i32 %t6408 - store ptr @.str7119, ptr %t6421 + store ptr @.str7122, ptr %t6421 %t6422 = add i32 %t6408, 1 store i32 %t6422, ptr %t6405 br label %ifend1281 ifend1281: %t6423 = load ptr, ptr %t1 - %t6424 = call i32 @lp_str_eq(ptr %t6423, ptr @.str7120) + %t6424 = call i32 @lp_str_eq(ptr %t6423, ptr @.str7123) %t6425 = icmp ne i32 %t6424, 0 br i1 %t6425, label %then1284, label %ifend1286 then1284: - store ptr @.str7121, ptr %t380 + store ptr @.str7124, ptr %t380 %t6426 = load ptr, ptr %t387 %t6427 = getelementptr inbounds %LSlice, ptr %t6426, i32 0, i32 1 %t6428 = getelementptr inbounds %LSlice, ptr %t6426, i32 0, i32 2 @@ -73750,17 +73807,17 @@ grow1287: put1288: %t6442 = load ptr, ptr %t6429 %t6443 = getelementptr inbounds ptr, ptr %t6442, i32 %t6430 - store ptr @.str7122, ptr %t6443 + store ptr @.str7125, ptr %t6443 %t6444 = add i32 %t6430, 1 store i32 %t6444, ptr %t6427 br label %ifend1286 ifend1286: %t6445 = load ptr, ptr %t1 - %t6446 = call i32 @lp_str_eq(ptr %t6445, ptr @.str7123) + %t6446 = call i32 @lp_str_eq(ptr %t6445, ptr @.str7126) %t6447 = icmp ne i32 %t6446, 0 br i1 %t6447, label %then1289, label %ifend1291 then1289: - store ptr @.str7124, ptr %t380 + store ptr @.str7127, ptr %t380 %t6448 = load ptr, ptr %t387 %t6449 = getelementptr inbounds %LSlice, ptr %t6448, i32 0, i32 1 %t6450 = getelementptr inbounds %LSlice, ptr %t6448, i32 0, i32 2 @@ -73785,17 +73842,17 @@ grow1292: put1293: %t6464 = load ptr, ptr %t6451 %t6465 = getelementptr inbounds ptr, ptr %t6464, i32 %t6452 - store ptr @.str7125, ptr %t6465 + store ptr @.str7128, ptr %t6465 %t6466 = add i32 %t6452, 1 store i32 %t6466, ptr %t6449 br label %ifend1291 ifend1291: %t6467 = load ptr, ptr %t1 - %t6468 = call i32 @lp_str_eq(ptr %t6467, ptr @.str7126) + %t6468 = call i32 @lp_str_eq(ptr %t6467, ptr @.str7129) %t6469 = icmp ne i32 %t6468, 0 br i1 %t6469, label %then1294, label %ifend1296 then1294: - store ptr @.str7127, ptr %t380 + store ptr @.str7130, ptr %t380 %t6470 = load ptr, ptr %t387 %t6471 = getelementptr inbounds %LSlice, ptr %t6470, i32 0, i32 1 %t6472 = getelementptr inbounds %LSlice, ptr %t6470, i32 0, i32 2 @@ -73820,7 +73877,7 @@ grow1297: put1298: %t6486 = load ptr, ptr %t6473 %t6487 = getelementptr inbounds ptr, ptr %t6486, i32 %t6474 - store ptr @.str7128, ptr %t6487 + store ptr @.str7131, ptr %t6487 %t6488 = add i32 %t6474, 1 store i32 %t6488, ptr %t6471 %t6489 = load ptr, ptr %t387 @@ -73847,17 +73904,17 @@ grow1299: put1300: %t6505 = load ptr, ptr %t6492 %t6506 = getelementptr inbounds ptr, ptr %t6505, i32 %t6493 - store ptr @.str7129, ptr %t6506 + store ptr @.str7132, ptr %t6506 %t6507 = add i32 %t6493, 1 store i32 %t6507, ptr %t6490 br label %ifend1296 ifend1296: %t6508 = load ptr, ptr %t1 - %t6509 = call i32 @lp_str_eq(ptr %t6508, ptr @.str7130) + %t6509 = call i32 @lp_str_eq(ptr %t6508, ptr @.str7133) %t6510 = icmp ne i32 %t6509, 0 br i1 %t6510, label %then1301, label %ifend1303 then1301: - store ptr @.str7131, ptr %t380 + store ptr @.str7134, ptr %t380 %t6511 = load ptr, ptr %t387 %t6512 = getelementptr inbounds %LSlice, ptr %t6511, i32 0, i32 1 %t6513 = getelementptr inbounds %LSlice, ptr %t6511, i32 0, i32 2 @@ -73882,17 +73939,17 @@ grow1304: put1305: %t6527 = load ptr, ptr %t6514 %t6528 = getelementptr inbounds ptr, ptr %t6527, i32 %t6515 - store ptr @.str7132, ptr %t6528 + store ptr @.str7135, ptr %t6528 %t6529 = add i32 %t6515, 1 store i32 %t6529, ptr %t6512 br label %ifend1303 ifend1303: %t6530 = load ptr, ptr %t1 - %t6531 = call i32 @lp_str_eq(ptr %t6530, ptr @.str7133) + %t6531 = call i32 @lp_str_eq(ptr %t6530, ptr @.str7136) %t6532 = icmp ne i32 %t6531, 0 br i1 %t6532, label %then1306, label %ifend1308 then1306: - store ptr @.str7134, ptr %t380 + store ptr @.str7137, ptr %t380 %t6533 = load ptr, ptr %t387 %t6534 = getelementptr inbounds %LSlice, ptr %t6533, i32 0, i32 1 %t6535 = getelementptr inbounds %LSlice, ptr %t6533, i32 0, i32 2 @@ -73917,7 +73974,7 @@ grow1309: put1310: %t6549 = load ptr, ptr %t6536 %t6550 = getelementptr inbounds ptr, ptr %t6549, i32 %t6537 - store ptr @.str7135, ptr %t6550 + store ptr @.str7138, ptr %t6550 %t6551 = add i32 %t6537, 1 store i32 %t6551, ptr %t6534 %t6552 = load ptr, ptr %t387 @@ -73944,7 +74001,7 @@ grow1311: put1312: %t6568 = load ptr, ptr %t6555 %t6569 = getelementptr inbounds ptr, ptr %t6568, i32 %t6556 - store ptr @.str7136, ptr %t6569 + store ptr @.str7139, ptr %t6569 %t6570 = add i32 %t6556, 1 store i32 %t6570, ptr %t6553 br label %ifend1308 @@ -73952,332 +74009,332 @@ ifend1308: br label %ifend1210 ifend1210: %t6571 = load ptr, ptr %t0 - %t6572 = call i32 @lp_str_eq(ptr %t6571, ptr @.str7137) + %t6572 = call i32 @lp_str_eq(ptr %t6571, ptr @.str7140) %t6573 = icmp ne i32 %t6572, 0 br i1 %t6573, label %then1313, label %ifend1315 then1313: %t6574 = load ptr, ptr %t1 - %t6575 = call i32 @lp_str_eq(ptr %t6574, ptr @.str7138) + %t6575 = call i32 @lp_str_eq(ptr %t6574, ptr @.str7141) %t6576 = icmp ne i32 %t6575, 0 br i1 %t6576, label %then1316, label %ifend1318 then1316: - store ptr @.str7139, ptr %t380 + store ptr @.str7142, ptr %t380 br label %ifend1318 ifend1318: %t6577 = load ptr, ptr %t1 - %t6578 = call i32 @lp_str_eq(ptr %t6577, ptr @.str7140) + %t6578 = call i32 @lp_str_eq(ptr %t6577, ptr @.str7143) %t6579 = icmp ne i32 %t6578, 0 br i1 %t6579, label %then1319, label %ifend1321 then1319: - store ptr @.str7141, ptr %t380 + store ptr @.str7144, ptr %t380 br label %ifend1321 ifend1321: %t6580 = load ptr, ptr %t1 - %t6581 = call i32 @lp_str_eq(ptr %t6580, ptr @.str7142) + %t6581 = call i32 @lp_str_eq(ptr %t6580, ptr @.str7145) %t6582 = icmp ne i32 %t6581, 0 br i1 %t6582, label %then1322, label %ifend1324 then1322: - store ptr @.str7143, ptr %t380 + store ptr @.str7146, ptr %t380 br label %ifend1324 ifend1324: %t6583 = load ptr, ptr %t1 - %t6584 = call i32 @lp_str_eq(ptr %t6583, ptr @.str7144) + %t6584 = call i32 @lp_str_eq(ptr %t6583, ptr @.str7147) %t6585 = icmp ne i32 %t6584, 0 br i1 %t6585, label %then1325, label %ifend1327 then1325: - store ptr @.str7145, ptr %t380 + store ptr @.str7148, ptr %t380 br label %ifend1327 ifend1327: %t6586 = load ptr, ptr %t1 - %t6587 = call i32 @lp_str_eq(ptr %t6586, ptr @.str7146) + %t6587 = call i32 @lp_str_eq(ptr %t6586, ptr @.str7149) %t6588 = icmp ne i32 %t6587, 0 br i1 %t6588, label %then1328, label %ifend1330 then1328: - store ptr @.str7147, ptr %t380 + store ptr @.str7150, ptr %t380 br label %ifend1330 ifend1330: %t6589 = load ptr, ptr %t1 - %t6590 = call i32 @lp_str_eq(ptr %t6589, ptr @.str7148) + %t6590 = call i32 @lp_str_eq(ptr %t6589, ptr @.str7151) %t6591 = icmp ne i32 %t6590, 0 br i1 %t6591, label %then1331, label %ifend1333 then1331: - store ptr @.str7149, ptr %t380 + store ptr @.str7152, ptr %t380 br label %ifend1333 ifend1333: %t6592 = load ptr, ptr %t1 - %t6593 = call i32 @lp_str_eq(ptr %t6592, ptr @.str7150) + %t6593 = call i32 @lp_str_eq(ptr %t6592, ptr @.str7153) %t6594 = icmp ne i32 %t6593, 0 br i1 %t6594, label %then1334, label %ifend1336 then1334: - store ptr @.str7151, ptr %t380 + store ptr @.str7154, ptr %t380 br label %ifend1336 ifend1336: %t6595 = load ptr, ptr %t1 - %t6596 = call i32 @lp_str_eq(ptr %t6595, ptr @.str7152) + %t6596 = call i32 @lp_str_eq(ptr %t6595, ptr @.str7155) %t6597 = icmp ne i32 %t6596, 0 br i1 %t6597, label %then1337, label %ifend1339 then1337: - store ptr @.str7153, ptr %t380 + store ptr @.str7156, ptr %t380 br label %ifend1339 ifend1339: %t6598 = load ptr, ptr %t1 - %t6599 = call i32 @lp_str_eq(ptr %t6598, ptr @.str7154) + %t6599 = call i32 @lp_str_eq(ptr %t6598, ptr @.str7157) %t6600 = icmp ne i32 %t6599, 0 br i1 %t6600, label %then1340, label %ifend1342 then1340: - store ptr @.str7155, ptr %t380 + store ptr @.str7158, ptr %t380 br label %ifend1342 ifend1342: %t6601 = load ptr, ptr %t1 - %t6602 = call i32 @lp_str_eq(ptr %t6601, ptr @.str7156) + %t6602 = call i32 @lp_str_eq(ptr %t6601, ptr @.str7159) %t6603 = icmp ne i32 %t6602, 0 br i1 %t6603, label %then1343, label %ifend1345 then1343: - store ptr @.str7157, ptr %t380 + store ptr @.str7160, ptr %t380 br label %ifend1345 ifend1345: %t6604 = load ptr, ptr %t1 - %t6605 = call i32 @lp_str_eq(ptr %t6604, ptr @.str7158) + %t6605 = call i32 @lp_str_eq(ptr %t6604, ptr @.str7161) %t6606 = icmp ne i32 %t6605, 0 br i1 %t6606, label %then1346, label %ifend1348 then1346: - store ptr @.str7159, ptr %t380 + store ptr @.str7162, ptr %t380 br label %ifend1348 ifend1348: %t6607 = load ptr, ptr %t1 - %t6608 = call i32 @lp_str_eq(ptr %t6607, ptr @.str7160) + %t6608 = call i32 @lp_str_eq(ptr %t6607, ptr @.str7163) %t6609 = icmp ne i32 %t6608, 0 br i1 %t6609, label %then1349, label %ifend1351 then1349: - store ptr @.str7161, ptr %t380 + store ptr @.str7164, ptr %t380 br label %ifend1351 ifend1351: %t6610 = load ptr, ptr %t1 - %t6611 = call i32 @lp_str_eq(ptr %t6610, ptr @.str7162) + %t6611 = call i32 @lp_str_eq(ptr %t6610, ptr @.str7165) %t6612 = icmp ne i32 %t6611, 0 br i1 %t6612, label %then1352, label %ifend1354 then1352: - store ptr @.str7163, ptr %t380 + store ptr @.str7166, ptr %t380 br label %ifend1354 ifend1354: %t6613 = load ptr, ptr %t1 - %t6614 = call i32 @lp_str_eq(ptr %t6613, ptr @.str7164) + %t6614 = call i32 @lp_str_eq(ptr %t6613, ptr @.str7167) %t6615 = icmp ne i32 %t6614, 0 br i1 %t6615, label %then1355, label %ifend1357 then1355: - store ptr @.str7165, ptr %t380 + store ptr @.str7168, ptr %t380 br label %ifend1357 ifend1357: %t6616 = load ptr, ptr %t1 - %t6617 = call i32 @lp_str_eq(ptr %t6616, ptr @.str7166) + %t6617 = call i32 @lp_str_eq(ptr %t6616, ptr @.str7169) %t6618 = icmp ne i32 %t6617, 0 br i1 %t6618, label %then1358, label %ifend1360 then1358: - store ptr @.str7167, ptr %t380 + store ptr @.str7170, ptr %t380 br label %ifend1360 ifend1360: %t6619 = load ptr, ptr %t1 - %t6620 = call i32 @lp_str_eq(ptr %t6619, ptr @.str7168) + %t6620 = call i32 @lp_str_eq(ptr %t6619, ptr @.str7171) %t6621 = icmp ne i32 %t6620, 0 br i1 %t6621, label %then1361, label %ifend1363 then1361: - store ptr @.str7169, ptr %t380 + store ptr @.str7172, ptr %t380 br label %ifend1363 ifend1363: %t6622 = load ptr, ptr %t1 - %t6623 = call i32 @lp_str_eq(ptr %t6622, ptr @.str7170) + %t6623 = call i32 @lp_str_eq(ptr %t6622, ptr @.str7173) %t6624 = icmp ne i32 %t6623, 0 br i1 %t6624, label %then1364, label %ifend1366 then1364: - store ptr @.str7171, ptr %t380 + store ptr @.str7174, ptr %t380 br label %ifend1366 ifend1366: br label %ifend1315 ifend1315: %t6625 = load ptr, ptr %t0 - %t6626 = call i32 @lp_str_eq(ptr %t6625, ptr @.str7172) + %t6626 = call i32 @lp_str_eq(ptr %t6625, ptr @.str7175) %t6627 = icmp ne i32 %t6626, 0 br i1 %t6627, label %then1367, label %ifend1369 then1367: %t6628 = load ptr, ptr %t1 - %t6629 = call i32 @lp_str_eq(ptr %t6628, ptr @.str7173) + %t6629 = call i32 @lp_str_eq(ptr %t6628, ptr @.str7176) %t6630 = icmp ne i32 %t6629, 0 br i1 %t6630, label %then1370, label %ifend1372 then1370: - store ptr @.str7174, ptr %t380 + store ptr @.str7177, ptr %t380 br label %ifend1372 ifend1372: %t6631 = load ptr, ptr %t1 - %t6632 = call i32 @lp_str_eq(ptr %t6631, ptr @.str7175) + %t6632 = call i32 @lp_str_eq(ptr %t6631, ptr @.str7178) %t6633 = icmp ne i32 %t6632, 0 br i1 %t6633, label %then1373, label %ifend1375 then1373: - store ptr @.str7176, ptr %t380 + store ptr @.str7179, ptr %t380 br label %ifend1375 ifend1375: %t6634 = load ptr, ptr %t1 - %t6635 = call i32 @lp_str_eq(ptr %t6634, ptr @.str7177) + %t6635 = call i32 @lp_str_eq(ptr %t6634, ptr @.str7180) %t6636 = icmp ne i32 %t6635, 0 br i1 %t6636, label %then1376, label %ifend1378 then1376: - store ptr @.str7178, ptr %t380 + store ptr @.str7181, ptr %t380 br label %ifend1378 ifend1378: %t6637 = load ptr, ptr %t1 - %t6638 = call i32 @lp_str_eq(ptr %t6637, ptr @.str7179) + %t6638 = call i32 @lp_str_eq(ptr %t6637, ptr @.str7182) %t6639 = icmp ne i32 %t6638, 0 br i1 %t6639, label %then1379, label %ifend1381 then1379: - store ptr @.str7180, ptr %t380 + store ptr @.str7183, ptr %t380 br label %ifend1381 ifend1381: %t6640 = load ptr, ptr %t1 - %t6641 = call i32 @lp_str_eq(ptr %t6640, ptr @.str7181) + %t6641 = call i32 @lp_str_eq(ptr %t6640, ptr @.str7184) %t6642 = icmp ne i32 %t6641, 0 br i1 %t6642, label %then1382, label %ifend1384 then1382: - store ptr @.str7182, ptr %t380 + store ptr @.str7185, ptr %t380 br label %ifend1384 ifend1384: %t6643 = load ptr, ptr %t1 - %t6644 = call i32 @lp_str_eq(ptr %t6643, ptr @.str7183) + %t6644 = call i32 @lp_str_eq(ptr %t6643, ptr @.str7186) %t6645 = icmp ne i32 %t6644, 0 br i1 %t6645, label %then1385, label %ifend1387 then1385: - store ptr @.str7184, ptr %t380 + store ptr @.str7187, ptr %t380 br label %ifend1387 ifend1387: %t6646 = load ptr, ptr %t1 - %t6647 = call i32 @lp_str_eq(ptr %t6646, ptr @.str7185) + %t6647 = call i32 @lp_str_eq(ptr %t6646, ptr @.str7188) %t6648 = icmp ne i32 %t6647, 0 br i1 %t6648, label %then1388, label %ifend1390 then1388: - store ptr @.str7186, ptr %t380 + store ptr @.str7189, ptr %t380 br label %ifend1390 ifend1390: %t6649 = load ptr, ptr %t1 - %t6650 = call i32 @lp_str_eq(ptr %t6649, ptr @.str7187) + %t6650 = call i32 @lp_str_eq(ptr %t6649, ptr @.str7190) %t6651 = icmp ne i32 %t6650, 0 br i1 %t6651, label %then1391, label %ifend1393 then1391: - store ptr @.str7188, ptr %t380 + store ptr @.str7191, ptr %t380 br label %ifend1393 ifend1393: %t6652 = load ptr, ptr %t1 - %t6653 = call i32 @lp_str_eq(ptr %t6652, ptr @.str7189) + %t6653 = call i32 @lp_str_eq(ptr %t6652, ptr @.str7192) %t6654 = icmp ne i32 %t6653, 0 br i1 %t6654, label %then1394, label %ifend1396 then1394: - store ptr @.str7190, ptr %t380 + store ptr @.str7193, ptr %t380 br label %ifend1396 ifend1396: br label %ifend1369 ifend1369: %t6655 = load ptr, ptr %t0 - %t6656 = call i32 @lp_str_eq(ptr %t6655, ptr @.str7191) + %t6656 = call i32 @lp_str_eq(ptr %t6655, ptr @.str7194) %t6657 = icmp ne i32 %t6656, 0 br i1 %t6657, label %then1397, label %ifend1399 then1397: %t6658 = load ptr, ptr %t1 - %t6659 = call i32 @lp_str_eq(ptr %t6658, ptr @.str7192) + %t6659 = call i32 @lp_str_eq(ptr %t6658, ptr @.str7195) %t6660 = icmp ne i32 %t6659, 0 br i1 %t6660, label %then1400, label %ifend1402 then1400: - store ptr @.str7193, ptr %t380 + store ptr @.str7196, ptr %t380 br label %ifend1402 ifend1402: %t6661 = load ptr, ptr %t1 - %t6662 = call i32 @lp_str_eq(ptr %t6661, ptr @.str7194) + %t6662 = call i32 @lp_str_eq(ptr %t6661, ptr @.str7197) %t6663 = icmp ne i32 %t6662, 0 br i1 %t6663, label %then1403, label %ifend1405 then1403: - store ptr @.str7195, ptr %t380 + store ptr @.str7198, ptr %t380 br label %ifend1405 ifend1405: %t6664 = load ptr, ptr %t1 - %t6665 = call i32 @lp_str_eq(ptr %t6664, ptr @.str7196) + %t6665 = call i32 @lp_str_eq(ptr %t6664, ptr @.str7199) %t6666 = icmp ne i32 %t6665, 0 br i1 %t6666, label %then1406, label %ifend1408 then1406: - store ptr @.str7197, ptr %t380 + store ptr @.str7200, ptr %t380 br label %ifend1408 ifend1408: %t6667 = load ptr, ptr %t1 - %t6668 = call i32 @lp_str_eq(ptr %t6667, ptr @.str7198) + %t6668 = call i32 @lp_str_eq(ptr %t6667, ptr @.str7201) %t6669 = icmp ne i32 %t6668, 0 br i1 %t6669, label %then1409, label %ifend1411 then1409: - store ptr @.str7199, ptr %t380 + store ptr @.str7202, ptr %t380 br label %ifend1411 ifend1411: %t6670 = load ptr, ptr %t1 - %t6671 = call i32 @lp_str_eq(ptr %t6670, ptr @.str7200) + %t6671 = call i32 @lp_str_eq(ptr %t6670, ptr @.str7203) %t6672 = icmp ne i32 %t6671, 0 br i1 %t6672, label %then1412, label %ifend1414 then1412: - store ptr @.str7201, ptr %t380 + store ptr @.str7204, ptr %t380 br label %ifend1414 ifend1414: %t6673 = load ptr, ptr %t1 - %t6674 = call i32 @lp_str_eq(ptr %t6673, ptr @.str7202) + %t6674 = call i32 @lp_str_eq(ptr %t6673, ptr @.str7205) %t6675 = icmp ne i32 %t6674, 0 br i1 %t6675, label %then1415, label %ifend1417 then1415: - store ptr @.str7203, ptr %t380 + store ptr @.str7206, ptr %t380 br label %ifend1417 ifend1417: %t6676 = load ptr, ptr %t1 - %t6677 = call i32 @lp_str_eq(ptr %t6676, ptr @.str7204) + %t6677 = call i32 @lp_str_eq(ptr %t6676, ptr @.str7207) %t6678 = icmp ne i32 %t6677, 0 br i1 %t6678, label %then1418, label %ifend1420 then1418: - store ptr @.str7205, ptr %t380 + store ptr @.str7208, ptr %t380 br label %ifend1420 ifend1420: %t6679 = load ptr, ptr %t1 - %t6680 = call i32 @lp_str_eq(ptr %t6679, ptr @.str7206) + %t6680 = call i32 @lp_str_eq(ptr %t6679, ptr @.str7209) %t6681 = icmp ne i32 %t6680, 0 br i1 %t6681, label %then1421, label %ifend1423 then1421: - store ptr @.str7207, ptr %t380 + store ptr @.str7210, ptr %t380 br label %ifend1423 ifend1423: br label %ifend1399 ifend1399: %t6682 = load ptr, ptr %t0 - %t6683 = call i32 @lp_str_eq(ptr %t6682, ptr @.str7208) + %t6683 = call i32 @lp_str_eq(ptr %t6682, ptr @.str7211) %t6684 = icmp ne i32 %t6683, 0 br i1 %t6684, label %then1424, label %ifend1426 then1424: %t6685 = load ptr, ptr %t1 - %t6686 = call i32 @lp_str_eq(ptr %t6685, ptr @.str7209) + %t6686 = call i32 @lp_str_eq(ptr %t6685, ptr @.str7212) %t6687 = icmp ne i32 %t6686, 0 br i1 %t6687, label %then1427, label %ifend1429 then1427: - store ptr @.str7210, ptr %t380 + store ptr @.str7213, ptr %t380 br label %ifend1429 ifend1429: %t6688 = load ptr, ptr %t1 - %t6689 = call i32 @lp_str_eq(ptr %t6688, ptr @.str7211) + %t6689 = call i32 @lp_str_eq(ptr %t6688, ptr @.str7214) %t6690 = icmp ne i32 %t6689, 0 br i1 %t6690, label %then1430, label %ifend1432 then1430: - store ptr @.str7212, ptr %t380 + store ptr @.str7215, ptr %t380 br label %ifend1432 ifend1432: br label %ifend1426 ifend1426: %t6691 = load ptr, ptr %t0 - %t6692 = call i32 @lp_str_eq(ptr %t6691, ptr @.str7213) + %t6692 = call i32 @lp_str_eq(ptr %t6691, ptr @.str7216) %t6693 = icmp ne i32 %t6692, 0 br i1 %t6693, label %then1433, label %ifend1435 then1433: %t6694 = load ptr, ptr %t1 - %t6695 = call i32 @lp_str_eq(ptr %t6694, ptr @.str7214) + %t6695 = call i32 @lp_str_eq(ptr %t6694, ptr @.str7217) %t6696 = icmp ne i32 %t6695, 0 br i1 %t6696, label %then1436, label %ifend1438 then1436: - store ptr @.str7215, ptr %t380 + store ptr @.str7218, ptr %t380 %t6697 = load ptr, ptr %t387 %t6698 = getelementptr inbounds %LSlice, ptr %t6697, i32 0, i32 1 %t6699 = getelementptr inbounds %LSlice, ptr %t6697, i32 0, i32 2 @@ -74302,17 +74359,17 @@ grow1439: put1440: %t6713 = load ptr, ptr %t6700 %t6714 = getelementptr inbounds ptr, ptr %t6713, i32 %t6701 - store ptr @.str7216, ptr %t6714 + store ptr @.str7219, ptr %t6714 %t6715 = add i32 %t6701, 1 store i32 %t6715, ptr %t6698 br label %ifend1438 ifend1438: %t6716 = load ptr, ptr %t1 - %t6717 = call i32 @lp_str_eq(ptr %t6716, ptr @.str7217) + %t6717 = call i32 @lp_str_eq(ptr %t6716, ptr @.str7220) %t6718 = icmp ne i32 %t6717, 0 br i1 %t6718, label %then1441, label %ifend1443 then1441: - store ptr @.str7218, ptr %t380 + store ptr @.str7221, ptr %t380 %t6719 = load ptr, ptr %t387 %t6720 = getelementptr inbounds %LSlice, ptr %t6719, i32 0, i32 1 %t6721 = getelementptr inbounds %LSlice, ptr %t6719, i32 0, i32 2 @@ -74337,17 +74394,17 @@ grow1444: put1445: %t6735 = load ptr, ptr %t6722 %t6736 = getelementptr inbounds ptr, ptr %t6735, i32 %t6723 - store ptr @.str7219, ptr %t6736 + store ptr @.str7222, ptr %t6736 %t6737 = add i32 %t6723, 1 store i32 %t6737, ptr %t6720 br label %ifend1443 ifend1443: %t6738 = load ptr, ptr %t1 - %t6739 = call i32 @lp_str_eq(ptr %t6738, ptr @.str7220) + %t6739 = call i32 @lp_str_eq(ptr %t6738, ptr @.str7223) %t6740 = icmp ne i32 %t6739, 0 br i1 %t6740, label %then1446, label %ifend1448 then1446: - store ptr @.str7221, ptr %t380 + store ptr @.str7224, ptr %t380 %t6741 = load ptr, ptr %t387 %t6742 = getelementptr inbounds %LSlice, ptr %t6741, i32 0, i32 1 %t6743 = getelementptr inbounds %LSlice, ptr %t6741, i32 0, i32 2 @@ -74372,7 +74429,7 @@ grow1449: put1450: %t6757 = load ptr, ptr %t6744 %t6758 = getelementptr inbounds ptr, ptr %t6757, i32 %t6745 - store ptr @.str7222, ptr %t6758 + store ptr @.str7225, ptr %t6758 %t6759 = add i32 %t6745, 1 store i32 %t6759, ptr %t6742 %t6760 = load ptr, ptr %t387 @@ -74399,17 +74456,17 @@ grow1451: put1452: %t6776 = load ptr, ptr %t6763 %t6777 = getelementptr inbounds ptr, ptr %t6776, i32 %t6764 - store ptr @.str7223, ptr %t6777 + store ptr @.str7226, ptr %t6777 %t6778 = add i32 %t6764, 1 store i32 %t6778, ptr %t6761 br label %ifend1448 ifend1448: %t6779 = load ptr, ptr %t1 - %t6780 = call i32 @lp_str_eq(ptr %t6779, ptr @.str7224) + %t6780 = call i32 @lp_str_eq(ptr %t6779, ptr @.str7227) %t6781 = icmp ne i32 %t6780, 0 br i1 %t6781, label %then1453, label %ifend1455 then1453: - store ptr @.str7225, ptr %t380 + store ptr @.str7228, ptr %t380 %t6782 = load ptr, ptr %t387 %t6783 = getelementptr inbounds %LSlice, ptr %t6782, i32 0, i32 1 %t6784 = getelementptr inbounds %LSlice, ptr %t6782, i32 0, i32 2 @@ -74434,7 +74491,7 @@ grow1456: put1457: %t6798 = load ptr, ptr %t6785 %t6799 = getelementptr inbounds ptr, ptr %t6798, i32 %t6786 - store ptr @.str7226, ptr %t6799 + store ptr @.str7229, ptr %t6799 %t6800 = add i32 %t6786, 1 store i32 %t6800, ptr %t6783 %t6801 = load ptr, ptr %t387 @@ -74461,17 +74518,17 @@ grow1458: put1459: %t6817 = load ptr, ptr %t6804 %t6818 = getelementptr inbounds ptr, ptr %t6817, i32 %t6805 - store ptr @.str7227, ptr %t6818 + store ptr @.str7230, ptr %t6818 %t6819 = add i32 %t6805, 1 store i32 %t6819, ptr %t6802 br label %ifend1455 ifend1455: %t6820 = load ptr, ptr %t1 - %t6821 = call i32 @lp_str_eq(ptr %t6820, ptr @.str7228) + %t6821 = call i32 @lp_str_eq(ptr %t6820, ptr @.str7231) %t6822 = icmp ne i32 %t6821, 0 br i1 %t6822, label %then1460, label %ifend1462 then1460: - store ptr @.str7229, ptr %t380 + store ptr @.str7232, ptr %t380 %t6823 = load ptr, ptr %t387 %t6824 = getelementptr inbounds %LSlice, ptr %t6823, i32 0, i32 1 %t6825 = getelementptr inbounds %LSlice, ptr %t6823, i32 0, i32 2 @@ -74496,7 +74553,7 @@ grow1463: put1464: %t6839 = load ptr, ptr %t6826 %t6840 = getelementptr inbounds ptr, ptr %t6839, i32 %t6827 - store ptr @.str7230, ptr %t6840 + store ptr @.str7233, ptr %t6840 %t6841 = add i32 %t6827, 1 store i32 %t6841, ptr %t6824 %t6842 = load ptr, ptr %t387 @@ -74523,17 +74580,17 @@ grow1465: put1466: %t6858 = load ptr, ptr %t6845 %t6859 = getelementptr inbounds ptr, ptr %t6858, i32 %t6846 - store ptr @.str7231, ptr %t6859 + store ptr @.str7234, ptr %t6859 %t6860 = add i32 %t6846, 1 store i32 %t6860, ptr %t6843 br label %ifend1462 ifend1462: %t6861 = load ptr, ptr %t1 - %t6862 = call i32 @lp_str_eq(ptr %t6861, ptr @.str7232) + %t6862 = call i32 @lp_str_eq(ptr %t6861, ptr @.str7235) %t6863 = icmp ne i32 %t6862, 0 br i1 %t6863, label %then1467, label %ifend1469 then1467: - store ptr @.str7233, ptr %t380 + store ptr @.str7236, ptr %t380 %t6864 = load ptr, ptr %t387 %t6865 = getelementptr inbounds %LSlice, ptr %t6864, i32 0, i32 1 %t6866 = getelementptr inbounds %LSlice, ptr %t6864, i32 0, i32 2 @@ -74558,7 +74615,7 @@ grow1470: put1471: %t6880 = load ptr, ptr %t6867 %t6881 = getelementptr inbounds ptr, ptr %t6880, i32 %t6868 - store ptr @.str7234, ptr %t6881 + store ptr @.str7237, ptr %t6881 %t6882 = add i32 %t6868, 1 store i32 %t6882, ptr %t6865 %t6883 = load ptr, ptr %t387 @@ -74585,17 +74642,17 @@ grow1472: put1473: %t6899 = load ptr, ptr %t6886 %t6900 = getelementptr inbounds ptr, ptr %t6899, i32 %t6887 - store ptr @.str7235, ptr %t6900 + store ptr @.str7238, ptr %t6900 %t6901 = add i32 %t6887, 1 store i32 %t6901, ptr %t6884 br label %ifend1469 ifend1469: %t6902 = load ptr, ptr %t1 - %t6903 = call i32 @lp_str_eq(ptr %t6902, ptr @.str7236) + %t6903 = call i32 @lp_str_eq(ptr %t6902, ptr @.str7239) %t6904 = icmp ne i32 %t6903, 0 br i1 %t6904, label %then1474, label %ifend1476 then1474: - store ptr @.str7237, ptr %t380 + store ptr @.str7240, ptr %t380 %t6905 = load ptr, ptr %t387 %t6906 = getelementptr inbounds %LSlice, ptr %t6905, i32 0, i32 1 %t6907 = getelementptr inbounds %LSlice, ptr %t6905, i32 0, i32 2 @@ -74620,7 +74677,7 @@ grow1477: put1478: %t6921 = load ptr, ptr %t6908 %t6922 = getelementptr inbounds ptr, ptr %t6921, i32 %t6909 - store ptr @.str7238, ptr %t6922 + store ptr @.str7241, ptr %t6922 %t6923 = add i32 %t6909, 1 store i32 %t6923, ptr %t6906 %t6924 = load ptr, ptr %t387 @@ -74647,7 +74704,7 @@ grow1479: put1480: %t6940 = load ptr, ptr %t6927 %t6941 = getelementptr inbounds ptr, ptr %t6940, i32 %t6928 - store ptr @.str7239, ptr %t6941 + store ptr @.str7242, ptr %t6941 %t6942 = add i32 %t6928, 1 store i32 %t6942, ptr %t6925 %t6943 = load ptr, ptr %t387 @@ -74674,17 +74731,17 @@ grow1481: put1482: %t6959 = load ptr, ptr %t6946 %t6960 = getelementptr inbounds ptr, ptr %t6959, i32 %t6947 - store ptr @.str7240, ptr %t6960 + store ptr @.str7243, ptr %t6960 %t6961 = add i32 %t6947, 1 store i32 %t6961, ptr %t6944 br label %ifend1476 ifend1476: %t6962 = load ptr, ptr %t1 - %t6963 = call i32 @lp_str_eq(ptr %t6962, ptr @.str7241) + %t6963 = call i32 @lp_str_eq(ptr %t6962, ptr @.str7244) %t6964 = icmp ne i32 %t6963, 0 br i1 %t6964, label %then1483, label %ifend1485 then1483: - store ptr @.str7242, ptr %t380 + store ptr @.str7245, ptr %t380 %t6965 = load ptr, ptr %t387 %t6966 = getelementptr inbounds %LSlice, ptr %t6965, i32 0, i32 1 %t6967 = getelementptr inbounds %LSlice, ptr %t6965, i32 0, i32 2 @@ -74709,7 +74766,7 @@ grow1486: put1487: %t6981 = load ptr, ptr %t6968 %t6982 = getelementptr inbounds ptr, ptr %t6981, i32 %t6969 - store ptr @.str7243, ptr %t6982 + store ptr @.str7246, ptr %t6982 %t6983 = add i32 %t6969, 1 store i32 %t6983, ptr %t6966 %t6984 = load ptr, ptr %t387 @@ -74736,7 +74793,7 @@ grow1488: put1489: %t7000 = load ptr, ptr %t6987 %t7001 = getelementptr inbounds ptr, ptr %t7000, i32 %t6988 - store ptr @.str7244, ptr %t7001 + store ptr @.str7247, ptr %t7001 %t7002 = add i32 %t6988, 1 store i32 %t7002, ptr %t6985 %t7003 = load ptr, ptr %t387 @@ -74763,17 +74820,17 @@ grow1490: put1491: %t7019 = load ptr, ptr %t7006 %t7020 = getelementptr inbounds ptr, ptr %t7019, i32 %t7007 - store ptr @.str7245, ptr %t7020 + store ptr @.str7248, ptr %t7020 %t7021 = add i32 %t7007, 1 store i32 %t7021, ptr %t7004 br label %ifend1485 ifend1485: %t7022 = load ptr, ptr %t1 - %t7023 = call i32 @lp_str_eq(ptr %t7022, ptr @.str7246) + %t7023 = call i32 @lp_str_eq(ptr %t7022, ptr @.str7249) %t7024 = icmp ne i32 %t7023, 0 br i1 %t7024, label %then1492, label %ifend1494 then1492: - store ptr @.str7247, ptr %t380 + store ptr @.str7250, ptr %t380 %t7025 = load ptr, ptr %t387 %t7026 = getelementptr inbounds %LSlice, ptr %t7025, i32 0, i32 1 %t7027 = getelementptr inbounds %LSlice, ptr %t7025, i32 0, i32 2 @@ -74798,7 +74855,7 @@ grow1495: put1496: %t7041 = load ptr, ptr %t7028 %t7042 = getelementptr inbounds ptr, ptr %t7041, i32 %t7029 - store ptr @.str7248, ptr %t7042 + store ptr @.str7251, ptr %t7042 %t7043 = add i32 %t7029, 1 store i32 %t7043, ptr %t7026 %t7044 = load ptr, ptr %t387 @@ -74825,17 +74882,17 @@ grow1497: put1498: %t7060 = load ptr, ptr %t7047 %t7061 = getelementptr inbounds ptr, ptr %t7060, i32 %t7048 - store ptr @.str7249, ptr %t7061 + store ptr @.str7252, ptr %t7061 %t7062 = add i32 %t7048, 1 store i32 %t7062, ptr %t7045 br label %ifend1494 ifend1494: %t7063 = load ptr, ptr %t1 - %t7064 = call i32 @lp_str_eq(ptr %t7063, ptr @.str7250) + %t7064 = call i32 @lp_str_eq(ptr %t7063, ptr @.str7253) %t7065 = icmp ne i32 %t7064, 0 br i1 %t7065, label %then1499, label %ifend1501 then1499: - store ptr @.str7251, ptr %t380 + store ptr @.str7254, ptr %t380 %t7066 = load ptr, ptr %t387 %t7067 = getelementptr inbounds %LSlice, ptr %t7066, i32 0, i32 1 %t7068 = getelementptr inbounds %LSlice, ptr %t7066, i32 0, i32 2 @@ -74860,17 +74917,17 @@ grow1502: put1503: %t7082 = load ptr, ptr %t7069 %t7083 = getelementptr inbounds ptr, ptr %t7082, i32 %t7070 - store ptr @.str7252, ptr %t7083 + store ptr @.str7255, ptr %t7083 %t7084 = add i32 %t7070, 1 store i32 %t7084, ptr %t7067 br label %ifend1501 ifend1501: %t7085 = load ptr, ptr %t1 - %t7086 = call i32 @lp_str_eq(ptr %t7085, ptr @.str7253) + %t7086 = call i32 @lp_str_eq(ptr %t7085, ptr @.str7256) %t7087 = icmp ne i32 %t7086, 0 br i1 %t7087, label %then1504, label %ifend1506 then1504: - store ptr @.str7254, ptr %t380 + store ptr @.str7257, ptr %t380 %t7088 = load ptr, ptr %t387 %t7089 = getelementptr inbounds %LSlice, ptr %t7088, i32 0, i32 1 %t7090 = getelementptr inbounds %LSlice, ptr %t7088, i32 0, i32 2 @@ -74895,7 +74952,7 @@ grow1507: put1508: %t7104 = load ptr, ptr %t7091 %t7105 = getelementptr inbounds ptr, ptr %t7104, i32 %t7092 - store ptr @.str7255, ptr %t7105 + store ptr @.str7258, ptr %t7105 %t7106 = add i32 %t7092, 1 store i32 %t7106, ptr %t7089 %t7107 = load ptr, ptr %t387 @@ -74922,17 +74979,17 @@ grow1509: put1510: %t7123 = load ptr, ptr %t7110 %t7124 = getelementptr inbounds ptr, ptr %t7123, i32 %t7111 - store ptr @.str7256, ptr %t7124 + store ptr @.str7259, ptr %t7124 %t7125 = add i32 %t7111, 1 store i32 %t7125, ptr %t7108 br label %ifend1506 ifend1506: %t7126 = load ptr, ptr %t1 - %t7127 = call i32 @lp_str_eq(ptr %t7126, ptr @.str7257) + %t7127 = call i32 @lp_str_eq(ptr %t7126, ptr @.str7260) %t7128 = icmp ne i32 %t7127, 0 br i1 %t7128, label %then1511, label %ifend1513 then1511: - store ptr @.str7258, ptr %t380 + store ptr @.str7261, ptr %t380 %t7129 = load ptr, ptr %t387 %t7130 = getelementptr inbounds %LSlice, ptr %t7129, i32 0, i32 1 %t7131 = getelementptr inbounds %LSlice, ptr %t7129, i32 0, i32 2 @@ -74957,7 +75014,7 @@ grow1514: put1515: %t7145 = load ptr, ptr %t7132 %t7146 = getelementptr inbounds ptr, ptr %t7145, i32 %t7133 - store ptr @.str7259, ptr %t7146 + store ptr @.str7262, ptr %t7146 %t7147 = add i32 %t7133, 1 store i32 %t7147, ptr %t7130 %t7148 = load ptr, ptr %t387 @@ -74984,17 +75041,17 @@ grow1516: put1517: %t7164 = load ptr, ptr %t7151 %t7165 = getelementptr inbounds ptr, ptr %t7164, i32 %t7152 - store ptr @.str7260, ptr %t7165 + store ptr @.str7263, ptr %t7165 %t7166 = add i32 %t7152, 1 store i32 %t7166, ptr %t7149 br label %ifend1513 ifend1513: %t7167 = load ptr, ptr %t1 - %t7168 = call i32 @lp_str_eq(ptr %t7167, ptr @.str7261) + %t7168 = call i32 @lp_str_eq(ptr %t7167, ptr @.str7264) %t7169 = icmp ne i32 %t7168, 0 br i1 %t7169, label %then1518, label %ifend1520 then1518: - store ptr @.str7262, ptr %t380 + store ptr @.str7265, ptr %t380 %t7170 = load ptr, ptr %t387 %t7171 = getelementptr inbounds %LSlice, ptr %t7170, i32 0, i32 1 %t7172 = getelementptr inbounds %LSlice, ptr %t7170, i32 0, i32 2 @@ -75019,7 +75076,7 @@ grow1521: put1522: %t7186 = load ptr, ptr %t7173 %t7187 = getelementptr inbounds ptr, ptr %t7186, i32 %t7174 - store ptr @.str7263, ptr %t7187 + store ptr @.str7266, ptr %t7187 %t7188 = add i32 %t7174, 1 store i32 %t7188, ptr %t7171 br label %ifend1520 @@ -75027,16 +75084,16 @@ ifend1520: br label %ifend1435 ifend1435: %t7189 = load ptr, ptr %t0 - %t7190 = call i32 @lp_str_eq(ptr %t7189, ptr @.str7264) + %t7190 = call i32 @lp_str_eq(ptr %t7189, ptr @.str7267) %t7191 = icmp ne i32 %t7190, 0 br i1 %t7191, label %then1523, label %ifend1525 then1523: %t7192 = load ptr, ptr %t1 - %t7193 = call i32 @lp_str_eq(ptr %t7192, ptr @.str7265) + %t7193 = call i32 @lp_str_eq(ptr %t7192, ptr @.str7268) %t7194 = icmp ne i32 %t7193, 0 br i1 %t7194, label %then1526, label %ifend1528 then1526: - store ptr @.str7266, ptr %t380 + store ptr @.str7269, ptr %t380 %t7195 = load ptr, ptr %t387 %t7196 = getelementptr inbounds %LSlice, ptr %t7195, i32 0, i32 1 %t7197 = getelementptr inbounds %LSlice, ptr %t7195, i32 0, i32 2 @@ -75061,17 +75118,17 @@ grow1529: put1530: %t7211 = load ptr, ptr %t7198 %t7212 = getelementptr inbounds ptr, ptr %t7211, i32 %t7199 - store ptr @.str7267, ptr %t7212 + store ptr @.str7270, ptr %t7212 %t7213 = add i32 %t7199, 1 store i32 %t7213, ptr %t7196 br label %ifend1528 ifend1528: %t7214 = load ptr, ptr %t1 - %t7215 = call i32 @lp_str_eq(ptr %t7214, ptr @.str7268) + %t7215 = call i32 @lp_str_eq(ptr %t7214, ptr @.str7271) %t7216 = icmp ne i32 %t7215, 0 br i1 %t7216, label %then1531, label %ifend1533 then1531: - store ptr @.str7269, ptr %t380 + store ptr @.str7272, ptr %t380 %t7217 = load ptr, ptr %t387 %t7218 = getelementptr inbounds %LSlice, ptr %t7217, i32 0, i32 1 %t7219 = getelementptr inbounds %LSlice, ptr %t7217, i32 0, i32 2 @@ -75096,17 +75153,17 @@ grow1534: put1535: %t7233 = load ptr, ptr %t7220 %t7234 = getelementptr inbounds ptr, ptr %t7233, i32 %t7221 - store ptr @.str7270, ptr %t7234 + store ptr @.str7273, ptr %t7234 %t7235 = add i32 %t7221, 1 store i32 %t7235, ptr %t7218 br label %ifend1533 ifend1533: %t7236 = load ptr, ptr %t1 - %t7237 = call i32 @lp_str_eq(ptr %t7236, ptr @.str7271) + %t7237 = call i32 @lp_str_eq(ptr %t7236, ptr @.str7274) %t7238 = icmp ne i32 %t7237, 0 br i1 %t7238, label %then1536, label %ifend1538 then1536: - store ptr @.str7272, ptr %t380 + store ptr @.str7275, ptr %t380 %t7239 = load ptr, ptr %t387 %t7240 = getelementptr inbounds %LSlice, ptr %t7239, i32 0, i32 1 %t7241 = getelementptr inbounds %LSlice, ptr %t7239, i32 0, i32 2 @@ -75131,7 +75188,7 @@ grow1539: put1540: %t7255 = load ptr, ptr %t7242 %t7256 = getelementptr inbounds ptr, ptr %t7255, i32 %t7243 - store ptr @.str7273, ptr %t7256 + store ptr @.str7276, ptr %t7256 %t7257 = add i32 %t7243, 1 store i32 %t7257, ptr %t7240 %t7258 = load ptr, ptr %t387 @@ -75158,17 +75215,17 @@ grow1541: put1542: %t7274 = load ptr, ptr %t7261 %t7275 = getelementptr inbounds ptr, ptr %t7274, i32 %t7262 - store ptr @.str7274, ptr %t7275 + store ptr @.str7277, ptr %t7275 %t7276 = add i32 %t7262, 1 store i32 %t7276, ptr %t7259 br label %ifend1538 ifend1538: %t7277 = load ptr, ptr %t1 - %t7278 = call i32 @lp_str_eq(ptr %t7277, ptr @.str7275) + %t7278 = call i32 @lp_str_eq(ptr %t7277, ptr @.str7278) %t7279 = icmp ne i32 %t7278, 0 br i1 %t7279, label %then1543, label %ifend1545 then1543: - store ptr @.str7276, ptr %t380 + store ptr @.str7279, ptr %t380 %t7280 = load ptr, ptr %t387 %t7281 = getelementptr inbounds %LSlice, ptr %t7280, i32 0, i32 1 %t7282 = getelementptr inbounds %LSlice, ptr %t7280, i32 0, i32 2 @@ -75193,7 +75250,7 @@ grow1546: put1547: %t7296 = load ptr, ptr %t7283 %t7297 = getelementptr inbounds ptr, ptr %t7296, i32 %t7284 - store ptr @.str7277, ptr %t7297 + store ptr @.str7280, ptr %t7297 %t7298 = add i32 %t7284, 1 store i32 %t7298, ptr %t7281 %t7299 = load ptr, ptr %t387 @@ -75220,17 +75277,17 @@ grow1548: put1549: %t7315 = load ptr, ptr %t7302 %t7316 = getelementptr inbounds ptr, ptr %t7315, i32 %t7303 - store ptr @.str7278, ptr %t7316 + store ptr @.str7281, ptr %t7316 %t7317 = add i32 %t7303, 1 store i32 %t7317, ptr %t7300 br label %ifend1545 ifend1545: %t7318 = load ptr, ptr %t1 - %t7319 = call i32 @lp_str_eq(ptr %t7318, ptr @.str7279) + %t7319 = call i32 @lp_str_eq(ptr %t7318, ptr @.str7282) %t7320 = icmp ne i32 %t7319, 0 br i1 %t7320, label %then1550, label %ifend1552 then1550: - store ptr @.str7280, ptr %t380 + store ptr @.str7283, ptr %t380 %t7321 = load ptr, ptr %t387 %t7322 = getelementptr inbounds %LSlice, ptr %t7321, i32 0, i32 1 %t7323 = getelementptr inbounds %LSlice, ptr %t7321, i32 0, i32 2 @@ -75255,7 +75312,7 @@ grow1553: put1554: %t7337 = load ptr, ptr %t7324 %t7338 = getelementptr inbounds ptr, ptr %t7337, i32 %t7325 - store ptr @.str7281, ptr %t7338 + store ptr @.str7284, ptr %t7338 %t7339 = add i32 %t7325, 1 store i32 %t7339, ptr %t7322 %t7340 = load ptr, ptr %t387 @@ -75282,17 +75339,17 @@ grow1555: put1556: %t7356 = load ptr, ptr %t7343 %t7357 = getelementptr inbounds ptr, ptr %t7356, i32 %t7344 - store ptr @.str7282, ptr %t7357 + store ptr @.str7285, ptr %t7357 %t7358 = add i32 %t7344, 1 store i32 %t7358, ptr %t7341 br label %ifend1552 ifend1552: %t7359 = load ptr, ptr %t1 - %t7360 = call i32 @lp_str_eq(ptr %t7359, ptr @.str7283) + %t7360 = call i32 @lp_str_eq(ptr %t7359, ptr @.str7286) %t7361 = icmp ne i32 %t7360, 0 br i1 %t7361, label %then1557, label %ifend1559 then1557: - store ptr @.str7284, ptr %t380 + store ptr @.str7287, ptr %t380 %t7362 = load ptr, ptr %t387 %t7363 = getelementptr inbounds %LSlice, ptr %t7362, i32 0, i32 1 %t7364 = getelementptr inbounds %LSlice, ptr %t7362, i32 0, i32 2 @@ -75317,17 +75374,17 @@ grow1560: put1561: %t7378 = load ptr, ptr %t7365 %t7379 = getelementptr inbounds ptr, ptr %t7378, i32 %t7366 - store ptr @.str7285, ptr %t7379 + store ptr @.str7288, ptr %t7379 %t7380 = add i32 %t7366, 1 store i32 %t7380, ptr %t7363 br label %ifend1559 ifend1559: %t7381 = load ptr, ptr %t1 - %t7382 = call i32 @lp_str_eq(ptr %t7381, ptr @.str7286) + %t7382 = call i32 @lp_str_eq(ptr %t7381, ptr @.str7289) %t7383 = icmp ne i32 %t7382, 0 br i1 %t7383, label %then1562, label %ifend1564 then1562: - store ptr @.str7287, ptr %t380 + store ptr @.str7290, ptr %t380 %t7384 = load ptr, ptr %t387 %t7385 = getelementptr inbounds %LSlice, ptr %t7384, i32 0, i32 1 %t7386 = getelementptr inbounds %LSlice, ptr %t7384, i32 0, i32 2 @@ -75352,7 +75409,7 @@ grow1565: put1566: %t7400 = load ptr, ptr %t7387 %t7401 = getelementptr inbounds ptr, ptr %t7400, i32 %t7388 - store ptr @.str7288, ptr %t7401 + store ptr @.str7291, ptr %t7401 %t7402 = add i32 %t7388, 1 store i32 %t7402, ptr %t7385 %t7403 = load ptr, ptr %t387 @@ -75379,17 +75436,17 @@ grow1567: put1568: %t7419 = load ptr, ptr %t7406 %t7420 = getelementptr inbounds ptr, ptr %t7419, i32 %t7407 - store ptr @.str7289, ptr %t7420 + store ptr @.str7292, ptr %t7420 %t7421 = add i32 %t7407, 1 store i32 %t7421, ptr %t7404 br label %ifend1564 ifend1564: %t7422 = load ptr, ptr %t1 - %t7423 = call i32 @lp_str_eq(ptr %t7422, ptr @.str7290) + %t7423 = call i32 @lp_str_eq(ptr %t7422, ptr @.str7293) %t7424 = icmp ne i32 %t7423, 0 br i1 %t7424, label %then1569, label %ifend1571 then1569: - store ptr @.str7291, ptr %t380 + store ptr @.str7294, ptr %t380 %t7425 = load ptr, ptr %t387 %t7426 = getelementptr inbounds %LSlice, ptr %t7425, i32 0, i32 1 %t7427 = getelementptr inbounds %LSlice, ptr %t7425, i32 0, i32 2 @@ -75414,7 +75471,7 @@ grow1572: put1573: %t7441 = load ptr, ptr %t7428 %t7442 = getelementptr inbounds ptr, ptr %t7441, i32 %t7429 - store ptr @.str7292, ptr %t7442 + store ptr @.str7295, ptr %t7442 %t7443 = add i32 %t7429, 1 store i32 %t7443, ptr %t7426 %t7444 = load ptr, ptr %t387 @@ -75441,17 +75498,17 @@ grow1574: put1575: %t7460 = load ptr, ptr %t7447 %t7461 = getelementptr inbounds ptr, ptr %t7460, i32 %t7448 - store ptr @.str7293, ptr %t7461 + store ptr @.str7296, ptr %t7461 %t7462 = add i32 %t7448, 1 store i32 %t7462, ptr %t7445 br label %ifend1571 ifend1571: %t7463 = load ptr, ptr %t1 - %t7464 = call i32 @lp_str_eq(ptr %t7463, ptr @.str7294) + %t7464 = call i32 @lp_str_eq(ptr %t7463, ptr @.str7297) %t7465 = icmp ne i32 %t7464, 0 br i1 %t7465, label %then1576, label %ifend1578 then1576: - store ptr @.str7295, ptr %t380 + store ptr @.str7298, ptr %t380 %t7466 = load ptr, ptr %t387 %t7467 = getelementptr inbounds %LSlice, ptr %t7466, i32 0, i32 1 %t7468 = getelementptr inbounds %LSlice, ptr %t7466, i32 0, i32 2 @@ -75476,7 +75533,7 @@ grow1579: put1580: %t7482 = load ptr, ptr %t7469 %t7483 = getelementptr inbounds ptr, ptr %t7482, i32 %t7470 - store ptr @.str7296, ptr %t7483 + store ptr @.str7299, ptr %t7483 %t7484 = add i32 %t7470, 1 store i32 %t7484, ptr %t7467 %t7485 = load ptr, ptr %t387 @@ -75503,17 +75560,17 @@ grow1581: put1582: %t7501 = load ptr, ptr %t7488 %t7502 = getelementptr inbounds ptr, ptr %t7501, i32 %t7489 - store ptr @.str7297, ptr %t7502 + store ptr @.str7300, ptr %t7502 %t7503 = add i32 %t7489, 1 store i32 %t7503, ptr %t7486 br label %ifend1578 ifend1578: %t7504 = load ptr, ptr %t1 - %t7505 = call i32 @lp_str_eq(ptr %t7504, ptr @.str7298) + %t7505 = call i32 @lp_str_eq(ptr %t7504, ptr @.str7301) %t7506 = icmp ne i32 %t7505, 0 br i1 %t7506, label %then1583, label %ifend1585 then1583: - store ptr @.str7299, ptr %t380 + store ptr @.str7302, ptr %t380 %t7507 = load ptr, ptr %t387 %t7508 = getelementptr inbounds %LSlice, ptr %t7507, i32 0, i32 1 %t7509 = getelementptr inbounds %LSlice, ptr %t7507, i32 0, i32 2 @@ -75538,7 +75595,7 @@ grow1586: put1587: %t7523 = load ptr, ptr %t7510 %t7524 = getelementptr inbounds ptr, ptr %t7523, i32 %t7511 - store ptr @.str7300, ptr %t7524 + store ptr @.str7303, ptr %t7524 %t7525 = add i32 %t7511, 1 store i32 %t7525, ptr %t7508 %t7526 = load ptr, ptr %t387 @@ -75565,17 +75622,17 @@ grow1588: put1589: %t7542 = load ptr, ptr %t7529 %t7543 = getelementptr inbounds ptr, ptr %t7542, i32 %t7530 - store ptr @.str7301, ptr %t7543 + store ptr @.str7304, ptr %t7543 %t7544 = add i32 %t7530, 1 store i32 %t7544, ptr %t7527 br label %ifend1585 ifend1585: %t7545 = load ptr, ptr %t1 - %t7546 = call i32 @lp_str_eq(ptr %t7545, ptr @.str7302) + %t7546 = call i32 @lp_str_eq(ptr %t7545, ptr @.str7305) %t7547 = icmp ne i32 %t7546, 0 br i1 %t7547, label %then1590, label %ifend1592 then1590: - store ptr @.str7303, ptr %t380 + store ptr @.str7306, ptr %t380 %t7548 = load ptr, ptr %t387 %t7549 = getelementptr inbounds %LSlice, ptr %t7548, i32 0, i32 1 %t7550 = getelementptr inbounds %LSlice, ptr %t7548, i32 0, i32 2 @@ -75600,7 +75657,7 @@ grow1593: put1594: %t7564 = load ptr, ptr %t7551 %t7565 = getelementptr inbounds ptr, ptr %t7564, i32 %t7552 - store ptr @.str7304, ptr %t7565 + store ptr @.str7307, ptr %t7565 %t7566 = add i32 %t7552, 1 store i32 %t7566, ptr %t7549 %t7567 = load ptr, ptr %t387 @@ -75627,17 +75684,17 @@ grow1595: put1596: %t7583 = load ptr, ptr %t7570 %t7584 = getelementptr inbounds ptr, ptr %t7583, i32 %t7571 - store ptr @.str7305, ptr %t7584 + store ptr @.str7308, ptr %t7584 %t7585 = add i32 %t7571, 1 store i32 %t7585, ptr %t7568 br label %ifend1592 ifend1592: %t7586 = load ptr, ptr %t1 - %t7587 = call i32 @lp_str_eq(ptr %t7586, ptr @.str7306) + %t7587 = call i32 @lp_str_eq(ptr %t7586, ptr @.str7309) %t7588 = icmp ne i32 %t7587, 0 br i1 %t7588, label %then1597, label %ifend1599 then1597: - store ptr @.str7307, ptr %t380 + store ptr @.str7310, ptr %t380 %t7589 = load ptr, ptr %t387 %t7590 = getelementptr inbounds %LSlice, ptr %t7589, i32 0, i32 1 %t7591 = getelementptr inbounds %LSlice, ptr %t7589, i32 0, i32 2 @@ -75662,17 +75719,17 @@ grow1600: put1601: %t7605 = load ptr, ptr %t7592 %t7606 = getelementptr inbounds ptr, ptr %t7605, i32 %t7593 - store ptr @.str7308, ptr %t7606 + store ptr @.str7311, ptr %t7606 %t7607 = add i32 %t7593, 1 store i32 %t7607, ptr %t7590 br label %ifend1599 ifend1599: %t7608 = load ptr, ptr %t1 - %t7609 = call i32 @lp_str_eq(ptr %t7608, ptr @.str7309) + %t7609 = call i32 @lp_str_eq(ptr %t7608, ptr @.str7312) %t7610 = icmp ne i32 %t7609, 0 br i1 %t7610, label %then1602, label %ifend1604 then1602: - store ptr @.str7310, ptr %t380 + store ptr @.str7313, ptr %t380 %t7611 = load ptr, ptr %t387 %t7612 = getelementptr inbounds %LSlice, ptr %t7611, i32 0, i32 1 %t7613 = getelementptr inbounds %LSlice, ptr %t7611, i32 0, i32 2 @@ -75697,17 +75754,17 @@ grow1605: put1606: %t7627 = load ptr, ptr %t7614 %t7628 = getelementptr inbounds ptr, ptr %t7627, i32 %t7615 - store ptr @.str7311, ptr %t7628 + store ptr @.str7314, ptr %t7628 %t7629 = add i32 %t7615, 1 store i32 %t7629, ptr %t7612 br label %ifend1604 ifend1604: %t7630 = load ptr, ptr %t1 - %t7631 = call i32 @lp_str_eq(ptr %t7630, ptr @.str7312) + %t7631 = call i32 @lp_str_eq(ptr %t7630, ptr @.str7315) %t7632 = icmp ne i32 %t7631, 0 br i1 %t7632, label %then1607, label %ifend1609 then1607: - store ptr @.str7313, ptr %t380 + store ptr @.str7316, ptr %t380 %t7633 = load ptr, ptr %t387 %t7634 = getelementptr inbounds %LSlice, ptr %t7633, i32 0, i32 1 %t7635 = getelementptr inbounds %LSlice, ptr %t7633, i32 0, i32 2 @@ -75732,7 +75789,7 @@ grow1610: put1611: %t7649 = load ptr, ptr %t7636 %t7650 = getelementptr inbounds ptr, ptr %t7649, i32 %t7637 - store ptr @.str7314, ptr %t7650 + store ptr @.str7317, ptr %t7650 %t7651 = add i32 %t7637, 1 store i32 %t7651, ptr %t7634 br label %ifend1609 @@ -75740,16 +75797,16 @@ ifend1609: br label %ifend1525 ifend1525: %t7652 = load ptr, ptr %t0 - %t7653 = call i32 @lp_str_eq(ptr %t7652, ptr @.str7315) + %t7653 = call i32 @lp_str_eq(ptr %t7652, ptr @.str7318) %t7654 = icmp ne i32 %t7653, 0 br i1 %t7654, label %then1612, label %ifend1614 then1612: %t7655 = load ptr, ptr %t1 - %t7656 = call i32 @lp_str_eq(ptr %t7655, ptr @.str7316) + %t7656 = call i32 @lp_str_eq(ptr %t7655, ptr @.str7319) %t7657 = icmp ne i32 %t7656, 0 br i1 %t7657, label %then1615, label %ifend1617 then1615: - store ptr @.str7317, ptr %t380 + store ptr @.str7320, ptr %t380 %t7658 = load ptr, ptr %t387 %t7659 = getelementptr inbounds %LSlice, ptr %t7658, i32 0, i32 1 %t7660 = getelementptr inbounds %LSlice, ptr %t7658, i32 0, i32 2 @@ -75774,17 +75831,17 @@ grow1618: put1619: %t7674 = load ptr, ptr %t7661 %t7675 = getelementptr inbounds ptr, ptr %t7674, i32 %t7662 - store ptr @.str7318, ptr %t7675 + store ptr @.str7321, ptr %t7675 %t7676 = add i32 %t7662, 1 store i32 %t7676, ptr %t7659 br label %ifend1617 ifend1617: %t7677 = load ptr, ptr %t1 - %t7678 = call i32 @lp_str_eq(ptr %t7677, ptr @.str7319) + %t7678 = call i32 @lp_str_eq(ptr %t7677, ptr @.str7322) %t7679 = icmp ne i32 %t7678, 0 br i1 %t7679, label %then1620, label %ifend1622 then1620: - store ptr @.str7320, ptr %t380 + store ptr @.str7323, ptr %t380 %t7680 = load ptr, ptr %t387 %t7681 = getelementptr inbounds %LSlice, ptr %t7680, i32 0, i32 1 %t7682 = getelementptr inbounds %LSlice, ptr %t7680, i32 0, i32 2 @@ -75809,17 +75866,17 @@ grow1623: put1624: %t7696 = load ptr, ptr %t7683 %t7697 = getelementptr inbounds ptr, ptr %t7696, i32 %t7684 - store ptr @.str7321, ptr %t7697 + store ptr @.str7324, ptr %t7697 %t7698 = add i32 %t7684, 1 store i32 %t7698, ptr %t7681 br label %ifend1622 ifend1622: %t7699 = load ptr, ptr %t1 - %t7700 = call i32 @lp_str_eq(ptr %t7699, ptr @.str7322) + %t7700 = call i32 @lp_str_eq(ptr %t7699, ptr @.str7325) %t7701 = icmp ne i32 %t7700, 0 br i1 %t7701, label %then1625, label %ifend1627 then1625: - store ptr @.str7323, ptr %t380 + store ptr @.str7326, ptr %t380 %t7702 = load ptr, ptr %t387 %t7703 = getelementptr inbounds %LSlice, ptr %t7702, i32 0, i32 1 %t7704 = getelementptr inbounds %LSlice, ptr %t7702, i32 0, i32 2 @@ -75844,7 +75901,7 @@ grow1628: put1629: %t7718 = load ptr, ptr %t7705 %t7719 = getelementptr inbounds ptr, ptr %t7718, i32 %t7706 - store ptr @.str7324, ptr %t7719 + store ptr @.str7327, ptr %t7719 %t7720 = add i32 %t7706, 1 store i32 %t7720, ptr %t7703 %t7721 = load ptr, ptr %t387 @@ -75871,17 +75928,17 @@ grow1630: put1631: %t7737 = load ptr, ptr %t7724 %t7738 = getelementptr inbounds ptr, ptr %t7737, i32 %t7725 - store ptr @.str7325, ptr %t7738 + store ptr @.str7328, ptr %t7738 %t7739 = add i32 %t7725, 1 store i32 %t7739, ptr %t7722 br label %ifend1627 ifend1627: %t7740 = load ptr, ptr %t1 - %t7741 = call i32 @lp_str_eq(ptr %t7740, ptr @.str7326) + %t7741 = call i32 @lp_str_eq(ptr %t7740, ptr @.str7329) %t7742 = icmp ne i32 %t7741, 0 br i1 %t7742, label %then1632, label %ifend1634 then1632: - store ptr @.str7327, ptr %t380 + store ptr @.str7330, ptr %t380 %t7743 = load ptr, ptr %t387 %t7744 = getelementptr inbounds %LSlice, ptr %t7743, i32 0, i32 1 %t7745 = getelementptr inbounds %LSlice, ptr %t7743, i32 0, i32 2 @@ -75906,7 +75963,7 @@ grow1635: put1636: %t7759 = load ptr, ptr %t7746 %t7760 = getelementptr inbounds ptr, ptr %t7759, i32 %t7747 - store ptr @.str7328, ptr %t7760 + store ptr @.str7331, ptr %t7760 %t7761 = add i32 %t7747, 1 store i32 %t7761, ptr %t7744 %t7762 = load ptr, ptr %t387 @@ -75933,17 +75990,17 @@ grow1637: put1638: %t7778 = load ptr, ptr %t7765 %t7779 = getelementptr inbounds ptr, ptr %t7778, i32 %t7766 - store ptr @.str7329, ptr %t7779 + store ptr @.str7332, ptr %t7779 %t7780 = add i32 %t7766, 1 store i32 %t7780, ptr %t7763 br label %ifend1634 ifend1634: %t7781 = load ptr, ptr %t1 - %t7782 = call i32 @lp_str_eq(ptr %t7781, ptr @.str7330) + %t7782 = call i32 @lp_str_eq(ptr %t7781, ptr @.str7333) %t7783 = icmp ne i32 %t7782, 0 br i1 %t7783, label %then1639, label %ifend1641 then1639: - store ptr @.str7331, ptr %t380 + store ptr @.str7334, ptr %t380 %t7784 = load ptr, ptr %t387 %t7785 = getelementptr inbounds %LSlice, ptr %t7784, i32 0, i32 1 %t7786 = getelementptr inbounds %LSlice, ptr %t7784, i32 0, i32 2 @@ -75968,7 +76025,7 @@ grow1642: put1643: %t7800 = load ptr, ptr %t7787 %t7801 = getelementptr inbounds ptr, ptr %t7800, i32 %t7788 - store ptr @.str7332, ptr %t7801 + store ptr @.str7335, ptr %t7801 %t7802 = add i32 %t7788, 1 store i32 %t7802, ptr %t7785 %t7803 = load ptr, ptr %t387 @@ -75995,17 +76052,17 @@ grow1644: put1645: %t7819 = load ptr, ptr %t7806 %t7820 = getelementptr inbounds ptr, ptr %t7819, i32 %t7807 - store ptr @.str7333, ptr %t7820 + store ptr @.str7336, ptr %t7820 %t7821 = add i32 %t7807, 1 store i32 %t7821, ptr %t7804 br label %ifend1641 ifend1641: %t7822 = load ptr, ptr %t1 - %t7823 = call i32 @lp_str_eq(ptr %t7822, ptr @.str7334) + %t7823 = call i32 @lp_str_eq(ptr %t7822, ptr @.str7337) %t7824 = icmp ne i32 %t7823, 0 br i1 %t7824, label %then1646, label %ifend1648 then1646: - store ptr @.str7335, ptr %t380 + store ptr @.str7338, ptr %t380 %t7825 = load ptr, ptr %t387 %t7826 = getelementptr inbounds %LSlice, ptr %t7825, i32 0, i32 1 %t7827 = getelementptr inbounds %LSlice, ptr %t7825, i32 0, i32 2 @@ -76030,17 +76087,17 @@ grow1649: put1650: %t7841 = load ptr, ptr %t7828 %t7842 = getelementptr inbounds ptr, ptr %t7841, i32 %t7829 - store ptr @.str7336, ptr %t7842 + store ptr @.str7339, ptr %t7842 %t7843 = add i32 %t7829, 1 store i32 %t7843, ptr %t7826 br label %ifend1648 ifend1648: %t7844 = load ptr, ptr %t1 - %t7845 = call i32 @lp_str_eq(ptr %t7844, ptr @.str7337) + %t7845 = call i32 @lp_str_eq(ptr %t7844, ptr @.str7340) %t7846 = icmp ne i32 %t7845, 0 br i1 %t7846, label %then1651, label %ifend1653 then1651: - store ptr @.str7338, ptr %t380 + store ptr @.str7341, ptr %t380 %t7847 = load ptr, ptr %t387 %t7848 = getelementptr inbounds %LSlice, ptr %t7847, i32 0, i32 1 %t7849 = getelementptr inbounds %LSlice, ptr %t7847, i32 0, i32 2 @@ -76065,7 +76122,7 @@ grow1654: put1655: %t7863 = load ptr, ptr %t7850 %t7864 = getelementptr inbounds ptr, ptr %t7863, i32 %t7851 - store ptr @.str7339, ptr %t7864 + store ptr @.str7342, ptr %t7864 %t7865 = add i32 %t7851, 1 store i32 %t7865, ptr %t7848 %t7866 = load ptr, ptr %t387 @@ -76092,17 +76149,17 @@ grow1656: put1657: %t7882 = load ptr, ptr %t7869 %t7883 = getelementptr inbounds ptr, ptr %t7882, i32 %t7870 - store ptr @.str7340, ptr %t7883 + store ptr @.str7343, ptr %t7883 %t7884 = add i32 %t7870, 1 store i32 %t7884, ptr %t7867 br label %ifend1653 ifend1653: %t7885 = load ptr, ptr %t1 - %t7886 = call i32 @lp_str_eq(ptr %t7885, ptr @.str7341) + %t7886 = call i32 @lp_str_eq(ptr %t7885, ptr @.str7344) %t7887 = icmp ne i32 %t7886, 0 br i1 %t7887, label %then1658, label %ifend1660 then1658: - store ptr @.str7342, ptr %t380 + store ptr @.str7345, ptr %t380 %t7888 = load ptr, ptr %t387 %t7889 = getelementptr inbounds %LSlice, ptr %t7888, i32 0, i32 1 %t7890 = getelementptr inbounds %LSlice, ptr %t7888, i32 0, i32 2 @@ -76127,7 +76184,7 @@ grow1661: put1662: %t7904 = load ptr, ptr %t7891 %t7905 = getelementptr inbounds ptr, ptr %t7904, i32 %t7892 - store ptr @.str7343, ptr %t7905 + store ptr @.str7346, ptr %t7905 %t7906 = add i32 %t7892, 1 store i32 %t7906, ptr %t7889 %t7907 = load ptr, ptr %t387 @@ -76154,17 +76211,17 @@ grow1663: put1664: %t7923 = load ptr, ptr %t7910 %t7924 = getelementptr inbounds ptr, ptr %t7923, i32 %t7911 - store ptr @.str7344, ptr %t7924 + store ptr @.str7347, ptr %t7924 %t7925 = add i32 %t7911, 1 store i32 %t7925, ptr %t7908 br label %ifend1660 ifend1660: %t7926 = load ptr, ptr %t1 - %t7927 = call i32 @lp_str_eq(ptr %t7926, ptr @.str7345) + %t7927 = call i32 @lp_str_eq(ptr %t7926, ptr @.str7348) %t7928 = icmp ne i32 %t7927, 0 br i1 %t7928, label %then1665, label %ifend1667 then1665: - store ptr @.str7346, ptr %t380 + store ptr @.str7349, ptr %t380 %t7929 = load ptr, ptr %t387 %t7930 = getelementptr inbounds %LSlice, ptr %t7929, i32 0, i32 1 %t7931 = getelementptr inbounds %LSlice, ptr %t7929, i32 0, i32 2 @@ -76189,17 +76246,17 @@ grow1668: put1669: %t7945 = load ptr, ptr %t7932 %t7946 = getelementptr inbounds ptr, ptr %t7945, i32 %t7933 - store ptr @.str7347, ptr %t7946 + store ptr @.str7350, ptr %t7946 %t7947 = add i32 %t7933, 1 store i32 %t7947, ptr %t7930 br label %ifend1667 ifend1667: %t7948 = load ptr, ptr %t1 - %t7949 = call i32 @lp_str_eq(ptr %t7948, ptr @.str7348) + %t7949 = call i32 @lp_str_eq(ptr %t7948, ptr @.str7351) %t7950 = icmp ne i32 %t7949, 0 br i1 %t7950, label %then1670, label %ifend1672 then1670: - store ptr @.str7349, ptr %t380 + store ptr @.str7352, ptr %t380 %t7951 = load ptr, ptr %t387 %t7952 = getelementptr inbounds %LSlice, ptr %t7951, i32 0, i32 1 %t7953 = getelementptr inbounds %LSlice, ptr %t7951, i32 0, i32 2 @@ -76224,7 +76281,7 @@ grow1673: put1674: %t7967 = load ptr, ptr %t7954 %t7968 = getelementptr inbounds ptr, ptr %t7967, i32 %t7955 - store ptr @.str7350, ptr %t7968 + store ptr @.str7353, ptr %t7968 %t7969 = add i32 %t7955, 1 store i32 %t7969, ptr %t7952 %t7970 = load ptr, ptr %t387 @@ -76251,17 +76308,17 @@ grow1675: put1676: %t7986 = load ptr, ptr %t7973 %t7987 = getelementptr inbounds ptr, ptr %t7986, i32 %t7974 - store ptr @.str7351, ptr %t7987 + store ptr @.str7354, ptr %t7987 %t7988 = add i32 %t7974, 1 store i32 %t7988, ptr %t7971 br label %ifend1672 ifend1672: %t7989 = load ptr, ptr %t1 - %t7990 = call i32 @lp_str_eq(ptr %t7989, ptr @.str7352) + %t7990 = call i32 @lp_str_eq(ptr %t7989, ptr @.str7355) %t7991 = icmp ne i32 %t7990, 0 br i1 %t7991, label %then1677, label %ifend1679 then1677: - store ptr @.str7353, ptr %t380 + store ptr @.str7356, ptr %t380 %t7992 = load ptr, ptr %t387 %t7993 = getelementptr inbounds %LSlice, ptr %t7992, i32 0, i32 1 %t7994 = getelementptr inbounds %LSlice, ptr %t7992, i32 0, i32 2 @@ -76286,7 +76343,7 @@ grow1680: put1681: %t8008 = load ptr, ptr %t7995 %t8009 = getelementptr inbounds ptr, ptr %t8008, i32 %t7996 - store ptr @.str7354, ptr %t8009 + store ptr @.str7357, ptr %t8009 %t8010 = add i32 %t7996, 1 store i32 %t8010, ptr %t7993 br label %ifend1679 @@ -76294,24 +76351,24 @@ ifend1679: br label %ifend1614 ifend1614: %t8011 = load ptr, ptr %t0 - %t8012 = call i32 @lp_str_eq(ptr %t8011, ptr @.str7355) + %t8012 = call i32 @lp_str_eq(ptr %t8011, ptr @.str7358) %t8013 = icmp ne i32 %t8012, 0 br i1 %t8013, label %then1682, label %ifend1684 then1682: %t8014 = load ptr, ptr %t1 - %t8015 = call i32 @lp_str_eq(ptr %t8014, ptr @.str7356) + %t8015 = call i32 @lp_str_eq(ptr %t8014, ptr @.str7359) %t8016 = icmp ne i32 %t8015, 0 br i1 %t8016, label %then1685, label %ifend1687 then1685: - store ptr @.str7357, ptr %t380 + store ptr @.str7360, ptr %t380 br label %ifend1687 ifend1687: %t8017 = load ptr, ptr %t1 - %t8018 = call i32 @lp_str_eq(ptr %t8017, ptr @.str7358) + %t8018 = call i32 @lp_str_eq(ptr %t8017, ptr @.str7361) %t8019 = icmp ne i32 %t8018, 0 br i1 %t8019, label %then1688, label %ifend1690 then1688: - store ptr @.str7359, ptr %t380 + store ptr @.str7362, ptr %t380 %t8020 = load ptr, ptr %t387 %t8021 = getelementptr inbounds %LSlice, ptr %t8020, i32 0, i32 1 %t8022 = getelementptr inbounds %LSlice, ptr %t8020, i32 0, i32 2 @@ -76336,7 +76393,7 @@ grow1691: put1692: %t8036 = load ptr, ptr %t8023 %t8037 = getelementptr inbounds ptr, ptr %t8036, i32 %t8024 - store ptr @.str7360, ptr %t8037 + store ptr @.str7363, ptr %t8037 %t8038 = add i32 %t8024, 1 store i32 %t8038, ptr %t8021 %t8039 = load ptr, ptr %t387 @@ -76363,7 +76420,7 @@ grow1693: put1694: %t8055 = load ptr, ptr %t8042 %t8056 = getelementptr inbounds ptr, ptr %t8055, i32 %t8043 - store ptr @.str7361, ptr %t8056 + store ptr @.str7364, ptr %t8056 %t8057 = add i32 %t8043, 1 store i32 %t8057, ptr %t8040 %t8058 = load ptr, ptr %t387 @@ -76390,17 +76447,17 @@ grow1695: put1696: %t8074 = load ptr, ptr %t8061 %t8075 = getelementptr inbounds ptr, ptr %t8074, i32 %t8062 - store ptr @.str7362, ptr %t8075 + store ptr @.str7365, ptr %t8075 %t8076 = add i32 %t8062, 1 store i32 %t8076, ptr %t8059 br label %ifend1690 ifend1690: %t8077 = load ptr, ptr %t1 - %t8078 = call i32 @lp_str_eq(ptr %t8077, ptr @.str7363) + %t8078 = call i32 @lp_str_eq(ptr %t8077, ptr @.str7366) %t8079 = icmp ne i32 %t8078, 0 br i1 %t8079, label %then1697, label %ifend1699 then1697: - store ptr @.str7364, ptr %t380 + store ptr @.str7367, ptr %t380 %t8080 = load ptr, ptr %t387 %t8081 = getelementptr inbounds %LSlice, ptr %t8080, i32 0, i32 1 %t8082 = getelementptr inbounds %LSlice, ptr %t8080, i32 0, i32 2 @@ -76425,7 +76482,7 @@ grow1700: put1701: %t8096 = load ptr, ptr %t8083 %t8097 = getelementptr inbounds ptr, ptr %t8096, i32 %t8084 - store ptr @.str7365, ptr %t8097 + store ptr @.str7368, ptr %t8097 %t8098 = add i32 %t8084, 1 store i32 %t8098, ptr %t8081 %t8099 = load ptr, ptr %t387 @@ -76452,17 +76509,17 @@ grow1702: put1703: %t8115 = load ptr, ptr %t8102 %t8116 = getelementptr inbounds ptr, ptr %t8115, i32 %t8103 - store ptr @.str7366, ptr %t8116 + store ptr @.str7369, ptr %t8116 %t8117 = add i32 %t8103, 1 store i32 %t8117, ptr %t8100 br label %ifend1699 ifend1699: %t8118 = load ptr, ptr %t1 - %t8119 = call i32 @lp_str_eq(ptr %t8118, ptr @.str7367) + %t8119 = call i32 @lp_str_eq(ptr %t8118, ptr @.str7370) %t8120 = icmp ne i32 %t8119, 0 br i1 %t8120, label %then1704, label %ifend1706 then1704: - store ptr @.str7368, ptr %t380 + store ptr @.str7371, ptr %t380 %t8121 = load ptr, ptr %t387 %t8122 = getelementptr inbounds %LSlice, ptr %t8121, i32 0, i32 1 %t8123 = getelementptr inbounds %LSlice, ptr %t8121, i32 0, i32 2 @@ -76487,7 +76544,7 @@ grow1707: put1708: %t8137 = load ptr, ptr %t8124 %t8138 = getelementptr inbounds ptr, ptr %t8137, i32 %t8125 - store ptr @.str7369, ptr %t8138 + store ptr @.str7372, ptr %t8138 %t8139 = add i32 %t8125, 1 store i32 %t8139, ptr %t8122 %t8140 = load ptr, ptr %t387 @@ -76514,7 +76571,7 @@ grow1709: put1710: %t8156 = load ptr, ptr %t8143 %t8157 = getelementptr inbounds ptr, ptr %t8156, i32 %t8144 - store ptr @.str7370, ptr %t8157 + store ptr @.str7373, ptr %t8157 %t8158 = add i32 %t8144, 1 store i32 %t8158, ptr %t8141 %t8159 = load ptr, ptr %t387 @@ -76541,17 +76598,17 @@ grow1711: put1712: %t8175 = load ptr, ptr %t8162 %t8176 = getelementptr inbounds ptr, ptr %t8175, i32 %t8163 - store ptr @.str7371, ptr %t8176 + store ptr @.str7374, ptr %t8176 %t8177 = add i32 %t8163, 1 store i32 %t8177, ptr %t8160 br label %ifend1706 ifend1706: %t8178 = load ptr, ptr %t1 - %t8179 = call i32 @lp_str_eq(ptr %t8178, ptr @.str7372) + %t8179 = call i32 @lp_str_eq(ptr %t8178, ptr @.str7375) %t8180 = icmp ne i32 %t8179, 0 br i1 %t8180, label %then1713, label %ifend1715 then1713: - store ptr @.str7373, ptr %t380 + store ptr @.str7376, ptr %t380 %t8181 = load ptr, ptr %t387 %t8182 = getelementptr inbounds %LSlice, ptr %t8181, i32 0, i32 1 %t8183 = getelementptr inbounds %LSlice, ptr %t8181, i32 0, i32 2 @@ -76576,7 +76633,7 @@ grow1716: put1717: %t8197 = load ptr, ptr %t8184 %t8198 = getelementptr inbounds ptr, ptr %t8197, i32 %t8185 - store ptr @.str7374, ptr %t8198 + store ptr @.str7377, ptr %t8198 %t8199 = add i32 %t8185, 1 store i32 %t8199, ptr %t8182 %t8200 = load ptr, ptr %t387 @@ -76603,17 +76660,17 @@ grow1718: put1719: %t8216 = load ptr, ptr %t8203 %t8217 = getelementptr inbounds ptr, ptr %t8216, i32 %t8204 - store ptr @.str7375, ptr %t8217 + store ptr @.str7378, ptr %t8217 %t8218 = add i32 %t8204, 1 store i32 %t8218, ptr %t8201 br label %ifend1715 ifend1715: %t8219 = load ptr, ptr %t1 - %t8220 = call i32 @lp_str_eq(ptr %t8219, ptr @.str7376) + %t8220 = call i32 @lp_str_eq(ptr %t8219, ptr @.str7379) %t8221 = icmp ne i32 %t8220, 0 br i1 %t8221, label %then1720, label %ifend1722 then1720: - store ptr @.str7377, ptr %t380 + store ptr @.str7380, ptr %t380 %t8222 = load ptr, ptr %t387 %t8223 = getelementptr inbounds %LSlice, ptr %t8222, i32 0, i32 1 %t8224 = getelementptr inbounds %LSlice, ptr %t8222, i32 0, i32 2 @@ -76638,7 +76695,7 @@ grow1723: put1724: %t8238 = load ptr, ptr %t8225 %t8239 = getelementptr inbounds ptr, ptr %t8238, i32 %t8226 - store ptr @.str7378, ptr %t8239 + store ptr @.str7381, ptr %t8239 %t8240 = add i32 %t8226, 1 store i32 %t8240, ptr %t8223 %t8241 = load ptr, ptr %t387 @@ -76665,17 +76722,17 @@ grow1725: put1726: %t8257 = load ptr, ptr %t8244 %t8258 = getelementptr inbounds ptr, ptr %t8257, i32 %t8245 - store ptr @.str7379, ptr %t8258 + store ptr @.str7382, ptr %t8258 %t8259 = add i32 %t8245, 1 store i32 %t8259, ptr %t8242 br label %ifend1722 ifend1722: %t8260 = load ptr, ptr %t1 - %t8261 = call i32 @lp_str_eq(ptr %t8260, ptr @.str7380) + %t8261 = call i32 @lp_str_eq(ptr %t8260, ptr @.str7383) %t8262 = icmp ne i32 %t8261, 0 br i1 %t8262, label %then1727, label %ifend1729 then1727: - store ptr @.str7381, ptr %t380 + store ptr @.str7384, ptr %t380 %t8263 = load ptr, ptr %t387 %t8264 = getelementptr inbounds %LSlice, ptr %t8263, i32 0, i32 1 %t8265 = getelementptr inbounds %LSlice, ptr %t8263, i32 0, i32 2 @@ -76700,17 +76757,17 @@ grow1730: put1731: %t8279 = load ptr, ptr %t8266 %t8280 = getelementptr inbounds ptr, ptr %t8279, i32 %t8267 - store ptr @.str7382, ptr %t8280 + store ptr @.str7385, ptr %t8280 %t8281 = add i32 %t8267, 1 store i32 %t8281, ptr %t8264 br label %ifend1729 ifend1729: %t8282 = load ptr, ptr %t1 - %t8283 = call i32 @lp_str_eq(ptr %t8282, ptr @.str7383) + %t8283 = call i32 @lp_str_eq(ptr %t8282, ptr @.str7386) %t8284 = icmp ne i32 %t8283, 0 br i1 %t8284, label %then1732, label %ifend1734 then1732: - store ptr @.str7384, ptr %t380 + store ptr @.str7387, ptr %t380 %t8285 = load ptr, ptr %t387 %t8286 = getelementptr inbounds %LSlice, ptr %t8285, i32 0, i32 1 %t8287 = getelementptr inbounds %LSlice, ptr %t8285, i32 0, i32 2 @@ -76735,17 +76792,17 @@ grow1735: put1736: %t8301 = load ptr, ptr %t8288 %t8302 = getelementptr inbounds ptr, ptr %t8301, i32 %t8289 - store ptr @.str7385, ptr %t8302 + store ptr @.str7388, ptr %t8302 %t8303 = add i32 %t8289, 1 store i32 %t8303, ptr %t8286 br label %ifend1734 ifend1734: %t8304 = load ptr, ptr %t1 - %t8305 = call i32 @lp_str_eq(ptr %t8304, ptr @.str7386) + %t8305 = call i32 @lp_str_eq(ptr %t8304, ptr @.str7389) %t8306 = icmp ne i32 %t8305, 0 br i1 %t8306, label %then1737, label %ifend1739 then1737: - store ptr @.str7387, ptr %t380 + store ptr @.str7390, ptr %t380 %t8307 = load ptr, ptr %t387 %t8308 = getelementptr inbounds %LSlice, ptr %t8307, i32 0, i32 1 %t8309 = getelementptr inbounds %LSlice, ptr %t8307, i32 0, i32 2 @@ -76770,7 +76827,7 @@ grow1740: put1741: %t8323 = load ptr, ptr %t8310 %t8324 = getelementptr inbounds ptr, ptr %t8323, i32 %t8311 - store ptr @.str7388, ptr %t8324 + store ptr @.str7391, ptr %t8324 %t8325 = add i32 %t8311, 1 store i32 %t8325, ptr %t8308 br label %ifend1739 @@ -76778,24 +76835,24 @@ ifend1739: br label %ifend1684 ifend1684: %t8326 = load ptr, ptr %t0 - %t8327 = call i32 @lp_str_eq(ptr %t8326, ptr @.str7389) + %t8327 = call i32 @lp_str_eq(ptr %t8326, ptr @.str7392) %t8328 = icmp ne i32 %t8327, 0 br i1 %t8328, label %then1742, label %ifend1744 then1742: %t8329 = load ptr, ptr %t1 - %t8330 = call i32 @lp_str_eq(ptr %t8329, ptr @.str7390) + %t8330 = call i32 @lp_str_eq(ptr %t8329, ptr @.str7393) %t8331 = icmp ne i32 %t8330, 0 br i1 %t8331, label %then1745, label %ifend1747 then1745: - store ptr @.str7391, ptr %t380 + store ptr @.str7394, ptr %t380 br label %ifend1747 ifend1747: %t8332 = load ptr, ptr %t1 - %t8333 = call i32 @lp_str_eq(ptr %t8332, ptr @.str7392) + %t8333 = call i32 @lp_str_eq(ptr %t8332, ptr @.str7395) %t8334 = icmp ne i32 %t8333, 0 br i1 %t8334, label %then1748, label %ifend1750 then1748: - store ptr @.str7393, ptr %t380 + store ptr @.str7396, ptr %t380 %t8335 = load ptr, ptr %t387 %t8336 = getelementptr inbounds %LSlice, ptr %t8335, i32 0, i32 1 %t8337 = getelementptr inbounds %LSlice, ptr %t8335, i32 0, i32 2 @@ -76820,7 +76877,7 @@ grow1751: put1752: %t8351 = load ptr, ptr %t8338 %t8352 = getelementptr inbounds ptr, ptr %t8351, i32 %t8339 - store ptr @.str7394, ptr %t8352 + store ptr @.str7397, ptr %t8352 %t8353 = add i32 %t8339, 1 store i32 %t8353, ptr %t8336 %t8354 = load ptr, ptr %t387 @@ -76847,17 +76904,17 @@ grow1753: put1754: %t8370 = load ptr, ptr %t8357 %t8371 = getelementptr inbounds ptr, ptr %t8370, i32 %t8358 - store ptr @.str7395, ptr %t8371 + store ptr @.str7398, ptr %t8371 %t8372 = add i32 %t8358, 1 store i32 %t8372, ptr %t8355 br label %ifend1750 ifend1750: %t8373 = load ptr, ptr %t1 - %t8374 = call i32 @lp_str_eq(ptr %t8373, ptr @.str7396) + %t8374 = call i32 @lp_str_eq(ptr %t8373, ptr @.str7399) %t8375 = icmp ne i32 %t8374, 0 br i1 %t8375, label %then1755, label %ifend1757 then1755: - store ptr @.str7397, ptr %t380 + store ptr @.str7400, ptr %t380 %t8376 = load ptr, ptr %t387 %t8377 = getelementptr inbounds %LSlice, ptr %t8376, i32 0, i32 1 %t8378 = getelementptr inbounds %LSlice, ptr %t8376, i32 0, i32 2 @@ -76882,7 +76939,7 @@ grow1758: put1759: %t8392 = load ptr, ptr %t8379 %t8393 = getelementptr inbounds ptr, ptr %t8392, i32 %t8380 - store ptr @.str7398, ptr %t8393 + store ptr @.str7401, ptr %t8393 %t8394 = add i32 %t8380, 1 store i32 %t8394, ptr %t8377 %t8395 = load ptr, ptr %t387 @@ -76909,17 +76966,17 @@ grow1760: put1761: %t8411 = load ptr, ptr %t8398 %t8412 = getelementptr inbounds ptr, ptr %t8411, i32 %t8399 - store ptr @.str7399, ptr %t8412 + store ptr @.str7402, ptr %t8412 %t8413 = add i32 %t8399, 1 store i32 %t8413, ptr %t8396 br label %ifend1757 ifend1757: %t8414 = load ptr, ptr %t1 - %t8415 = call i32 @lp_str_eq(ptr %t8414, ptr @.str7400) + %t8415 = call i32 @lp_str_eq(ptr %t8414, ptr @.str7403) %t8416 = icmp ne i32 %t8415, 0 br i1 %t8416, label %then1762, label %ifend1764 then1762: - store ptr @.str7401, ptr %t380 + store ptr @.str7404, ptr %t380 %t8417 = load ptr, ptr %t387 %t8418 = getelementptr inbounds %LSlice, ptr %t8417, i32 0, i32 1 %t8419 = getelementptr inbounds %LSlice, ptr %t8417, i32 0, i32 2 @@ -76944,7 +77001,7 @@ grow1765: put1766: %t8433 = load ptr, ptr %t8420 %t8434 = getelementptr inbounds ptr, ptr %t8433, i32 %t8421 - store ptr @.str7402, ptr %t8434 + store ptr @.str7405, ptr %t8434 %t8435 = add i32 %t8421, 1 store i32 %t8435, ptr %t8418 %t8436 = load ptr, ptr %t387 @@ -76971,17 +77028,17 @@ grow1767: put1768: %t8452 = load ptr, ptr %t8439 %t8453 = getelementptr inbounds ptr, ptr %t8452, i32 %t8440 - store ptr @.str7403, ptr %t8453 + store ptr @.str7406, ptr %t8453 %t8454 = add i32 %t8440, 1 store i32 %t8454, ptr %t8437 br label %ifend1764 ifend1764: %t8455 = load ptr, ptr %t1 - %t8456 = call i32 @lp_str_eq(ptr %t8455, ptr @.str7404) + %t8456 = call i32 @lp_str_eq(ptr %t8455, ptr @.str7407) %t8457 = icmp ne i32 %t8456, 0 br i1 %t8457, label %then1769, label %ifend1771 then1769: - store ptr @.str7405, ptr %t380 + store ptr @.str7408, ptr %t380 %t8458 = load ptr, ptr %t387 %t8459 = getelementptr inbounds %LSlice, ptr %t8458, i32 0, i32 1 %t8460 = getelementptr inbounds %LSlice, ptr %t8458, i32 0, i32 2 @@ -77006,17 +77063,17 @@ grow1772: put1773: %t8474 = load ptr, ptr %t8461 %t8475 = getelementptr inbounds ptr, ptr %t8474, i32 %t8462 - store ptr @.str7406, ptr %t8475 + store ptr @.str7409, ptr %t8475 %t8476 = add i32 %t8462, 1 store i32 %t8476, ptr %t8459 br label %ifend1771 ifend1771: %t8477 = load ptr, ptr %t1 - %t8478 = call i32 @lp_str_eq(ptr %t8477, ptr @.str7407) + %t8478 = call i32 @lp_str_eq(ptr %t8477, ptr @.str7410) %t8479 = icmp ne i32 %t8478, 0 br i1 %t8479, label %then1774, label %ifend1776 then1774: - store ptr @.str7408, ptr %t380 + store ptr @.str7411, ptr %t380 %t8480 = load ptr, ptr %t387 %t8481 = getelementptr inbounds %LSlice, ptr %t8480, i32 0, i32 1 %t8482 = getelementptr inbounds %LSlice, ptr %t8480, i32 0, i32 2 @@ -77041,17 +77098,17 @@ grow1777: put1778: %t8496 = load ptr, ptr %t8483 %t8497 = getelementptr inbounds ptr, ptr %t8496, i32 %t8484 - store ptr @.str7409, ptr %t8497 + store ptr @.str7412, ptr %t8497 %t8498 = add i32 %t8484, 1 store i32 %t8498, ptr %t8481 br label %ifend1776 ifend1776: %t8499 = load ptr, ptr %t1 - %t8500 = call i32 @lp_str_eq(ptr %t8499, ptr @.str7410) + %t8500 = call i32 @lp_str_eq(ptr %t8499, ptr @.str7413) %t8501 = icmp ne i32 %t8500, 0 br i1 %t8501, label %then1779, label %ifend1781 then1779: - store ptr @.str7411, ptr %t380 + store ptr @.str7414, ptr %t380 %t8502 = load ptr, ptr %t387 %t8503 = getelementptr inbounds %LSlice, ptr %t8502, i32 0, i32 1 %t8504 = getelementptr inbounds %LSlice, ptr %t8502, i32 0, i32 2 @@ -77076,7 +77133,7 @@ grow1782: put1783: %t8518 = load ptr, ptr %t8505 %t8519 = getelementptr inbounds ptr, ptr %t8518, i32 %t8506 - store ptr @.str7412, ptr %t8519 + store ptr @.str7415, ptr %t8519 %t8520 = add i32 %t8506, 1 store i32 %t8520, ptr %t8503 br label %ifend1781 @@ -77084,24 +77141,24 @@ ifend1781: br label %ifend1744 ifend1744: %t8521 = load ptr, ptr %t0 - %t8522 = call i32 @lp_str_eq(ptr %t8521, ptr @.str7413) + %t8522 = call i32 @lp_str_eq(ptr %t8521, ptr @.str7416) %t8523 = icmp ne i32 %t8522, 0 br i1 %t8523, label %then1784, label %ifend1786 then1784: %t8524 = load ptr, ptr %t1 - %t8525 = call i32 @lp_str_eq(ptr %t8524, ptr @.str7414) + %t8525 = call i32 @lp_str_eq(ptr %t8524, ptr @.str7417) %t8526 = icmp ne i32 %t8525, 0 br i1 %t8526, label %then1787, label %ifend1789 then1787: - store ptr @.str7415, ptr %t380 + store ptr @.str7418, ptr %t380 br label %ifend1789 ifend1789: %t8527 = load ptr, ptr %t1 - %t8528 = call i32 @lp_str_eq(ptr %t8527, ptr @.str7416) + %t8528 = call i32 @lp_str_eq(ptr %t8527, ptr @.str7419) %t8529 = icmp ne i32 %t8528, 0 br i1 %t8529, label %then1790, label %ifend1792 then1790: - store ptr @.str7417, ptr %t380 + store ptr @.str7420, ptr %t380 %t8530 = load ptr, ptr %t387 %t8531 = getelementptr inbounds %LSlice, ptr %t8530, i32 0, i32 1 %t8532 = getelementptr inbounds %LSlice, ptr %t8530, i32 0, i32 2 @@ -77126,7 +77183,7 @@ grow1793: put1794: %t8546 = load ptr, ptr %t8533 %t8547 = getelementptr inbounds ptr, ptr %t8546, i32 %t8534 - store ptr @.str7418, ptr %t8547 + store ptr @.str7421, ptr %t8547 %t8548 = add i32 %t8534, 1 store i32 %t8548, ptr %t8531 %t8549 = load ptr, ptr %t387 @@ -77153,17 +77210,17 @@ grow1795: put1796: %t8565 = load ptr, ptr %t8552 %t8566 = getelementptr inbounds ptr, ptr %t8565, i32 %t8553 - store ptr @.str7419, ptr %t8566 + store ptr @.str7422, ptr %t8566 %t8567 = add i32 %t8553, 1 store i32 %t8567, ptr %t8550 br label %ifend1792 ifend1792: %t8568 = load ptr, ptr %t1 - %t8569 = call i32 @lp_str_eq(ptr %t8568, ptr @.str7420) + %t8569 = call i32 @lp_str_eq(ptr %t8568, ptr @.str7423) %t8570 = icmp ne i32 %t8569, 0 br i1 %t8570, label %then1797, label %ifend1799 then1797: - store ptr @.str7421, ptr %t380 + store ptr @.str7424, ptr %t380 %t8571 = load ptr, ptr %t387 %t8572 = getelementptr inbounds %LSlice, ptr %t8571, i32 0, i32 1 %t8573 = getelementptr inbounds %LSlice, ptr %t8571, i32 0, i32 2 @@ -77188,7 +77245,7 @@ grow1800: put1801: %t8587 = load ptr, ptr %t8574 %t8588 = getelementptr inbounds ptr, ptr %t8587, i32 %t8575 - store ptr @.str7422, ptr %t8588 + store ptr @.str7425, ptr %t8588 %t8589 = add i32 %t8575, 1 store i32 %t8589, ptr %t8572 %t8590 = load ptr, ptr %t387 @@ -77215,17 +77272,17 @@ grow1802: put1803: %t8606 = load ptr, ptr %t8593 %t8607 = getelementptr inbounds ptr, ptr %t8606, i32 %t8594 - store ptr @.str7423, ptr %t8607 + store ptr @.str7426, ptr %t8607 %t8608 = add i32 %t8594, 1 store i32 %t8608, ptr %t8591 br label %ifend1799 ifend1799: %t8609 = load ptr, ptr %t1 - %t8610 = call i32 @lp_str_eq(ptr %t8609, ptr @.str7424) + %t8610 = call i32 @lp_str_eq(ptr %t8609, ptr @.str7427) %t8611 = icmp ne i32 %t8610, 0 br i1 %t8611, label %then1804, label %ifend1806 then1804: - store ptr @.str7425, ptr %t380 + store ptr @.str7428, ptr %t380 %t8612 = load ptr, ptr %t387 %t8613 = getelementptr inbounds %LSlice, ptr %t8612, i32 0, i32 1 %t8614 = getelementptr inbounds %LSlice, ptr %t8612, i32 0, i32 2 @@ -77250,7 +77307,7 @@ grow1807: put1808: %t8628 = load ptr, ptr %t8615 %t8629 = getelementptr inbounds ptr, ptr %t8628, i32 %t8616 - store ptr @.str7426, ptr %t8629 + store ptr @.str7429, ptr %t8629 %t8630 = add i32 %t8616, 1 store i32 %t8630, ptr %t8613 %t8631 = load ptr, ptr %t387 @@ -77277,17 +77334,17 @@ grow1809: put1810: %t8647 = load ptr, ptr %t8634 %t8648 = getelementptr inbounds ptr, ptr %t8647, i32 %t8635 - store ptr @.str7427, ptr %t8648 + store ptr @.str7430, ptr %t8648 %t8649 = add i32 %t8635, 1 store i32 %t8649, ptr %t8632 br label %ifend1806 ifend1806: %t8650 = load ptr, ptr %t1 - %t8651 = call i32 @lp_str_eq(ptr %t8650, ptr @.str7428) + %t8651 = call i32 @lp_str_eq(ptr %t8650, ptr @.str7431) %t8652 = icmp ne i32 %t8651, 0 br i1 %t8652, label %then1811, label %ifend1813 then1811: - store ptr @.str7429, ptr %t380 + store ptr @.str7432, ptr %t380 %t8653 = load ptr, ptr %t387 %t8654 = getelementptr inbounds %LSlice, ptr %t8653, i32 0, i32 1 %t8655 = getelementptr inbounds %LSlice, ptr %t8653, i32 0, i32 2 @@ -77312,17 +77369,17 @@ grow1814: put1815: %t8669 = load ptr, ptr %t8656 %t8670 = getelementptr inbounds ptr, ptr %t8669, i32 %t8657 - store ptr @.str7430, ptr %t8670 + store ptr @.str7433, ptr %t8670 %t8671 = add i32 %t8657, 1 store i32 %t8671, ptr %t8654 br label %ifend1813 ifend1813: %t8672 = load ptr, ptr %t1 - %t8673 = call i32 @lp_str_eq(ptr %t8672, ptr @.str7431) + %t8673 = call i32 @lp_str_eq(ptr %t8672, ptr @.str7434) %t8674 = icmp ne i32 %t8673, 0 br i1 %t8674, label %then1816, label %ifend1818 then1816: - store ptr @.str7432, ptr %t380 + store ptr @.str7435, ptr %t380 %t8675 = load ptr, ptr %t387 %t8676 = getelementptr inbounds %LSlice, ptr %t8675, i32 0, i32 1 %t8677 = getelementptr inbounds %LSlice, ptr %t8675, i32 0, i32 2 @@ -77347,17 +77404,17 @@ grow1819: put1820: %t8691 = load ptr, ptr %t8678 %t8692 = getelementptr inbounds ptr, ptr %t8691, i32 %t8679 - store ptr @.str7433, ptr %t8692 + store ptr @.str7436, ptr %t8692 %t8693 = add i32 %t8679, 1 store i32 %t8693, ptr %t8676 br label %ifend1818 ifend1818: %t8694 = load ptr, ptr %t1 - %t8695 = call i32 @lp_str_eq(ptr %t8694, ptr @.str7434) + %t8695 = call i32 @lp_str_eq(ptr %t8694, ptr @.str7437) %t8696 = icmp ne i32 %t8695, 0 br i1 %t8696, label %then1821, label %ifend1823 then1821: - store ptr @.str7435, ptr %t380 + store ptr @.str7438, ptr %t380 %t8697 = load ptr, ptr %t387 %t8698 = getelementptr inbounds %LSlice, ptr %t8697, i32 0, i32 1 %t8699 = getelementptr inbounds %LSlice, ptr %t8697, i32 0, i32 2 @@ -77382,17 +77439,17 @@ grow1824: put1825: %t8713 = load ptr, ptr %t8700 %t8714 = getelementptr inbounds ptr, ptr %t8713, i32 %t8701 - store ptr @.str7436, ptr %t8714 + store ptr @.str7439, ptr %t8714 %t8715 = add i32 %t8701, 1 store i32 %t8715, ptr %t8698 br label %ifend1823 ifend1823: %t8716 = load ptr, ptr %t1 - %t8717 = call i32 @lp_str_eq(ptr %t8716, ptr @.str7437) + %t8717 = call i32 @lp_str_eq(ptr %t8716, ptr @.str7440) %t8718 = icmp ne i32 %t8717, 0 br i1 %t8718, label %then1826, label %ifend1828 then1826: - store ptr @.str7438, ptr %t380 + store ptr @.str7441, ptr %t380 %t8719 = load ptr, ptr %t387 %t8720 = getelementptr inbounds %LSlice, ptr %t8719, i32 0, i32 1 %t8721 = getelementptr inbounds %LSlice, ptr %t8719, i32 0, i32 2 @@ -77417,17 +77474,17 @@ grow1829: put1830: %t8735 = load ptr, ptr %t8722 %t8736 = getelementptr inbounds ptr, ptr %t8735, i32 %t8723 - store ptr @.str7439, ptr %t8736 + store ptr @.str7442, ptr %t8736 %t8737 = add i32 %t8723, 1 store i32 %t8737, ptr %t8720 br label %ifend1828 ifend1828: %t8738 = load ptr, ptr %t1 - %t8739 = call i32 @lp_str_eq(ptr %t8738, ptr @.str7440) + %t8739 = call i32 @lp_str_eq(ptr %t8738, ptr @.str7443) %t8740 = icmp ne i32 %t8739, 0 br i1 %t8740, label %then1831, label %ifend1833 then1831: - store ptr @.str7441, ptr %t380 + store ptr @.str7444, ptr %t380 %t8741 = load ptr, ptr %t387 %t8742 = getelementptr inbounds %LSlice, ptr %t8741, i32 0, i32 1 %t8743 = getelementptr inbounds %LSlice, ptr %t8741, i32 0, i32 2 @@ -77452,17 +77509,17 @@ grow1834: put1835: %t8757 = load ptr, ptr %t8744 %t8758 = getelementptr inbounds ptr, ptr %t8757, i32 %t8745 - store ptr @.str7442, ptr %t8758 + store ptr @.str7445, ptr %t8758 %t8759 = add i32 %t8745, 1 store i32 %t8759, ptr %t8742 br label %ifend1833 ifend1833: %t8760 = load ptr, ptr %t1 - %t8761 = call i32 @lp_str_eq(ptr %t8760, ptr @.str7443) + %t8761 = call i32 @lp_str_eq(ptr %t8760, ptr @.str7446) %t8762 = icmp ne i32 %t8761, 0 br i1 %t8762, label %then1836, label %ifend1838 then1836: - store ptr @.str7444, ptr %t380 + store ptr @.str7447, ptr %t380 %t8763 = load ptr, ptr %t387 %t8764 = getelementptr inbounds %LSlice, ptr %t8763, i32 0, i32 1 %t8765 = getelementptr inbounds %LSlice, ptr %t8763, i32 0, i32 2 @@ -77487,17 +77544,17 @@ grow1839: put1840: %t8779 = load ptr, ptr %t8766 %t8780 = getelementptr inbounds ptr, ptr %t8779, i32 %t8767 - store ptr @.str7445, ptr %t8780 + store ptr @.str7448, ptr %t8780 %t8781 = add i32 %t8767, 1 store i32 %t8781, ptr %t8764 br label %ifend1838 ifend1838: %t8782 = load ptr, ptr %t1 - %t8783 = call i32 @lp_str_eq(ptr %t8782, ptr @.str7446) + %t8783 = call i32 @lp_str_eq(ptr %t8782, ptr @.str7449) %t8784 = icmp ne i32 %t8783, 0 br i1 %t8784, label %then1841, label %ifend1843 then1841: - store ptr @.str7447, ptr %t380 + store ptr @.str7450, ptr %t380 %t8785 = load ptr, ptr %t387 %t8786 = getelementptr inbounds %LSlice, ptr %t8785, i32 0, i32 1 %t8787 = getelementptr inbounds %LSlice, ptr %t8785, i32 0, i32 2 @@ -77522,17 +77579,17 @@ grow1844: put1845: %t8801 = load ptr, ptr %t8788 %t8802 = getelementptr inbounds ptr, ptr %t8801, i32 %t8789 - store ptr @.str7448, ptr %t8802 + store ptr @.str7451, ptr %t8802 %t8803 = add i32 %t8789, 1 store i32 %t8803, ptr %t8786 br label %ifend1843 ifend1843: %t8804 = load ptr, ptr %t1 - %t8805 = call i32 @lp_str_eq(ptr %t8804, ptr @.str7449) + %t8805 = call i32 @lp_str_eq(ptr %t8804, ptr @.str7452) %t8806 = icmp ne i32 %t8805, 0 br i1 %t8806, label %then1846, label %ifend1848 then1846: - store ptr @.str7450, ptr %t380 + store ptr @.str7453, ptr %t380 %t8807 = load ptr, ptr %t387 %t8808 = getelementptr inbounds %LSlice, ptr %t8807, i32 0, i32 1 %t8809 = getelementptr inbounds %LSlice, ptr %t8807, i32 0, i32 2 @@ -77557,25 +77614,25 @@ grow1849: put1850: %t8823 = load ptr, ptr %t8810 %t8824 = getelementptr inbounds ptr, ptr %t8823, i32 %t8811 - store ptr @.str7451, ptr %t8824 + store ptr @.str7454, ptr %t8824 %t8825 = add i32 %t8811, 1 store i32 %t8825, ptr %t8808 br label %ifend1848 ifend1848: %t8826 = load ptr, ptr %t1 - %t8827 = call i32 @lp_str_eq(ptr %t8826, ptr @.str7452) + %t8827 = call i32 @lp_str_eq(ptr %t8826, ptr @.str7455) %t8828 = icmp ne i32 %t8827, 0 br i1 %t8828, label %then1851, label %ifend1853 then1851: - store ptr @.str7453, ptr %t380 + store ptr @.str7456, ptr %t380 br label %ifend1853 ifend1853: %t8829 = load ptr, ptr %t1 - %t8830 = call i32 @lp_str_eq(ptr %t8829, ptr @.str7454) + %t8830 = call i32 @lp_str_eq(ptr %t8829, ptr @.str7457) %t8831 = icmp ne i32 %t8830, 0 br i1 %t8831, label %then1854, label %ifend1856 then1854: - store ptr @.str7455, ptr %t380 + store ptr @.str7458, ptr %t380 %t8832 = load ptr, ptr %t387 %t8833 = getelementptr inbounds %LSlice, ptr %t8832, i32 0, i32 1 %t8834 = getelementptr inbounds %LSlice, ptr %t8832, i32 0, i32 2 @@ -77600,7 +77657,7 @@ grow1857: put1858: %t8848 = load ptr, ptr %t8835 %t8849 = getelementptr inbounds ptr, ptr %t8848, i32 %t8836 - store ptr @.str7456, ptr %t8849 + store ptr @.str7459, ptr %t8849 %t8850 = add i32 %t8836, 1 store i32 %t8850, ptr %t8833 br label %ifend1856 @@ -77608,16 +77665,16 @@ ifend1856: br label %ifend1786 ifend1786: %t8851 = load ptr, ptr %t0 - %t8852 = call i32 @lp_str_eq(ptr %t8851, ptr @.str7457) + %t8852 = call i32 @lp_str_eq(ptr %t8851, ptr @.str7460) %t8853 = icmp ne i32 %t8852, 0 br i1 %t8853, label %then1859, label %ifend1861 then1859: %t8854 = load ptr, ptr %t1 - %t8855 = call i32 @lp_str_eq(ptr %t8854, ptr @.str7458) + %t8855 = call i32 @lp_str_eq(ptr %t8854, ptr @.str7461) %t8856 = icmp ne i32 %t8855, 0 br i1 %t8856, label %then1862, label %ifend1864 then1862: - store ptr @.str7459, ptr %t380 + store ptr @.str7462, ptr %t380 %t8857 = load ptr, ptr %t387 %t8858 = getelementptr inbounds %LSlice, ptr %t8857, i32 0, i32 1 %t8859 = getelementptr inbounds %LSlice, ptr %t8857, i32 0, i32 2 @@ -77642,17 +77699,17 @@ grow1865: put1866: %t8873 = load ptr, ptr %t8860 %t8874 = getelementptr inbounds ptr, ptr %t8873, i32 %t8861 - store ptr @.str7460, ptr %t8874 + store ptr @.str7463, ptr %t8874 %t8875 = add i32 %t8861, 1 store i32 %t8875, ptr %t8858 br label %ifend1864 ifend1864: %t8876 = load ptr, ptr %t1 - %t8877 = call i32 @lp_str_eq(ptr %t8876, ptr @.str7461) + %t8877 = call i32 @lp_str_eq(ptr %t8876, ptr @.str7464) %t8878 = icmp ne i32 %t8877, 0 br i1 %t8878, label %then1867, label %ifend1869 then1867: - store ptr @.str7462, ptr %t380 + store ptr @.str7465, ptr %t380 %t8879 = load ptr, ptr %t387 %t8880 = getelementptr inbounds %LSlice, ptr %t8879, i32 0, i32 1 %t8881 = getelementptr inbounds %LSlice, ptr %t8879, i32 0, i32 2 @@ -77677,17 +77734,17 @@ grow1870: put1871: %t8895 = load ptr, ptr %t8882 %t8896 = getelementptr inbounds ptr, ptr %t8895, i32 %t8883 - store ptr @.str7463, ptr %t8896 + store ptr @.str7466, ptr %t8896 %t8897 = add i32 %t8883, 1 store i32 %t8897, ptr %t8880 br label %ifend1869 ifend1869: %t8898 = load ptr, ptr %t1 - %t8899 = call i32 @lp_str_eq(ptr %t8898, ptr @.str7464) + %t8899 = call i32 @lp_str_eq(ptr %t8898, ptr @.str7467) %t8900 = icmp ne i32 %t8899, 0 br i1 %t8900, label %then1872, label %ifend1874 then1872: - store ptr @.str7465, ptr %t380 + store ptr @.str7468, ptr %t380 %t8901 = load ptr, ptr %t387 %t8902 = getelementptr inbounds %LSlice, ptr %t8901, i32 0, i32 1 %t8903 = getelementptr inbounds %LSlice, ptr %t8901, i32 0, i32 2 @@ -77712,17 +77769,17 @@ grow1875: put1876: %t8917 = load ptr, ptr %t8904 %t8918 = getelementptr inbounds ptr, ptr %t8917, i32 %t8905 - store ptr @.str7466, ptr %t8918 + store ptr @.str7469, ptr %t8918 %t8919 = add i32 %t8905, 1 store i32 %t8919, ptr %t8902 br label %ifend1874 ifend1874: %t8920 = load ptr, ptr %t1 - %t8921 = call i32 @lp_str_eq(ptr %t8920, ptr @.str7467) + %t8921 = call i32 @lp_str_eq(ptr %t8920, ptr @.str7470) %t8922 = icmp ne i32 %t8921, 0 br i1 %t8922, label %then1877, label %ifend1879 then1877: - store ptr @.str7468, ptr %t380 + store ptr @.str7471, ptr %t380 %t8923 = load ptr, ptr %t387 %t8924 = getelementptr inbounds %LSlice, ptr %t8923, i32 0, i32 1 %t8925 = getelementptr inbounds %LSlice, ptr %t8923, i32 0, i32 2 @@ -77747,7 +77804,7 @@ grow1880: put1881: %t8939 = load ptr, ptr %t8926 %t8940 = getelementptr inbounds ptr, ptr %t8939, i32 %t8927 - store ptr @.str7469, ptr %t8940 + store ptr @.str7472, ptr %t8940 %t8941 = add i32 %t8927, 1 store i32 %t8941, ptr %t8924 br label %ifend1879 @@ -77755,24 +77812,24 @@ ifend1879: br label %ifend1861 ifend1861: %t8942 = load ptr, ptr %t0 - %t8943 = call i32 @lp_str_eq(ptr %t8942, ptr @.str7470) + %t8943 = call i32 @lp_str_eq(ptr %t8942, ptr @.str7473) %t8944 = icmp ne i32 %t8943, 0 br i1 %t8944, label %then1882, label %ifend1884 then1882: %t8945 = load ptr, ptr %t1 - %t8946 = call i32 @lp_str_eq(ptr %t8945, ptr @.str7471) + %t8946 = call i32 @lp_str_eq(ptr %t8945, ptr @.str7474) %t8947 = icmp ne i32 %t8946, 0 br i1 %t8947, label %then1885, label %ifend1887 then1885: - store ptr @.str7472, ptr %t380 + store ptr @.str7475, ptr %t380 br label %ifend1887 ifend1887: %t8948 = load ptr, ptr %t1 - %t8949 = call i32 @lp_str_eq(ptr %t8948, ptr @.str7473) + %t8949 = call i32 @lp_str_eq(ptr %t8948, ptr @.str7476) %t8950 = icmp ne i32 %t8949, 0 br i1 %t8950, label %then1888, label %ifend1890 then1888: - store ptr @.str7474, ptr %t380 + store ptr @.str7477, ptr %t380 %t8951 = load ptr, ptr %t387 %t8952 = getelementptr inbounds %LSlice, ptr %t8951, i32 0, i32 1 %t8953 = getelementptr inbounds %LSlice, ptr %t8951, i32 0, i32 2 @@ -77797,17 +77854,17 @@ grow1891: put1892: %t8967 = load ptr, ptr %t8954 %t8968 = getelementptr inbounds ptr, ptr %t8967, i32 %t8955 - store ptr @.str7475, ptr %t8968 + store ptr @.str7478, ptr %t8968 %t8969 = add i32 %t8955, 1 store i32 %t8969, ptr %t8952 br label %ifend1890 ifend1890: %t8970 = load ptr, ptr %t1 - %t8971 = call i32 @lp_str_eq(ptr %t8970, ptr @.str7476) + %t8971 = call i32 @lp_str_eq(ptr %t8970, ptr @.str7479) %t8972 = icmp ne i32 %t8971, 0 br i1 %t8972, label %then1893, label %ifend1895 then1893: - store ptr @.str7477, ptr %t380 + store ptr @.str7480, ptr %t380 %t8973 = load ptr, ptr %t387 %t8974 = getelementptr inbounds %LSlice, ptr %t8973, i32 0, i32 1 %t8975 = getelementptr inbounds %LSlice, ptr %t8973, i32 0, i32 2 @@ -77832,17 +77889,17 @@ grow1896: put1897: %t8989 = load ptr, ptr %t8976 %t8990 = getelementptr inbounds ptr, ptr %t8989, i32 %t8977 - store ptr @.str7478, ptr %t8990 + store ptr @.str7481, ptr %t8990 %t8991 = add i32 %t8977, 1 store i32 %t8991, ptr %t8974 br label %ifend1895 ifend1895: %t8992 = load ptr, ptr %t1 - %t8993 = call i32 @lp_str_eq(ptr %t8992, ptr @.str7479) + %t8993 = call i32 @lp_str_eq(ptr %t8992, ptr @.str7482) %t8994 = icmp ne i32 %t8993, 0 br i1 %t8994, label %then1898, label %ifend1900 then1898: - store ptr @.str7480, ptr %t380 + store ptr @.str7483, ptr %t380 %t8995 = load ptr, ptr %t387 %t8996 = getelementptr inbounds %LSlice, ptr %t8995, i32 0, i32 1 %t8997 = getelementptr inbounds %LSlice, ptr %t8995, i32 0, i32 2 @@ -77867,25 +77924,25 @@ grow1901: put1902: %t9011 = load ptr, ptr %t8998 %t9012 = getelementptr inbounds ptr, ptr %t9011, i32 %t8999 - store ptr @.str7481, ptr %t9012 + store ptr @.str7484, ptr %t9012 %t9013 = add i32 %t8999, 1 store i32 %t9013, ptr %t8996 br label %ifend1900 ifend1900: %t9014 = load ptr, ptr %t1 - %t9015 = call i32 @lp_str_eq(ptr %t9014, ptr @.str7482) + %t9015 = call i32 @lp_str_eq(ptr %t9014, ptr @.str7485) %t9016 = icmp ne i32 %t9015, 0 br i1 %t9016, label %then1903, label %ifend1905 then1903: - store ptr @.str7483, ptr %t380 + store ptr @.str7486, ptr %t380 br label %ifend1905 ifend1905: %t9017 = load ptr, ptr %t1 - %t9018 = call i32 @lp_str_eq(ptr %t9017, ptr @.str7484) + %t9018 = call i32 @lp_str_eq(ptr %t9017, ptr @.str7487) %t9019 = icmp ne i32 %t9018, 0 br i1 %t9019, label %then1906, label %ifend1908 then1906: - store ptr @.str7485, ptr %t380 + store ptr @.str7488, ptr %t380 %t9020 = load ptr, ptr %t387 %t9021 = getelementptr inbounds %LSlice, ptr %t9020, i32 0, i32 1 %t9022 = getelementptr inbounds %LSlice, ptr %t9020, i32 0, i32 2 @@ -77910,17 +77967,17 @@ grow1909: put1910: %t9036 = load ptr, ptr %t9023 %t9037 = getelementptr inbounds ptr, ptr %t9036, i32 %t9024 - store ptr @.str7486, ptr %t9037 + store ptr @.str7489, ptr %t9037 %t9038 = add i32 %t9024, 1 store i32 %t9038, ptr %t9021 br label %ifend1908 ifend1908: %t9039 = load ptr, ptr %t1 - %t9040 = call i32 @lp_str_eq(ptr %t9039, ptr @.str7487) + %t9040 = call i32 @lp_str_eq(ptr %t9039, ptr @.str7490) %t9041 = icmp ne i32 %t9040, 0 br i1 %t9041, label %then1911, label %ifend1913 then1911: - store ptr @.str7488, ptr %t380 + store ptr @.str7491, ptr %t380 %t9042 = load ptr, ptr %t387 %t9043 = getelementptr inbounds %LSlice, ptr %t9042, i32 0, i32 1 %t9044 = getelementptr inbounds %LSlice, ptr %t9042, i32 0, i32 2 @@ -77945,7 +78002,7 @@ grow1914: put1915: %t9058 = load ptr, ptr %t9045 %t9059 = getelementptr inbounds ptr, ptr %t9058, i32 %t9046 - store ptr @.str7489, ptr %t9059 + store ptr @.str7492, ptr %t9059 %t9060 = add i32 %t9046, 1 store i32 %t9060, ptr %t9043 %t9061 = load ptr, ptr %t387 @@ -77972,17 +78029,17 @@ grow1916: put1917: %t9077 = load ptr, ptr %t9064 %t9078 = getelementptr inbounds ptr, ptr %t9077, i32 %t9065 - store ptr @.str7490, ptr %t9078 + store ptr @.str7493, ptr %t9078 %t9079 = add i32 %t9065, 1 store i32 %t9079, ptr %t9062 br label %ifend1913 ifend1913: %t9080 = load ptr, ptr %t1 - %t9081 = call i32 @lp_str_eq(ptr %t9080, ptr @.str7491) + %t9081 = call i32 @lp_str_eq(ptr %t9080, ptr @.str7494) %t9082 = icmp ne i32 %t9081, 0 br i1 %t9082, label %then1918, label %ifend1920 then1918: - store ptr @.str7492, ptr %t380 + store ptr @.str7495, ptr %t380 %t9083 = load ptr, ptr %t387 %t9084 = getelementptr inbounds %LSlice, ptr %t9083, i32 0, i32 1 %t9085 = getelementptr inbounds %LSlice, ptr %t9083, i32 0, i32 2 @@ -78007,7 +78064,7 @@ grow1921: put1922: %t9099 = load ptr, ptr %t9086 %t9100 = getelementptr inbounds ptr, ptr %t9099, i32 %t9087 - store ptr @.str7493, ptr %t9100 + store ptr @.str7496, ptr %t9100 %t9101 = add i32 %t9087, 1 store i32 %t9101, ptr %t9084 %t9102 = load ptr, ptr %t387 @@ -78034,17 +78091,17 @@ grow1923: put1924: %t9118 = load ptr, ptr %t9105 %t9119 = getelementptr inbounds ptr, ptr %t9118, i32 %t9106 - store ptr @.str7494, ptr %t9119 + store ptr @.str7497, ptr %t9119 %t9120 = add i32 %t9106, 1 store i32 %t9120, ptr %t9103 br label %ifend1920 ifend1920: %t9121 = load ptr, ptr %t1 - %t9122 = call i32 @lp_str_eq(ptr %t9121, ptr @.str7495) + %t9122 = call i32 @lp_str_eq(ptr %t9121, ptr @.str7498) %t9123 = icmp ne i32 %t9122, 0 br i1 %t9123, label %then1925, label %ifend1927 then1925: - store ptr @.str7496, ptr %t380 + store ptr @.str7499, ptr %t380 %t9124 = load ptr, ptr %t387 %t9125 = getelementptr inbounds %LSlice, ptr %t9124, i32 0, i32 1 %t9126 = getelementptr inbounds %LSlice, ptr %t9124, i32 0, i32 2 @@ -78069,7 +78126,7 @@ grow1928: put1929: %t9140 = load ptr, ptr %t9127 %t9141 = getelementptr inbounds ptr, ptr %t9140, i32 %t9128 - store ptr @.str7497, ptr %t9141 + store ptr @.str7500, ptr %t9141 %t9142 = add i32 %t9128, 1 store i32 %t9142, ptr %t9125 %t9143 = load ptr, ptr %t387 @@ -78096,7 +78153,7 @@ grow1930: put1931: %t9159 = load ptr, ptr %t9146 %t9160 = getelementptr inbounds ptr, ptr %t9159, i32 %t9147 - store ptr @.str7498, ptr %t9160 + store ptr @.str7501, ptr %t9160 %t9161 = add i32 %t9147, 1 store i32 %t9161, ptr %t9144 %t9162 = load ptr, ptr %t387 @@ -78123,25 +78180,25 @@ grow1932: put1933: %t9178 = load ptr, ptr %t9165 %t9179 = getelementptr inbounds ptr, ptr %t9178, i32 %t9166 - store ptr @.str7499, ptr %t9179 + store ptr @.str7502, ptr %t9179 %t9180 = add i32 %t9166, 1 store i32 %t9180, ptr %t9163 br label %ifend1927 ifend1927: %t9181 = load ptr, ptr %t1 - %t9182 = call i32 @lp_str_eq(ptr %t9181, ptr @.str7500) + %t9182 = call i32 @lp_str_eq(ptr %t9181, ptr @.str7503) %t9183 = icmp ne i32 %t9182, 0 br i1 %t9183, label %then1934, label %ifend1936 then1934: - store ptr @.str7501, ptr %t380 + store ptr @.str7504, ptr %t380 br label %ifend1936 ifend1936: %t9184 = load ptr, ptr %t1 - %t9185 = call i32 @lp_str_eq(ptr %t9184, ptr @.str7502) + %t9185 = call i32 @lp_str_eq(ptr %t9184, ptr @.str7505) %t9186 = icmp ne i32 %t9185, 0 br i1 %t9186, label %then1937, label %ifend1939 then1937: - store ptr @.str7503, ptr %t380 + store ptr @.str7506, ptr %t380 %t9187 = load ptr, ptr %t387 %t9188 = getelementptr inbounds %LSlice, ptr %t9187, i32 0, i32 1 %t9189 = getelementptr inbounds %LSlice, ptr %t9187, i32 0, i32 2 @@ -78166,7 +78223,7 @@ grow1940: put1941: %t9203 = load ptr, ptr %t9190 %t9204 = getelementptr inbounds ptr, ptr %t9203, i32 %t9191 - store ptr @.str7504, ptr %t9204 + store ptr @.str7507, ptr %t9204 %t9205 = add i32 %t9191, 1 store i32 %t9205, ptr %t9188 %t9206 = load ptr, ptr %t387 @@ -78193,17 +78250,17 @@ grow1942: put1943: %t9222 = load ptr, ptr %t9209 %t9223 = getelementptr inbounds ptr, ptr %t9222, i32 %t9210 - store ptr @.str7505, ptr %t9223 + store ptr @.str7508, ptr %t9223 %t9224 = add i32 %t9210, 1 store i32 %t9224, ptr %t9207 br label %ifend1939 ifend1939: %t9225 = load ptr, ptr %t1 - %t9226 = call i32 @lp_str_eq(ptr %t9225, ptr @.str7506) + %t9226 = call i32 @lp_str_eq(ptr %t9225, ptr @.str7509) %t9227 = icmp ne i32 %t9226, 0 br i1 %t9227, label %then1944, label %ifend1946 then1944: - store ptr @.str7507, ptr %t380 + store ptr @.str7510, ptr %t380 %t9228 = load ptr, ptr %t387 %t9229 = getelementptr inbounds %LSlice, ptr %t9228, i32 0, i32 1 %t9230 = getelementptr inbounds %LSlice, ptr %t9228, i32 0, i32 2 @@ -78228,17 +78285,17 @@ grow1947: put1948: %t9244 = load ptr, ptr %t9231 %t9245 = getelementptr inbounds ptr, ptr %t9244, i32 %t9232 - store ptr @.str7508, ptr %t9245 + store ptr @.str7511, ptr %t9245 %t9246 = add i32 %t9232, 1 store i32 %t9246, ptr %t9229 br label %ifend1946 ifend1946: %t9247 = load ptr, ptr %t1 - %t9248 = call i32 @lp_str_eq(ptr %t9247, ptr @.str7509) + %t9248 = call i32 @lp_str_eq(ptr %t9247, ptr @.str7512) %t9249 = icmp ne i32 %t9248, 0 br i1 %t9249, label %then1949, label %ifend1951 then1949: - store ptr @.str7510, ptr %t380 + store ptr @.str7513, ptr %t380 %t9250 = load ptr, ptr %t387 %t9251 = getelementptr inbounds %LSlice, ptr %t9250, i32 0, i32 1 %t9252 = getelementptr inbounds %LSlice, ptr %t9250, i32 0, i32 2 @@ -78263,17 +78320,17 @@ grow1952: put1953: %t9266 = load ptr, ptr %t9253 %t9267 = getelementptr inbounds ptr, ptr %t9266, i32 %t9254 - store ptr @.str7511, ptr %t9267 + store ptr @.str7514, ptr %t9267 %t9268 = add i32 %t9254, 1 store i32 %t9268, ptr %t9251 br label %ifend1951 ifend1951: %t9269 = load ptr, ptr %t1 - %t9270 = call i32 @lp_str_eq(ptr %t9269, ptr @.str7512) + %t9270 = call i32 @lp_str_eq(ptr %t9269, ptr @.str7515) %t9271 = icmp ne i32 %t9270, 0 br i1 %t9271, label %then1954, label %ifend1956 then1954: - store ptr @.str7513, ptr %t380 + store ptr @.str7516, ptr %t380 %t9272 = load ptr, ptr %t387 %t9273 = getelementptr inbounds %LSlice, ptr %t9272, i32 0, i32 1 %t9274 = getelementptr inbounds %LSlice, ptr %t9272, i32 0, i32 2 @@ -78298,32 +78355,32 @@ grow1957: put1958: %t9288 = load ptr, ptr %t9275 %t9289 = getelementptr inbounds ptr, ptr %t9288, i32 %t9276 - store ptr @.str7514, ptr %t9289 + store ptr @.str7517, ptr %t9289 %t9290 = add i32 %t9276, 1 store i32 %t9290, ptr %t9273 br label %ifend1956 ifend1956: %t9291 = load ptr, ptr %t1 - %t9292 = call i32 @lp_str_eq(ptr %t9291, ptr @.str7515) + %t9292 = call i32 @lp_str_eq(ptr %t9291, ptr @.str7518) %t9293 = icmp ne i32 %t9292, 0 br i1 %t9293, label %then1959, label %ifend1961 then1959: - store ptr @.str7516, ptr %t380 + store ptr @.str7519, ptr %t380 br label %ifend1961 ifend1961: br label %ifend1884 ifend1884: %t9294 = load ptr, ptr %t0 - %t9295 = call i32 @lp_str_eq(ptr %t9294, ptr @.str7517) + %t9295 = call i32 @lp_str_eq(ptr %t9294, ptr @.str7520) %t9296 = icmp ne i32 %t9295, 0 br i1 %t9296, label %then1962, label %ifend1964 then1962: %t9297 = load ptr, ptr %t1 - %t9298 = call i32 @lp_str_eq(ptr %t9297, ptr @.str7518) + %t9298 = call i32 @lp_str_eq(ptr %t9297, ptr @.str7521) %t9299 = icmp ne i32 %t9298, 0 br i1 %t9299, label %then1965, label %ifend1967 then1965: - store ptr @.str7519, ptr %t380 + store ptr @.str7522, ptr %t380 %t9300 = load ptr, ptr %t387 %t9301 = getelementptr inbounds %LSlice, ptr %t9300, i32 0, i32 1 %t9302 = getelementptr inbounds %LSlice, ptr %t9300, i32 0, i32 2 @@ -78348,17 +78405,17 @@ grow1968: put1969: %t9316 = load ptr, ptr %t9303 %t9317 = getelementptr inbounds ptr, ptr %t9316, i32 %t9304 - store ptr @.str7520, ptr %t9317 + store ptr @.str7523, ptr %t9317 %t9318 = add i32 %t9304, 1 store i32 %t9318, ptr %t9301 br label %ifend1967 ifend1967: %t9319 = load ptr, ptr %t1 - %t9320 = call i32 @lp_str_eq(ptr %t9319, ptr @.str7521) + %t9320 = call i32 @lp_str_eq(ptr %t9319, ptr @.str7524) %t9321 = icmp ne i32 %t9320, 0 br i1 %t9321, label %then1970, label %ifend1972 then1970: - store ptr @.str7522, ptr %t380 + store ptr @.str7525, ptr %t380 %t9322 = load ptr, ptr %t387 %t9323 = getelementptr inbounds %LSlice, ptr %t9322, i32 0, i32 1 %t9324 = getelementptr inbounds %LSlice, ptr %t9322, i32 0, i32 2 @@ -78383,7 +78440,7 @@ grow1973: put1974: %t9338 = load ptr, ptr %t9325 %t9339 = getelementptr inbounds ptr, ptr %t9338, i32 %t9326 - store ptr @.str7523, ptr %t9339 + store ptr @.str7526, ptr %t9339 %t9340 = add i32 %t9326, 1 store i32 %t9340, ptr %t9323 %t9341 = load ptr, ptr %t387 @@ -78410,17 +78467,17 @@ grow1975: put1976: %t9357 = load ptr, ptr %t9344 %t9358 = getelementptr inbounds ptr, ptr %t9357, i32 %t9345 - store ptr @.str7524, ptr %t9358 + store ptr @.str7527, ptr %t9358 %t9359 = add i32 %t9345, 1 store i32 %t9359, ptr %t9342 br label %ifend1972 ifend1972: %t9360 = load ptr, ptr %t1 - %t9361 = call i32 @lp_str_eq(ptr %t9360, ptr @.str7525) + %t9361 = call i32 @lp_str_eq(ptr %t9360, ptr @.str7528) %t9362 = icmp ne i32 %t9361, 0 br i1 %t9362, label %then1977, label %ifend1979 then1977: - store ptr @.str7526, ptr %t380 + store ptr @.str7529, ptr %t380 %t9363 = load ptr, ptr %t387 %t9364 = getelementptr inbounds %LSlice, ptr %t9363, i32 0, i32 1 %t9365 = getelementptr inbounds %LSlice, ptr %t9363, i32 0, i32 2 @@ -78445,7 +78502,7 @@ grow1980: put1981: %t9379 = load ptr, ptr %t9366 %t9380 = getelementptr inbounds ptr, ptr %t9379, i32 %t9367 - store ptr @.str7527, ptr %t9380 + store ptr @.str7530, ptr %t9380 %t9381 = add i32 %t9367, 1 store i32 %t9381, ptr %t9364 %t9382 = load ptr, ptr %t387 @@ -78472,17 +78529,17 @@ grow1982: put1983: %t9398 = load ptr, ptr %t9385 %t9399 = getelementptr inbounds ptr, ptr %t9398, i32 %t9386 - store ptr @.str7528, ptr %t9399 + store ptr @.str7531, ptr %t9399 %t9400 = add i32 %t9386, 1 store i32 %t9400, ptr %t9383 br label %ifend1979 ifend1979: %t9401 = load ptr, ptr %t1 - %t9402 = call i32 @lp_str_eq(ptr %t9401, ptr @.str7529) + %t9402 = call i32 @lp_str_eq(ptr %t9401, ptr @.str7532) %t9403 = icmp ne i32 %t9402, 0 br i1 %t9403, label %then1984, label %ifend1986 then1984: - store ptr @.str7530, ptr %t380 + store ptr @.str7533, ptr %t380 %t9404 = load ptr, ptr %t387 %t9405 = getelementptr inbounds %LSlice, ptr %t9404, i32 0, i32 1 %t9406 = getelementptr inbounds %LSlice, ptr %t9404, i32 0, i32 2 @@ -78507,7 +78564,7 @@ grow1987: put1988: %t9420 = load ptr, ptr %t9407 %t9421 = getelementptr inbounds ptr, ptr %t9420, i32 %t9408 - store ptr @.str7531, ptr %t9421 + store ptr @.str7534, ptr %t9421 %t9422 = add i32 %t9408, 1 store i32 %t9422, ptr %t9405 %t9423 = load ptr, ptr %t387 @@ -78534,17 +78591,17 @@ grow1989: put1990: %t9439 = load ptr, ptr %t9426 %t9440 = getelementptr inbounds ptr, ptr %t9439, i32 %t9427 - store ptr @.str7532, ptr %t9440 + store ptr @.str7535, ptr %t9440 %t9441 = add i32 %t9427, 1 store i32 %t9441, ptr %t9424 br label %ifend1986 ifend1986: %t9442 = load ptr, ptr %t1 - %t9443 = call i32 @lp_str_eq(ptr %t9442, ptr @.str7533) + %t9443 = call i32 @lp_str_eq(ptr %t9442, ptr @.str7536) %t9444 = icmp ne i32 %t9443, 0 br i1 %t9444, label %then1991, label %ifend1993 then1991: - store ptr @.str7534, ptr %t380 + store ptr @.str7537, ptr %t380 %t9445 = load ptr, ptr %t387 %t9446 = getelementptr inbounds %LSlice, ptr %t9445, i32 0, i32 1 %t9447 = getelementptr inbounds %LSlice, ptr %t9445, i32 0, i32 2 @@ -78569,17 +78626,17 @@ grow1994: put1995: %t9461 = load ptr, ptr %t9448 %t9462 = getelementptr inbounds ptr, ptr %t9461, i32 %t9449 - store ptr @.str7535, ptr %t9462 + store ptr @.str7538, ptr %t9462 %t9463 = add i32 %t9449, 1 store i32 %t9463, ptr %t9446 br label %ifend1993 ifend1993: %t9464 = load ptr, ptr %t1 - %t9465 = call i32 @lp_str_eq(ptr %t9464, ptr @.str7536) + %t9465 = call i32 @lp_str_eq(ptr %t9464, ptr @.str7539) %t9466 = icmp ne i32 %t9465, 0 br i1 %t9466, label %then1996, label %ifend1998 then1996: - store ptr @.str7537, ptr %t380 + store ptr @.str7540, ptr %t380 %t9467 = load ptr, ptr %t387 %t9468 = getelementptr inbounds %LSlice, ptr %t9467, i32 0, i32 1 %t9469 = getelementptr inbounds %LSlice, ptr %t9467, i32 0, i32 2 @@ -78604,7 +78661,7 @@ grow1999: put2000: %t9483 = load ptr, ptr %t9470 %t9484 = getelementptr inbounds ptr, ptr %t9483, i32 %t9471 - store ptr @.str7538, ptr %t9484 + store ptr @.str7541, ptr %t9484 %t9485 = add i32 %t9471, 1 store i32 %t9485, ptr %t9468 %t9486 = load ptr, ptr %t387 @@ -78631,17 +78688,17 @@ grow2001: put2002: %t9502 = load ptr, ptr %t9489 %t9503 = getelementptr inbounds ptr, ptr %t9502, i32 %t9490 - store ptr @.str7539, ptr %t9503 + store ptr @.str7542, ptr %t9503 %t9504 = add i32 %t9490, 1 store i32 %t9504, ptr %t9487 br label %ifend1998 ifend1998: %t9505 = load ptr, ptr %t1 - %t9506 = call i32 @lp_str_eq(ptr %t9505, ptr @.str7540) + %t9506 = call i32 @lp_str_eq(ptr %t9505, ptr @.str7543) %t9507 = icmp ne i32 %t9506, 0 br i1 %t9507, label %then2003, label %ifend2005 then2003: - store ptr @.str7541, ptr %t380 + store ptr @.str7544, ptr %t380 %t9508 = load ptr, ptr %t387 %t9509 = getelementptr inbounds %LSlice, ptr %t9508, i32 0, i32 1 %t9510 = getelementptr inbounds %LSlice, ptr %t9508, i32 0, i32 2 @@ -78666,17 +78723,17 @@ grow2006: put2007: %t9524 = load ptr, ptr %t9511 %t9525 = getelementptr inbounds ptr, ptr %t9524, i32 %t9512 - store ptr @.str7542, ptr %t9525 + store ptr @.str7545, ptr %t9525 %t9526 = add i32 %t9512, 1 store i32 %t9526, ptr %t9509 br label %ifend2005 ifend2005: %t9527 = load ptr, ptr %t1 - %t9528 = call i32 @lp_str_eq(ptr %t9527, ptr @.str7543) + %t9528 = call i32 @lp_str_eq(ptr %t9527, ptr @.str7546) %t9529 = icmp ne i32 %t9528, 0 br i1 %t9529, label %then2008, label %ifend2010 then2008: - store ptr @.str7544, ptr %t380 + store ptr @.str7547, ptr %t380 %t9530 = load ptr, ptr %t387 %t9531 = getelementptr inbounds %LSlice, ptr %t9530, i32 0, i32 1 %t9532 = getelementptr inbounds %LSlice, ptr %t9530, i32 0, i32 2 @@ -78701,17 +78758,17 @@ grow2011: put2012: %t9546 = load ptr, ptr %t9533 %t9547 = getelementptr inbounds ptr, ptr %t9546, i32 %t9534 - store ptr @.str7545, ptr %t9547 + store ptr @.str7548, ptr %t9547 %t9548 = add i32 %t9534, 1 store i32 %t9548, ptr %t9531 br label %ifend2010 ifend2010: %t9549 = load ptr, ptr %t1 - %t9550 = call i32 @lp_str_eq(ptr %t9549, ptr @.str7546) + %t9550 = call i32 @lp_str_eq(ptr %t9549, ptr @.str7549) %t9551 = icmp ne i32 %t9550, 0 br i1 %t9551, label %then2013, label %ifend2015 then2013: - store ptr @.str7547, ptr %t380 + store ptr @.str7550, ptr %t380 %t9552 = load ptr, ptr %t387 %t9553 = getelementptr inbounds %LSlice, ptr %t9552, i32 0, i32 1 %t9554 = getelementptr inbounds %LSlice, ptr %t9552, i32 0, i32 2 @@ -78736,17 +78793,17 @@ grow2016: put2017: %t9568 = load ptr, ptr %t9555 %t9569 = getelementptr inbounds ptr, ptr %t9568, i32 %t9556 - store ptr @.str7548, ptr %t9569 + store ptr @.str7551, ptr %t9569 %t9570 = add i32 %t9556, 1 store i32 %t9570, ptr %t9553 br label %ifend2015 ifend2015: %t9571 = load ptr, ptr %t1 - %t9572 = call i32 @lp_str_eq(ptr %t9571, ptr @.str7549) + %t9572 = call i32 @lp_str_eq(ptr %t9571, ptr @.str7552) %t9573 = icmp ne i32 %t9572, 0 br i1 %t9573, label %then2018, label %ifend2020 then2018: - store ptr @.str7550, ptr %t380 + store ptr @.str7553, ptr %t380 %t9574 = load ptr, ptr %t387 %t9575 = getelementptr inbounds %LSlice, ptr %t9574, i32 0, i32 1 %t9576 = getelementptr inbounds %LSlice, ptr %t9574, i32 0, i32 2 @@ -78771,7 +78828,7 @@ grow2021: put2022: %t9590 = load ptr, ptr %t9577 %t9591 = getelementptr inbounds ptr, ptr %t9590, i32 %t9578 - store ptr @.str7551, ptr %t9591 + store ptr @.str7554, ptr %t9591 %t9592 = add i32 %t9578, 1 store i32 %t9592, ptr %t9575 br label %ifend2020 @@ -78779,16 +78836,16 @@ ifend2020: br label %ifend1964 ifend1964: %t9593 = load ptr, ptr %t0 - %t9594 = call i32 @lp_str_eq(ptr %t9593, ptr @.str7552) + %t9594 = call i32 @lp_str_eq(ptr %t9593, ptr @.str7555) %t9595 = icmp ne i32 %t9594, 0 br i1 %t9595, label %then2023, label %ifend2025 then2023: %t9596 = load ptr, ptr %t1 - %t9597 = call i32 @lp_str_eq(ptr %t9596, ptr @.str7553) + %t9597 = call i32 @lp_str_eq(ptr %t9596, ptr @.str7556) %t9598 = icmp ne i32 %t9597, 0 br i1 %t9598, label %then2026, label %ifend2028 then2026: - store ptr @.str7554, ptr %t380 + store ptr @.str7557, ptr %t380 %t9599 = load ptr, ptr %t387 %t9600 = getelementptr inbounds %LSlice, ptr %t9599, i32 0, i32 1 %t9601 = getelementptr inbounds %LSlice, ptr %t9599, i32 0, i32 2 @@ -78813,17 +78870,17 @@ grow2029: put2030: %t9615 = load ptr, ptr %t9602 %t9616 = getelementptr inbounds ptr, ptr %t9615, i32 %t9603 - store ptr @.str7555, ptr %t9616 + store ptr @.str7558, ptr %t9616 %t9617 = add i32 %t9603, 1 store i32 %t9617, ptr %t9600 br label %ifend2028 ifend2028: %t9618 = load ptr, ptr %t1 - %t9619 = call i32 @lp_str_eq(ptr %t9618, ptr @.str7556) + %t9619 = call i32 @lp_str_eq(ptr %t9618, ptr @.str7559) %t9620 = icmp ne i32 %t9619, 0 br i1 %t9620, label %then2031, label %ifend2033 then2031: - store ptr @.str7557, ptr %t380 + store ptr @.str7560, ptr %t380 %t9621 = load ptr, ptr %t387 %t9622 = getelementptr inbounds %LSlice, ptr %t9621, i32 0, i32 1 %t9623 = getelementptr inbounds %LSlice, ptr %t9621, i32 0, i32 2 @@ -78848,17 +78905,17 @@ grow2034: put2035: %t9637 = load ptr, ptr %t9624 %t9638 = getelementptr inbounds ptr, ptr %t9637, i32 %t9625 - store ptr @.str7558, ptr %t9638 + store ptr @.str7561, ptr %t9638 %t9639 = add i32 %t9625, 1 store i32 %t9639, ptr %t9622 br label %ifend2033 ifend2033: %t9640 = load ptr, ptr %t1 - %t9641 = call i32 @lp_str_eq(ptr %t9640, ptr @.str7559) + %t9641 = call i32 @lp_str_eq(ptr %t9640, ptr @.str7562) %t9642 = icmp ne i32 %t9641, 0 br i1 %t9642, label %then2036, label %ifend2038 then2036: - store ptr @.str7560, ptr %t380 + store ptr @.str7563, ptr %t380 %t9643 = load ptr, ptr %t387 %t9644 = getelementptr inbounds %LSlice, ptr %t9643, i32 0, i32 1 %t9645 = getelementptr inbounds %LSlice, ptr %t9643, i32 0, i32 2 @@ -78883,17 +78940,17 @@ grow2039: put2040: %t9659 = load ptr, ptr %t9646 %t9660 = getelementptr inbounds ptr, ptr %t9659, i32 %t9647 - store ptr @.str7561, ptr %t9660 + store ptr @.str7564, ptr %t9660 %t9661 = add i32 %t9647, 1 store i32 %t9661, ptr %t9644 br label %ifend2038 ifend2038: %t9662 = load ptr, ptr %t1 - %t9663 = call i32 @lp_str_eq(ptr %t9662, ptr @.str7562) + %t9663 = call i32 @lp_str_eq(ptr %t9662, ptr @.str7565) %t9664 = icmp ne i32 %t9663, 0 br i1 %t9664, label %then2041, label %ifend2043 then2041: - store ptr @.str7563, ptr %t380 + store ptr @.str7566, ptr %t380 %t9665 = load ptr, ptr %t387 %t9666 = getelementptr inbounds %LSlice, ptr %t9665, i32 0, i32 1 %t9667 = getelementptr inbounds %LSlice, ptr %t9665, i32 0, i32 2 @@ -78918,17 +78975,17 @@ grow2044: put2045: %t9681 = load ptr, ptr %t9668 %t9682 = getelementptr inbounds ptr, ptr %t9681, i32 %t9669 - store ptr @.str7564, ptr %t9682 + store ptr @.str7567, ptr %t9682 %t9683 = add i32 %t9669, 1 store i32 %t9683, ptr %t9666 br label %ifend2043 ifend2043: %t9684 = load ptr, ptr %t1 - %t9685 = call i32 @lp_str_eq(ptr %t9684, ptr @.str7565) + %t9685 = call i32 @lp_str_eq(ptr %t9684, ptr @.str7568) %t9686 = icmp ne i32 %t9685, 0 br i1 %t9686, label %then2046, label %ifend2048 then2046: - store ptr @.str7566, ptr %t380 + store ptr @.str7569, ptr %t380 %t9687 = load ptr, ptr %t387 %t9688 = getelementptr inbounds %LSlice, ptr %t9687, i32 0, i32 1 %t9689 = getelementptr inbounds %LSlice, ptr %t9687, i32 0, i32 2 @@ -78953,17 +79010,17 @@ grow2049: put2050: %t9703 = load ptr, ptr %t9690 %t9704 = getelementptr inbounds ptr, ptr %t9703, i32 %t9691 - store ptr @.str7567, ptr %t9704 + store ptr @.str7570, ptr %t9704 %t9705 = add i32 %t9691, 1 store i32 %t9705, ptr %t9688 br label %ifend2048 ifend2048: %t9706 = load ptr, ptr %t1 - %t9707 = call i32 @lp_str_eq(ptr %t9706, ptr @.str7568) + %t9707 = call i32 @lp_str_eq(ptr %t9706, ptr @.str7571) %t9708 = icmp ne i32 %t9707, 0 br i1 %t9708, label %then2051, label %ifend2053 then2051: - store ptr @.str7569, ptr %t380 + store ptr @.str7572, ptr %t380 %t9709 = load ptr, ptr %t387 %t9710 = getelementptr inbounds %LSlice, ptr %t9709, i32 0, i32 1 %t9711 = getelementptr inbounds %LSlice, ptr %t9709, i32 0, i32 2 @@ -78988,7 +79045,7 @@ grow2054: put2055: %t9725 = load ptr, ptr %t9712 %t9726 = getelementptr inbounds ptr, ptr %t9725, i32 %t9713 - store ptr @.str7570, ptr %t9726 + store ptr @.str7573, ptr %t9726 %t9727 = add i32 %t9713, 1 store i32 %t9727, ptr %t9710 %t9728 = load ptr, ptr %t387 @@ -79015,17 +79072,17 @@ grow2056: put2057: %t9744 = load ptr, ptr %t9731 %t9745 = getelementptr inbounds ptr, ptr %t9744, i32 %t9732 - store ptr @.str7571, ptr %t9745 + store ptr @.str7574, ptr %t9745 %t9746 = add i32 %t9732, 1 store i32 %t9746, ptr %t9729 br label %ifend2053 ifend2053: %t9747 = load ptr, ptr %t1 - %t9748 = call i32 @lp_str_eq(ptr %t9747, ptr @.str7572) + %t9748 = call i32 @lp_str_eq(ptr %t9747, ptr @.str7575) %t9749 = icmp ne i32 %t9748, 0 br i1 %t9749, label %then2058, label %ifend2060 then2058: - store ptr @.str7573, ptr %t380 + store ptr @.str7576, ptr %t380 %t9750 = load ptr, ptr %t387 %t9751 = getelementptr inbounds %LSlice, ptr %t9750, i32 0, i32 1 %t9752 = getelementptr inbounds %LSlice, ptr %t9750, i32 0, i32 2 @@ -79050,7 +79107,7 @@ grow2061: put2062: %t9766 = load ptr, ptr %t9753 %t9767 = getelementptr inbounds ptr, ptr %t9766, i32 %t9754 - store ptr @.str7574, ptr %t9767 + store ptr @.str7577, ptr %t9767 %t9768 = add i32 %t9754, 1 store i32 %t9768, ptr %t9751 %t9769 = load ptr, ptr %t387 @@ -79077,17 +79134,17 @@ grow2063: put2064: %t9785 = load ptr, ptr %t9772 %t9786 = getelementptr inbounds ptr, ptr %t9785, i32 %t9773 - store ptr @.str7575, ptr %t9786 + store ptr @.str7578, ptr %t9786 %t9787 = add i32 %t9773, 1 store i32 %t9787, ptr %t9770 br label %ifend2060 ifend2060: %t9788 = load ptr, ptr %t1 - %t9789 = call i32 @lp_str_eq(ptr %t9788, ptr @.str7576) + %t9789 = call i32 @lp_str_eq(ptr %t9788, ptr @.str7579) %t9790 = icmp ne i32 %t9789, 0 br i1 %t9790, label %then2065, label %ifend2067 then2065: - store ptr @.str7577, ptr %t380 + store ptr @.str7580, ptr %t380 %t9791 = load ptr, ptr %t387 %t9792 = getelementptr inbounds %LSlice, ptr %t9791, i32 0, i32 1 %t9793 = getelementptr inbounds %LSlice, ptr %t9791, i32 0, i32 2 @@ -79112,7 +79169,7 @@ grow2068: put2069: %t9807 = load ptr, ptr %t9794 %t9808 = getelementptr inbounds ptr, ptr %t9807, i32 %t9795 - store ptr @.str7578, ptr %t9808 + store ptr @.str7581, ptr %t9808 %t9809 = add i32 %t9795, 1 store i32 %t9809, ptr %t9792 %t9810 = load ptr, ptr %t387 @@ -79139,17 +79196,17 @@ grow2070: put2071: %t9826 = load ptr, ptr %t9813 %t9827 = getelementptr inbounds ptr, ptr %t9826, i32 %t9814 - store ptr @.str7579, ptr %t9827 + store ptr @.str7582, ptr %t9827 %t9828 = add i32 %t9814, 1 store i32 %t9828, ptr %t9811 br label %ifend2067 ifend2067: %t9829 = load ptr, ptr %t1 - %t9830 = call i32 @lp_str_eq(ptr %t9829, ptr @.str7580) + %t9830 = call i32 @lp_str_eq(ptr %t9829, ptr @.str7583) %t9831 = icmp ne i32 %t9830, 0 br i1 %t9831, label %then2072, label %ifend2074 then2072: - store ptr @.str7581, ptr %t380 + store ptr @.str7584, ptr %t380 %t9832 = load ptr, ptr %t387 %t9833 = getelementptr inbounds %LSlice, ptr %t9832, i32 0, i32 1 %t9834 = getelementptr inbounds %LSlice, ptr %t9832, i32 0, i32 2 @@ -79174,7 +79231,7 @@ grow2075: put2076: %t9848 = load ptr, ptr %t9835 %t9849 = getelementptr inbounds ptr, ptr %t9848, i32 %t9836 - store ptr @.str7582, ptr %t9849 + store ptr @.str7585, ptr %t9849 %t9850 = add i32 %t9836, 1 store i32 %t9850, ptr %t9833 %t9851 = load ptr, ptr %t387 @@ -79201,7 +79258,7 @@ grow2077: put2078: %t9867 = load ptr, ptr %t9854 %t9868 = getelementptr inbounds ptr, ptr %t9867, i32 %t9855 - store ptr @.str7583, ptr %t9868 + store ptr @.str7586, ptr %t9868 %t9869 = add i32 %t9855, 1 store i32 %t9869, ptr %t9852 %t9870 = load ptr, ptr %t387 @@ -79228,7 +79285,7 @@ grow2079: put2080: %t9886 = load ptr, ptr %t9873 %t9887 = getelementptr inbounds ptr, ptr %t9886, i32 %t9874 - store ptr @.str7584, ptr %t9887 + store ptr @.str7587, ptr %t9887 %t9888 = add i32 %t9874, 1 store i32 %t9888, ptr %t9871 br label %ifend2074 @@ -79236,16 +79293,16 @@ ifend2074: br label %ifend2025 ifend2025: %t9889 = load ptr, ptr %t0 - %t9890 = call i32 @lp_str_eq(ptr %t9889, ptr @.str7585) + %t9890 = call i32 @lp_str_eq(ptr %t9889, ptr @.str7588) %t9891 = icmp ne i32 %t9890, 0 br i1 %t9891, label %then2081, label %ifend2083 then2081: %t9892 = load ptr, ptr %t1 - %t9893 = call i32 @lp_str_eq(ptr %t9892, ptr @.str7586) + %t9893 = call i32 @lp_str_eq(ptr %t9892, ptr @.str7589) %t9894 = icmp ne i32 %t9893, 0 br i1 %t9894, label %then2084, label %ifend2086 then2084: - store ptr @.str7587, ptr %t380 + store ptr @.str7590, ptr %t380 %t9895 = load ptr, ptr %t387 %t9896 = getelementptr inbounds %LSlice, ptr %t9895, i32 0, i32 1 %t9897 = getelementptr inbounds %LSlice, ptr %t9895, i32 0, i32 2 @@ -79270,17 +79327,17 @@ grow2087: put2088: %t9911 = load ptr, ptr %t9898 %t9912 = getelementptr inbounds ptr, ptr %t9911, i32 %t9899 - store ptr @.str7588, ptr %t9912 + store ptr @.str7591, ptr %t9912 %t9913 = add i32 %t9899, 1 store i32 %t9913, ptr %t9896 br label %ifend2086 ifend2086: %t9914 = load ptr, ptr %t1 - %t9915 = call i32 @lp_str_eq(ptr %t9914, ptr @.str7589) + %t9915 = call i32 @lp_str_eq(ptr %t9914, ptr @.str7592) %t9916 = icmp ne i32 %t9915, 0 br i1 %t9916, label %then2089, label %ifend2091 then2089: - store ptr @.str7590, ptr %t380 + store ptr @.str7593, ptr %t380 %t9917 = load ptr, ptr %t387 %t9918 = getelementptr inbounds %LSlice, ptr %t9917, i32 0, i32 1 %t9919 = getelementptr inbounds %LSlice, ptr %t9917, i32 0, i32 2 @@ -79305,7 +79362,7 @@ grow2092: put2093: %t9933 = load ptr, ptr %t9920 %t9934 = getelementptr inbounds ptr, ptr %t9933, i32 %t9921 - store ptr @.str7591, ptr %t9934 + store ptr @.str7594, ptr %t9934 %t9935 = add i32 %t9921, 1 store i32 %t9935, ptr %t9918 %t9936 = load ptr, ptr %t387 @@ -79332,17 +79389,17 @@ grow2094: put2095: %t9952 = load ptr, ptr %t9939 %t9953 = getelementptr inbounds ptr, ptr %t9952, i32 %t9940 - store ptr @.str7592, ptr %t9953 + store ptr @.str7595, ptr %t9953 %t9954 = add i32 %t9940, 1 store i32 %t9954, ptr %t9937 br label %ifend2091 ifend2091: %t9955 = load ptr, ptr %t1 - %t9956 = call i32 @lp_str_eq(ptr %t9955, ptr @.str7593) + %t9956 = call i32 @lp_str_eq(ptr %t9955, ptr @.str7596) %t9957 = icmp ne i32 %t9956, 0 br i1 %t9957, label %then2096, label %ifend2098 then2096: - store ptr @.str7594, ptr %t380 + store ptr @.str7597, ptr %t380 %t9958 = load ptr, ptr %t387 %t9959 = getelementptr inbounds %LSlice, ptr %t9958, i32 0, i32 1 %t9960 = getelementptr inbounds %LSlice, ptr %t9958, i32 0, i32 2 @@ -79367,7 +79424,7 @@ grow2099: put2100: %t9974 = load ptr, ptr %t9961 %t9975 = getelementptr inbounds ptr, ptr %t9974, i32 %t9962 - store ptr @.str7595, ptr %t9975 + store ptr @.str7598, ptr %t9975 %t9976 = add i32 %t9962, 1 store i32 %t9976, ptr %t9959 %t9977 = load ptr, ptr %t387 @@ -79394,7 +79451,7 @@ grow2101: put2102: %t9993 = load ptr, ptr %t9980 %t9994 = getelementptr inbounds ptr, ptr %t9993, i32 %t9981 - store ptr @.str7596, ptr %t9994 + store ptr @.str7599, ptr %t9994 %t9995 = add i32 %t9981, 1 store i32 %t9995, ptr %t9978 %t9996 = load ptr, ptr %t387 @@ -79421,17 +79478,17 @@ grow2103: put2104: %t10012 = load ptr, ptr %t9999 %t10013 = getelementptr inbounds ptr, ptr %t10012, i32 %t10000 - store ptr @.str7597, ptr %t10013 + store ptr @.str7600, ptr %t10013 %t10014 = add i32 %t10000, 1 store i32 %t10014, ptr %t9997 br label %ifend2098 ifend2098: %t10015 = load ptr, ptr %t1 - %t10016 = call i32 @lp_str_eq(ptr %t10015, ptr @.str7598) + %t10016 = call i32 @lp_str_eq(ptr %t10015, ptr @.str7601) %t10017 = icmp ne i32 %t10016, 0 br i1 %t10017, label %then2105, label %ifend2107 then2105: - store ptr @.str7599, ptr %t380 + store ptr @.str7602, ptr %t380 %t10018 = load ptr, ptr %t387 %t10019 = getelementptr inbounds %LSlice, ptr %t10018, i32 0, i32 1 %t10020 = getelementptr inbounds %LSlice, ptr %t10018, i32 0, i32 2 @@ -79456,7 +79513,7 @@ grow2108: put2109: %t10034 = load ptr, ptr %t10021 %t10035 = getelementptr inbounds ptr, ptr %t10034, i32 %t10022 - store ptr @.str7600, ptr %t10035 + store ptr @.str7603, ptr %t10035 %t10036 = add i32 %t10022, 1 store i32 %t10036, ptr %t10019 %t10037 = load ptr, ptr %t387 @@ -79483,7 +79540,7 @@ grow2110: put2111: %t10053 = load ptr, ptr %t10040 %t10054 = getelementptr inbounds ptr, ptr %t10053, i32 %t10041 - store ptr @.str7601, ptr %t10054 + store ptr @.str7604, ptr %t10054 %t10055 = add i32 %t10041, 1 store i32 %t10055, ptr %t10038 br label %ifend2107 @@ -79491,16 +79548,16 @@ ifend2107: br label %ifend2083 ifend2083: %t10056 = load ptr, ptr %t0 - %t10057 = call i32 @lp_str_eq(ptr %t10056, ptr @.str7602) + %t10057 = call i32 @lp_str_eq(ptr %t10056, ptr @.str7605) %t10058 = icmp ne i32 %t10057, 0 br i1 %t10058, label %then2112, label %ifend2114 then2112: %t10059 = load ptr, ptr %t1 - %t10060 = call i32 @lp_str_eq(ptr %t10059, ptr @.str7603) + %t10060 = call i32 @lp_str_eq(ptr %t10059, ptr @.str7606) %t10061 = icmp ne i32 %t10060, 0 br i1 %t10061, label %then2115, label %ifend2117 then2115: - store ptr @.str7604, ptr %t380 + store ptr @.str7607, ptr %t380 %t10062 = load ptr, ptr %t387 %t10063 = getelementptr inbounds %LSlice, ptr %t10062, i32 0, i32 1 %t10064 = getelementptr inbounds %LSlice, ptr %t10062, i32 0, i32 2 @@ -79525,7 +79582,7 @@ grow2118: put2119: %t10078 = load ptr, ptr %t10065 %t10079 = getelementptr inbounds ptr, ptr %t10078, i32 %t10066 - store ptr @.str7605, ptr %t10079 + store ptr @.str7608, ptr %t10079 %t10080 = add i32 %t10066, 1 store i32 %t10080, ptr %t10063 %t10081 = load ptr, ptr %t387 @@ -79552,7 +79609,7 @@ grow2120: put2121: %t10097 = load ptr, ptr %t10084 %t10098 = getelementptr inbounds ptr, ptr %t10097, i32 %t10085 - store ptr @.str7606, ptr %t10098 + store ptr @.str7609, ptr %t10098 %t10099 = add i32 %t10085, 1 store i32 %t10099, ptr %t10082 %t10100 = load ptr, ptr %t387 @@ -79579,7 +79636,7 @@ grow2122: put2123: %t10116 = load ptr, ptr %t10103 %t10117 = getelementptr inbounds ptr, ptr %t10116, i32 %t10104 - store ptr @.str7607, ptr %t10117 + store ptr @.str7610, ptr %t10117 %t10118 = add i32 %t10104, 1 store i32 %t10118, ptr %t10101 %t10119 = load ptr, ptr %t387 @@ -79606,17 +79663,17 @@ grow2124: put2125: %t10135 = load ptr, ptr %t10122 %t10136 = getelementptr inbounds ptr, ptr %t10135, i32 %t10123 - store ptr @.str7608, ptr %t10136 + store ptr @.str7611, ptr %t10136 %t10137 = add i32 %t10123, 1 store i32 %t10137, ptr %t10120 br label %ifend2117 ifend2117: %t10138 = load ptr, ptr %t1 - %t10139 = call i32 @lp_str_eq(ptr %t10138, ptr @.str7609) + %t10139 = call i32 @lp_str_eq(ptr %t10138, ptr @.str7612) %t10140 = icmp ne i32 %t10139, 0 br i1 %t10140, label %then2126, label %ifend2128 then2126: - store ptr @.str7610, ptr %t380 + store ptr @.str7613, ptr %t380 %t10141 = load ptr, ptr %t387 %t10142 = getelementptr inbounds %LSlice, ptr %t10141, i32 0, i32 1 %t10143 = getelementptr inbounds %LSlice, ptr %t10141, i32 0, i32 2 @@ -79641,7 +79698,7 @@ grow2129: put2130: %t10157 = load ptr, ptr %t10144 %t10158 = getelementptr inbounds ptr, ptr %t10157, i32 %t10145 - store ptr @.str7611, ptr %t10158 + store ptr @.str7614, ptr %t10158 %t10159 = add i32 %t10145, 1 store i32 %t10159, ptr %t10142 %t10160 = load ptr, ptr %t387 @@ -79668,7 +79725,7 @@ grow2131: put2132: %t10176 = load ptr, ptr %t10163 %t10177 = getelementptr inbounds ptr, ptr %t10176, i32 %t10164 - store ptr @.str7612, ptr %t10177 + store ptr @.str7615, ptr %t10177 %t10178 = add i32 %t10164, 1 store i32 %t10178, ptr %t10161 %t10179 = load ptr, ptr %t387 @@ -79695,17 +79752,17 @@ grow2133: put2134: %t10195 = load ptr, ptr %t10182 %t10196 = getelementptr inbounds ptr, ptr %t10195, i32 %t10183 - store ptr @.str7613, ptr %t10196 + store ptr @.str7616, ptr %t10196 %t10197 = add i32 %t10183, 1 store i32 %t10197, ptr %t10180 br label %ifend2128 ifend2128: %t10198 = load ptr, ptr %t1 - %t10199 = call i32 @lp_str_eq(ptr %t10198, ptr @.str7614) + %t10199 = call i32 @lp_str_eq(ptr %t10198, ptr @.str7617) %t10200 = icmp ne i32 %t10199, 0 br i1 %t10200, label %then2135, label %ifend2137 then2135: - store ptr @.str7615, ptr %t380 + store ptr @.str7618, ptr %t380 %t10201 = load ptr, ptr %t387 %t10202 = getelementptr inbounds %LSlice, ptr %t10201, i32 0, i32 1 %t10203 = getelementptr inbounds %LSlice, ptr %t10201, i32 0, i32 2 @@ -79730,7 +79787,7 @@ grow2138: put2139: %t10217 = load ptr, ptr %t10204 %t10218 = getelementptr inbounds ptr, ptr %t10217, i32 %t10205 - store ptr @.str7616, ptr %t10218 + store ptr @.str7619, ptr %t10218 %t10219 = add i32 %t10205, 1 store i32 %t10219, ptr %t10202 %t10220 = load ptr, ptr %t387 @@ -79757,7 +79814,7 @@ grow2140: put2141: %t10236 = load ptr, ptr %t10223 %t10237 = getelementptr inbounds ptr, ptr %t10236, i32 %t10224 - store ptr @.str7617, ptr %t10237 + store ptr @.str7620, ptr %t10237 %t10238 = add i32 %t10224, 1 store i32 %t10238, ptr %t10221 %t10239 = load ptr, ptr %t387 @@ -79784,7 +79841,7 @@ grow2142: put2143: %t10255 = load ptr, ptr %t10242 %t10256 = getelementptr inbounds ptr, ptr %t10255, i32 %t10243 - store ptr @.str7618, ptr %t10256 + store ptr @.str7621, ptr %t10256 %t10257 = add i32 %t10243, 1 store i32 %t10257, ptr %t10240 %t10258 = load ptr, ptr %t387 @@ -79811,7 +79868,7 @@ grow2144: put2145: %t10274 = load ptr, ptr %t10261 %t10275 = getelementptr inbounds ptr, ptr %t10274, i32 %t10262 - store ptr @.str7619, ptr %t10275 + store ptr @.str7622, ptr %t10275 %t10276 = add i32 %t10262, 1 store i32 %t10276, ptr %t10259 %t10277 = load ptr, ptr %t387 @@ -79838,17 +79895,17 @@ grow2146: put2147: %t10293 = load ptr, ptr %t10280 %t10294 = getelementptr inbounds ptr, ptr %t10293, i32 %t10281 - store ptr @.str7620, ptr %t10294 + store ptr @.str7623, ptr %t10294 %t10295 = add i32 %t10281, 1 store i32 %t10295, ptr %t10278 br label %ifend2137 ifend2137: %t10296 = load ptr, ptr %t1 - %t10297 = call i32 @lp_str_eq(ptr %t10296, ptr @.str7621) + %t10297 = call i32 @lp_str_eq(ptr %t10296, ptr @.str7624) %t10298 = icmp ne i32 %t10297, 0 br i1 %t10298, label %then2148, label %ifend2150 then2148: - store ptr @.str7622, ptr %t380 + store ptr @.str7625, ptr %t380 %t10299 = load ptr, ptr %t387 %t10300 = getelementptr inbounds %LSlice, ptr %t10299, i32 0, i32 1 %t10301 = getelementptr inbounds %LSlice, ptr %t10299, i32 0, i32 2 @@ -79873,7 +79930,7 @@ grow2151: put2152: %t10315 = load ptr, ptr %t10302 %t10316 = getelementptr inbounds ptr, ptr %t10315, i32 %t10303 - store ptr @.str7623, ptr %t10316 + store ptr @.str7626, ptr %t10316 %t10317 = add i32 %t10303, 1 store i32 %t10317, ptr %t10300 %t10318 = load ptr, ptr %t387 @@ -79900,7 +79957,7 @@ grow2153: put2154: %t10334 = load ptr, ptr %t10321 %t10335 = getelementptr inbounds ptr, ptr %t10334, i32 %t10322 - store ptr @.str7624, ptr %t10335 + store ptr @.str7627, ptr %t10335 %t10336 = add i32 %t10322, 1 store i32 %t10336, ptr %t10319 %t10337 = load ptr, ptr %t387 @@ -79927,17 +79984,17 @@ grow2155: put2156: %t10353 = load ptr, ptr %t10340 %t10354 = getelementptr inbounds ptr, ptr %t10353, i32 %t10341 - store ptr @.str7625, ptr %t10354 + store ptr @.str7628, ptr %t10354 %t10355 = add i32 %t10341, 1 store i32 %t10355, ptr %t10338 br label %ifend2150 ifend2150: %t10356 = load ptr, ptr %t1 - %t10357 = call i32 @lp_str_eq(ptr %t10356, ptr @.str7626) + %t10357 = call i32 @lp_str_eq(ptr %t10356, ptr @.str7629) %t10358 = icmp ne i32 %t10357, 0 br i1 %t10358, label %then2157, label %ifend2159 then2157: - store ptr @.str7627, ptr %t380 + store ptr @.str7630, ptr %t380 %t10359 = load ptr, ptr %t387 %t10360 = getelementptr inbounds %LSlice, ptr %t10359, i32 0, i32 1 %t10361 = getelementptr inbounds %LSlice, ptr %t10359, i32 0, i32 2 @@ -79962,7 +80019,7 @@ grow2160: put2161: %t10375 = load ptr, ptr %t10362 %t10376 = getelementptr inbounds ptr, ptr %t10375, i32 %t10363 - store ptr @.str7628, ptr %t10376 + store ptr @.str7631, ptr %t10376 %t10377 = add i32 %t10363, 1 store i32 %t10377, ptr %t10360 %t10378 = load ptr, ptr %t387 @@ -79989,7 +80046,7 @@ grow2162: put2163: %t10394 = load ptr, ptr %t10381 %t10395 = getelementptr inbounds ptr, ptr %t10394, i32 %t10382 - store ptr @.str7629, ptr %t10395 + store ptr @.str7632, ptr %t10395 %t10396 = add i32 %t10382, 1 store i32 %t10396, ptr %t10379 %t10397 = load ptr, ptr %t387 @@ -80016,7 +80073,7 @@ grow2164: put2165: %t10413 = load ptr, ptr %t10400 %t10414 = getelementptr inbounds ptr, ptr %t10413, i32 %t10401 - store ptr @.str7630, ptr %t10414 + store ptr @.str7633, ptr %t10414 %t10415 = add i32 %t10401, 1 store i32 %t10415, ptr %t10398 %t10416 = load ptr, ptr %t387 @@ -80043,7 +80100,7 @@ grow2166: put2167: %t10432 = load ptr, ptr %t10419 %t10433 = getelementptr inbounds ptr, ptr %t10432, i32 %t10420 - store ptr @.str7631, ptr %t10433 + store ptr @.str7634, ptr %t10433 %t10434 = add i32 %t10420, 1 store i32 %t10434, ptr %t10417 %t10435 = load ptr, ptr %t387 @@ -80070,7 +80127,7 @@ grow2168: put2169: %t10451 = load ptr, ptr %t10438 %t10452 = getelementptr inbounds ptr, ptr %t10451, i32 %t10439 - store ptr @.str7632, ptr %t10452 + store ptr @.str7635, ptr %t10452 %t10453 = add i32 %t10439, 1 store i32 %t10453, ptr %t10436 br label %ifend2159 @@ -80078,16 +80135,16 @@ ifend2159: br label %ifend2114 ifend2114: %t10454 = load ptr, ptr %t0 - %t10455 = call i32 @lp_str_eq(ptr %t10454, ptr @.str7633) + %t10455 = call i32 @lp_str_eq(ptr %t10454, ptr @.str7636) %t10456 = icmp ne i32 %t10455, 0 br i1 %t10456, label %then2170, label %ifend2172 then2170: %t10457 = load ptr, ptr %t1 - %t10458 = call i32 @lp_str_eq(ptr %t10457, ptr @.str7634) + %t10458 = call i32 @lp_str_eq(ptr %t10457, ptr @.str7637) %t10459 = icmp ne i32 %t10458, 0 br i1 %t10459, label %then2173, label %ifend2175 then2173: - store ptr @.str7635, ptr %t380 + store ptr @.str7638, ptr %t380 %t10460 = load ptr, ptr %t387 %t10461 = getelementptr inbounds %LSlice, ptr %t10460, i32 0, i32 1 %t10462 = getelementptr inbounds %LSlice, ptr %t10460, i32 0, i32 2 @@ -80112,17 +80169,17 @@ grow2176: put2177: %t10476 = load ptr, ptr %t10463 %t10477 = getelementptr inbounds ptr, ptr %t10476, i32 %t10464 - store ptr @.str7636, ptr %t10477 + store ptr @.str7639, ptr %t10477 %t10478 = add i32 %t10464, 1 store i32 %t10478, ptr %t10461 br label %ifend2175 ifend2175: %t10479 = load ptr, ptr %t1 - %t10480 = call i32 @lp_str_eq(ptr %t10479, ptr @.str7637) + %t10480 = call i32 @lp_str_eq(ptr %t10479, ptr @.str7640) %t10481 = icmp ne i32 %t10480, 0 br i1 %t10481, label %then2178, label %ifend2180 then2178: - store ptr @.str7638, ptr %t380 + store ptr @.str7641, ptr %t380 %t10482 = load ptr, ptr %t387 %t10483 = getelementptr inbounds %LSlice, ptr %t10482, i32 0, i32 1 %t10484 = getelementptr inbounds %LSlice, ptr %t10482, i32 0, i32 2 @@ -80147,7 +80204,7 @@ grow2181: put2182: %t10498 = load ptr, ptr %t10485 %t10499 = getelementptr inbounds ptr, ptr %t10498, i32 %t10486 - store ptr @.str7639, ptr %t10499 + store ptr @.str7642, ptr %t10499 %t10500 = add i32 %t10486, 1 store i32 %t10500, ptr %t10483 %t10501 = load ptr, ptr %t387 @@ -80174,7 +80231,7 @@ grow2183: put2184: %t10517 = load ptr, ptr %t10504 %t10518 = getelementptr inbounds ptr, ptr %t10517, i32 %t10505 - store ptr @.str7640, ptr %t10518 + store ptr @.str7643, ptr %t10518 %t10519 = add i32 %t10505, 1 store i32 %t10519, ptr %t10502 %t10520 = load ptr, ptr %t387 @@ -80201,7 +80258,7 @@ grow2185: put2186: %t10536 = load ptr, ptr %t10523 %t10537 = getelementptr inbounds ptr, ptr %t10536, i32 %t10524 - store ptr @.str7641, ptr %t10537 + store ptr @.str7644, ptr %t10537 %t10538 = add i32 %t10524, 1 store i32 %t10538, ptr %t10521 %t10539 = load ptr, ptr %t387 @@ -80228,7 +80285,7 @@ grow2187: put2188: %t10555 = load ptr, ptr %t10542 %t10556 = getelementptr inbounds ptr, ptr %t10555, i32 %t10543 - store ptr @.str7642, ptr %t10556 + store ptr @.str7645, ptr %t10556 %t10557 = add i32 %t10543, 1 store i32 %t10557, ptr %t10540 %t10558 = load ptr, ptr %t387 @@ -80255,17 +80312,17 @@ grow2189: put2190: %t10574 = load ptr, ptr %t10561 %t10575 = getelementptr inbounds ptr, ptr %t10574, i32 %t10562 - store ptr @.str7643, ptr %t10575 + store ptr @.str7646, ptr %t10575 %t10576 = add i32 %t10562, 1 store i32 %t10576, ptr %t10559 br label %ifend2180 ifend2180: %t10577 = load ptr, ptr %t1 - %t10578 = call i32 @lp_str_eq(ptr %t10577, ptr @.str7644) + %t10578 = call i32 @lp_str_eq(ptr %t10577, ptr @.str7647) %t10579 = icmp ne i32 %t10578, 0 br i1 %t10579, label %then2191, label %ifend2193 then2191: - store ptr @.str7645, ptr %t380 + store ptr @.str7648, ptr %t380 %t10580 = load ptr, ptr %t387 %t10581 = getelementptr inbounds %LSlice, ptr %t10580, i32 0, i32 1 %t10582 = getelementptr inbounds %LSlice, ptr %t10580, i32 0, i32 2 @@ -80290,7 +80347,7 @@ grow2194: put2195: %t10596 = load ptr, ptr %t10583 %t10597 = getelementptr inbounds ptr, ptr %t10596, i32 %t10584 - store ptr @.str7646, ptr %t10597 + store ptr @.str7649, ptr %t10597 %t10598 = add i32 %t10584, 1 store i32 %t10598, ptr %t10581 %t10599 = load ptr, ptr %t387 @@ -80317,7 +80374,7 @@ grow2196: put2197: %t10615 = load ptr, ptr %t10602 %t10616 = getelementptr inbounds ptr, ptr %t10615, i32 %t10603 - store ptr @.str7647, ptr %t10616 + store ptr @.str7650, ptr %t10616 %t10617 = add i32 %t10603, 1 store i32 %t10617, ptr %t10600 %t10618 = load ptr, ptr %t387 @@ -80344,7 +80401,7 @@ grow2198: put2199: %t10634 = load ptr, ptr %t10621 %t10635 = getelementptr inbounds ptr, ptr %t10634, i32 %t10622 - store ptr @.str7648, ptr %t10635 + store ptr @.str7651, ptr %t10635 %t10636 = add i32 %t10622, 1 store i32 %t10636, ptr %t10619 %t10637 = load ptr, ptr %t387 @@ -80371,7 +80428,7 @@ grow2200: put2201: %t10653 = load ptr, ptr %t10640 %t10654 = getelementptr inbounds ptr, ptr %t10653, i32 %t10641 - store ptr @.str7649, ptr %t10654 + store ptr @.str7652, ptr %t10654 %t10655 = add i32 %t10641, 1 store i32 %t10655, ptr %t10638 %t10656 = load ptr, ptr %t387 @@ -80398,7 +80455,7 @@ grow2202: put2203: %t10672 = load ptr, ptr %t10659 %t10673 = getelementptr inbounds ptr, ptr %t10672, i32 %t10660 - store ptr @.str7650, ptr %t10673 + store ptr @.str7653, ptr %t10673 %t10674 = add i32 %t10660, 1 store i32 %t10674, ptr %t10657 %t10675 = load ptr, ptr %t387 @@ -80425,7 +80482,7 @@ grow2204: put2205: %t10691 = load ptr, ptr %t10678 %t10692 = getelementptr inbounds ptr, ptr %t10691, i32 %t10679 - store ptr @.str7651, ptr %t10692 + store ptr @.str7654, ptr %t10692 %t10693 = add i32 %t10679, 1 store i32 %t10693, ptr %t10676 %t10694 = load ptr, ptr %t387 @@ -80452,17 +80509,17 @@ grow2206: put2207: %t10710 = load ptr, ptr %t10697 %t10711 = getelementptr inbounds ptr, ptr %t10710, i32 %t10698 - store ptr @.str7652, ptr %t10711 + store ptr @.str7655, ptr %t10711 %t10712 = add i32 %t10698, 1 store i32 %t10712, ptr %t10695 br label %ifend2193 ifend2193: %t10713 = load ptr, ptr %t1 - %t10714 = call i32 @lp_str_eq(ptr %t10713, ptr @.str7653) + %t10714 = call i32 @lp_str_eq(ptr %t10713, ptr @.str7656) %t10715 = icmp ne i32 %t10714, 0 br i1 %t10715, label %then2208, label %ifend2210 then2208: - store ptr @.str7654, ptr %t380 + store ptr @.str7657, ptr %t380 %t10716 = load ptr, ptr %t387 %t10717 = getelementptr inbounds %LSlice, ptr %t10716, i32 0, i32 1 %t10718 = getelementptr inbounds %LSlice, ptr %t10716, i32 0, i32 2 @@ -80487,7 +80544,7 @@ grow2211: put2212: %t10732 = load ptr, ptr %t10719 %t10733 = getelementptr inbounds ptr, ptr %t10732, i32 %t10720 - store ptr @.str7655, ptr %t10733 + store ptr @.str7658, ptr %t10733 %t10734 = add i32 %t10720, 1 store i32 %t10734, ptr %t10717 %t10735 = load ptr, ptr %t387 @@ -80514,7 +80571,7 @@ grow2213: put2214: %t10751 = load ptr, ptr %t10738 %t10752 = getelementptr inbounds ptr, ptr %t10751, i32 %t10739 - store ptr @.str7656, ptr %t10752 + store ptr @.str7659, ptr %t10752 %t10753 = add i32 %t10739, 1 store i32 %t10753, ptr %t10736 %t10754 = load ptr, ptr %t387 @@ -80541,7 +80598,7 @@ grow2215: put2216: %t10770 = load ptr, ptr %t10757 %t10771 = getelementptr inbounds ptr, ptr %t10770, i32 %t10758 - store ptr @.str7657, ptr %t10771 + store ptr @.str7660, ptr %t10771 %t10772 = add i32 %t10758, 1 store i32 %t10772, ptr %t10755 %t10773 = load ptr, ptr %t387 @@ -80568,25 +80625,25 @@ grow2217: put2218: %t10789 = load ptr, ptr %t10776 %t10790 = getelementptr inbounds ptr, ptr %t10789, i32 %t10777 - store ptr @.str7658, ptr %t10790 + store ptr @.str7661, ptr %t10790 %t10791 = add i32 %t10777, 1 store i32 %t10791, ptr %t10774 br label %ifend2210 ifend2210: %t10792 = load ptr, ptr %t1 - %t10793 = call i32 @lp_str_eq(ptr %t10792, ptr @.str7659) + %t10793 = call i32 @lp_str_eq(ptr %t10792, ptr @.str7662) %t10794 = icmp ne i32 %t10793, 0 br i1 %t10794, label %then2219, label %ifend2221 then2219: - store ptr @.str7660, ptr %t380 + store ptr @.str7663, ptr %t380 br label %ifend2221 ifend2221: %t10795 = load ptr, ptr %t1 - %t10796 = call i32 @lp_str_eq(ptr %t10795, ptr @.str7661) + %t10796 = call i32 @lp_str_eq(ptr %t10795, ptr @.str7664) %t10797 = icmp ne i32 %t10796, 0 br i1 %t10797, label %then2222, label %ifend2224 then2222: - store ptr @.str7662, ptr %t380 + store ptr @.str7665, ptr %t380 %t10798 = load ptr, ptr %t387 %t10799 = getelementptr inbounds %LSlice, ptr %t10798, i32 0, i32 1 %t10800 = getelementptr inbounds %LSlice, ptr %t10798, i32 0, i32 2 @@ -80611,17 +80668,17 @@ grow2225: put2226: %t10814 = load ptr, ptr %t10801 %t10815 = getelementptr inbounds ptr, ptr %t10814, i32 %t10802 - store ptr @.str7663, ptr %t10815 + store ptr @.str7666, ptr %t10815 %t10816 = add i32 %t10802, 1 store i32 %t10816, ptr %t10799 br label %ifend2224 ifend2224: %t10817 = load ptr, ptr %t1 - %t10818 = call i32 @lp_str_eq(ptr %t10817, ptr @.str7664) + %t10818 = call i32 @lp_str_eq(ptr %t10817, ptr @.str7667) %t10819 = icmp ne i32 %t10818, 0 br i1 %t10819, label %then2227, label %ifend2229 then2227: - store ptr @.str7665, ptr %t380 + store ptr @.str7668, ptr %t380 %t10820 = load ptr, ptr %t387 %t10821 = getelementptr inbounds %LSlice, ptr %t10820, i32 0, i32 1 %t10822 = getelementptr inbounds %LSlice, ptr %t10820, i32 0, i32 2 @@ -80646,17 +80703,17 @@ grow2230: put2231: %t10836 = load ptr, ptr %t10823 %t10837 = getelementptr inbounds ptr, ptr %t10836, i32 %t10824 - store ptr @.str7666, ptr %t10837 + store ptr @.str7669, ptr %t10837 %t10838 = add i32 %t10824, 1 store i32 %t10838, ptr %t10821 br label %ifend2229 ifend2229: %t10839 = load ptr, ptr %t1 - %t10840 = call i32 @lp_str_eq(ptr %t10839, ptr @.str7667) + %t10840 = call i32 @lp_str_eq(ptr %t10839, ptr @.str7670) %t10841 = icmp ne i32 %t10840, 0 br i1 %t10841, label %then2232, label %ifend2234 then2232: - store ptr @.str7668, ptr %t380 + store ptr @.str7671, ptr %t380 %t10842 = load ptr, ptr %t387 %t10843 = getelementptr inbounds %LSlice, ptr %t10842, i32 0, i32 1 %t10844 = getelementptr inbounds %LSlice, ptr %t10842, i32 0, i32 2 @@ -80681,25 +80738,25 @@ grow2235: put2236: %t10858 = load ptr, ptr %t10845 %t10859 = getelementptr inbounds ptr, ptr %t10858, i32 %t10846 - store ptr @.str7669, ptr %t10859 + store ptr @.str7672, ptr %t10859 %t10860 = add i32 %t10846, 1 store i32 %t10860, ptr %t10843 br label %ifend2234 ifend2234: %t10861 = load ptr, ptr %t1 - %t10862 = call i32 @lp_str_eq(ptr %t10861, ptr @.str7670) + %t10862 = call i32 @lp_str_eq(ptr %t10861, ptr @.str7673) %t10863 = icmp ne i32 %t10862, 0 br i1 %t10863, label %then2237, label %ifend2239 then2237: - store ptr @.str7671, ptr %t380 + store ptr @.str7674, ptr %t380 br label %ifend2239 ifend2239: %t10864 = load ptr, ptr %t1 - %t10865 = call i32 @lp_str_eq(ptr %t10864, ptr @.str7672) + %t10865 = call i32 @lp_str_eq(ptr %t10864, ptr @.str7675) %t10866 = icmp ne i32 %t10865, 0 br i1 %t10866, label %then2240, label %ifend2242 then2240: - store ptr @.str7673, ptr %t380 + store ptr @.str7676, ptr %t380 %t10867 = load ptr, ptr %t387 %t10868 = getelementptr inbounds %LSlice, ptr %t10867, i32 0, i32 1 %t10869 = getelementptr inbounds %LSlice, ptr %t10867, i32 0, i32 2 @@ -80724,17 +80781,17 @@ grow2243: put2244: %t10883 = load ptr, ptr %t10870 %t10884 = getelementptr inbounds ptr, ptr %t10883, i32 %t10871 - store ptr @.str7674, ptr %t10884 + store ptr @.str7677, ptr %t10884 %t10885 = add i32 %t10871, 1 store i32 %t10885, ptr %t10868 br label %ifend2242 ifend2242: %t10886 = load ptr, ptr %t1 - %t10887 = call i32 @lp_str_eq(ptr %t10886, ptr @.str7675) + %t10887 = call i32 @lp_str_eq(ptr %t10886, ptr @.str7678) %t10888 = icmp ne i32 %t10887, 0 br i1 %t10888, label %then2245, label %ifend2247 then2245: - store ptr @.str7676, ptr %t380 + store ptr @.str7679, ptr %t380 %t10889 = load ptr, ptr %t387 %t10890 = getelementptr inbounds %LSlice, ptr %t10889, i32 0, i32 1 %t10891 = getelementptr inbounds %LSlice, ptr %t10889, i32 0, i32 2 @@ -80759,7 +80816,7 @@ grow2248: put2249: %t10905 = load ptr, ptr %t10892 %t10906 = getelementptr inbounds ptr, ptr %t10905, i32 %t10893 - store ptr @.str7677, ptr %t10906 + store ptr @.str7680, ptr %t10906 %t10907 = add i32 %t10893, 1 store i32 %t10907, ptr %t10890 %t10908 = load ptr, ptr %t387 @@ -80786,7 +80843,7 @@ grow2250: put2251: %t10924 = load ptr, ptr %t10911 %t10925 = getelementptr inbounds ptr, ptr %t10924, i32 %t10912 - store ptr @.str7678, ptr %t10925 + store ptr @.str7681, ptr %t10925 %t10926 = add i32 %t10912, 1 store i32 %t10926, ptr %t10909 %t10927 = load ptr, ptr %t387 @@ -80813,7 +80870,7 @@ grow2252: put2253: %t10943 = load ptr, ptr %t10930 %t10944 = getelementptr inbounds ptr, ptr %t10943, i32 %t10931 - store ptr @.str7679, ptr %t10944 + store ptr @.str7682, ptr %t10944 %t10945 = add i32 %t10931, 1 store i32 %t10945, ptr %t10928 %t10946 = load ptr, ptr %t387 @@ -80840,7 +80897,7 @@ grow2254: put2255: %t10962 = load ptr, ptr %t10949 %t10963 = getelementptr inbounds ptr, ptr %t10962, i32 %t10950 - store ptr @.str7680, ptr %t10963 + store ptr @.str7683, ptr %t10963 %t10964 = add i32 %t10950, 1 store i32 %t10964, ptr %t10947 %t10965 = load ptr, ptr %t387 @@ -80867,7 +80924,7 @@ grow2256: put2257: %t10981 = load ptr, ptr %t10968 %t10982 = getelementptr inbounds ptr, ptr %t10981, i32 %t10969 - store ptr @.str7681, ptr %t10982 + store ptr @.str7684, ptr %t10982 %t10983 = add i32 %t10969, 1 store i32 %t10983, ptr %t10966 %t10984 = load ptr, ptr %t387 @@ -80894,25 +80951,25 @@ grow2258: put2259: %t11000 = load ptr, ptr %t10987 %t11001 = getelementptr inbounds ptr, ptr %t11000, i32 %t10988 - store ptr @.str7682, ptr %t11001 + store ptr @.str7685, ptr %t11001 %t11002 = add i32 %t10988, 1 store i32 %t11002, ptr %t10985 br label %ifend2247 ifend2247: %t11003 = load ptr, ptr %t1 - %t11004 = call i32 @lp_str_eq(ptr %t11003, ptr @.str7683) + %t11004 = call i32 @lp_str_eq(ptr %t11003, ptr @.str7686) %t11005 = icmp ne i32 %t11004, 0 br i1 %t11005, label %then2260, label %ifend2262 then2260: - store ptr @.str7684, ptr %t380 + store ptr @.str7687, ptr %t380 br label %ifend2262 ifend2262: %t11006 = load ptr, ptr %t1 - %t11007 = call i32 @lp_str_eq(ptr %t11006, ptr @.str7685) + %t11007 = call i32 @lp_str_eq(ptr %t11006, ptr @.str7688) %t11008 = icmp ne i32 %t11007, 0 br i1 %t11008, label %then2263, label %ifend2265 then2263: - store ptr @.str7686, ptr %t380 + store ptr @.str7689, ptr %t380 %t11009 = load ptr, ptr %t387 %t11010 = getelementptr inbounds %LSlice, ptr %t11009, i32 0, i32 1 %t11011 = getelementptr inbounds %LSlice, ptr %t11009, i32 0, i32 2 @@ -80937,7 +80994,7 @@ grow2266: put2267: %t11025 = load ptr, ptr %t11012 %t11026 = getelementptr inbounds ptr, ptr %t11025, i32 %t11013 - store ptr @.str7687, ptr %t11026 + store ptr @.str7690, ptr %t11026 %t11027 = add i32 %t11013, 1 store i32 %t11027, ptr %t11010 br label %ifend2265 @@ -80945,16 +81002,16 @@ ifend2265: br label %ifend2172 ifend2172: %t11028 = load ptr, ptr %t0 - %t11029 = call i32 @lp_str_eq(ptr %t11028, ptr @.str7688) + %t11029 = call i32 @lp_str_eq(ptr %t11028, ptr @.str7691) %t11030 = icmp ne i32 %t11029, 0 br i1 %t11030, label %then2268, label %ifend2270 then2268: %t11031 = load ptr, ptr %t1 - %t11032 = call i32 @lp_str_eq(ptr %t11031, ptr @.str7689) + %t11032 = call i32 @lp_str_eq(ptr %t11031, ptr @.str7692) %t11033 = icmp ne i32 %t11032, 0 br i1 %t11033, label %then2271, label %ifend2273 then2271: - store ptr @.str7690, ptr %t380 + store ptr @.str7693, ptr %t380 %t11034 = load ptr, ptr %t387 %t11035 = getelementptr inbounds %LSlice, ptr %t11034, i32 0, i32 1 %t11036 = getelementptr inbounds %LSlice, ptr %t11034, i32 0, i32 2 @@ -80979,7 +81036,7 @@ grow2274: put2275: %t11050 = load ptr, ptr %t11037 %t11051 = getelementptr inbounds ptr, ptr %t11050, i32 %t11038 - store ptr @.str7691, ptr %t11051 + store ptr @.str7694, ptr %t11051 %t11052 = add i32 %t11038, 1 store i32 %t11052, ptr %t11035 %t11053 = load ptr, ptr %t387 @@ -81006,7 +81063,7 @@ grow2276: put2277: %t11069 = load ptr, ptr %t11056 %t11070 = getelementptr inbounds ptr, ptr %t11069, i32 %t11057 - store ptr @.str7692, ptr %t11070 + store ptr @.str7695, ptr %t11070 %t11071 = add i32 %t11057, 1 store i32 %t11071, ptr %t11054 %t11072 = load ptr, ptr %t387 @@ -81033,7 +81090,7 @@ grow2278: put2279: %t11088 = load ptr, ptr %t11075 %t11089 = getelementptr inbounds ptr, ptr %t11088, i32 %t11076 - store ptr @.str7693, ptr %t11089 + store ptr @.str7696, ptr %t11089 %t11090 = add i32 %t11076, 1 store i32 %t11090, ptr %t11073 %t11091 = load ptr, ptr %t387 @@ -81060,17 +81117,17 @@ grow2280: put2281: %t11107 = load ptr, ptr %t11094 %t11108 = getelementptr inbounds ptr, ptr %t11107, i32 %t11095 - store ptr @.str7694, ptr %t11108 + store ptr @.str7697, ptr %t11108 %t11109 = add i32 %t11095, 1 store i32 %t11109, ptr %t11092 br label %ifend2273 ifend2273: %t11110 = load ptr, ptr %t1 - %t11111 = call i32 @lp_str_eq(ptr %t11110, ptr @.str7695) + %t11111 = call i32 @lp_str_eq(ptr %t11110, ptr @.str7698) %t11112 = icmp ne i32 %t11111, 0 br i1 %t11112, label %then2282, label %ifend2284 then2282: - store ptr @.str7696, ptr %t380 + store ptr @.str7699, ptr %t380 %t11113 = load ptr, ptr %t387 %t11114 = getelementptr inbounds %LSlice, ptr %t11113, i32 0, i32 1 %t11115 = getelementptr inbounds %LSlice, ptr %t11113, i32 0, i32 2 @@ -81095,7 +81152,7 @@ grow2285: put2286: %t11129 = load ptr, ptr %t11116 %t11130 = getelementptr inbounds ptr, ptr %t11129, i32 %t11117 - store ptr @.str7697, ptr %t11130 + store ptr @.str7700, ptr %t11130 %t11131 = add i32 %t11117, 1 store i32 %t11131, ptr %t11114 %t11132 = load ptr, ptr %t387 @@ -81122,17 +81179,17 @@ grow2287: put2288: %t11148 = load ptr, ptr %t11135 %t11149 = getelementptr inbounds ptr, ptr %t11148, i32 %t11136 - store ptr @.str7698, ptr %t11149 + store ptr @.str7701, ptr %t11149 %t11150 = add i32 %t11136, 1 store i32 %t11150, ptr %t11133 br label %ifend2284 ifend2284: %t11151 = load ptr, ptr %t1 - %t11152 = call i32 @lp_str_eq(ptr %t11151, ptr @.str7699) + %t11152 = call i32 @lp_str_eq(ptr %t11151, ptr @.str7702) %t11153 = icmp ne i32 %t11152, 0 br i1 %t11153, label %then2289, label %ifend2291 then2289: - store ptr @.str7700, ptr %t380 + store ptr @.str7703, ptr %t380 %t11154 = load ptr, ptr %t387 %t11155 = getelementptr inbounds %LSlice, ptr %t11154, i32 0, i32 1 %t11156 = getelementptr inbounds %LSlice, ptr %t11154, i32 0, i32 2 @@ -81157,13 +81214,13 @@ grow2292: put2293: %t11170 = load ptr, ptr %t11157 %t11171 = getelementptr inbounds ptr, ptr %t11170, i32 %t11158 - store ptr @.str7701, ptr %t11171 + store ptr @.str7704, ptr %t11171 %t11172 = add i32 %t11158, 1 store i32 %t11172, ptr %t11155 br label %ifend2291 ifend2291: %t11173 = load ptr, ptr %t1 - %t11174 = call i32 @lp_str_eq(ptr %t11173, ptr @.str7702) + %t11174 = call i32 @lp_str_eq(ptr %t11173, ptr @.str7705) %t11175 = icmp ne i32 %t11174, 0 br i1 %t11175, label %then2294, label %ifend2296 then2294: @@ -81177,7 +81234,7 @@ then2294: %t11183 = icmp ne i32 %t11182, 0 br i1 %t11183, label %then2297, label %else2298 then2297: - store ptr @.str7703, ptr %t380 + store ptr @.str7706, ptr %t380 %t11184 = load ptr, ptr %t387 %t11185 = getelementptr inbounds %LSlice, ptr %t11184, i32 0, i32 1 %t11186 = getelementptr inbounds %LSlice, ptr %t11184, i32 0, i32 2 @@ -81202,7 +81259,7 @@ grow2300: put2301: %t11200 = load ptr, ptr %t11187 %t11201 = getelementptr inbounds ptr, ptr %t11200, i32 %t11188 - store ptr @.str7704, ptr %t11201 + store ptr @.str7707, ptr %t11201 %t11202 = add i32 %t11188, 1 store i32 %t11202, ptr %t11185 %t11203 = load ptr, ptr %t387 @@ -81229,12 +81286,12 @@ grow2302: put2303: %t11219 = load ptr, ptr %t11206 %t11220 = getelementptr inbounds ptr, ptr %t11219, i32 %t11207 - store ptr @.str7705, ptr %t11220 + store ptr @.str7708, ptr %t11220 %t11221 = add i32 %t11207, 1 store i32 %t11221, ptr %t11204 br label %ifend2299 else2298: - store ptr @.str7706, ptr %t380 + store ptr @.str7709, ptr %t380 %t11222 = load ptr, ptr %t387 %t11223 = getelementptr inbounds %LSlice, ptr %t11222, i32 0, i32 1 %t11224 = getelementptr inbounds %LSlice, ptr %t11222, i32 0, i32 2 @@ -81259,7 +81316,7 @@ grow2304: put2305: %t11238 = load ptr, ptr %t11225 %t11239 = getelementptr inbounds ptr, ptr %t11238, i32 %t11226 - store ptr @.str7707, ptr %t11239 + store ptr @.str7710, ptr %t11239 %t11240 = add i32 %t11226, 1 store i32 %t11240, ptr %t11223 %t11241 = load ptr, ptr %t387 @@ -81286,7 +81343,7 @@ grow2306: put2307: %t11257 = load ptr, ptr %t11244 %t11258 = getelementptr inbounds ptr, ptr %t11257, i32 %t11245 - store ptr @.str7708, ptr %t11258 + store ptr @.str7711, ptr %t11258 %t11259 = add i32 %t11245, 1 store i32 %t11259, ptr %t11242 %t11260 = load ptr, ptr %t387 @@ -81313,7 +81370,7 @@ grow2308: put2309: %t11276 = load ptr, ptr %t11263 %t11277 = getelementptr inbounds ptr, ptr %t11276, i32 %t11264 - store ptr @.str7709, ptr %t11277 + store ptr @.str7712, ptr %t11277 %t11278 = add i32 %t11264, 1 store i32 %t11278, ptr %t11261 %t11279 = load ptr, ptr %t387 @@ -81340,7 +81397,7 @@ grow2310: put2311: %t11295 = load ptr, ptr %t11282 %t11296 = getelementptr inbounds ptr, ptr %t11295, i32 %t11283 - store ptr @.str7710, ptr %t11296 + store ptr @.str7713, ptr %t11296 %t11297 = add i32 %t11283, 1 store i32 %t11297, ptr %t11280 br label %ifend2299 @@ -81350,16 +81407,16 @@ ifend2296: br label %ifend2270 ifend2270: %t11298 = load ptr, ptr %t0 - %t11299 = call i32 @lp_str_eq(ptr %t11298, ptr @.str7711) + %t11299 = call i32 @lp_str_eq(ptr %t11298, ptr @.str7714) %t11300 = icmp ne i32 %t11299, 0 br i1 %t11300, label %then2312, label %ifend2314 then2312: %t11301 = load ptr, ptr %t1 - %t11302 = call i32 @lp_str_eq(ptr %t11301, ptr @.str7712) + %t11302 = call i32 @lp_str_eq(ptr %t11301, ptr @.str7715) %t11303 = icmp ne i32 %t11302, 0 br i1 %t11303, label %then2315, label %ifend2317 then2315: - store ptr @.str7713, ptr %t380 + store ptr @.str7716, ptr %t380 %t11304 = load ptr, ptr %t387 %t11305 = getelementptr inbounds %LSlice, ptr %t11304, i32 0, i32 1 %t11306 = getelementptr inbounds %LSlice, ptr %t11304, i32 0, i32 2 @@ -81384,7 +81441,7 @@ grow2318: put2319: %t11320 = load ptr, ptr %t11307 %t11321 = getelementptr inbounds ptr, ptr %t11320, i32 %t11308 - store ptr @.str7714, ptr %t11321 + store ptr @.str7717, ptr %t11321 %t11322 = add i32 %t11308, 1 store i32 %t11322, ptr %t11305 %t11323 = load ptr, ptr %t387 @@ -81411,7 +81468,7 @@ grow2320: put2321: %t11339 = load ptr, ptr %t11326 %t11340 = getelementptr inbounds ptr, ptr %t11339, i32 %t11327 - store ptr @.str7715, ptr %t11340 + store ptr @.str7718, ptr %t11340 %t11341 = add i32 %t11327, 1 store i32 %t11341, ptr %t11324 %t11342 = load ptr, ptr %t387 @@ -81438,7 +81495,7 @@ grow2322: put2323: %t11358 = load ptr, ptr %t11345 %t11359 = getelementptr inbounds ptr, ptr %t11358, i32 %t11346 - store ptr @.str7716, ptr %t11359 + store ptr @.str7719, ptr %t11359 %t11360 = add i32 %t11346, 1 store i32 %t11360, ptr %t11343 %t11361 = load ptr, ptr %t387 @@ -81465,7 +81522,7 @@ grow2324: put2325: %t11377 = load ptr, ptr %t11364 %t11378 = getelementptr inbounds ptr, ptr %t11377, i32 %t11365 - store ptr @.str7717, ptr %t11378 + store ptr @.str7720, ptr %t11378 %t11379 = add i32 %t11365, 1 store i32 %t11379, ptr %t11362 %t11380 = load ptr, ptr %t387 @@ -81492,7 +81549,7 @@ grow2326: put2327: %t11396 = load ptr, ptr %t11383 %t11397 = getelementptr inbounds ptr, ptr %t11396, i32 %t11384 - store ptr @.str7718, ptr %t11397 + store ptr @.str7721, ptr %t11397 %t11398 = add i32 %t11384, 1 store i32 %t11398, ptr %t11381 br label %ifend2317 @@ -81500,16 +81557,16 @@ ifend2317: br label %ifend2314 ifend2314: %t11399 = load ptr, ptr %t0 - %t11400 = call i32 @lp_str_eq(ptr %t11399, ptr @.str7719) + %t11400 = call i32 @lp_str_eq(ptr %t11399, ptr @.str7722) %t11401 = icmp ne i32 %t11400, 0 br i1 %t11401, label %then2328, label %ifend2330 then2328: %t11402 = load ptr, ptr %t1 - %t11403 = call i32 @lp_str_eq(ptr %t11402, ptr @.str7720) + %t11403 = call i32 @lp_str_eq(ptr %t11402, ptr @.str7723) %t11404 = icmp ne i32 %t11403, 0 br i1 %t11404, label %then2331, label %ifend2333 then2331: - store ptr @.str7721, ptr %t380 + store ptr @.str7724, ptr %t380 %t11405 = load ptr, ptr %t387 %t11406 = getelementptr inbounds %LSlice, ptr %t11405, i32 0, i32 1 %t11407 = getelementptr inbounds %LSlice, ptr %t11405, i32 0, i32 2 @@ -81534,7 +81591,7 @@ grow2334: put2335: %t11421 = load ptr, ptr %t11408 %t11422 = getelementptr inbounds ptr, ptr %t11421, i32 %t11409 - store ptr @.str7722, ptr %t11422 + store ptr @.str7725, ptr %t11422 %t11423 = add i32 %t11409, 1 store i32 %t11423, ptr %t11406 %t11424 = load ptr, ptr %t387 @@ -81561,7 +81618,7 @@ grow2336: put2337: %t11440 = load ptr, ptr %t11427 %t11441 = getelementptr inbounds ptr, ptr %t11440, i32 %t11428 - store ptr @.str7723, ptr %t11441 + store ptr @.str7726, ptr %t11441 %t11442 = add i32 %t11428, 1 store i32 %t11442, ptr %t11425 %t11443 = load ptr, ptr %t387 @@ -81588,7 +81645,7 @@ grow2338: put2339: %t11459 = load ptr, ptr %t11446 %t11460 = getelementptr inbounds ptr, ptr %t11459, i32 %t11447 - store ptr @.str7724, ptr %t11460 + store ptr @.str7727, ptr %t11460 %t11461 = add i32 %t11447, 1 store i32 %t11461, ptr %t11444 %t11462 = load ptr, ptr %t387 @@ -81615,17 +81672,17 @@ grow2340: put2341: %t11478 = load ptr, ptr %t11465 %t11479 = getelementptr inbounds ptr, ptr %t11478, i32 %t11466 - store ptr @.str7725, ptr %t11479 + store ptr @.str7728, ptr %t11479 %t11480 = add i32 %t11466, 1 store i32 %t11480, ptr %t11463 br label %ifend2333 ifend2333: %t11481 = load ptr, ptr %t1 - %t11482 = call i32 @lp_str_eq(ptr %t11481, ptr @.str7726) + %t11482 = call i32 @lp_str_eq(ptr %t11481, ptr @.str7729) %t11483 = icmp ne i32 %t11482, 0 br i1 %t11483, label %then2342, label %ifend2344 then2342: - store ptr @.str7727, ptr %t380 + store ptr @.str7730, ptr %t380 %t11484 = load ptr, ptr %t387 %t11485 = getelementptr inbounds %LSlice, ptr %t11484, i32 0, i32 1 %t11486 = getelementptr inbounds %LSlice, ptr %t11484, i32 0, i32 2 @@ -81650,7 +81707,7 @@ grow2345: put2346: %t11500 = load ptr, ptr %t11487 %t11501 = getelementptr inbounds ptr, ptr %t11500, i32 %t11488 - store ptr @.str7728, ptr %t11501 + store ptr @.str7731, ptr %t11501 %t11502 = add i32 %t11488, 1 store i32 %t11502, ptr %t11485 %t11503 = load ptr, ptr %t387 @@ -81677,7 +81734,7 @@ grow2347: put2348: %t11519 = load ptr, ptr %t11506 %t11520 = getelementptr inbounds ptr, ptr %t11519, i32 %t11507 - store ptr @.str7729, ptr %t11520 + store ptr @.str7732, ptr %t11520 %t11521 = add i32 %t11507, 1 store i32 %t11521, ptr %t11504 %t11522 = load ptr, ptr %t387 @@ -81704,7 +81761,7 @@ grow2349: put2350: %t11538 = load ptr, ptr %t11525 %t11539 = getelementptr inbounds ptr, ptr %t11538, i32 %t11526 - store ptr @.str7730, ptr %t11539 + store ptr @.str7733, ptr %t11539 %t11540 = add i32 %t11526, 1 store i32 %t11540, ptr %t11523 %t11541 = load ptr, ptr %t387 @@ -81731,17 +81788,17 @@ grow2351: put2352: %t11557 = load ptr, ptr %t11544 %t11558 = getelementptr inbounds ptr, ptr %t11557, i32 %t11545 - store ptr @.str7731, ptr %t11558 + store ptr @.str7734, ptr %t11558 %t11559 = add i32 %t11545, 1 store i32 %t11559, ptr %t11542 br label %ifend2344 ifend2344: %t11560 = load ptr, ptr %t1 - %t11561 = call i32 @lp_str_eq(ptr %t11560, ptr @.str7732) + %t11561 = call i32 @lp_str_eq(ptr %t11560, ptr @.str7735) %t11562 = icmp ne i32 %t11561, 0 br i1 %t11562, label %then2353, label %ifend2355 then2353: - store ptr @.str7733, ptr %t380 + store ptr @.str7736, ptr %t380 %t11563 = load ptr, ptr %t387 %t11564 = getelementptr inbounds %LSlice, ptr %t11563, i32 0, i32 1 %t11565 = getelementptr inbounds %LSlice, ptr %t11563, i32 0, i32 2 @@ -81766,7 +81823,7 @@ grow2356: put2357: %t11579 = load ptr, ptr %t11566 %t11580 = getelementptr inbounds ptr, ptr %t11579, i32 %t11567 - store ptr @.str7734, ptr %t11580 + store ptr @.str7737, ptr %t11580 %t11581 = add i32 %t11567, 1 store i32 %t11581, ptr %t11564 %t11582 = load ptr, ptr %t387 @@ -81793,17 +81850,17 @@ grow2358: put2359: %t11598 = load ptr, ptr %t11585 %t11599 = getelementptr inbounds ptr, ptr %t11598, i32 %t11586 - store ptr @.str7735, ptr %t11599 + store ptr @.str7738, ptr %t11599 %t11600 = add i32 %t11586, 1 store i32 %t11600, ptr %t11583 br label %ifend2355 ifend2355: %t11601 = load ptr, ptr %t1 - %t11602 = call i32 @lp_str_eq(ptr %t11601, ptr @.str7736) + %t11602 = call i32 @lp_str_eq(ptr %t11601, ptr @.str7739) %t11603 = icmp ne i32 %t11602, 0 br i1 %t11603, label %then2360, label %ifend2362 then2360: - store ptr @.str7737, ptr %t380 + store ptr @.str7740, ptr %t380 %t11604 = load ptr, ptr %t387 %t11605 = getelementptr inbounds %LSlice, ptr %t11604, i32 0, i32 1 %t11606 = getelementptr inbounds %LSlice, ptr %t11604, i32 0, i32 2 @@ -81828,17 +81885,17 @@ grow2363: put2364: %t11620 = load ptr, ptr %t11607 %t11621 = getelementptr inbounds ptr, ptr %t11620, i32 %t11608 - store ptr @.str7738, ptr %t11621 + store ptr @.str7741, ptr %t11621 %t11622 = add i32 %t11608, 1 store i32 %t11622, ptr %t11605 br label %ifend2362 ifend2362: %t11623 = load ptr, ptr %t1 - %t11624 = call i32 @lp_str_eq(ptr %t11623, ptr @.str7739) + %t11624 = call i32 @lp_str_eq(ptr %t11623, ptr @.str7742) %t11625 = icmp ne i32 %t11624, 0 br i1 %t11625, label %then2365, label %ifend2367 then2365: - store ptr @.str7740, ptr %t380 + store ptr @.str7743, ptr %t380 %t11626 = load ptr, ptr %t387 %t11627 = getelementptr inbounds %LSlice, ptr %t11626, i32 0, i32 1 %t11628 = getelementptr inbounds %LSlice, ptr %t11626, i32 0, i32 2 @@ -81863,17 +81920,17 @@ grow2368: put2369: %t11642 = load ptr, ptr %t11629 %t11643 = getelementptr inbounds ptr, ptr %t11642, i32 %t11630 - store ptr @.str7741, ptr %t11643 + store ptr @.str7744, ptr %t11643 %t11644 = add i32 %t11630, 1 store i32 %t11644, ptr %t11627 br label %ifend2367 ifend2367: %t11645 = load ptr, ptr %t1 - %t11646 = call i32 @lp_str_eq(ptr %t11645, ptr @.str7742) + %t11646 = call i32 @lp_str_eq(ptr %t11645, ptr @.str7745) %t11647 = icmp ne i32 %t11646, 0 br i1 %t11647, label %then2370, label %ifend2372 then2370: - store ptr @.str7743, ptr %t380 + store ptr @.str7746, ptr %t380 %t11648 = load ptr, ptr %t387 %t11649 = getelementptr inbounds %LSlice, ptr %t11648, i32 0, i32 1 %t11650 = getelementptr inbounds %LSlice, ptr %t11648, i32 0, i32 2 @@ -81898,7 +81955,7 @@ grow2373: put2374: %t11664 = load ptr, ptr %t11651 %t11665 = getelementptr inbounds ptr, ptr %t11664, i32 %t11652 - store ptr @.str7744, ptr %t11665 + store ptr @.str7747, ptr %t11665 %t11666 = add i32 %t11652, 1 store i32 %t11666, ptr %t11649 %t11667 = load ptr, ptr %t387 @@ -81925,7 +81982,7 @@ grow2375: put2376: %t11683 = load ptr, ptr %t11670 %t11684 = getelementptr inbounds ptr, ptr %t11683, i32 %t11671 - store ptr @.str7745, ptr %t11684 + store ptr @.str7748, ptr %t11684 %t11685 = add i32 %t11671, 1 store i32 %t11685, ptr %t11668 br label %ifend2372 @@ -81933,16 +81990,16 @@ ifend2372: br label %ifend2330 ifend2330: %t11686 = load ptr, ptr %t0 - %t11687 = call i32 @lp_str_eq(ptr %t11686, ptr @.str7746) + %t11687 = call i32 @lp_str_eq(ptr %t11686, ptr @.str7749) %t11688 = icmp ne i32 %t11687, 0 br i1 %t11688, label %then2377, label %ifend2379 then2377: %t11689 = load ptr, ptr %t1 - %t11690 = call i32 @lp_str_eq(ptr %t11689, ptr @.str7747) + %t11690 = call i32 @lp_str_eq(ptr %t11689, ptr @.str7750) %t11691 = icmp ne i32 %t11690, 0 br i1 %t11691, label %then2380, label %ifend2382 then2380: - store ptr @.str7748, ptr %t380 + store ptr @.str7751, ptr %t380 %t11692 = load ptr, ptr %t387 %t11693 = getelementptr inbounds %LSlice, ptr %t11692, i32 0, i32 1 %t11694 = getelementptr inbounds %LSlice, ptr %t11692, i32 0, i32 2 @@ -81967,17 +82024,17 @@ grow2383: put2384: %t11708 = load ptr, ptr %t11695 %t11709 = getelementptr inbounds ptr, ptr %t11708, i32 %t11696 - store ptr @.str7749, ptr %t11709 + store ptr @.str7752, ptr %t11709 %t11710 = add i32 %t11696, 1 store i32 %t11710, ptr %t11693 br label %ifend2382 ifend2382: %t11711 = load ptr, ptr %t1 - %t11712 = call i32 @lp_str_eq(ptr %t11711, ptr @.str7750) + %t11712 = call i32 @lp_str_eq(ptr %t11711, ptr @.str7753) %t11713 = icmp ne i32 %t11712, 0 br i1 %t11713, label %then2385, label %ifend2387 then2385: - store ptr @.str7751, ptr %t380 + store ptr @.str7754, ptr %t380 %t11714 = load ptr, ptr %t387 %t11715 = getelementptr inbounds %LSlice, ptr %t11714, i32 0, i32 1 %t11716 = getelementptr inbounds %LSlice, ptr %t11714, i32 0, i32 2 @@ -82002,17 +82059,17 @@ grow2388: put2389: %t11730 = load ptr, ptr %t11717 %t11731 = getelementptr inbounds ptr, ptr %t11730, i32 %t11718 - store ptr @.str7752, ptr %t11731 + store ptr @.str7755, ptr %t11731 %t11732 = add i32 %t11718, 1 store i32 %t11732, ptr %t11715 br label %ifend2387 ifend2387: %t11733 = load ptr, ptr %t1 - %t11734 = call i32 @lp_str_eq(ptr %t11733, ptr @.str7753) + %t11734 = call i32 @lp_str_eq(ptr %t11733, ptr @.str7756) %t11735 = icmp ne i32 %t11734, 0 br i1 %t11735, label %then2390, label %ifend2392 then2390: - store ptr @.str7754, ptr %t380 + store ptr @.str7757, ptr %t380 %t11736 = load ptr, ptr %t387 %t11737 = getelementptr inbounds %LSlice, ptr %t11736, i32 0, i32 1 %t11738 = getelementptr inbounds %LSlice, ptr %t11736, i32 0, i32 2 @@ -82037,7 +82094,7 @@ grow2393: put2394: %t11752 = load ptr, ptr %t11739 %t11753 = getelementptr inbounds ptr, ptr %t11752, i32 %t11740 - store ptr @.str7755, ptr %t11753 + store ptr @.str7758, ptr %t11753 %t11754 = add i32 %t11740, 1 store i32 %t11754, ptr %t11737 %t11755 = load ptr, ptr %t387 @@ -82064,7 +82121,7 @@ grow2395: put2396: %t11771 = load ptr, ptr %t11758 %t11772 = getelementptr inbounds ptr, ptr %t11771, i32 %t11759 - store ptr @.str7756, ptr %t11772 + store ptr @.str7759, ptr %t11772 %t11773 = add i32 %t11759, 1 store i32 %t11773, ptr %t11756 %t11774 = load ptr, ptr %t387 @@ -82091,7 +82148,7 @@ grow2397: put2398: %t11790 = load ptr, ptr %t11777 %t11791 = getelementptr inbounds ptr, ptr %t11790, i32 %t11778 - store ptr @.str7757, ptr %t11791 + store ptr @.str7760, ptr %t11791 %t11792 = add i32 %t11778, 1 store i32 %t11792, ptr %t11775 %t11793 = load ptr, ptr %t387 @@ -82118,7 +82175,7 @@ grow2399: put2400: %t11809 = load ptr, ptr %t11796 %t11810 = getelementptr inbounds ptr, ptr %t11809, i32 %t11797 - store ptr @.str7758, ptr %t11810 + store ptr @.str7761, ptr %t11810 %t11811 = add i32 %t11797, 1 store i32 %t11811, ptr %t11794 %t11812 = load ptr, ptr %t387 @@ -82145,7 +82202,7 @@ grow2401: put2402: %t11828 = load ptr, ptr %t11815 %t11829 = getelementptr inbounds ptr, ptr %t11828, i32 %t11816 - store ptr @.str7759, ptr %t11829 + store ptr @.str7762, ptr %t11829 %t11830 = add i32 %t11816, 1 store i32 %t11830, ptr %t11813 %t11831 = load ptr, ptr %t387 @@ -82172,17 +82229,17 @@ grow2403: put2404: %t11847 = load ptr, ptr %t11834 %t11848 = getelementptr inbounds ptr, ptr %t11847, i32 %t11835 - store ptr @.str7760, ptr %t11848 + store ptr @.str7763, ptr %t11848 %t11849 = add i32 %t11835, 1 store i32 %t11849, ptr %t11832 br label %ifend2392 ifend2392: %t11850 = load ptr, ptr %t1 - %t11851 = call i32 @lp_str_eq(ptr %t11850, ptr @.str7761) + %t11851 = call i32 @lp_str_eq(ptr %t11850, ptr @.str7764) %t11852 = icmp ne i32 %t11851, 0 br i1 %t11852, label %then2405, label %ifend2407 then2405: - store ptr @.str7762, ptr %t380 + store ptr @.str7765, ptr %t380 %t11853 = load ptr, ptr %t387 %t11854 = getelementptr inbounds %LSlice, ptr %t11853, i32 0, i32 1 %t11855 = getelementptr inbounds %LSlice, ptr %t11853, i32 0, i32 2 @@ -82207,7 +82264,7 @@ grow2408: put2409: %t11869 = load ptr, ptr %t11856 %t11870 = getelementptr inbounds ptr, ptr %t11869, i32 %t11857 - store ptr @.str7763, ptr %t11870 + store ptr @.str7766, ptr %t11870 %t11871 = add i32 %t11857, 1 store i32 %t11871, ptr %t11854 %t11872 = load ptr, ptr %t387 @@ -82234,7 +82291,7 @@ grow2410: put2411: %t11888 = load ptr, ptr %t11875 %t11889 = getelementptr inbounds ptr, ptr %t11888, i32 %t11876 - store ptr @.str7764, ptr %t11889 + store ptr @.str7767, ptr %t11889 %t11890 = add i32 %t11876, 1 store i32 %t11890, ptr %t11873 %t11891 = load ptr, ptr %t387 @@ -82261,7 +82318,7 @@ grow2412: put2413: %t11907 = load ptr, ptr %t11894 %t11908 = getelementptr inbounds ptr, ptr %t11907, i32 %t11895 - store ptr @.str7765, ptr %t11908 + store ptr @.str7768, ptr %t11908 %t11909 = add i32 %t11895, 1 store i32 %t11909, ptr %t11892 %t11910 = load ptr, ptr %t387 @@ -82288,7 +82345,7 @@ grow2414: put2415: %t11926 = load ptr, ptr %t11913 %t11927 = getelementptr inbounds ptr, ptr %t11926, i32 %t11914 - store ptr @.str7766, ptr %t11927 + store ptr @.str7769, ptr %t11927 %t11928 = add i32 %t11914, 1 store i32 %t11928, ptr %t11911 %t11929 = load ptr, ptr %t387 @@ -82315,7 +82372,7 @@ grow2416: put2417: %t11945 = load ptr, ptr %t11932 %t11946 = getelementptr inbounds ptr, ptr %t11945, i32 %t11933 - store ptr @.str7767, ptr %t11946 + store ptr @.str7770, ptr %t11946 %t11947 = add i32 %t11933, 1 store i32 %t11947, ptr %t11930 %t11948 = load ptr, ptr %t387 @@ -82342,7 +82399,7 @@ grow2418: put2419: %t11964 = load ptr, ptr %t11951 %t11965 = getelementptr inbounds ptr, ptr %t11964, i32 %t11952 - store ptr @.str7768, ptr %t11965 + store ptr @.str7771, ptr %t11965 %t11966 = add i32 %t11952, 1 store i32 %t11966, ptr %t11949 %t11967 = load ptr, ptr %t387 @@ -82369,7 +82426,7 @@ grow2420: put2421: %t11983 = load ptr, ptr %t11970 %t11984 = getelementptr inbounds ptr, ptr %t11983, i32 %t11971 - store ptr @.str7769, ptr %t11984 + store ptr @.str7772, ptr %t11984 %t11985 = add i32 %t11971, 1 store i32 %t11985, ptr %t11968 br label %ifend2407 @@ -82377,16 +82434,16 @@ ifend2407: br label %ifend2379 ifend2379: %t11986 = load ptr, ptr %t0 - %t11987 = call i32 @lp_str_eq(ptr %t11986, ptr @.str7770) + %t11987 = call i32 @lp_str_eq(ptr %t11986, ptr @.str7773) %t11988 = icmp ne i32 %t11987, 0 br i1 %t11988, label %then2422, label %ifend2424 then2422: %t11989 = load ptr, ptr %t1 - %t11990 = call i32 @lp_str_eq(ptr %t11989, ptr @.str7771) + %t11990 = call i32 @lp_str_eq(ptr %t11989, ptr @.str7774) %t11991 = icmp ne i32 %t11990, 0 br i1 %t11991, label %then2425, label %ifend2427 then2425: - store ptr @.str7772, ptr %t380 + store ptr @.str7775, ptr %t380 %t11992 = load ptr, ptr %t387 %t11993 = getelementptr inbounds %LSlice, ptr %t11992, i32 0, i32 1 %t11994 = getelementptr inbounds %LSlice, ptr %t11992, i32 0, i32 2 @@ -82411,17 +82468,17 @@ grow2428: put2429: %t12008 = load ptr, ptr %t11995 %t12009 = getelementptr inbounds ptr, ptr %t12008, i32 %t11996 - store ptr @.str7773, ptr %t12009 + store ptr @.str7776, ptr %t12009 %t12010 = add i32 %t11996, 1 store i32 %t12010, ptr %t11993 br label %ifend2427 ifend2427: %t12011 = load ptr, ptr %t1 - %t12012 = call i32 @lp_str_eq(ptr %t12011, ptr @.str7774) + %t12012 = call i32 @lp_str_eq(ptr %t12011, ptr @.str7777) %t12013 = icmp ne i32 %t12012, 0 br i1 %t12013, label %then2430, label %ifend2432 then2430: - store ptr @.str7775, ptr %t380 + store ptr @.str7778, ptr %t380 %t12014 = load ptr, ptr %t387 %t12015 = getelementptr inbounds %LSlice, ptr %t12014, i32 0, i32 1 %t12016 = getelementptr inbounds %LSlice, ptr %t12014, i32 0, i32 2 @@ -82446,7 +82503,7 @@ grow2433: put2434: %t12030 = load ptr, ptr %t12017 %t12031 = getelementptr inbounds ptr, ptr %t12030, i32 %t12018 - store ptr @.str7776, ptr %t12031 + store ptr @.str7779, ptr %t12031 %t12032 = add i32 %t12018, 1 store i32 %t12032, ptr %t12015 %t12033 = load ptr, ptr %t387 @@ -82473,25 +82530,25 @@ grow2435: put2436: %t12049 = load ptr, ptr %t12036 %t12050 = getelementptr inbounds ptr, ptr %t12049, i32 %t12037 - store ptr @.str7777, ptr %t12050 + store ptr @.str7780, ptr %t12050 %t12051 = add i32 %t12037, 1 store i32 %t12051, ptr %t12034 br label %ifend2432 ifend2432: %t12052 = load ptr, ptr %t1 - %t12053 = call i32 @lp_str_eq(ptr %t12052, ptr @.str7778) + %t12053 = call i32 @lp_str_eq(ptr %t12052, ptr @.str7781) %t12054 = icmp ne i32 %t12053, 0 br i1 %t12054, label %then2437, label %ifend2439 then2437: - store ptr @.str7779, ptr %t380 + store ptr @.str7782, ptr %t380 br label %ifend2439 ifend2439: %t12055 = load ptr, ptr %t1 - %t12056 = call i32 @lp_str_eq(ptr %t12055, ptr @.str7780) + %t12056 = call i32 @lp_str_eq(ptr %t12055, ptr @.str7783) %t12057 = icmp ne i32 %t12056, 0 br i1 %t12057, label %then2440, label %ifend2442 then2440: - store ptr @.str7781, ptr %t380 + store ptr @.str7784, ptr %t380 %t12058 = load ptr, ptr %t387 %t12059 = getelementptr inbounds %LSlice, ptr %t12058, i32 0, i32 1 %t12060 = getelementptr inbounds %LSlice, ptr %t12058, i32 0, i32 2 @@ -82516,17 +82573,17 @@ grow2443: put2444: %t12074 = load ptr, ptr %t12061 %t12075 = getelementptr inbounds ptr, ptr %t12074, i32 %t12062 - store ptr @.str7782, ptr %t12075 + store ptr @.str7785, ptr %t12075 %t12076 = add i32 %t12062, 1 store i32 %t12076, ptr %t12059 br label %ifend2442 ifend2442: %t12077 = load ptr, ptr %t1 - %t12078 = call i32 @lp_str_eq(ptr %t12077, ptr @.str7783) + %t12078 = call i32 @lp_str_eq(ptr %t12077, ptr @.str7786) %t12079 = icmp ne i32 %t12078, 0 br i1 %t12079, label %then2445, label %ifend2447 then2445: - store ptr @.str7784, ptr %t380 + store ptr @.str7787, ptr %t380 %t12080 = load ptr, ptr %t387 %t12081 = getelementptr inbounds %LSlice, ptr %t12080, i32 0, i32 1 %t12082 = getelementptr inbounds %LSlice, ptr %t12080, i32 0, i32 2 @@ -82551,17 +82608,17 @@ grow2448: put2449: %t12096 = load ptr, ptr %t12083 %t12097 = getelementptr inbounds ptr, ptr %t12096, i32 %t12084 - store ptr @.str7785, ptr %t12097 + store ptr @.str7788, ptr %t12097 %t12098 = add i32 %t12084, 1 store i32 %t12098, ptr %t12081 br label %ifend2447 ifend2447: %t12099 = load ptr, ptr %t1 - %t12100 = call i32 @lp_str_eq(ptr %t12099, ptr @.str7786) + %t12100 = call i32 @lp_str_eq(ptr %t12099, ptr @.str7789) %t12101 = icmp ne i32 %t12100, 0 br i1 %t12101, label %then2450, label %ifend2452 then2450: - store ptr @.str7787, ptr %t380 + store ptr @.str7790, ptr %t380 %t12102 = load ptr, ptr %t387 %t12103 = getelementptr inbounds %LSlice, ptr %t12102, i32 0, i32 1 %t12104 = getelementptr inbounds %LSlice, ptr %t12102, i32 0, i32 2 @@ -82586,7 +82643,7 @@ grow2453: put2454: %t12118 = load ptr, ptr %t12105 %t12119 = getelementptr inbounds ptr, ptr %t12118, i32 %t12106 - store ptr @.str7788, ptr %t12119 + store ptr @.str7791, ptr %t12119 %t12120 = add i32 %t12106, 1 store i32 %t12120, ptr %t12103 %t12121 = load ptr, ptr %t387 @@ -82613,17 +82670,17 @@ grow2455: put2456: %t12137 = load ptr, ptr %t12124 %t12138 = getelementptr inbounds ptr, ptr %t12137, i32 %t12125 - store ptr @.str7789, ptr %t12138 + store ptr @.str7792, ptr %t12138 %t12139 = add i32 %t12125, 1 store i32 %t12139, ptr %t12122 br label %ifend2452 ifend2452: %t12140 = load ptr, ptr %t1 - %t12141 = call i32 @lp_str_eq(ptr %t12140, ptr @.str7790) + %t12141 = call i32 @lp_str_eq(ptr %t12140, ptr @.str7793) %t12142 = icmp ne i32 %t12141, 0 br i1 %t12142, label %then2457, label %ifend2459 then2457: - store ptr @.str7791, ptr %t380 + store ptr @.str7794, ptr %t380 %t12143 = load ptr, ptr %t387 %t12144 = getelementptr inbounds %LSlice, ptr %t12143, i32 0, i32 1 %t12145 = getelementptr inbounds %LSlice, ptr %t12143, i32 0, i32 2 @@ -82648,7 +82705,7 @@ grow2460: put2461: %t12159 = load ptr, ptr %t12146 %t12160 = getelementptr inbounds ptr, ptr %t12159, i32 %t12147 - store ptr @.str7792, ptr %t12160 + store ptr @.str7795, ptr %t12160 %t12161 = add i32 %t12147, 1 store i32 %t12161, ptr %t12144 %t12162 = load ptr, ptr %t387 @@ -82675,17 +82732,17 @@ grow2462: put2463: %t12178 = load ptr, ptr %t12165 %t12179 = getelementptr inbounds ptr, ptr %t12178, i32 %t12166 - store ptr @.str7793, ptr %t12179 + store ptr @.str7796, ptr %t12179 %t12180 = add i32 %t12166, 1 store i32 %t12180, ptr %t12163 br label %ifend2459 ifend2459: %t12181 = load ptr, ptr %t1 - %t12182 = call i32 @lp_str_eq(ptr %t12181, ptr @.str7794) + %t12182 = call i32 @lp_str_eq(ptr %t12181, ptr @.str7797) %t12183 = icmp ne i32 %t12182, 0 br i1 %t12183, label %then2464, label %ifend2466 then2464: - store ptr @.str7795, ptr %t380 + store ptr @.str7798, ptr %t380 %t12184 = load ptr, ptr %t387 %t12185 = getelementptr inbounds %LSlice, ptr %t12184, i32 0, i32 1 %t12186 = getelementptr inbounds %LSlice, ptr %t12184, i32 0, i32 2 @@ -82710,7 +82767,7 @@ grow2467: put2468: %t12200 = load ptr, ptr %t12187 %t12201 = getelementptr inbounds ptr, ptr %t12200, i32 %t12188 - store ptr @.str7796, ptr %t12201 + store ptr @.str7799, ptr %t12201 %t12202 = add i32 %t12188, 1 store i32 %t12202, ptr %t12185 %t12203 = load ptr, ptr %t387 @@ -82737,7 +82794,7 @@ grow2469: put2470: %t12219 = load ptr, ptr %t12206 %t12220 = getelementptr inbounds ptr, ptr %t12219, i32 %t12207 - store ptr @.str7797, ptr %t12220 + store ptr @.str7800, ptr %t12220 %t12221 = add i32 %t12207, 1 store i32 %t12221, ptr %t12204 %t12222 = load ptr, ptr %t387 @@ -82764,17 +82821,17 @@ grow2471: put2472: %t12238 = load ptr, ptr %t12225 %t12239 = getelementptr inbounds ptr, ptr %t12238, i32 %t12226 - store ptr @.str7798, ptr %t12239 + store ptr @.str7801, ptr %t12239 %t12240 = add i32 %t12226, 1 store i32 %t12240, ptr %t12223 br label %ifend2466 ifend2466: %t12241 = load ptr, ptr %t1 - %t12242 = call i32 @lp_str_eq(ptr %t12241, ptr @.str7799) + %t12242 = call i32 @lp_str_eq(ptr %t12241, ptr @.str7802) %t12243 = icmp ne i32 %t12242, 0 br i1 %t12243, label %then2473, label %ifend2475 then2473: - store ptr @.str7800, ptr %t380 + store ptr @.str7803, ptr %t380 %t12244 = load ptr, ptr %t387 %t12245 = getelementptr inbounds %LSlice, ptr %t12244, i32 0, i32 1 %t12246 = getelementptr inbounds %LSlice, ptr %t12244, i32 0, i32 2 @@ -82799,7 +82856,7 @@ grow2476: put2477: %t12260 = load ptr, ptr %t12247 %t12261 = getelementptr inbounds ptr, ptr %t12260, i32 %t12248 - store ptr @.str7801, ptr %t12261 + store ptr @.str7804, ptr %t12261 %t12262 = add i32 %t12248, 1 store i32 %t12262, ptr %t12245 %t12263 = load ptr, ptr %t387 @@ -82826,7 +82883,7 @@ grow2478: put2479: %t12279 = load ptr, ptr %t12266 %t12280 = getelementptr inbounds ptr, ptr %t12279, i32 %t12267 - store ptr @.str7802, ptr %t12280 + store ptr @.str7805, ptr %t12280 %t12281 = add i32 %t12267, 1 store i32 %t12281, ptr %t12264 %t12282 = load ptr, ptr %t387 @@ -82853,7 +82910,7 @@ grow2480: put2481: %t12298 = load ptr, ptr %t12285 %t12299 = getelementptr inbounds ptr, ptr %t12298, i32 %t12286 - store ptr @.str7803, ptr %t12299 + store ptr @.str7806, ptr %t12299 %t12300 = add i32 %t12286, 1 store i32 %t12300, ptr %t12283 %t12301 = load ptr, ptr %t387 @@ -82880,17 +82937,17 @@ grow2482: put2483: %t12317 = load ptr, ptr %t12304 %t12318 = getelementptr inbounds ptr, ptr %t12317, i32 %t12305 - store ptr @.str7804, ptr %t12318 + store ptr @.str7807, ptr %t12318 %t12319 = add i32 %t12305, 1 store i32 %t12319, ptr %t12302 br label %ifend2475 ifend2475: %t12320 = load ptr, ptr %t1 - %t12321 = call i32 @lp_str_eq(ptr %t12320, ptr @.str7805) + %t12321 = call i32 @lp_str_eq(ptr %t12320, ptr @.str7808) %t12322 = icmp ne i32 %t12321, 0 br i1 %t12322, label %then2484, label %ifend2486 then2484: - store ptr @.str7806, ptr %t380 + store ptr @.str7809, ptr %t380 %t12323 = load ptr, ptr %t387 %t12324 = getelementptr inbounds %LSlice, ptr %t12323, i32 0, i32 1 %t12325 = getelementptr inbounds %LSlice, ptr %t12323, i32 0, i32 2 @@ -82915,7 +82972,7 @@ grow2487: put2488: %t12339 = load ptr, ptr %t12326 %t12340 = getelementptr inbounds ptr, ptr %t12339, i32 %t12327 - store ptr @.str7807, ptr %t12340 + store ptr @.str7810, ptr %t12340 %t12341 = add i32 %t12327, 1 store i32 %t12341, ptr %t12324 %t12342 = load ptr, ptr %t387 @@ -82942,17 +82999,17 @@ grow2489: put2490: %t12358 = load ptr, ptr %t12345 %t12359 = getelementptr inbounds ptr, ptr %t12358, i32 %t12346 - store ptr @.str7808, ptr %t12359 + store ptr @.str7811, ptr %t12359 %t12360 = add i32 %t12346, 1 store i32 %t12360, ptr %t12343 br label %ifend2486 ifend2486: %t12361 = load ptr, ptr %t1 - %t12362 = call i32 @lp_str_eq(ptr %t12361, ptr @.str7809) + %t12362 = call i32 @lp_str_eq(ptr %t12361, ptr @.str7812) %t12363 = icmp ne i32 %t12362, 0 br i1 %t12363, label %then2491, label %ifend2493 then2491: - store ptr @.str7810, ptr %t380 + store ptr @.str7813, ptr %t380 %t12364 = load ptr, ptr %t387 %t12365 = getelementptr inbounds %LSlice, ptr %t12364, i32 0, i32 1 %t12366 = getelementptr inbounds %LSlice, ptr %t12364, i32 0, i32 2 @@ -82977,17 +83034,17 @@ grow2494: put2495: %t12380 = load ptr, ptr %t12367 %t12381 = getelementptr inbounds ptr, ptr %t12380, i32 %t12368 - store ptr @.str7811, ptr %t12381 + store ptr @.str7814, ptr %t12381 %t12382 = add i32 %t12368, 1 store i32 %t12382, ptr %t12365 br label %ifend2493 ifend2493: %t12383 = load ptr, ptr %t1 - %t12384 = call i32 @lp_str_eq(ptr %t12383, ptr @.str7812) + %t12384 = call i32 @lp_str_eq(ptr %t12383, ptr @.str7815) %t12385 = icmp ne i32 %t12384, 0 br i1 %t12385, label %then2496, label %ifend2498 then2496: - store ptr @.str7813, ptr %t380 + store ptr @.str7816, ptr %t380 %t12386 = load ptr, ptr %t387 %t12387 = getelementptr inbounds %LSlice, ptr %t12386, i32 0, i32 1 %t12388 = getelementptr inbounds %LSlice, ptr %t12386, i32 0, i32 2 @@ -83012,17 +83069,17 @@ grow2499: put2500: %t12402 = load ptr, ptr %t12389 %t12403 = getelementptr inbounds ptr, ptr %t12402, i32 %t12390 - store ptr @.str7814, ptr %t12403 + store ptr @.str7817, ptr %t12403 %t12404 = add i32 %t12390, 1 store i32 %t12404, ptr %t12387 br label %ifend2498 ifend2498: %t12405 = load ptr, ptr %t1 - %t12406 = call i32 @lp_str_eq(ptr %t12405, ptr @.str7815) + %t12406 = call i32 @lp_str_eq(ptr %t12405, ptr @.str7818) %t12407 = icmp ne i32 %t12406, 0 br i1 %t12407, label %then2501, label %ifend2503 then2501: - store ptr @.str7816, ptr %t380 + store ptr @.str7819, ptr %t380 %t12408 = load ptr, ptr %t387 %t12409 = getelementptr inbounds %LSlice, ptr %t12408, i32 0, i32 1 %t12410 = getelementptr inbounds %LSlice, ptr %t12408, i32 0, i32 2 @@ -83047,17 +83104,17 @@ grow2504: put2505: %t12424 = load ptr, ptr %t12411 %t12425 = getelementptr inbounds ptr, ptr %t12424, i32 %t12412 - store ptr @.str7817, ptr %t12425 + store ptr @.str7820, ptr %t12425 %t12426 = add i32 %t12412, 1 store i32 %t12426, ptr %t12409 br label %ifend2503 ifend2503: %t12427 = load ptr, ptr %t1 - %t12428 = call i32 @lp_str_eq(ptr %t12427, ptr @.str7818) + %t12428 = call i32 @lp_str_eq(ptr %t12427, ptr @.str7821) %t12429 = icmp ne i32 %t12428, 0 br i1 %t12429, label %then2506, label %ifend2508 then2506: - store ptr @.str7819, ptr %t380 + store ptr @.str7822, ptr %t380 %t12430 = load ptr, ptr %t387 %t12431 = getelementptr inbounds %LSlice, ptr %t12430, i32 0, i32 1 %t12432 = getelementptr inbounds %LSlice, ptr %t12430, i32 0, i32 2 @@ -83082,7 +83139,7 @@ grow2509: put2510: %t12446 = load ptr, ptr %t12433 %t12447 = getelementptr inbounds ptr, ptr %t12446, i32 %t12434 - store ptr @.str7820, ptr %t12447 + store ptr @.str7823, ptr %t12447 %t12448 = add i32 %t12434, 1 store i32 %t12448, ptr %t12431 %t12449 = load ptr, ptr %t387 @@ -83109,7 +83166,7 @@ grow2511: put2512: %t12465 = load ptr, ptr %t12452 %t12466 = getelementptr inbounds ptr, ptr %t12465, i32 %t12453 - store ptr @.str7821, ptr %t12466 + store ptr @.str7824, ptr %t12466 %t12467 = add i32 %t12453, 1 store i32 %t12467, ptr %t12450 br label %ifend2508 @@ -83117,24 +83174,24 @@ ifend2508: br label %ifend2424 ifend2424: %t12468 = load ptr, ptr %t0 - %t12469 = call i32 @lp_str_eq(ptr %t12468, ptr @.str7822) + %t12469 = call i32 @lp_str_eq(ptr %t12468, ptr @.str7825) %t12470 = icmp ne i32 %t12469, 0 br i1 %t12470, label %then2513, label %ifend2515 then2513: %t12471 = load ptr, ptr %t1 - %t12472 = call i32 @lp_str_eq(ptr %t12471, ptr @.str7823) + %t12472 = call i32 @lp_str_eq(ptr %t12471, ptr @.str7826) %t12473 = icmp ne i32 %t12472, 0 br i1 %t12473, label %then2516, label %ifend2518 then2516: - store ptr @.str7824, ptr %t380 + store ptr @.str7827, ptr %t380 br label %ifend2518 ifend2518: %t12474 = load ptr, ptr %t1 - %t12475 = call i32 @lp_str_eq(ptr %t12474, ptr @.str7825) + %t12475 = call i32 @lp_str_eq(ptr %t12474, ptr @.str7828) %t12476 = icmp ne i32 %t12475, 0 br i1 %t12476, label %then2519, label %ifend2521 then2519: - store ptr @.str7826, ptr %t380 + store ptr @.str7829, ptr %t380 %t12477 = load ptr, ptr %t387 %t12478 = getelementptr inbounds %LSlice, ptr %t12477, i32 0, i32 1 %t12479 = getelementptr inbounds %LSlice, ptr %t12477, i32 0, i32 2 @@ -83159,17 +83216,17 @@ grow2522: put2523: %t12493 = load ptr, ptr %t12480 %t12494 = getelementptr inbounds ptr, ptr %t12493, i32 %t12481 - store ptr @.str7827, ptr %t12494 + store ptr @.str7830, ptr %t12494 %t12495 = add i32 %t12481, 1 store i32 %t12495, ptr %t12478 br label %ifend2521 ifend2521: %t12496 = load ptr, ptr %t1 - %t12497 = call i32 @lp_str_eq(ptr %t12496, ptr @.str7828) + %t12497 = call i32 @lp_str_eq(ptr %t12496, ptr @.str7831) %t12498 = icmp ne i32 %t12497, 0 br i1 %t12498, label %then2524, label %ifend2526 then2524: - store ptr @.str7829, ptr %t380 + store ptr @.str7832, ptr %t380 %t12499 = load ptr, ptr %t387 %t12500 = getelementptr inbounds %LSlice, ptr %t12499, i32 0, i32 1 %t12501 = getelementptr inbounds %LSlice, ptr %t12499, i32 0, i32 2 @@ -83194,17 +83251,17 @@ grow2527: put2528: %t12515 = load ptr, ptr %t12502 %t12516 = getelementptr inbounds ptr, ptr %t12515, i32 %t12503 - store ptr @.str7830, ptr %t12516 + store ptr @.str7833, ptr %t12516 %t12517 = add i32 %t12503, 1 store i32 %t12517, ptr %t12500 br label %ifend2526 ifend2526: %t12518 = load ptr, ptr %t1 - %t12519 = call i32 @lp_str_eq(ptr %t12518, ptr @.str7831) + %t12519 = call i32 @lp_str_eq(ptr %t12518, ptr @.str7834) %t12520 = icmp ne i32 %t12519, 0 br i1 %t12520, label %then2529, label %ifend2531 then2529: - store ptr @.str7832, ptr %t380 + store ptr @.str7835, ptr %t380 %t12521 = load ptr, ptr %t387 %t12522 = getelementptr inbounds %LSlice, ptr %t12521, i32 0, i32 1 %t12523 = getelementptr inbounds %LSlice, ptr %t12521, i32 0, i32 2 @@ -83229,17 +83286,17 @@ grow2532: put2533: %t12537 = load ptr, ptr %t12524 %t12538 = getelementptr inbounds ptr, ptr %t12537, i32 %t12525 - store ptr @.str7833, ptr %t12538 + store ptr @.str7836, ptr %t12538 %t12539 = add i32 %t12525, 1 store i32 %t12539, ptr %t12522 br label %ifend2531 ifend2531: %t12540 = load ptr, ptr %t1 - %t12541 = call i32 @lp_str_eq(ptr %t12540, ptr @.str7834) + %t12541 = call i32 @lp_str_eq(ptr %t12540, ptr @.str7837) %t12542 = icmp ne i32 %t12541, 0 br i1 %t12542, label %then2534, label %ifend2536 then2534: - store ptr @.str7835, ptr %t380 + store ptr @.str7838, ptr %t380 %t12543 = load ptr, ptr %t387 %t12544 = getelementptr inbounds %LSlice, ptr %t12543, i32 0, i32 1 %t12545 = getelementptr inbounds %LSlice, ptr %t12543, i32 0, i32 2 @@ -83264,33 +83321,33 @@ grow2537: put2538: %t12559 = load ptr, ptr %t12546 %t12560 = getelementptr inbounds ptr, ptr %t12559, i32 %t12547 - store ptr @.str7836, ptr %t12560 + store ptr @.str7839, ptr %t12560 %t12561 = add i32 %t12547, 1 store i32 %t12561, ptr %t12544 br label %ifend2536 ifend2536: %t12562 = load ptr, ptr %t1 - %t12563 = call i32 @lp_str_eq(ptr %t12562, ptr @.str7837) + %t12563 = call i32 @lp_str_eq(ptr %t12562, ptr @.str7840) %t12564 = icmp ne i32 %t12563, 0 br i1 %t12564, label %then2539, label %ifend2541 then2539: - store ptr @.str7838, ptr %t380 + store ptr @.str7841, ptr %t380 br label %ifend2541 ifend2541: %t12565 = load ptr, ptr %t1 - %t12566 = call i32 @lp_str_eq(ptr %t12565, ptr @.str7839) + %t12566 = call i32 @lp_str_eq(ptr %t12565, ptr @.str7842) %t12567 = icmp ne i32 %t12566, 0 br i1 %t12567, label %then2542, label %ifend2544 then2542: - store ptr @.str7840, ptr %t380 + store ptr @.str7843, ptr %t380 br label %ifend2544 ifend2544: %t12568 = load ptr, ptr %t1 - %t12569 = call i32 @lp_str_eq(ptr %t12568, ptr @.str7841) + %t12569 = call i32 @lp_str_eq(ptr %t12568, ptr @.str7844) %t12570 = icmp ne i32 %t12569, 0 br i1 %t12570, label %then2545, label %ifend2547 then2545: - store ptr @.str7842, ptr %t380 + store ptr @.str7845, ptr %t380 %t12571 = load ptr, ptr %t387 %t12572 = getelementptr inbounds %LSlice, ptr %t12571, i32 0, i32 1 %t12573 = getelementptr inbounds %LSlice, ptr %t12571, i32 0, i32 2 @@ -83315,7 +83372,7 @@ grow2548: put2549: %t12587 = load ptr, ptr %t12574 %t12588 = getelementptr inbounds ptr, ptr %t12587, i32 %t12575 - store ptr @.str7843, ptr %t12588 + store ptr @.str7846, ptr %t12588 %t12589 = add i32 %t12575, 1 store i32 %t12589, ptr %t12572 %t12590 = load ptr, ptr %t387 @@ -83342,17 +83399,17 @@ grow2550: put2551: %t12606 = load ptr, ptr %t12593 %t12607 = getelementptr inbounds ptr, ptr %t12606, i32 %t12594 - store ptr @.str7844, ptr %t12607 + store ptr @.str7847, ptr %t12607 %t12608 = add i32 %t12594, 1 store i32 %t12608, ptr %t12591 br label %ifend2547 ifend2547: %t12609 = load ptr, ptr %t1 - %t12610 = call i32 @lp_str_eq(ptr %t12609, ptr @.str7845) + %t12610 = call i32 @lp_str_eq(ptr %t12609, ptr @.str7848) %t12611 = icmp ne i32 %t12610, 0 br i1 %t12611, label %then2552, label %ifend2554 then2552: - store ptr @.str7846, ptr %t380 + store ptr @.str7849, ptr %t380 %t12612 = load ptr, ptr %t387 %t12613 = getelementptr inbounds %LSlice, ptr %t12612, i32 0, i32 1 %t12614 = getelementptr inbounds %LSlice, ptr %t12612, i32 0, i32 2 @@ -83377,7 +83434,7 @@ grow2555: put2556: %t12628 = load ptr, ptr %t12615 %t12629 = getelementptr inbounds ptr, ptr %t12628, i32 %t12616 - store ptr @.str7847, ptr %t12629 + store ptr @.str7850, ptr %t12629 %t12630 = add i32 %t12616, 1 store i32 %t12630, ptr %t12613 %t12631 = load ptr, ptr %t387 @@ -83404,7 +83461,7 @@ grow2557: put2558: %t12647 = load ptr, ptr %t12634 %t12648 = getelementptr inbounds ptr, ptr %t12647, i32 %t12635 - store ptr @.str7848, ptr %t12648 + store ptr @.str7851, ptr %t12648 %t12649 = add i32 %t12635, 1 store i32 %t12649, ptr %t12632 %t12650 = load ptr, ptr %t387 @@ -83431,17 +83488,17 @@ grow2559: put2560: %t12666 = load ptr, ptr %t12653 %t12667 = getelementptr inbounds ptr, ptr %t12666, i32 %t12654 - store ptr @.str7849, ptr %t12667 + store ptr @.str7852, ptr %t12667 %t12668 = add i32 %t12654, 1 store i32 %t12668, ptr %t12651 br label %ifend2554 ifend2554: %t12669 = load ptr, ptr %t1 - %t12670 = call i32 @lp_str_eq(ptr %t12669, ptr @.str7850) + %t12670 = call i32 @lp_str_eq(ptr %t12669, ptr @.str7853) %t12671 = icmp ne i32 %t12670, 0 br i1 %t12671, label %then2561, label %ifend2563 then2561: - store ptr @.str7851, ptr %t380 + store ptr @.str7854, ptr %t380 %t12672 = load ptr, ptr %t387 %t12673 = getelementptr inbounds %LSlice, ptr %t12672, i32 0, i32 1 %t12674 = getelementptr inbounds %LSlice, ptr %t12672, i32 0, i32 2 @@ -83466,7 +83523,7 @@ grow2564: put2565: %t12688 = load ptr, ptr %t12675 %t12689 = getelementptr inbounds ptr, ptr %t12688, i32 %t12676 - store ptr @.str7852, ptr %t12689 + store ptr @.str7855, ptr %t12689 %t12690 = add i32 %t12676, 1 store i32 %t12690, ptr %t12673 %t12691 = load ptr, ptr %t387 @@ -83493,17 +83550,17 @@ grow2566: put2567: %t12707 = load ptr, ptr %t12694 %t12708 = getelementptr inbounds ptr, ptr %t12707, i32 %t12695 - store ptr @.str7853, ptr %t12708 + store ptr @.str7856, ptr %t12708 %t12709 = add i32 %t12695, 1 store i32 %t12709, ptr %t12692 br label %ifend2563 ifend2563: %t12710 = load ptr, ptr %t1 - %t12711 = call i32 @lp_str_eq(ptr %t12710, ptr @.str7854) + %t12711 = call i32 @lp_str_eq(ptr %t12710, ptr @.str7857) %t12712 = icmp ne i32 %t12711, 0 br i1 %t12712, label %then2568, label %ifend2570 then2568: - store ptr @.str7855, ptr %t380 + store ptr @.str7858, ptr %t380 %t12713 = load ptr, ptr %t387 %t12714 = getelementptr inbounds %LSlice, ptr %t12713, i32 0, i32 1 %t12715 = getelementptr inbounds %LSlice, ptr %t12713, i32 0, i32 2 @@ -83528,7 +83585,7 @@ grow2571: put2572: %t12729 = load ptr, ptr %t12716 %t12730 = getelementptr inbounds ptr, ptr %t12729, i32 %t12717 - store ptr @.str7856, ptr %t12730 + store ptr @.str7859, ptr %t12730 %t12731 = add i32 %t12717, 1 store i32 %t12731, ptr %t12714 %t12732 = load ptr, ptr %t387 @@ -83555,17 +83612,17 @@ grow2573: put2574: %t12748 = load ptr, ptr %t12735 %t12749 = getelementptr inbounds ptr, ptr %t12748, i32 %t12736 - store ptr @.str7857, ptr %t12749 + store ptr @.str7860, ptr %t12749 %t12750 = add i32 %t12736, 1 store i32 %t12750, ptr %t12733 br label %ifend2570 ifend2570: %t12751 = load ptr, ptr %t1 - %t12752 = call i32 @lp_str_eq(ptr %t12751, ptr @.str7858) + %t12752 = call i32 @lp_str_eq(ptr %t12751, ptr @.str7861) %t12753 = icmp ne i32 %t12752, 0 br i1 %t12753, label %then2575, label %ifend2577 then2575: - store ptr @.str7859, ptr %t380 + store ptr @.str7862, ptr %t380 %t12754 = load ptr, ptr %t387 %t12755 = getelementptr inbounds %LSlice, ptr %t12754, i32 0, i32 1 %t12756 = getelementptr inbounds %LSlice, ptr %t12754, i32 0, i32 2 @@ -83590,7 +83647,7 @@ grow2578: put2579: %t12770 = load ptr, ptr %t12757 %t12771 = getelementptr inbounds ptr, ptr %t12770, i32 %t12758 - store ptr @.str7860, ptr %t12771 + store ptr @.str7863, ptr %t12771 %t12772 = add i32 %t12758, 1 store i32 %t12772, ptr %t12755 %t12773 = load ptr, ptr %t387 @@ -83617,17 +83674,17 @@ grow2580: put2581: %t12789 = load ptr, ptr %t12776 %t12790 = getelementptr inbounds ptr, ptr %t12789, i32 %t12777 - store ptr @.str7861, ptr %t12790 + store ptr @.str7864, ptr %t12790 %t12791 = add i32 %t12777, 1 store i32 %t12791, ptr %t12774 br label %ifend2577 ifend2577: %t12792 = load ptr, ptr %t1 - %t12793 = call i32 @lp_str_eq(ptr %t12792, ptr @.str7862) + %t12793 = call i32 @lp_str_eq(ptr %t12792, ptr @.str7865) %t12794 = icmp ne i32 %t12793, 0 br i1 %t12794, label %then2582, label %ifend2584 then2582: - store ptr @.str7863, ptr %t380 + store ptr @.str7866, ptr %t380 %t12795 = load ptr, ptr %t387 %t12796 = getelementptr inbounds %LSlice, ptr %t12795, i32 0, i32 1 %t12797 = getelementptr inbounds %LSlice, ptr %t12795, i32 0, i32 2 @@ -83652,7 +83709,7 @@ grow2585: put2586: %t12811 = load ptr, ptr %t12798 %t12812 = getelementptr inbounds ptr, ptr %t12811, i32 %t12799 - store ptr @.str7864, ptr %t12812 + store ptr @.str7867, ptr %t12812 %t12813 = add i32 %t12799, 1 store i32 %t12813, ptr %t12796 %t12814 = load ptr, ptr %t387 @@ -83679,17 +83736,17 @@ grow2587: put2588: %t12830 = load ptr, ptr %t12817 %t12831 = getelementptr inbounds ptr, ptr %t12830, i32 %t12818 - store ptr @.str7865, ptr %t12831 + store ptr @.str7868, ptr %t12831 %t12832 = add i32 %t12818, 1 store i32 %t12832, ptr %t12815 br label %ifend2584 ifend2584: %t12833 = load ptr, ptr %t1 - %t12834 = call i32 @lp_str_eq(ptr %t12833, ptr @.str7866) + %t12834 = call i32 @lp_str_eq(ptr %t12833, ptr @.str7869) %t12835 = icmp ne i32 %t12834, 0 br i1 %t12835, label %then2589, label %ifend2591 then2589: - store ptr @.str7867, ptr %t380 + store ptr @.str7870, ptr %t380 %t12836 = load ptr, ptr %t387 %t12837 = getelementptr inbounds %LSlice, ptr %t12836, i32 0, i32 1 %t12838 = getelementptr inbounds %LSlice, ptr %t12836, i32 0, i32 2 @@ -83714,17 +83771,17 @@ grow2592: put2593: %t12852 = load ptr, ptr %t12839 %t12853 = getelementptr inbounds ptr, ptr %t12852, i32 %t12840 - store ptr @.str7868, ptr %t12853 + store ptr @.str7871, ptr %t12853 %t12854 = add i32 %t12840, 1 store i32 %t12854, ptr %t12837 br label %ifend2591 ifend2591: %t12855 = load ptr, ptr %t1 - %t12856 = call i32 @lp_str_eq(ptr %t12855, ptr @.str7869) + %t12856 = call i32 @lp_str_eq(ptr %t12855, ptr @.str7872) %t12857 = icmp ne i32 %t12856, 0 br i1 %t12857, label %then2594, label %ifend2596 then2594: - store ptr @.str7870, ptr %t380 + store ptr @.str7873, ptr %t380 %t12858 = load ptr, ptr %t387 %t12859 = getelementptr inbounds %LSlice, ptr %t12858, i32 0, i32 1 %t12860 = getelementptr inbounds %LSlice, ptr %t12858, i32 0, i32 2 @@ -83749,17 +83806,17 @@ grow2597: put2598: %t12874 = load ptr, ptr %t12861 %t12875 = getelementptr inbounds ptr, ptr %t12874, i32 %t12862 - store ptr @.str7871, ptr %t12875 + store ptr @.str7874, ptr %t12875 %t12876 = add i32 %t12862, 1 store i32 %t12876, ptr %t12859 br label %ifend2596 ifend2596: %t12877 = load ptr, ptr %t1 - %t12878 = call i32 @lp_str_eq(ptr %t12877, ptr @.str7872) + %t12878 = call i32 @lp_str_eq(ptr %t12877, ptr @.str7875) %t12879 = icmp ne i32 %t12878, 0 br i1 %t12879, label %then2599, label %ifend2601 then2599: - store ptr @.str7873, ptr %t380 + store ptr @.str7876, ptr %t380 %t12880 = load ptr, ptr %t387 %t12881 = getelementptr inbounds %LSlice, ptr %t12880, i32 0, i32 1 %t12882 = getelementptr inbounds %LSlice, ptr %t12880, i32 0, i32 2 @@ -83784,17 +83841,17 @@ grow2602: put2603: %t12896 = load ptr, ptr %t12883 %t12897 = getelementptr inbounds ptr, ptr %t12896, i32 %t12884 - store ptr @.str7874, ptr %t12897 + store ptr @.str7877, ptr %t12897 %t12898 = add i32 %t12884, 1 store i32 %t12898, ptr %t12881 br label %ifend2601 ifend2601: %t12899 = load ptr, ptr %t1 - %t12900 = call i32 @lp_str_eq(ptr %t12899, ptr @.str7875) + %t12900 = call i32 @lp_str_eq(ptr %t12899, ptr @.str7878) %t12901 = icmp ne i32 %t12900, 0 br i1 %t12901, label %then2604, label %ifend2606 then2604: - store ptr @.str7876, ptr %t380 + store ptr @.str7879, ptr %t380 %t12902 = load ptr, ptr %t387 %t12903 = getelementptr inbounds %LSlice, ptr %t12902, i32 0, i32 1 %t12904 = getelementptr inbounds %LSlice, ptr %t12902, i32 0, i32 2 @@ -83819,7 +83876,7 @@ grow2607: put2608: %t12918 = load ptr, ptr %t12905 %t12919 = getelementptr inbounds ptr, ptr %t12918, i32 %t12906 - store ptr @.str7877, ptr %t12919 + store ptr @.str7880, ptr %t12919 %t12920 = add i32 %t12906, 1 store i32 %t12920, ptr %t12903 br label %ifend2606 @@ -83827,16 +83884,16 @@ ifend2606: br label %ifend2515 ifend2515: %t12921 = load ptr, ptr %t0 - %t12922 = call i32 @lp_str_eq(ptr %t12921, ptr @.str7878) + %t12922 = call i32 @lp_str_eq(ptr %t12921, ptr @.str7881) %t12923 = icmp ne i32 %t12922, 0 br i1 %t12923, label %then2609, label %ifend2611 then2609: %t12924 = load ptr, ptr %t1 - %t12925 = call i32 @lp_str_eq(ptr %t12924, ptr @.str7879) + %t12925 = call i32 @lp_str_eq(ptr %t12924, ptr @.str7882) %t12926 = icmp ne i32 %t12925, 0 br i1 %t12926, label %then2612, label %ifend2614 then2612: - store ptr @.str7880, ptr %t380 + store ptr @.str7883, ptr %t380 %t12927 = load ptr, ptr %t387 %t12928 = getelementptr inbounds %LSlice, ptr %t12927, i32 0, i32 1 %t12929 = getelementptr inbounds %LSlice, ptr %t12927, i32 0, i32 2 @@ -83861,17 +83918,17 @@ grow2615: put2616: %t12943 = load ptr, ptr %t12930 %t12944 = getelementptr inbounds ptr, ptr %t12943, i32 %t12931 - store ptr @.str7881, ptr %t12944 + store ptr @.str7884, ptr %t12944 %t12945 = add i32 %t12931, 1 store i32 %t12945, ptr %t12928 br label %ifend2614 ifend2614: %t12946 = load ptr, ptr %t1 - %t12947 = call i32 @lp_str_eq(ptr %t12946, ptr @.str7882) + %t12947 = call i32 @lp_str_eq(ptr %t12946, ptr @.str7885) %t12948 = icmp ne i32 %t12947, 0 br i1 %t12948, label %then2617, label %ifend2619 then2617: - store ptr @.str7883, ptr %t380 + store ptr @.str7886, ptr %t380 %t12949 = load ptr, ptr %t387 %t12950 = getelementptr inbounds %LSlice, ptr %t12949, i32 0, i32 1 %t12951 = getelementptr inbounds %LSlice, ptr %t12949, i32 0, i32 2 @@ -83896,7 +83953,7 @@ grow2620: put2621: %t12965 = load ptr, ptr %t12952 %t12966 = getelementptr inbounds ptr, ptr %t12965, i32 %t12953 - store ptr @.str7884, ptr %t12966 + store ptr @.str7887, ptr %t12966 %t12967 = add i32 %t12953, 1 store i32 %t12967, ptr %t12950 br label %ifend2619 @@ -83904,16 +83961,16 @@ ifend2619: br label %ifend2611 ifend2611: %t12968 = load ptr, ptr %t0 - %t12969 = call i32 @lp_str_eq(ptr %t12968, ptr @.str7885) + %t12969 = call i32 @lp_str_eq(ptr %t12968, ptr @.str7888) %t12970 = icmp ne i32 %t12969, 0 br i1 %t12970, label %then2622, label %ifend2624 then2622: %t12971 = load ptr, ptr %t1 - %t12972 = call i32 @lp_str_eq(ptr %t12971, ptr @.str7886) + %t12972 = call i32 @lp_str_eq(ptr %t12971, ptr @.str7889) %t12973 = icmp ne i32 %t12972, 0 br i1 %t12973, label %then2625, label %ifend2627 then2625: - store ptr @.str7887, ptr %t380 + store ptr @.str7890, ptr %t380 %t12974 = load ptr, ptr %t387 %t12975 = getelementptr inbounds %LSlice, ptr %t12974, i32 0, i32 1 %t12976 = getelementptr inbounds %LSlice, ptr %t12974, i32 0, i32 2 @@ -83938,17 +83995,17 @@ grow2628: put2629: %t12990 = load ptr, ptr %t12977 %t12991 = getelementptr inbounds ptr, ptr %t12990, i32 %t12978 - store ptr @.str7888, ptr %t12991 + store ptr @.str7891, ptr %t12991 %t12992 = add i32 %t12978, 1 store i32 %t12992, ptr %t12975 br label %ifend2627 ifend2627: %t12993 = load ptr, ptr %t1 - %t12994 = call i32 @lp_str_eq(ptr %t12993, ptr @.str7889) + %t12994 = call i32 @lp_str_eq(ptr %t12993, ptr @.str7892) %t12995 = icmp ne i32 %t12994, 0 br i1 %t12995, label %then2630, label %ifend2632 then2630: - store ptr @.str7890, ptr %t380 + store ptr @.str7893, ptr %t380 %t12996 = load ptr, ptr %t387 %t12997 = getelementptr inbounds %LSlice, ptr %t12996, i32 0, i32 1 %t12998 = getelementptr inbounds %LSlice, ptr %t12996, i32 0, i32 2 @@ -83973,17 +84030,17 @@ grow2633: put2634: %t13012 = load ptr, ptr %t12999 %t13013 = getelementptr inbounds ptr, ptr %t13012, i32 %t13000 - store ptr @.str7891, ptr %t13013 + store ptr @.str7894, ptr %t13013 %t13014 = add i32 %t13000, 1 store i32 %t13014, ptr %t12997 br label %ifend2632 ifend2632: %t13015 = load ptr, ptr %t1 - %t13016 = call i32 @lp_str_eq(ptr %t13015, ptr @.str7892) + %t13016 = call i32 @lp_str_eq(ptr %t13015, ptr @.str7895) %t13017 = icmp ne i32 %t13016, 0 br i1 %t13017, label %then2635, label %ifend2637 then2635: - store ptr @.str7893, ptr %t380 + store ptr @.str7896, ptr %t380 %t13018 = load ptr, ptr %t387 %t13019 = getelementptr inbounds %LSlice, ptr %t13018, i32 0, i32 1 %t13020 = getelementptr inbounds %LSlice, ptr %t13018, i32 0, i32 2 @@ -84008,17 +84065,17 @@ grow2638: put2639: %t13034 = load ptr, ptr %t13021 %t13035 = getelementptr inbounds ptr, ptr %t13034, i32 %t13022 - store ptr @.str7894, ptr %t13035 + store ptr @.str7897, ptr %t13035 %t13036 = add i32 %t13022, 1 store i32 %t13036, ptr %t13019 br label %ifend2637 ifend2637: %t13037 = load ptr, ptr %t1 - %t13038 = call i32 @lp_str_eq(ptr %t13037, ptr @.str7895) + %t13038 = call i32 @lp_str_eq(ptr %t13037, ptr @.str7898) %t13039 = icmp ne i32 %t13038, 0 br i1 %t13039, label %then2640, label %ifend2642 then2640: - store ptr @.str7896, ptr %t380 + store ptr @.str7899, ptr %t380 %t13040 = load ptr, ptr %t387 %t13041 = getelementptr inbounds %LSlice, ptr %t13040, i32 0, i32 1 %t13042 = getelementptr inbounds %LSlice, ptr %t13040, i32 0, i32 2 @@ -84043,7 +84100,7 @@ grow2643: put2644: %t13056 = load ptr, ptr %t13043 %t13057 = getelementptr inbounds ptr, ptr %t13056, i32 %t13044 - store ptr @.str7897, ptr %t13057 + store ptr @.str7900, ptr %t13057 %t13058 = add i32 %t13044, 1 store i32 %t13058, ptr %t13041 %t13059 = load ptr, ptr %t387 @@ -84070,17 +84127,17 @@ grow2645: put2646: %t13075 = load ptr, ptr %t13062 %t13076 = getelementptr inbounds ptr, ptr %t13075, i32 %t13063 - store ptr @.str7898, ptr %t13076 + store ptr @.str7901, ptr %t13076 %t13077 = add i32 %t13063, 1 store i32 %t13077, ptr %t13060 br label %ifend2642 ifend2642: %t13078 = load ptr, ptr %t1 - %t13079 = call i32 @lp_str_eq(ptr %t13078, ptr @.str7899) + %t13079 = call i32 @lp_str_eq(ptr %t13078, ptr @.str7902) %t13080 = icmp ne i32 %t13079, 0 br i1 %t13080, label %then2647, label %ifend2649 then2647: - store ptr @.str7900, ptr %t380 + store ptr @.str7903, ptr %t380 %t13081 = load ptr, ptr %t387 %t13082 = getelementptr inbounds %LSlice, ptr %t13081, i32 0, i32 1 %t13083 = getelementptr inbounds %LSlice, ptr %t13081, i32 0, i32 2 @@ -84105,7 +84162,7 @@ grow2650: put2651: %t13097 = load ptr, ptr %t13084 %t13098 = getelementptr inbounds ptr, ptr %t13097, i32 %t13085 - store ptr @.str7901, ptr %t13098 + store ptr @.str7904, ptr %t13098 %t13099 = add i32 %t13085, 1 store i32 %t13099, ptr %t13082 %t13100 = load ptr, ptr %t387 @@ -84132,7 +84189,7 @@ grow2652: put2653: %t13116 = load ptr, ptr %t13103 %t13117 = getelementptr inbounds ptr, ptr %t13116, i32 %t13104 - store ptr @.str7902, ptr %t13117 + store ptr @.str7905, ptr %t13117 %t13118 = add i32 %t13104, 1 store i32 %t13118, ptr %t13101 %t13119 = load ptr, ptr %t387 @@ -84159,17 +84216,17 @@ grow2654: put2655: %t13135 = load ptr, ptr %t13122 %t13136 = getelementptr inbounds ptr, ptr %t13135, i32 %t13123 - store ptr @.str7903, ptr %t13136 + store ptr @.str7906, ptr %t13136 %t13137 = add i32 %t13123, 1 store i32 %t13137, ptr %t13120 br label %ifend2649 ifend2649: %t13138 = load ptr, ptr %t1 - %t13139 = call i32 @lp_str_eq(ptr %t13138, ptr @.str7904) + %t13139 = call i32 @lp_str_eq(ptr %t13138, ptr @.str7907) %t13140 = icmp ne i32 %t13139, 0 br i1 %t13140, label %then2656, label %ifend2658 then2656: - store ptr @.str7905, ptr %t380 + store ptr @.str7908, ptr %t380 %t13141 = load ptr, ptr %t387 %t13142 = getelementptr inbounds %LSlice, ptr %t13141, i32 0, i32 1 %t13143 = getelementptr inbounds %LSlice, ptr %t13141, i32 0, i32 2 @@ -84194,7 +84251,7 @@ grow2659: put2660: %t13157 = load ptr, ptr %t13144 %t13158 = getelementptr inbounds ptr, ptr %t13157, i32 %t13145 - store ptr @.str7906, ptr %t13158 + store ptr @.str7909, ptr %t13158 %t13159 = add i32 %t13145, 1 store i32 %t13159, ptr %t13142 %t13160 = load ptr, ptr %t387 @@ -84221,17 +84278,17 @@ grow2661: put2662: %t13176 = load ptr, ptr %t13163 %t13177 = getelementptr inbounds ptr, ptr %t13176, i32 %t13164 - store ptr @.str7907, ptr %t13177 + store ptr @.str7910, ptr %t13177 %t13178 = add i32 %t13164, 1 store i32 %t13178, ptr %t13161 br label %ifend2658 ifend2658: %t13179 = load ptr, ptr %t1 - %t13180 = call i32 @lp_str_eq(ptr %t13179, ptr @.str7908) + %t13180 = call i32 @lp_str_eq(ptr %t13179, ptr @.str7911) %t13181 = icmp ne i32 %t13180, 0 br i1 %t13181, label %then2663, label %ifend2665 then2663: - store ptr @.str7909, ptr %t380 + store ptr @.str7912, ptr %t380 %t13182 = load ptr, ptr %t387 %t13183 = getelementptr inbounds %LSlice, ptr %t13182, i32 0, i32 1 %t13184 = getelementptr inbounds %LSlice, ptr %t13182, i32 0, i32 2 @@ -84256,17 +84313,17 @@ grow2666: put2667: %t13198 = load ptr, ptr %t13185 %t13199 = getelementptr inbounds ptr, ptr %t13198, i32 %t13186 - store ptr @.str7910, ptr %t13199 + store ptr @.str7913, ptr %t13199 %t13200 = add i32 %t13186, 1 store i32 %t13200, ptr %t13183 br label %ifend2665 ifend2665: %t13201 = load ptr, ptr %t1 - %t13202 = call i32 @lp_str_eq(ptr %t13201, ptr @.str7911) + %t13202 = call i32 @lp_str_eq(ptr %t13201, ptr @.str7914) %t13203 = icmp ne i32 %t13202, 0 br i1 %t13203, label %then2668, label %ifend2670 then2668: - store ptr @.str7912, ptr %t380 + store ptr @.str7915, ptr %t380 %t13204 = load ptr, ptr %t387 %t13205 = getelementptr inbounds %LSlice, ptr %t13204, i32 0, i32 1 %t13206 = getelementptr inbounds %LSlice, ptr %t13204, i32 0, i32 2 @@ -84291,17 +84348,17 @@ grow2671: put2672: %t13220 = load ptr, ptr %t13207 %t13221 = getelementptr inbounds ptr, ptr %t13220, i32 %t13208 - store ptr @.str7913, ptr %t13221 + store ptr @.str7916, ptr %t13221 %t13222 = add i32 %t13208, 1 store i32 %t13222, ptr %t13205 br label %ifend2670 ifend2670: %t13223 = load ptr, ptr %t1 - %t13224 = call i32 @lp_str_eq(ptr %t13223, ptr @.str7914) + %t13224 = call i32 @lp_str_eq(ptr %t13223, ptr @.str7917) %t13225 = icmp ne i32 %t13224, 0 br i1 %t13225, label %then2673, label %ifend2675 then2673: - store ptr @.str7915, ptr %t380 + store ptr @.str7918, ptr %t380 %t13226 = load ptr, ptr %t387 %t13227 = getelementptr inbounds %LSlice, ptr %t13226, i32 0, i32 1 %t13228 = getelementptr inbounds %LSlice, ptr %t13226, i32 0, i32 2 @@ -84326,7 +84383,7 @@ grow2676: put2677: %t13242 = load ptr, ptr %t13229 %t13243 = getelementptr inbounds ptr, ptr %t13242, i32 %t13230 - store ptr @.str7916, ptr %t13243 + store ptr @.str7919, ptr %t13243 %t13244 = add i32 %t13230, 1 store i32 %t13244, ptr %t13227 %t13245 = load ptr, ptr %t387 @@ -84353,17 +84410,17 @@ grow2678: put2679: %t13261 = load ptr, ptr %t13248 %t13262 = getelementptr inbounds ptr, ptr %t13261, i32 %t13249 - store ptr @.str7917, ptr %t13262 + store ptr @.str7920, ptr %t13262 %t13263 = add i32 %t13249, 1 store i32 %t13263, ptr %t13246 br label %ifend2675 ifend2675: %t13264 = load ptr, ptr %t1 - %t13265 = call i32 @lp_str_eq(ptr %t13264, ptr @.str7918) + %t13265 = call i32 @lp_str_eq(ptr %t13264, ptr @.str7921) %t13266 = icmp ne i32 %t13265, 0 br i1 %t13266, label %then2680, label %ifend2682 then2680: - store ptr @.str7919, ptr %t380 + store ptr @.str7922, ptr %t380 %t13267 = load ptr, ptr %t387 %t13268 = getelementptr inbounds %LSlice, ptr %t13267, i32 0, i32 1 %t13269 = getelementptr inbounds %LSlice, ptr %t13267, i32 0, i32 2 @@ -84388,7 +84445,7 @@ grow2683: put2684: %t13283 = load ptr, ptr %t13270 %t13284 = getelementptr inbounds ptr, ptr %t13283, i32 %t13271 - store ptr @.str7920, ptr %t13284 + store ptr @.str7923, ptr %t13284 %t13285 = add i32 %t13271, 1 store i32 %t13285, ptr %t13268 %t13286 = load ptr, ptr %t387 @@ -84415,17 +84472,17 @@ grow2685: put2686: %t13302 = load ptr, ptr %t13289 %t13303 = getelementptr inbounds ptr, ptr %t13302, i32 %t13290 - store ptr @.str7921, ptr %t13303 + store ptr @.str7924, ptr %t13303 %t13304 = add i32 %t13290, 1 store i32 %t13304, ptr %t13287 br label %ifend2682 ifend2682: %t13305 = load ptr, ptr %t1 - %t13306 = call i32 @lp_str_eq(ptr %t13305, ptr @.str7922) + %t13306 = call i32 @lp_str_eq(ptr %t13305, ptr @.str7925) %t13307 = icmp ne i32 %t13306, 0 br i1 %t13307, label %then2687, label %ifend2689 then2687: - store ptr @.str7923, ptr %t380 + store ptr @.str7926, ptr %t380 %t13308 = load ptr, ptr %t387 %t13309 = getelementptr inbounds %LSlice, ptr %t13308, i32 0, i32 1 %t13310 = getelementptr inbounds %LSlice, ptr %t13308, i32 0, i32 2 @@ -84450,7 +84507,7 @@ grow2690: put2691: %t13324 = load ptr, ptr %t13311 %t13325 = getelementptr inbounds ptr, ptr %t13324, i32 %t13312 - store ptr @.str7924, ptr %t13325 + store ptr @.str7927, ptr %t13325 %t13326 = add i32 %t13312, 1 store i32 %t13326, ptr %t13309 %t13327 = load ptr, ptr %t387 @@ -84477,7 +84534,7 @@ grow2692: put2693: %t13343 = load ptr, ptr %t13330 %t13344 = getelementptr inbounds ptr, ptr %t13343, i32 %t13331 - store ptr @.str7925, ptr %t13344 + store ptr @.str7928, ptr %t13344 %t13345 = add i32 %t13331, 1 store i32 %t13345, ptr %t13328 br label %ifend2689 @@ -84485,16 +84542,16 @@ ifend2689: br label %ifend2624 ifend2624: %t13346 = load ptr, ptr %t0 - %t13347 = call i32 @lp_str_eq(ptr %t13346, ptr @.str7926) + %t13347 = call i32 @lp_str_eq(ptr %t13346, ptr @.str7929) %t13348 = icmp ne i32 %t13347, 0 br i1 %t13348, label %then2694, label %ifend2696 then2694: %t13349 = load ptr, ptr %t1 - %t13350 = call i32 @lp_str_eq(ptr %t13349, ptr @.str7927) + %t13350 = call i32 @lp_str_eq(ptr %t13349, ptr @.str7930) %t13351 = icmp ne i32 %t13350, 0 br i1 %t13351, label %then2697, label %ifend2699 then2697: - store ptr @.str7928, ptr %t380 + store ptr @.str7931, ptr %t380 %t13352 = load ptr, ptr %t387 %t13353 = getelementptr inbounds %LSlice, ptr %t13352, i32 0, i32 1 %t13354 = getelementptr inbounds %LSlice, ptr %t13352, i32 0, i32 2 @@ -84519,17 +84576,17 @@ grow2700: put2701: %t13368 = load ptr, ptr %t13355 %t13369 = getelementptr inbounds ptr, ptr %t13368, i32 %t13356 - store ptr @.str7929, ptr %t13369 + store ptr @.str7932, ptr %t13369 %t13370 = add i32 %t13356, 1 store i32 %t13370, ptr %t13353 br label %ifend2699 ifend2699: %t13371 = load ptr, ptr %t1 - %t13372 = call i32 @lp_str_eq(ptr %t13371, ptr @.str7930) + %t13372 = call i32 @lp_str_eq(ptr %t13371, ptr @.str7933) %t13373 = icmp ne i32 %t13372, 0 br i1 %t13373, label %then2702, label %ifend2704 then2702: - store ptr @.str7931, ptr %t380 + store ptr @.str7934, ptr %t380 %t13374 = load ptr, ptr %t387 %t13375 = getelementptr inbounds %LSlice, ptr %t13374, i32 0, i32 1 %t13376 = getelementptr inbounds %LSlice, ptr %t13374, i32 0, i32 2 @@ -84554,7 +84611,7 @@ grow2705: put2706: %t13390 = load ptr, ptr %t13377 %t13391 = getelementptr inbounds ptr, ptr %t13390, i32 %t13378 - store ptr @.str7932, ptr %t13391 + store ptr @.str7935, ptr %t13391 %t13392 = add i32 %t13378, 1 store i32 %t13392, ptr %t13375 br label %ifend2704 @@ -84562,16 +84619,16 @@ ifend2704: br label %ifend2696 ifend2696: %t13393 = load ptr, ptr %t0 - %t13394 = call i32 @lp_str_eq(ptr %t13393, ptr @.str7933) + %t13394 = call i32 @lp_str_eq(ptr %t13393, ptr @.str7936) %t13395 = icmp ne i32 %t13394, 0 br i1 %t13395, label %then2707, label %ifend2709 then2707: %t13396 = load ptr, ptr %t1 - %t13397 = call i32 @lp_str_eq(ptr %t13396, ptr @.str7934) + %t13397 = call i32 @lp_str_eq(ptr %t13396, ptr @.str7937) %t13398 = icmp ne i32 %t13397, 0 br i1 %t13398, label %then2710, label %ifend2712 then2710: - store ptr @.str7935, ptr %t380 + store ptr @.str7938, ptr %t380 %t13399 = load ptr, ptr %t387 %t13400 = getelementptr inbounds %LSlice, ptr %t13399, i32 0, i32 1 %t13401 = getelementptr inbounds %LSlice, ptr %t13399, i32 0, i32 2 @@ -84596,17 +84653,17 @@ grow2713: put2714: %t13415 = load ptr, ptr %t13402 %t13416 = getelementptr inbounds ptr, ptr %t13415, i32 %t13403 - store ptr @.str7936, ptr %t13416 + store ptr @.str7939, ptr %t13416 %t13417 = add i32 %t13403, 1 store i32 %t13417, ptr %t13400 br label %ifend2712 ifend2712: %t13418 = load ptr, ptr %t1 - %t13419 = call i32 @lp_str_eq(ptr %t13418, ptr @.str7937) + %t13419 = call i32 @lp_str_eq(ptr %t13418, ptr @.str7940) %t13420 = icmp ne i32 %t13419, 0 br i1 %t13420, label %then2715, label %ifend2717 then2715: - store ptr @.str7938, ptr %t380 + store ptr @.str7941, ptr %t380 %t13421 = load ptr, ptr %t387 %t13422 = getelementptr inbounds %LSlice, ptr %t13421, i32 0, i32 1 %t13423 = getelementptr inbounds %LSlice, ptr %t13421, i32 0, i32 2 @@ -84631,17 +84688,17 @@ grow2718: put2719: %t13437 = load ptr, ptr %t13424 %t13438 = getelementptr inbounds ptr, ptr %t13437, i32 %t13425 - store ptr @.str7939, ptr %t13438 + store ptr @.str7942, ptr %t13438 %t13439 = add i32 %t13425, 1 store i32 %t13439, ptr %t13422 br label %ifend2717 ifend2717: %t13440 = load ptr, ptr %t1 - %t13441 = call i32 @lp_str_eq(ptr %t13440, ptr @.str7940) + %t13441 = call i32 @lp_str_eq(ptr %t13440, ptr @.str7943) %t13442 = icmp ne i32 %t13441, 0 br i1 %t13442, label %then2720, label %ifend2722 then2720: - store ptr @.str7941, ptr %t380 + store ptr @.str7944, ptr %t380 %t13443 = load ptr, ptr %t387 %t13444 = getelementptr inbounds %LSlice, ptr %t13443, i32 0, i32 1 %t13445 = getelementptr inbounds %LSlice, ptr %t13443, i32 0, i32 2 @@ -84666,17 +84723,17 @@ grow2723: put2724: %t13459 = load ptr, ptr %t13446 %t13460 = getelementptr inbounds ptr, ptr %t13459, i32 %t13447 - store ptr @.str7942, ptr %t13460 + store ptr @.str7945, ptr %t13460 %t13461 = add i32 %t13447, 1 store i32 %t13461, ptr %t13444 br label %ifend2722 ifend2722: %t13462 = load ptr, ptr %t1 - %t13463 = call i32 @lp_str_eq(ptr %t13462, ptr @.str7943) + %t13463 = call i32 @lp_str_eq(ptr %t13462, ptr @.str7946) %t13464 = icmp ne i32 %t13463, 0 br i1 %t13464, label %then2725, label %ifend2727 then2725: - store ptr @.str7944, ptr %t380 + store ptr @.str7947, ptr %t380 %t13465 = load ptr, ptr %t387 %t13466 = getelementptr inbounds %LSlice, ptr %t13465, i32 0, i32 1 %t13467 = getelementptr inbounds %LSlice, ptr %t13465, i32 0, i32 2 @@ -84701,7 +84758,7 @@ grow2728: put2729: %t13481 = load ptr, ptr %t13468 %t13482 = getelementptr inbounds ptr, ptr %t13481, i32 %t13469 - store ptr @.str7945, ptr %t13482 + store ptr @.str7948, ptr %t13482 %t13483 = add i32 %t13469, 1 store i32 %t13483, ptr %t13466 %t13484 = load ptr, ptr %t387 @@ -84728,7 +84785,7 @@ grow2730: put2731: %t13500 = load ptr, ptr %t13487 %t13501 = getelementptr inbounds ptr, ptr %t13500, i32 %t13488 - store ptr @.str7946, ptr %t13501 + store ptr @.str7949, ptr %t13501 %t13502 = add i32 %t13488, 1 store i32 %t13502, ptr %t13485 %t13503 = load ptr, ptr %t387 @@ -84755,7 +84812,7 @@ grow2732: put2733: %t13519 = load ptr, ptr %t13506 %t13520 = getelementptr inbounds ptr, ptr %t13519, i32 %t13507 - store ptr @.str7947, ptr %t13520 + store ptr @.str7950, ptr %t13520 %t13521 = add i32 %t13507, 1 store i32 %t13521, ptr %t13504 %t13522 = load ptr, ptr %t387 @@ -84782,17 +84839,17 @@ grow2734: put2735: %t13538 = load ptr, ptr %t13525 %t13539 = getelementptr inbounds ptr, ptr %t13538, i32 %t13526 - store ptr @.str7948, ptr %t13539 + store ptr @.str7951, ptr %t13539 %t13540 = add i32 %t13526, 1 store i32 %t13540, ptr %t13523 br label %ifend2727 ifend2727: %t13541 = load ptr, ptr %t1 - %t13542 = call i32 @lp_str_eq(ptr %t13541, ptr @.str7949) + %t13542 = call i32 @lp_str_eq(ptr %t13541, ptr @.str7952) %t13543 = icmp ne i32 %t13542, 0 br i1 %t13543, label %then2736, label %ifend2738 then2736: - store ptr @.str7950, ptr %t380 + store ptr @.str7953, ptr %t380 %t13544 = load ptr, ptr %t387 %t13545 = getelementptr inbounds %LSlice, ptr %t13544, i32 0, i32 1 %t13546 = getelementptr inbounds %LSlice, ptr %t13544, i32 0, i32 2 @@ -84817,7 +84874,7 @@ grow2739: put2740: %t13560 = load ptr, ptr %t13547 %t13561 = getelementptr inbounds ptr, ptr %t13560, i32 %t13548 - store ptr @.str7951, ptr %t13561 + store ptr @.str7954, ptr %t13561 %t13562 = add i32 %t13548, 1 store i32 %t13562, ptr %t13545 %t13563 = load ptr, ptr %t387 @@ -84844,17 +84901,17 @@ grow2741: put2742: %t13579 = load ptr, ptr %t13566 %t13580 = getelementptr inbounds ptr, ptr %t13579, i32 %t13567 - store ptr @.str7952, ptr %t13580 + store ptr @.str7955, ptr %t13580 %t13581 = add i32 %t13567, 1 store i32 %t13581, ptr %t13564 br label %ifend2738 ifend2738: %t13582 = load ptr, ptr %t1 - %t13583 = call i32 @lp_str_eq(ptr %t13582, ptr @.str7953) + %t13583 = call i32 @lp_str_eq(ptr %t13582, ptr @.str7956) %t13584 = icmp ne i32 %t13583, 0 br i1 %t13584, label %then2743, label %ifend2745 then2743: - store ptr @.str7954, ptr %t380 + store ptr @.str7957, ptr %t380 %t13585 = load ptr, ptr %t387 %t13586 = getelementptr inbounds %LSlice, ptr %t13585, i32 0, i32 1 %t13587 = getelementptr inbounds %LSlice, ptr %t13585, i32 0, i32 2 @@ -84879,17 +84936,17 @@ grow2746: put2747: %t13601 = load ptr, ptr %t13588 %t13602 = getelementptr inbounds ptr, ptr %t13601, i32 %t13589 - store ptr @.str7955, ptr %t13602 + store ptr @.str7958, ptr %t13602 %t13603 = add i32 %t13589, 1 store i32 %t13603, ptr %t13586 br label %ifend2745 ifend2745: %t13604 = load ptr, ptr %t1 - %t13605 = call i32 @lp_str_eq(ptr %t13604, ptr @.str7956) + %t13605 = call i32 @lp_str_eq(ptr %t13604, ptr @.str7959) %t13606 = icmp ne i32 %t13605, 0 br i1 %t13606, label %then2748, label %ifend2750 then2748: - store ptr @.str7957, ptr %t380 + store ptr @.str7960, ptr %t380 %t13607 = load ptr, ptr %t387 %t13608 = getelementptr inbounds %LSlice, ptr %t13607, i32 0, i32 1 %t13609 = getelementptr inbounds %LSlice, ptr %t13607, i32 0, i32 2 @@ -84914,17 +84971,17 @@ grow2751: put2752: %t13623 = load ptr, ptr %t13610 %t13624 = getelementptr inbounds ptr, ptr %t13623, i32 %t13611 - store ptr @.str7958, ptr %t13624 + store ptr @.str7961, ptr %t13624 %t13625 = add i32 %t13611, 1 store i32 %t13625, ptr %t13608 br label %ifend2750 ifend2750: %t13626 = load ptr, ptr %t1 - %t13627 = call i32 @lp_str_eq(ptr %t13626, ptr @.str7959) + %t13627 = call i32 @lp_str_eq(ptr %t13626, ptr @.str7962) %t13628 = icmp ne i32 %t13627, 0 br i1 %t13628, label %then2753, label %ifend2755 then2753: - store ptr @.str7960, ptr %t380 + store ptr @.str7963, ptr %t380 %t13629 = load ptr, ptr %t387 %t13630 = getelementptr inbounds %LSlice, ptr %t13629, i32 0, i32 1 %t13631 = getelementptr inbounds %LSlice, ptr %t13629, i32 0, i32 2 @@ -84949,17 +85006,17 @@ grow2756: put2757: %t13645 = load ptr, ptr %t13632 %t13646 = getelementptr inbounds ptr, ptr %t13645, i32 %t13633 - store ptr @.str7961, ptr %t13646 + store ptr @.str7964, ptr %t13646 %t13647 = add i32 %t13633, 1 store i32 %t13647, ptr %t13630 br label %ifend2755 ifend2755: %t13648 = load ptr, ptr %t1 - %t13649 = call i32 @lp_str_eq(ptr %t13648, ptr @.str7962) + %t13649 = call i32 @lp_str_eq(ptr %t13648, ptr @.str7965) %t13650 = icmp ne i32 %t13649, 0 br i1 %t13650, label %then2758, label %ifend2760 then2758: - store ptr @.str7963, ptr %t380 + store ptr @.str7966, ptr %t380 %t13651 = load ptr, ptr %t387 %t13652 = getelementptr inbounds %LSlice, ptr %t13651, i32 0, i32 1 %t13653 = getelementptr inbounds %LSlice, ptr %t13651, i32 0, i32 2 @@ -84984,7 +85041,7 @@ grow2761: put2762: %t13667 = load ptr, ptr %t13654 %t13668 = getelementptr inbounds ptr, ptr %t13667, i32 %t13655 - store ptr @.str7964, ptr %t13668 + store ptr @.str7967, ptr %t13668 %t13669 = add i32 %t13655, 1 store i32 %t13669, ptr %t13652 %t13670 = load ptr, ptr %t387 @@ -85011,17 +85068,17 @@ grow2763: put2764: %t13686 = load ptr, ptr %t13673 %t13687 = getelementptr inbounds ptr, ptr %t13686, i32 %t13674 - store ptr @.str7965, ptr %t13687 + store ptr @.str7968, ptr %t13687 %t13688 = add i32 %t13674, 1 store i32 %t13688, ptr %t13671 br label %ifend2760 ifend2760: %t13689 = load ptr, ptr %t1 - %t13690 = call i32 @lp_str_eq(ptr %t13689, ptr @.str7966) + %t13690 = call i32 @lp_str_eq(ptr %t13689, ptr @.str7969) %t13691 = icmp ne i32 %t13690, 0 br i1 %t13691, label %then2765, label %ifend2767 then2765: - store ptr @.str7967, ptr %t380 + store ptr @.str7970, ptr %t380 %t13692 = load ptr, ptr %t387 %t13693 = getelementptr inbounds %LSlice, ptr %t13692, i32 0, i32 1 %t13694 = getelementptr inbounds %LSlice, ptr %t13692, i32 0, i32 2 @@ -85046,7 +85103,7 @@ grow2768: put2769: %t13708 = load ptr, ptr %t13695 %t13709 = getelementptr inbounds ptr, ptr %t13708, i32 %t13696 - store ptr @.str7968, ptr %t13709 + store ptr @.str7971, ptr %t13709 %t13710 = add i32 %t13696, 1 store i32 %t13710, ptr %t13693 %t13711 = load ptr, ptr %t387 @@ -85073,7 +85130,7 @@ grow2770: put2771: %t13727 = load ptr, ptr %t13714 %t13728 = getelementptr inbounds ptr, ptr %t13727, i32 %t13715 - store ptr @.str7969, ptr %t13728 + store ptr @.str7972, ptr %t13728 %t13729 = add i32 %t13715, 1 store i32 %t13729, ptr %t13712 %t13730 = load ptr, ptr %t387 @@ -85100,17 +85157,17 @@ grow2772: put2773: %t13746 = load ptr, ptr %t13733 %t13747 = getelementptr inbounds ptr, ptr %t13746, i32 %t13734 - store ptr @.str7970, ptr %t13747 + store ptr @.str7973, ptr %t13747 %t13748 = add i32 %t13734, 1 store i32 %t13748, ptr %t13731 br label %ifend2767 ifend2767: %t13749 = load ptr, ptr %t1 - %t13750 = call i32 @lp_str_eq(ptr %t13749, ptr @.str7971) + %t13750 = call i32 @lp_str_eq(ptr %t13749, ptr @.str7974) %t13751 = icmp ne i32 %t13750, 0 br i1 %t13751, label %then2774, label %ifend2776 then2774: - store ptr @.str7972, ptr %t380 + store ptr @.str7975, ptr %t380 %t13752 = load ptr, ptr %t387 %t13753 = getelementptr inbounds %LSlice, ptr %t13752, i32 0, i32 1 %t13754 = getelementptr inbounds %LSlice, ptr %t13752, i32 0, i32 2 @@ -85135,7 +85192,7 @@ grow2777: put2778: %t13768 = load ptr, ptr %t13755 %t13769 = getelementptr inbounds ptr, ptr %t13768, i32 %t13756 - store ptr @.str7973, ptr %t13769 + store ptr @.str7976, ptr %t13769 %t13770 = add i32 %t13756, 1 store i32 %t13770, ptr %t13753 %t13771 = load ptr, ptr %t387 @@ -85162,7 +85219,7 @@ grow2779: put2780: %t13787 = load ptr, ptr %t13774 %t13788 = getelementptr inbounds ptr, ptr %t13787, i32 %t13775 - store ptr @.str7974, ptr %t13788 + store ptr @.str7977, ptr %t13788 %t13789 = add i32 %t13775, 1 store i32 %t13789, ptr %t13772 %t13790 = load ptr, ptr %t387 @@ -85189,7 +85246,7 @@ grow2781: put2782: %t13806 = load ptr, ptr %t13793 %t13807 = getelementptr inbounds ptr, ptr %t13806, i32 %t13794 - store ptr @.str7975, ptr %t13807 + store ptr @.str7978, ptr %t13807 %t13808 = add i32 %t13794, 1 store i32 %t13808, ptr %t13791 %t13809 = load ptr, ptr %t387 @@ -85216,17 +85273,17 @@ grow2783: put2784: %t13825 = load ptr, ptr %t13812 %t13826 = getelementptr inbounds ptr, ptr %t13825, i32 %t13813 - store ptr @.str7976, ptr %t13826 + store ptr @.str7979, ptr %t13826 %t13827 = add i32 %t13813, 1 store i32 %t13827, ptr %t13810 br label %ifend2776 ifend2776: %t13828 = load ptr, ptr %t1 - %t13829 = call i32 @lp_str_eq(ptr %t13828, ptr @.str7977) + %t13829 = call i32 @lp_str_eq(ptr %t13828, ptr @.str7980) %t13830 = icmp ne i32 %t13829, 0 br i1 %t13830, label %then2785, label %ifend2787 then2785: - store ptr @.str7978, ptr %t380 + store ptr @.str7981, ptr %t380 %t13831 = load ptr, ptr %t387 %t13832 = getelementptr inbounds %LSlice, ptr %t13831, i32 0, i32 1 %t13833 = getelementptr inbounds %LSlice, ptr %t13831, i32 0, i32 2 @@ -85251,7 +85308,7 @@ grow2788: put2789: %t13847 = load ptr, ptr %t13834 %t13848 = getelementptr inbounds ptr, ptr %t13847, i32 %t13835 - store ptr @.str7979, ptr %t13848 + store ptr @.str7982, ptr %t13848 %t13849 = add i32 %t13835, 1 store i32 %t13849, ptr %t13832 %t13850 = load ptr, ptr %t387 @@ -85278,7 +85335,7 @@ grow2790: put2791: %t13866 = load ptr, ptr %t13853 %t13867 = getelementptr inbounds ptr, ptr %t13866, i32 %t13854 - store ptr @.str7980, ptr %t13867 + store ptr @.str7983, ptr %t13867 %t13868 = add i32 %t13854, 1 store i32 %t13868, ptr %t13851 %t13869 = load ptr, ptr %t387 @@ -85305,17 +85362,17 @@ grow2792: put2793: %t13885 = load ptr, ptr %t13872 %t13886 = getelementptr inbounds ptr, ptr %t13885, i32 %t13873 - store ptr @.str7981, ptr %t13886 + store ptr @.str7984, ptr %t13886 %t13887 = add i32 %t13873, 1 store i32 %t13887, ptr %t13870 br label %ifend2787 ifend2787: %t13888 = load ptr, ptr %t1 - %t13889 = call i32 @lp_str_eq(ptr %t13888, ptr @.str7982) + %t13889 = call i32 @lp_str_eq(ptr %t13888, ptr @.str7985) %t13890 = icmp ne i32 %t13889, 0 br i1 %t13890, label %then2794, label %ifend2796 then2794: - store ptr @.str7983, ptr %t380 + store ptr @.str7986, ptr %t380 %t13891 = load ptr, ptr %t387 %t13892 = getelementptr inbounds %LSlice, ptr %t13891, i32 0, i32 1 %t13893 = getelementptr inbounds %LSlice, ptr %t13891, i32 0, i32 2 @@ -85340,7 +85397,7 @@ grow2797: put2798: %t13907 = load ptr, ptr %t13894 %t13908 = getelementptr inbounds ptr, ptr %t13907, i32 %t13895 - store ptr @.str7984, ptr %t13908 + store ptr @.str7987, ptr %t13908 %t13909 = add i32 %t13895, 1 store i32 %t13909, ptr %t13892 %t13910 = load ptr, ptr %t387 @@ -85367,17 +85424,17 @@ grow2799: put2800: %t13926 = load ptr, ptr %t13913 %t13927 = getelementptr inbounds ptr, ptr %t13926, i32 %t13914 - store ptr @.str7985, ptr %t13927 + store ptr @.str7988, ptr %t13927 %t13928 = add i32 %t13914, 1 store i32 %t13928, ptr %t13911 br label %ifend2796 ifend2796: %t13929 = load ptr, ptr %t1 - %t13930 = call i32 @lp_str_eq(ptr %t13929, ptr @.str7986) + %t13930 = call i32 @lp_str_eq(ptr %t13929, ptr @.str7989) %t13931 = icmp ne i32 %t13930, 0 br i1 %t13931, label %then2801, label %ifend2803 then2801: - store ptr @.str7987, ptr %t380 + store ptr @.str7990, ptr %t380 %t13932 = load ptr, ptr %t387 %t13933 = getelementptr inbounds %LSlice, ptr %t13932, i32 0, i32 1 %t13934 = getelementptr inbounds %LSlice, ptr %t13932, i32 0, i32 2 @@ -85402,7 +85459,7 @@ grow2804: put2805: %t13948 = load ptr, ptr %t13935 %t13949 = getelementptr inbounds ptr, ptr %t13948, i32 %t13936 - store ptr @.str7988, ptr %t13949 + store ptr @.str7991, ptr %t13949 %t13950 = add i32 %t13936, 1 store i32 %t13950, ptr %t13933 %t13951 = load ptr, ptr %t387 @@ -85429,17 +85486,17 @@ grow2806: put2807: %t13967 = load ptr, ptr %t13954 %t13968 = getelementptr inbounds ptr, ptr %t13967, i32 %t13955 - store ptr @.str7989, ptr %t13968 + store ptr @.str7992, ptr %t13968 %t13969 = add i32 %t13955, 1 store i32 %t13969, ptr %t13952 br label %ifend2803 ifend2803: %t13970 = load ptr, ptr %t1 - %t13971 = call i32 @lp_str_eq(ptr %t13970, ptr @.str7990) + %t13971 = call i32 @lp_str_eq(ptr %t13970, ptr @.str7993) %t13972 = icmp ne i32 %t13971, 0 br i1 %t13972, label %then2808, label %ifend2810 then2808: - store ptr @.str7991, ptr %t380 + store ptr @.str7994, ptr %t380 %t13973 = load ptr, ptr %t387 %t13974 = getelementptr inbounds %LSlice, ptr %t13973, i32 0, i32 1 %t13975 = getelementptr inbounds %LSlice, ptr %t13973, i32 0, i32 2 @@ -85464,7 +85521,7 @@ grow2811: put2812: %t13989 = load ptr, ptr %t13976 %t13990 = getelementptr inbounds ptr, ptr %t13989, i32 %t13977 - store ptr @.str7992, ptr %t13990 + store ptr @.str7995, ptr %t13990 %t13991 = add i32 %t13977, 1 store i32 %t13991, ptr %t13974 %t13992 = load ptr, ptr %t387 @@ -85491,17 +85548,17 @@ grow2813: put2814: %t14008 = load ptr, ptr %t13995 %t14009 = getelementptr inbounds ptr, ptr %t14008, i32 %t13996 - store ptr @.str7993, ptr %t14009 + store ptr @.str7996, ptr %t14009 %t14010 = add i32 %t13996, 1 store i32 %t14010, ptr %t13993 br label %ifend2810 ifend2810: %t14011 = load ptr, ptr %t1 - %t14012 = call i32 @lp_str_eq(ptr %t14011, ptr @.str7994) + %t14012 = call i32 @lp_str_eq(ptr %t14011, ptr @.str7997) %t14013 = icmp ne i32 %t14012, 0 br i1 %t14013, label %then2815, label %ifend2817 then2815: - store ptr @.str7995, ptr %t380 + store ptr @.str7998, ptr %t380 %t14014 = load ptr, ptr %t387 %t14015 = getelementptr inbounds %LSlice, ptr %t14014, i32 0, i32 1 %t14016 = getelementptr inbounds %LSlice, ptr %t14014, i32 0, i32 2 @@ -85526,7 +85583,7 @@ grow2818: put2819: %t14030 = load ptr, ptr %t14017 %t14031 = getelementptr inbounds ptr, ptr %t14030, i32 %t14018 - store ptr @.str7996, ptr %t14031 + store ptr @.str7999, ptr %t14031 %t14032 = add i32 %t14018, 1 store i32 %t14032, ptr %t14015 %t14033 = load ptr, ptr %t387 @@ -85553,17 +85610,17 @@ grow2820: put2821: %t14049 = load ptr, ptr %t14036 %t14050 = getelementptr inbounds ptr, ptr %t14049, i32 %t14037 - store ptr @.str7997, ptr %t14050 + store ptr @.str8000, ptr %t14050 %t14051 = add i32 %t14037, 1 store i32 %t14051, ptr %t14034 br label %ifend2817 ifend2817: %t14052 = load ptr, ptr %t1 - %t14053 = call i32 @lp_str_eq(ptr %t14052, ptr @.str7998) + %t14053 = call i32 @lp_str_eq(ptr %t14052, ptr @.str8001) %t14054 = icmp ne i32 %t14053, 0 br i1 %t14054, label %then2822, label %ifend2824 then2822: - store ptr @.str7999, ptr %t380 + store ptr @.str8002, ptr %t380 %t14055 = load ptr, ptr %t387 %t14056 = getelementptr inbounds %LSlice, ptr %t14055, i32 0, i32 1 %t14057 = getelementptr inbounds %LSlice, ptr %t14055, i32 0, i32 2 @@ -85588,17 +85645,17 @@ grow2825: put2826: %t14071 = load ptr, ptr %t14058 %t14072 = getelementptr inbounds ptr, ptr %t14071, i32 %t14059 - store ptr @.str8000, ptr %t14072 + store ptr @.str8003, ptr %t14072 %t14073 = add i32 %t14059, 1 store i32 %t14073, ptr %t14056 br label %ifend2824 ifend2824: %t14074 = load ptr, ptr %t1 - %t14075 = call i32 @lp_str_eq(ptr %t14074, ptr @.str8001) + %t14075 = call i32 @lp_str_eq(ptr %t14074, ptr @.str8004) %t14076 = icmp ne i32 %t14075, 0 br i1 %t14076, label %then2827, label %ifend2829 then2827: - store ptr @.str8002, ptr %t380 + store ptr @.str8005, ptr %t380 %t14077 = load ptr, ptr %t387 %t14078 = getelementptr inbounds %LSlice, ptr %t14077, i32 0, i32 1 %t14079 = getelementptr inbounds %LSlice, ptr %t14077, i32 0, i32 2 @@ -85623,7 +85680,7 @@ grow2830: put2831: %t14093 = load ptr, ptr %t14080 %t14094 = getelementptr inbounds ptr, ptr %t14093, i32 %t14081 - store ptr @.str8003, ptr %t14094 + store ptr @.str8006, ptr %t14094 %t14095 = add i32 %t14081, 1 store i32 %t14095, ptr %t14078 %t14096 = load ptr, ptr %t387 @@ -85650,7 +85707,7 @@ grow2832: put2833: %t14112 = load ptr, ptr %t14099 %t14113 = getelementptr inbounds ptr, ptr %t14112, i32 %t14100 - store ptr @.str8004, ptr %t14113 + store ptr @.str8007, ptr %t14113 %t14114 = add i32 %t14100, 1 store i32 %t14114, ptr %t14097 %t14115 = load ptr, ptr %t387 @@ -85677,17 +85734,17 @@ grow2834: put2835: %t14131 = load ptr, ptr %t14118 %t14132 = getelementptr inbounds ptr, ptr %t14131, i32 %t14119 - store ptr @.str8005, ptr %t14132 + store ptr @.str8008, ptr %t14132 %t14133 = add i32 %t14119, 1 store i32 %t14133, ptr %t14116 br label %ifend2829 ifend2829: %t14134 = load ptr, ptr %t1 - %t14135 = call i32 @lp_str_eq(ptr %t14134, ptr @.str8006) + %t14135 = call i32 @lp_str_eq(ptr %t14134, ptr @.str8009) %t14136 = icmp ne i32 %t14135, 0 br i1 %t14136, label %then2836, label %ifend2838 then2836: - store ptr @.str8007, ptr %t380 + store ptr @.str8010, ptr %t380 %t14137 = load ptr, ptr %t387 %t14138 = getelementptr inbounds %LSlice, ptr %t14137, i32 0, i32 1 %t14139 = getelementptr inbounds %LSlice, ptr %t14137, i32 0, i32 2 @@ -85712,7 +85769,7 @@ grow2839: put2840: %t14153 = load ptr, ptr %t14140 %t14154 = getelementptr inbounds ptr, ptr %t14153, i32 %t14141 - store ptr @.str8008, ptr %t14154 + store ptr @.str8011, ptr %t14154 %t14155 = add i32 %t14141, 1 store i32 %t14155, ptr %t14138 %t14156 = load ptr, ptr %t387 @@ -85739,17 +85796,17 @@ grow2841: put2842: %t14172 = load ptr, ptr %t14159 %t14173 = getelementptr inbounds ptr, ptr %t14172, i32 %t14160 - store ptr @.str8009, ptr %t14173 + store ptr @.str8012, ptr %t14173 %t14174 = add i32 %t14160, 1 store i32 %t14174, ptr %t14157 br label %ifend2838 ifend2838: %t14175 = load ptr, ptr %t1 - %t14176 = call i32 @lp_str_eq(ptr %t14175, ptr @.str8010) + %t14176 = call i32 @lp_str_eq(ptr %t14175, ptr @.str8013) %t14177 = icmp ne i32 %t14176, 0 br i1 %t14177, label %then2843, label %ifend2845 then2843: - store ptr @.str8011, ptr %t380 + store ptr @.str8014, ptr %t380 %t14178 = load ptr, ptr %t387 %t14179 = getelementptr inbounds %LSlice, ptr %t14178, i32 0, i32 1 %t14180 = getelementptr inbounds %LSlice, ptr %t14178, i32 0, i32 2 @@ -85774,7 +85831,7 @@ grow2846: put2847: %t14194 = load ptr, ptr %t14181 %t14195 = getelementptr inbounds ptr, ptr %t14194, i32 %t14182 - store ptr @.str8012, ptr %t14195 + store ptr @.str8015, ptr %t14195 %t14196 = add i32 %t14182, 1 store i32 %t14196, ptr %t14179 %t14197 = load ptr, ptr %t387 @@ -85801,17 +85858,17 @@ grow2848: put2849: %t14213 = load ptr, ptr %t14200 %t14214 = getelementptr inbounds ptr, ptr %t14213, i32 %t14201 - store ptr @.str8013, ptr %t14214 + store ptr @.str8016, ptr %t14214 %t14215 = add i32 %t14201, 1 store i32 %t14215, ptr %t14198 br label %ifend2845 ifend2845: %t14216 = load ptr, ptr %t1 - %t14217 = call i32 @lp_str_eq(ptr %t14216, ptr @.str8014) + %t14217 = call i32 @lp_str_eq(ptr %t14216, ptr @.str8017) %t14218 = icmp ne i32 %t14217, 0 br i1 %t14218, label %then2850, label %ifend2852 then2850: - store ptr @.str8015, ptr %t380 + store ptr @.str8018, ptr %t380 %t14219 = load ptr, ptr %t387 %t14220 = getelementptr inbounds %LSlice, ptr %t14219, i32 0, i32 1 %t14221 = getelementptr inbounds %LSlice, ptr %t14219, i32 0, i32 2 @@ -85836,7 +85893,7 @@ grow2853: put2854: %t14235 = load ptr, ptr %t14222 %t14236 = getelementptr inbounds ptr, ptr %t14235, i32 %t14223 - store ptr @.str8016, ptr %t14236 + store ptr @.str8019, ptr %t14236 %t14237 = add i32 %t14223, 1 store i32 %t14237, ptr %t14220 %t14238 = load ptr, ptr %t387 @@ -85863,7 +85920,7 @@ grow2855: put2856: %t14254 = load ptr, ptr %t14241 %t14255 = getelementptr inbounds ptr, ptr %t14254, i32 %t14242 - store ptr @.str8017, ptr %t14255 + store ptr @.str8020, ptr %t14255 %t14256 = add i32 %t14242, 1 store i32 %t14256, ptr %t14239 %t14257 = load ptr, ptr %t387 @@ -85890,17 +85947,17 @@ grow2857: put2858: %t14273 = load ptr, ptr %t14260 %t14274 = getelementptr inbounds ptr, ptr %t14273, i32 %t14261 - store ptr @.str8018, ptr %t14274 + store ptr @.str8021, ptr %t14274 %t14275 = add i32 %t14261, 1 store i32 %t14275, ptr %t14258 br label %ifend2852 ifend2852: %t14276 = load ptr, ptr %t1 - %t14277 = call i32 @lp_str_eq(ptr %t14276, ptr @.str8019) + %t14277 = call i32 @lp_str_eq(ptr %t14276, ptr @.str8022) %t14278 = icmp ne i32 %t14277, 0 br i1 %t14278, label %then2859, label %ifend2861 then2859: - store ptr @.str8020, ptr %t380 + store ptr @.str8023, ptr %t380 %t14279 = load ptr, ptr %t387 %t14280 = getelementptr inbounds %LSlice, ptr %t14279, i32 0, i32 1 %t14281 = getelementptr inbounds %LSlice, ptr %t14279, i32 0, i32 2 @@ -85925,17 +85982,17 @@ grow2862: put2863: %t14295 = load ptr, ptr %t14282 %t14296 = getelementptr inbounds ptr, ptr %t14295, i32 %t14283 - store ptr @.str8021, ptr %t14296 + store ptr @.str8024, ptr %t14296 %t14297 = add i32 %t14283, 1 store i32 %t14297, ptr %t14280 br label %ifend2861 ifend2861: %t14298 = load ptr, ptr %t1 - %t14299 = call i32 @lp_str_eq(ptr %t14298, ptr @.str8022) + %t14299 = call i32 @lp_str_eq(ptr %t14298, ptr @.str8025) %t14300 = icmp ne i32 %t14299, 0 br i1 %t14300, label %then2864, label %ifend2866 then2864: - store ptr @.str8023, ptr %t380 + store ptr @.str8026, ptr %t380 %t14301 = load ptr, ptr %t387 %t14302 = getelementptr inbounds %LSlice, ptr %t14301, i32 0, i32 1 %t14303 = getelementptr inbounds %LSlice, ptr %t14301, i32 0, i32 2 @@ -85960,7 +86017,7 @@ grow2867: put2868: %t14317 = load ptr, ptr %t14304 %t14318 = getelementptr inbounds ptr, ptr %t14317, i32 %t14305 - store ptr @.str8024, ptr %t14318 + store ptr @.str8027, ptr %t14318 %t14319 = add i32 %t14305, 1 store i32 %t14319, ptr %t14302 %t14320 = load ptr, ptr %t387 @@ -85987,17 +86044,17 @@ grow2869: put2870: %t14336 = load ptr, ptr %t14323 %t14337 = getelementptr inbounds ptr, ptr %t14336, i32 %t14324 - store ptr @.str8025, ptr %t14337 + store ptr @.str8028, ptr %t14337 %t14338 = add i32 %t14324, 1 store i32 %t14338, ptr %t14321 br label %ifend2866 ifend2866: %t14339 = load ptr, ptr %t1 - %t14340 = call i32 @lp_str_eq(ptr %t14339, ptr @.str8026) + %t14340 = call i32 @lp_str_eq(ptr %t14339, ptr @.str8029) %t14341 = icmp ne i32 %t14340, 0 br i1 %t14341, label %then2871, label %ifend2873 then2871: - store ptr @.str8027, ptr %t380 + store ptr @.str8030, ptr %t380 %t14342 = load ptr, ptr %t387 %t14343 = getelementptr inbounds %LSlice, ptr %t14342, i32 0, i32 1 %t14344 = getelementptr inbounds %LSlice, ptr %t14342, i32 0, i32 2 @@ -86022,7 +86079,7 @@ grow2874: put2875: %t14358 = load ptr, ptr %t14345 %t14359 = getelementptr inbounds ptr, ptr %t14358, i32 %t14346 - store ptr @.str8028, ptr %t14359 + store ptr @.str8031, ptr %t14359 %t14360 = add i32 %t14346, 1 store i32 %t14360, ptr %t14343 %t14361 = load ptr, ptr %t387 @@ -86049,17 +86106,17 @@ grow2876: put2877: %t14377 = load ptr, ptr %t14364 %t14378 = getelementptr inbounds ptr, ptr %t14377, i32 %t14365 - store ptr @.str8029, ptr %t14378 + store ptr @.str8032, ptr %t14378 %t14379 = add i32 %t14365, 1 store i32 %t14379, ptr %t14362 br label %ifend2873 ifend2873: %t14380 = load ptr, ptr %t1 - %t14381 = call i32 @lp_str_eq(ptr %t14380, ptr @.str8030) + %t14381 = call i32 @lp_str_eq(ptr %t14380, ptr @.str8033) %t14382 = icmp ne i32 %t14381, 0 br i1 %t14382, label %then2878, label %ifend2880 then2878: - store ptr @.str8031, ptr %t380 + store ptr @.str8034, ptr %t380 %t14383 = load ptr, ptr %t387 %t14384 = getelementptr inbounds %LSlice, ptr %t14383, i32 0, i32 1 %t14385 = getelementptr inbounds %LSlice, ptr %t14383, i32 0, i32 2 @@ -86084,7 +86141,7 @@ grow2881: put2882: %t14399 = load ptr, ptr %t14386 %t14400 = getelementptr inbounds ptr, ptr %t14399, i32 %t14387 - store ptr @.str8032, ptr %t14400 + store ptr @.str8035, ptr %t14400 %t14401 = add i32 %t14387, 1 store i32 %t14401, ptr %t14384 %t14402 = load ptr, ptr %t387 @@ -86111,17 +86168,17 @@ grow2883: put2884: %t14418 = load ptr, ptr %t14405 %t14419 = getelementptr inbounds ptr, ptr %t14418, i32 %t14406 - store ptr @.str8033, ptr %t14419 + store ptr @.str8036, ptr %t14419 %t14420 = add i32 %t14406, 1 store i32 %t14420, ptr %t14403 br label %ifend2880 ifend2880: %t14421 = load ptr, ptr %t1 - %t14422 = call i32 @lp_str_eq(ptr %t14421, ptr @.str8034) + %t14422 = call i32 @lp_str_eq(ptr %t14421, ptr @.str8037) %t14423 = icmp ne i32 %t14422, 0 br i1 %t14423, label %then2885, label %ifend2887 then2885: - store ptr @.str8035, ptr %t380 + store ptr @.str8038, ptr %t380 %t14424 = load ptr, ptr %t387 %t14425 = getelementptr inbounds %LSlice, ptr %t14424, i32 0, i32 1 %t14426 = getelementptr inbounds %LSlice, ptr %t14424, i32 0, i32 2 @@ -86146,17 +86203,17 @@ grow2888: put2889: %t14440 = load ptr, ptr %t14427 %t14441 = getelementptr inbounds ptr, ptr %t14440, i32 %t14428 - store ptr @.str8036, ptr %t14441 + store ptr @.str8039, ptr %t14441 %t14442 = add i32 %t14428, 1 store i32 %t14442, ptr %t14425 br label %ifend2887 ifend2887: %t14443 = load ptr, ptr %t1 - %t14444 = call i32 @lp_str_eq(ptr %t14443, ptr @.str8037) + %t14444 = call i32 @lp_str_eq(ptr %t14443, ptr @.str8040) %t14445 = icmp ne i32 %t14444, 0 br i1 %t14445, label %then2890, label %ifend2892 then2890: - store ptr @.str8038, ptr %t380 + store ptr @.str8041, ptr %t380 %t14446 = load ptr, ptr %t387 %t14447 = getelementptr inbounds %LSlice, ptr %t14446, i32 0, i32 1 %t14448 = getelementptr inbounds %LSlice, ptr %t14446, i32 0, i32 2 @@ -86181,17 +86238,17 @@ grow2893: put2894: %t14462 = load ptr, ptr %t14449 %t14463 = getelementptr inbounds ptr, ptr %t14462, i32 %t14450 - store ptr @.str8039, ptr %t14463 + store ptr @.str8042, ptr %t14463 %t14464 = add i32 %t14450, 1 store i32 %t14464, ptr %t14447 br label %ifend2892 ifend2892: %t14465 = load ptr, ptr %t1 - %t14466 = call i32 @lp_str_eq(ptr %t14465, ptr @.str8040) + %t14466 = call i32 @lp_str_eq(ptr %t14465, ptr @.str8043) %t14467 = icmp ne i32 %t14466, 0 br i1 %t14467, label %then2895, label %ifend2897 then2895: - store ptr @.str8041, ptr %t380 + store ptr @.str8044, ptr %t380 %t14468 = load ptr, ptr %t387 %t14469 = getelementptr inbounds %LSlice, ptr %t14468, i32 0, i32 1 %t14470 = getelementptr inbounds %LSlice, ptr %t14468, i32 0, i32 2 @@ -86216,7 +86273,7 @@ grow2898: put2899: %t14484 = load ptr, ptr %t14471 %t14485 = getelementptr inbounds ptr, ptr %t14484, i32 %t14472 - store ptr @.str8042, ptr %t14485 + store ptr @.str8045, ptr %t14485 %t14486 = add i32 %t14472, 1 store i32 %t14486, ptr %t14469 %t14487 = load ptr, ptr %t387 @@ -86243,7 +86300,7 @@ grow2900: put2901: %t14503 = load ptr, ptr %t14490 %t14504 = getelementptr inbounds ptr, ptr %t14503, i32 %t14491 - store ptr @.str8043, ptr %t14504 + store ptr @.str8046, ptr %t14504 %t14505 = add i32 %t14491, 1 store i32 %t14505, ptr %t14488 %t14506 = load ptr, ptr %t387 @@ -86270,17 +86327,17 @@ grow2902: put2903: %t14522 = load ptr, ptr %t14509 %t14523 = getelementptr inbounds ptr, ptr %t14522, i32 %t14510 - store ptr @.str8044, ptr %t14523 + store ptr @.str8047, ptr %t14523 %t14524 = add i32 %t14510, 1 store i32 %t14524, ptr %t14507 br label %ifend2897 ifend2897: %t14525 = load ptr, ptr %t1 - %t14526 = call i32 @lp_str_eq(ptr %t14525, ptr @.str8045) + %t14526 = call i32 @lp_str_eq(ptr %t14525, ptr @.str8048) %t14527 = icmp ne i32 %t14526, 0 br i1 %t14527, label %then2904, label %ifend2906 then2904: - store ptr @.str8046, ptr %t380 + store ptr @.str8049, ptr %t380 %t14528 = load ptr, ptr %t387 %t14529 = getelementptr inbounds %LSlice, ptr %t14528, i32 0, i32 1 %t14530 = getelementptr inbounds %LSlice, ptr %t14528, i32 0, i32 2 @@ -86305,7 +86362,7 @@ grow2907: put2908: %t14544 = load ptr, ptr %t14531 %t14545 = getelementptr inbounds ptr, ptr %t14544, i32 %t14532 - store ptr @.str8047, ptr %t14545 + store ptr @.str8050, ptr %t14545 %t14546 = add i32 %t14532, 1 store i32 %t14546, ptr %t14529 %t14547 = load ptr, ptr %t387 @@ -86332,7 +86389,7 @@ grow2909: put2910: %t14563 = load ptr, ptr %t14550 %t14564 = getelementptr inbounds ptr, ptr %t14563, i32 %t14551 - store ptr @.str8048, ptr %t14564 + store ptr @.str8051, ptr %t14564 %t14565 = add i32 %t14551, 1 store i32 %t14565, ptr %t14548 %t14566 = load ptr, ptr %t387 @@ -86359,17 +86416,17 @@ grow2911: put2912: %t14582 = load ptr, ptr %t14569 %t14583 = getelementptr inbounds ptr, ptr %t14582, i32 %t14570 - store ptr @.str8049, ptr %t14583 + store ptr @.str8052, ptr %t14583 %t14584 = add i32 %t14570, 1 store i32 %t14584, ptr %t14567 br label %ifend2906 ifend2906: %t14585 = load ptr, ptr %t1 - %t14586 = call i32 @lp_str_eq(ptr %t14585, ptr @.str8050) + %t14586 = call i32 @lp_str_eq(ptr %t14585, ptr @.str8053) %t14587 = icmp ne i32 %t14586, 0 br i1 %t14587, label %then2913, label %ifend2915 then2913: - store ptr @.str8051, ptr %t380 + store ptr @.str8054, ptr %t380 %t14588 = load ptr, ptr %t387 %t14589 = getelementptr inbounds %LSlice, ptr %t14588, i32 0, i32 1 %t14590 = getelementptr inbounds %LSlice, ptr %t14588, i32 0, i32 2 @@ -86394,7 +86451,7 @@ grow2916: put2917: %t14604 = load ptr, ptr %t14591 %t14605 = getelementptr inbounds ptr, ptr %t14604, i32 %t14592 - store ptr @.str8052, ptr %t14605 + store ptr @.str8055, ptr %t14605 %t14606 = add i32 %t14592, 1 store i32 %t14606, ptr %t14589 %t14607 = load ptr, ptr %t387 @@ -86421,7 +86478,7 @@ grow2918: put2919: %t14623 = load ptr, ptr %t14610 %t14624 = getelementptr inbounds ptr, ptr %t14623, i32 %t14611 - store ptr @.str8053, ptr %t14624 + store ptr @.str8056, ptr %t14624 %t14625 = add i32 %t14611, 1 store i32 %t14625, ptr %t14608 %t14626 = load ptr, ptr %t387 @@ -86448,17 +86505,17 @@ grow2920: put2921: %t14642 = load ptr, ptr %t14629 %t14643 = getelementptr inbounds ptr, ptr %t14642, i32 %t14630 - store ptr @.str8054, ptr %t14643 + store ptr @.str8057, ptr %t14643 %t14644 = add i32 %t14630, 1 store i32 %t14644, ptr %t14627 br label %ifend2915 ifend2915: %t14645 = load ptr, ptr %t1 - %t14646 = call i32 @lp_str_eq(ptr %t14645, ptr @.str8055) + %t14646 = call i32 @lp_str_eq(ptr %t14645, ptr @.str8058) %t14647 = icmp ne i32 %t14646, 0 br i1 %t14647, label %then2922, label %ifend2924 then2922: - store ptr @.str8056, ptr %t380 + store ptr @.str8059, ptr %t380 %t14648 = load ptr, ptr %t387 %t14649 = getelementptr inbounds %LSlice, ptr %t14648, i32 0, i32 1 %t14650 = getelementptr inbounds %LSlice, ptr %t14648, i32 0, i32 2 @@ -86483,7 +86540,7 @@ grow2925: put2926: %t14664 = load ptr, ptr %t14651 %t14665 = getelementptr inbounds ptr, ptr %t14664, i32 %t14652 - store ptr @.str8057, ptr %t14665 + store ptr @.str8060, ptr %t14665 %t14666 = add i32 %t14652, 1 store i32 %t14666, ptr %t14649 %t14667 = load ptr, ptr %t387 @@ -86510,7 +86567,7 @@ grow2927: put2928: %t14683 = load ptr, ptr %t14670 %t14684 = getelementptr inbounds ptr, ptr %t14683, i32 %t14671 - store ptr @.str8058, ptr %t14684 + store ptr @.str8061, ptr %t14684 %t14685 = add i32 %t14671, 1 store i32 %t14685, ptr %t14668 %t14686 = load ptr, ptr %t387 @@ -86537,17 +86594,17 @@ grow2929: put2930: %t14702 = load ptr, ptr %t14689 %t14703 = getelementptr inbounds ptr, ptr %t14702, i32 %t14690 - store ptr @.str8059, ptr %t14703 + store ptr @.str8062, ptr %t14703 %t14704 = add i32 %t14690, 1 store i32 %t14704, ptr %t14687 br label %ifend2924 ifend2924: %t14705 = load ptr, ptr %t1 - %t14706 = call i32 @lp_str_eq(ptr %t14705, ptr @.str8060) + %t14706 = call i32 @lp_str_eq(ptr %t14705, ptr @.str8063) %t14707 = icmp ne i32 %t14706, 0 br i1 %t14707, label %then2931, label %ifend2933 then2931: - store ptr @.str8061, ptr %t380 + store ptr @.str8064, ptr %t380 %t14708 = load ptr, ptr %t387 %t14709 = getelementptr inbounds %LSlice, ptr %t14708, i32 0, i32 1 %t14710 = getelementptr inbounds %LSlice, ptr %t14708, i32 0, i32 2 @@ -86572,7 +86629,7 @@ grow2934: put2935: %t14724 = load ptr, ptr %t14711 %t14725 = getelementptr inbounds ptr, ptr %t14724, i32 %t14712 - store ptr @.str8062, ptr %t14725 + store ptr @.str8065, ptr %t14725 %t14726 = add i32 %t14712, 1 store i32 %t14726, ptr %t14709 %t14727 = load ptr, ptr %t387 @@ -86599,17 +86656,17 @@ grow2936: put2937: %t14743 = load ptr, ptr %t14730 %t14744 = getelementptr inbounds ptr, ptr %t14743, i32 %t14731 - store ptr @.str8063, ptr %t14744 + store ptr @.str8066, ptr %t14744 %t14745 = add i32 %t14731, 1 store i32 %t14745, ptr %t14728 br label %ifend2933 ifend2933: %t14746 = load ptr, ptr %t1 - %t14747 = call i32 @lp_str_eq(ptr %t14746, ptr @.str8064) + %t14747 = call i32 @lp_str_eq(ptr %t14746, ptr @.str8067) %t14748 = icmp ne i32 %t14747, 0 br i1 %t14748, label %then2938, label %ifend2940 then2938: - store ptr @.str8065, ptr %t380 + store ptr @.str8068, ptr %t380 %t14749 = load ptr, ptr %t387 %t14750 = getelementptr inbounds %LSlice, ptr %t14749, i32 0, i32 1 %t14751 = getelementptr inbounds %LSlice, ptr %t14749, i32 0, i32 2 @@ -86634,7 +86691,7 @@ grow2941: put2942: %t14765 = load ptr, ptr %t14752 %t14766 = getelementptr inbounds ptr, ptr %t14765, i32 %t14753 - store ptr @.str8066, ptr %t14766 + store ptr @.str8069, ptr %t14766 %t14767 = add i32 %t14753, 1 store i32 %t14767, ptr %t14750 %t14768 = load ptr, ptr %t387 @@ -86661,17 +86718,17 @@ grow2943: put2944: %t14784 = load ptr, ptr %t14771 %t14785 = getelementptr inbounds ptr, ptr %t14784, i32 %t14772 - store ptr @.str8067, ptr %t14785 + store ptr @.str8070, ptr %t14785 %t14786 = add i32 %t14772, 1 store i32 %t14786, ptr %t14769 br label %ifend2940 ifend2940: %t14787 = load ptr, ptr %t1 - %t14788 = call i32 @lp_str_eq(ptr %t14787, ptr @.str8068) + %t14788 = call i32 @lp_str_eq(ptr %t14787, ptr @.str8071) %t14789 = icmp ne i32 %t14788, 0 br i1 %t14789, label %then2945, label %ifend2947 then2945: - store ptr @.str8069, ptr %t380 + store ptr @.str8072, ptr %t380 %t14790 = load ptr, ptr %t387 %t14791 = getelementptr inbounds %LSlice, ptr %t14790, i32 0, i32 1 %t14792 = getelementptr inbounds %LSlice, ptr %t14790, i32 0, i32 2 @@ -86696,7 +86753,7 @@ grow2948: put2949: %t14806 = load ptr, ptr %t14793 %t14807 = getelementptr inbounds ptr, ptr %t14806, i32 %t14794 - store ptr @.str8070, ptr %t14807 + store ptr @.str8073, ptr %t14807 %t14808 = add i32 %t14794, 1 store i32 %t14808, ptr %t14791 %t14809 = load ptr, ptr %t387 @@ -86723,17 +86780,17 @@ grow2950: put2951: %t14825 = load ptr, ptr %t14812 %t14826 = getelementptr inbounds ptr, ptr %t14825, i32 %t14813 - store ptr @.str8071, ptr %t14826 + store ptr @.str8074, ptr %t14826 %t14827 = add i32 %t14813, 1 store i32 %t14827, ptr %t14810 br label %ifend2947 ifend2947: %t14828 = load ptr, ptr %t1 - %t14829 = call i32 @lp_str_eq(ptr %t14828, ptr @.str8072) + %t14829 = call i32 @lp_str_eq(ptr %t14828, ptr @.str8075) %t14830 = icmp ne i32 %t14829, 0 br i1 %t14830, label %then2952, label %ifend2954 then2952: - store ptr @.str8073, ptr %t380 + store ptr @.str8076, ptr %t380 %t14831 = load ptr, ptr %t387 %t14832 = getelementptr inbounds %LSlice, ptr %t14831, i32 0, i32 1 %t14833 = getelementptr inbounds %LSlice, ptr %t14831, i32 0, i32 2 @@ -86758,7 +86815,7 @@ grow2955: put2956: %t14847 = load ptr, ptr %t14834 %t14848 = getelementptr inbounds ptr, ptr %t14847, i32 %t14835 - store ptr @.str8074, ptr %t14848 + store ptr @.str8077, ptr %t14848 %t14849 = add i32 %t14835, 1 store i32 %t14849, ptr %t14832 %t14850 = load ptr, ptr %t387 @@ -86785,17 +86842,17 @@ grow2957: put2958: %t14866 = load ptr, ptr %t14853 %t14867 = getelementptr inbounds ptr, ptr %t14866, i32 %t14854 - store ptr @.str8075, ptr %t14867 + store ptr @.str8078, ptr %t14867 %t14868 = add i32 %t14854, 1 store i32 %t14868, ptr %t14851 br label %ifend2954 ifend2954: %t14869 = load ptr, ptr %t1 - %t14870 = call i32 @lp_str_eq(ptr %t14869, ptr @.str8076) + %t14870 = call i32 @lp_str_eq(ptr %t14869, ptr @.str8079) %t14871 = icmp ne i32 %t14870, 0 br i1 %t14871, label %then2959, label %ifend2961 then2959: - store ptr @.str8077, ptr %t380 + store ptr @.str8080, ptr %t380 %t14872 = load ptr, ptr %t387 %t14873 = getelementptr inbounds %LSlice, ptr %t14872, i32 0, i32 1 %t14874 = getelementptr inbounds %LSlice, ptr %t14872, i32 0, i32 2 @@ -86820,7 +86877,7 @@ grow2962: put2963: %t14888 = load ptr, ptr %t14875 %t14889 = getelementptr inbounds ptr, ptr %t14888, i32 %t14876 - store ptr @.str8078, ptr %t14889 + store ptr @.str8081, ptr %t14889 %t14890 = add i32 %t14876, 1 store i32 %t14890, ptr %t14873 %t14891 = load ptr, ptr %t387 @@ -86847,17 +86904,17 @@ grow2964: put2965: %t14907 = load ptr, ptr %t14894 %t14908 = getelementptr inbounds ptr, ptr %t14907, i32 %t14895 - store ptr @.str8079, ptr %t14908 + store ptr @.str8082, ptr %t14908 %t14909 = add i32 %t14895, 1 store i32 %t14909, ptr %t14892 br label %ifend2961 ifend2961: %t14910 = load ptr, ptr %t1 - %t14911 = call i32 @lp_str_eq(ptr %t14910, ptr @.str8080) + %t14911 = call i32 @lp_str_eq(ptr %t14910, ptr @.str8083) %t14912 = icmp ne i32 %t14911, 0 br i1 %t14912, label %then2966, label %ifend2968 then2966: - store ptr @.str8081, ptr %t380 + store ptr @.str8084, ptr %t380 %t14913 = load ptr, ptr %t387 %t14914 = getelementptr inbounds %LSlice, ptr %t14913, i32 0, i32 1 %t14915 = getelementptr inbounds %LSlice, ptr %t14913, i32 0, i32 2 @@ -86882,17 +86939,17 @@ grow2969: put2970: %t14929 = load ptr, ptr %t14916 %t14930 = getelementptr inbounds ptr, ptr %t14929, i32 %t14917 - store ptr @.str8082, ptr %t14930 + store ptr @.str8085, ptr %t14930 %t14931 = add i32 %t14917, 1 store i32 %t14931, ptr %t14914 br label %ifend2968 ifend2968: %t14932 = load ptr, ptr %t1 - %t14933 = call i32 @lp_str_eq(ptr %t14932, ptr @.str8083) + %t14933 = call i32 @lp_str_eq(ptr %t14932, ptr @.str8086) %t14934 = icmp ne i32 %t14933, 0 br i1 %t14934, label %then2971, label %ifend2973 then2971: - store ptr @.str8084, ptr %t380 + store ptr @.str8087, ptr %t380 %t14935 = load ptr, ptr %t387 %t14936 = getelementptr inbounds %LSlice, ptr %t14935, i32 0, i32 1 %t14937 = getelementptr inbounds %LSlice, ptr %t14935, i32 0, i32 2 @@ -86917,17 +86974,17 @@ grow2974: put2975: %t14951 = load ptr, ptr %t14938 %t14952 = getelementptr inbounds ptr, ptr %t14951, i32 %t14939 - store ptr @.str8085, ptr %t14952 + store ptr @.str8088, ptr %t14952 %t14953 = add i32 %t14939, 1 store i32 %t14953, ptr %t14936 br label %ifend2973 ifend2973: %t14954 = load ptr, ptr %t1 - %t14955 = call i32 @lp_str_eq(ptr %t14954, ptr @.str8086) + %t14955 = call i32 @lp_str_eq(ptr %t14954, ptr @.str8089) %t14956 = icmp ne i32 %t14955, 0 br i1 %t14956, label %then2976, label %ifend2978 then2976: - store ptr @.str8087, ptr %t380 + store ptr @.str8090, ptr %t380 %t14957 = load ptr, ptr %t387 %t14958 = getelementptr inbounds %LSlice, ptr %t14957, i32 0, i32 1 %t14959 = getelementptr inbounds %LSlice, ptr %t14957, i32 0, i32 2 @@ -86952,7 +87009,7 @@ grow2979: put2980: %t14973 = load ptr, ptr %t14960 %t14974 = getelementptr inbounds ptr, ptr %t14973, i32 %t14961 - store ptr @.str8088, ptr %t14974 + store ptr @.str8091, ptr %t14974 %t14975 = add i32 %t14961, 1 store i32 %t14975, ptr %t14958 %t14976 = load ptr, ptr %t387 @@ -86979,23 +87036,23 @@ grow2981: put2982: %t14992 = load ptr, ptr %t14979 %t14993 = getelementptr inbounds ptr, ptr %t14992, i32 %t14980 - store ptr @.str8089, ptr %t14993 + store ptr @.str8092, ptr %t14993 %t14994 = add i32 %t14980, 1 store i32 %t14994, ptr %t14977 br label %ifend2978 ifend2978: br label %ifend2709 ifend2709: - %t14996 = load ptr, ptr %t380 - %t14997 = icmp eq ptr %t14996, null - %t14998 = zext i1 %t14997 to i32 - %t14999 = icmp ne i32 %t14998, 0 - %t15000 = zext i1 %t14999 to i32 - store i32 %t15000, ptr %t14995 - br i1 %t14999, label %sc2983, label %scend2984 + %t14996 = load ptr, ptr %t0 + %t14997 = call i32 @lp_str_eq(ptr %t14996, ptr @.str8093) + %t14998 = icmp ne i32 %t14997, 0 + %t14999 = zext i1 %t14998 to i32 + store i32 %t14999, ptr %t14995 + br i1 %t14998, label %sc2983, label %scend2984 sc2983: - %t15001 = load ptr, ptr %t0 - %t15002 = call i32 @fn_is_registered_namespace(ptr %t15001) + %t15000 = load ptr, ptr %t380 + %t15001 = icmp eq ptr %t15000, null + %t15002 = zext i1 %t15001 to i32 %t15003 = icmp ne i32 %t15002, 0 %t15004 = zext i1 %t15003 to i32 store i32 %t15004, ptr %t14995 @@ -87005,142 +87062,241 @@ scend2984: %t15006 = icmp ne i32 %t15005, 0 br i1 %t15006, label %then2985, label %ifend2987 then2985: - %t15007 = load ptr, ptr %t0 - %t15008 = call ptr @fn_ns_lower(ptr %t15007) - %t15009 = call ptr @lp_str_concat(ptr %t15008, ptr @.str8090) - %t15010 = load ptr, ptr %t1 - %t15011 = call ptr @lp_str_concat(ptr %t15009, ptr %t15010) - store ptr %t15011, ptr %t380 - %t15013 = load ptr, ptr %t0 - %t15014 = call i32 @fn_is_ns_block(ptr %t15013) + %t15007 = load ptr, ptr %t1 + %t15008 = call ptr @lp_str_concat(ptr @.str8094, ptr %t15007) + store ptr %t15008, ptr %t380 + %t15009 = load ptr, ptr %t380 + %t15010 = call ptr @fn_find_fn(ptr %t15009) + store ptr %t15010, ptr %t15011 + %t15012 = load ptr, ptr %t15011 + %t15013 = icmp eq ptr %t15012, null + %t15014 = zext i1 %t15013 to i32 %t15015 = icmp ne i32 %t15014, 0 - %t15016 = zext i1 %t15015 to i32 - store i32 %t15016, ptr %t15012 - br i1 %t15015, label %sc2988, label %scend2989 -sc2988: - %t15017 = load ptr, ptr %t380 - %t15018 = call i32 @fn_ns_export_has(ptr %t15017) - %t15019 = icmp eq i32 %t15018, 0 + br i1 %t15015, label %then2988, label %ifend2990 +then2988: + %t15016 = load ptr, ptr %t380 + %t15017 = call ptr @fn_find_extern(ptr %t15016) + store ptr %t15017, ptr %t15011 + br label %ifend2990 +ifend2990: + %t15018 = load ptr, ptr %t15011 + %t15019 = icmp ne ptr %t15018, null %t15020 = zext i1 %t15019 to i32 %t15021 = icmp ne i32 %t15020, 0 - %t15022 = zext i1 %t15021 to i32 - store i32 %t15022, ptr %t15012 - br label %scend2989 -scend2989: - %t15023 = load i32, ptr %t15012 - %t15024 = icmp ne i32 %t15023, 0 - br i1 %t15024, label %then2990, label %ifend2992 -then2990: - %t15025 = load ptr, ptr %t0 - %t15026 = call ptr @lp_str_concat(ptr %t15025, ptr @.str8091) - %t15027 = load ptr, ptr %t1 - %t15028 = call ptr @lp_str_concat(ptr %t15026, ptr %t15027) - %t15029 = call ptr @lp_str_concat(ptr %t15028, ptr @.str8092) - %t15030 = load ptr, ptr %t0 - %t15031 = call ptr @lp_str_concat(ptr %t15029, ptr %t15030) - call void @fn_perr(ptr %t15031) - br label %ifend2992 -ifend2992: - %t15032 = load ptr, ptr %t380 - %t15033 = call ptr @fn_find_fn(ptr %t15032) - store ptr %t15033, ptr %t15034 - %t15035 = load ptr, ptr %t15034 - %t15036 = icmp ne ptr %t15035, null - %t15037 = zext i1 %t15036 to i32 - %t15038 = icmp ne i32 %t15037, 0 - br i1 %t15038, label %then2993, label %ifend2995 -then2993: - %t15039 = load ptr, ptr %t15034 - %t15040 = call ptr @fn_param_labels(ptr %t15039) - store ptr %t15040, ptr %t15041 - store i32 0, ptr %t15042 - br label %wcond2996 -wcond2996: - %t15043 = load i32, ptr %t15042 - %t15044 = load ptr, ptr %t15041 - %t15045 = getelementptr inbounds %LSlice, ptr %t15044, i32 0, i32 1 - %t15046 = load i32, ptr %t15045 - %t15047 = icmp slt i32 %t15043, %t15046 - %t15048 = zext i1 %t15047 to i32 - %t15049 = icmp ne i32 %t15048, 0 - br i1 %t15049, label %wbody2997, label %wend2998 -wbody2997: - %t15050 = load ptr, ptr %t387 - %t15051 = load ptr, ptr %t15041 - %t15052 = getelementptr inbounds %LSlice, ptr %t15051, i32 0, i32 0 - %t15053 = load ptr, ptr %t15052 - %t15054 = load i32, ptr %t15042 - %t15055 = getelementptr inbounds ptr, ptr %t15053, i32 %t15054 - %t15056 = load ptr, ptr %t15055 - %t15057 = getelementptr inbounds %LSlice, ptr %t15050, i32 0, i32 1 - %t15058 = getelementptr inbounds %LSlice, ptr %t15050, i32 0, i32 2 - %t15059 = getelementptr inbounds %LSlice, ptr %t15050, i32 0, i32 0 - %t15060 = load i32, ptr %t15057 - %t15061 = load i32, ptr %t15058 - %t15062 = icmp sge i32 %t15060, %t15061 - br i1 %t15062, label %grow2999, label %put3000 -grow2999: - %t15063 = mul i32 %t15061, 2 - %t15064 = icmp eq i32 %t15061, 0 - %t15065 = select i1 %t15064, i32 8, i32 %t15063 - %t15066 = getelementptr ptr, ptr null, i32 1 - %t15067 = ptrtoint ptr %t15066 to i64 - %t15068 = zext i32 %t15065 to i64 - %t15069 = mul i64 %t15068, %t15067 - %t15070 = load ptr, ptr %t15059 - %t15071 = call ptr @realloc(ptr %t15070, i64 %t15069) - store ptr %t15071, ptr %t15059 - store i32 %t15065, ptr %t15058 - br label %put3000 -put3000: - %t15072 = load ptr, ptr %t15059 - %t15073 = getelementptr inbounds ptr, ptr %t15072, i32 %t15060 - store ptr %t15056, ptr %t15073 - %t15074 = add i32 %t15060, 1 - store i32 %t15074, ptr %t15057 - %t15075 = load i32, ptr %t15042 - %t15076 = add i32 %t15075, 1 - store i32 %t15076, ptr %t15042 - br label %wcond2996 -wend2998: - br label %ifend2995 -ifend2995: + br i1 %t15021, label %then2991, label %ifend2993 +then2991: + %t15022 = load ptr, ptr %t15011 + %t15023 = call ptr @fn_param_labels(ptr %t15022) + store ptr %t15023, ptr %t15024 + store i32 0, ptr %t15025 + br label %wcond2994 +wcond2994: + %t15026 = load i32, ptr %t15025 + %t15027 = load ptr, ptr %t15024 + %t15028 = getelementptr inbounds %LSlice, ptr %t15027, i32 0, i32 1 + %t15029 = load i32, ptr %t15028 + %t15030 = icmp slt i32 %t15026, %t15029 + %t15031 = zext i1 %t15030 to i32 + %t15032 = icmp ne i32 %t15031, 0 + br i1 %t15032, label %wbody2995, label %wend2996 +wbody2995: + %t15033 = load ptr, ptr %t387 + %t15034 = load ptr, ptr %t15024 + %t15035 = getelementptr inbounds %LSlice, ptr %t15034, i32 0, i32 0 + %t15036 = load ptr, ptr %t15035 + %t15037 = load i32, ptr %t15025 + %t15038 = getelementptr inbounds ptr, ptr %t15036, i32 %t15037 + %t15039 = load ptr, ptr %t15038 + %t15040 = getelementptr inbounds %LSlice, ptr %t15033, i32 0, i32 1 + %t15041 = getelementptr inbounds %LSlice, ptr %t15033, i32 0, i32 2 + %t15042 = getelementptr inbounds %LSlice, ptr %t15033, i32 0, i32 0 + %t15043 = load i32, ptr %t15040 + %t15044 = load i32, ptr %t15041 + %t15045 = icmp sge i32 %t15043, %t15044 + br i1 %t15045, label %grow2997, label %put2998 +grow2997: + %t15046 = mul i32 %t15044, 2 + %t15047 = icmp eq i32 %t15044, 0 + %t15048 = select i1 %t15047, i32 8, i32 %t15046 + %t15049 = getelementptr ptr, ptr null, i32 1 + %t15050 = ptrtoint ptr %t15049 to i64 + %t15051 = zext i32 %t15048 to i64 + %t15052 = mul i64 %t15051, %t15050 + %t15053 = load ptr, ptr %t15042 + %t15054 = call ptr @realloc(ptr %t15053, i64 %t15052) + store ptr %t15054, ptr %t15042 + store i32 %t15048, ptr %t15041 + br label %put2998 +put2998: + %t15055 = load ptr, ptr %t15042 + %t15056 = getelementptr inbounds ptr, ptr %t15055, i32 %t15043 + store ptr %t15039, ptr %t15056 + %t15057 = add i32 %t15043, 1 + store i32 %t15057, ptr %t15040 + %t15058 = load i32, ptr %t15025 + %t15059 = add i32 %t15058, 1 + store i32 %t15059, ptr %t15025 + br label %wcond2994 +wend2996: + br label %ifend2993 +ifend2993: br label %ifend2987 ifend2987: - %t15077 = load ptr, ptr %t380 - %t15078 = icmp eq ptr %t15077, null - %t15079 = zext i1 %t15078 to i32 - %t15080 = icmp ne i32 %t15079, 0 - br i1 %t15080, label %then3001, label %ifend3003 + %t15061 = load ptr, ptr %t380 + %t15062 = icmp eq ptr %t15061, null + %t15063 = zext i1 %t15062 to i32 + %t15064 = icmp ne i32 %t15063, 0 + %t15065 = zext i1 %t15064 to i32 + store i32 %t15065, ptr %t15060 + br i1 %t15064, label %sc2999, label %scend3000 +sc2999: + %t15066 = load ptr, ptr %t0 + %t15067 = call i32 @fn_is_registered_namespace(ptr %t15066) + %t15068 = icmp ne i32 %t15067, 0 + %t15069 = zext i1 %t15068 to i32 + store i32 %t15069, ptr %t15060 + br label %scend3000 +scend3000: + %t15070 = load i32, ptr %t15060 + %t15071 = icmp ne i32 %t15070, 0 + br i1 %t15071, label %then3001, label %ifend3003 then3001: - %t15081 = load ptr, ptr %t0 - %t15082 = call ptr @lp_str_concat(ptr @.str8093, ptr %t15081) - %t15083 = call ptr @lp_str_concat(ptr %t15082, ptr @.str8094) - %t15084 = load ptr, ptr %t1 - %t15085 = call ptr @lp_str_concat(ptr %t15083, ptr %t15084) - call void @fn_perr(ptr %t15085) + %t15072 = load ptr, ptr %t0 + %t15073 = call ptr @fn_ns_lower(ptr %t15072) + %t15074 = call ptr @lp_str_concat(ptr %t15073, ptr @.str8095) + %t15075 = load ptr, ptr %t1 + %t15076 = call ptr @lp_str_concat(ptr %t15074, ptr %t15075) + store ptr %t15076, ptr %t380 + %t15078 = load ptr, ptr %t0 + %t15079 = call i32 @fn_is_ns_block(ptr %t15078) + %t15080 = icmp ne i32 %t15079, 0 + %t15081 = zext i1 %t15080 to i32 + store i32 %t15081, ptr %t15077 + br i1 %t15080, label %sc3004, label %scend3005 +sc3004: + %t15082 = load ptr, ptr %t380 + %t15083 = call i32 @fn_ns_export_has(ptr %t15082) + %t15084 = icmp eq i32 %t15083, 0 + %t15085 = zext i1 %t15084 to i32 + %t15086 = icmp ne i32 %t15085, 0 + %t15087 = zext i1 %t15086 to i32 + store i32 %t15087, ptr %t15077 + br label %scend3005 +scend3005: + %t15088 = load i32, ptr %t15077 + %t15089 = icmp ne i32 %t15088, 0 + br i1 %t15089, label %then3006, label %ifend3008 +then3006: + %t15090 = load ptr, ptr %t0 + %t15091 = call ptr @lp_str_concat(ptr %t15090, ptr @.str8096) + %t15092 = load ptr, ptr %t1 + %t15093 = call ptr @lp_str_concat(ptr %t15091, ptr %t15092) + %t15094 = call ptr @lp_str_concat(ptr %t15093, ptr @.str8097) + %t15095 = load ptr, ptr %t0 + %t15096 = call ptr @lp_str_concat(ptr %t15094, ptr %t15095) + call void @fn_perr(ptr %t15096) + br label %ifend3008 +ifend3008: + %t15097 = load ptr, ptr %t380 + %t15098 = call ptr @fn_find_fn(ptr %t15097) + store ptr %t15098, ptr %t15099 + %t15100 = load ptr, ptr %t15099 + %t15101 = icmp ne ptr %t15100, null + %t15102 = zext i1 %t15101 to i32 + %t15103 = icmp ne i32 %t15102, 0 + br i1 %t15103, label %then3009, label %ifend3011 +then3009: + %t15104 = load ptr, ptr %t15099 + %t15105 = call ptr @fn_param_labels(ptr %t15104) + store ptr %t15105, ptr %t15106 + store i32 0, ptr %t15107 + br label %wcond3012 +wcond3012: + %t15108 = load i32, ptr %t15107 + %t15109 = load ptr, ptr %t15106 + %t15110 = getelementptr inbounds %LSlice, ptr %t15109, i32 0, i32 1 + %t15111 = load i32, ptr %t15110 + %t15112 = icmp slt i32 %t15108, %t15111 + %t15113 = zext i1 %t15112 to i32 + %t15114 = icmp ne i32 %t15113, 0 + br i1 %t15114, label %wbody3013, label %wend3014 +wbody3013: + %t15115 = load ptr, ptr %t387 + %t15116 = load ptr, ptr %t15106 + %t15117 = getelementptr inbounds %LSlice, ptr %t15116, i32 0, i32 0 + %t15118 = load ptr, ptr %t15117 + %t15119 = load i32, ptr %t15107 + %t15120 = getelementptr inbounds ptr, ptr %t15118, i32 %t15119 + %t15121 = load ptr, ptr %t15120 + %t15122 = getelementptr inbounds %LSlice, ptr %t15115, i32 0, i32 1 + %t15123 = getelementptr inbounds %LSlice, ptr %t15115, i32 0, i32 2 + %t15124 = getelementptr inbounds %LSlice, ptr %t15115, i32 0, i32 0 + %t15125 = load i32, ptr %t15122 + %t15126 = load i32, ptr %t15123 + %t15127 = icmp sge i32 %t15125, %t15126 + br i1 %t15127, label %grow3015, label %put3016 +grow3015: + %t15128 = mul i32 %t15126, 2 + %t15129 = icmp eq i32 %t15126, 0 + %t15130 = select i1 %t15129, i32 8, i32 %t15128 + %t15131 = getelementptr ptr, ptr null, i32 1 + %t15132 = ptrtoint ptr %t15131 to i64 + %t15133 = zext i32 %t15130 to i64 + %t15134 = mul i64 %t15133, %t15132 + %t15135 = load ptr, ptr %t15124 + %t15136 = call ptr @realloc(ptr %t15135, i64 %t15134) + store ptr %t15136, ptr %t15124 + store i32 %t15130, ptr %t15123 + br label %put3016 +put3016: + %t15137 = load ptr, ptr %t15124 + %t15138 = getelementptr inbounds ptr, ptr %t15137, i32 %t15125 + store ptr %t15121, ptr %t15138 + %t15139 = add i32 %t15125, 1 + store i32 %t15139, ptr %t15122 + %t15140 = load i32, ptr %t15107 + %t15141 = add i32 %t15140, 1 + store i32 %t15141, ptr %t15107 + br label %wcond3012 +wend3014: + br label %ifend3011 +ifend3011: br label %ifend3003 ifend3003: - %t15086 = load ptr, ptr %t2 - %t15087 = load ptr, ptr %t387 - call void @fn_reorder_named(ptr %t15086, ptr %t15087) - %t15088 = call ptr @fn_node(i32 33) - store ptr %t15088, ptr %t15089 - %t15090 = load ptr, ptr %t15089 - %t15091 = getelementptr inbounds %Cmp_Node, ptr %t15090, i32 0, i32 1 - %t15092 = load ptr, ptr %t380 - store ptr %t15092, ptr %t15091 - %t15093 = load ptr, ptr %t2 - %t15094 = getelementptr inbounds %Cmp_Node, ptr %t15093, i32 0, i32 4 - %t15095 = load ptr, ptr %t15089 - store ptr %t15095, ptr %t15094 - %t15096 = load ptr, ptr %t2 - %t15097 = call ptr @fn_emit_call(ptr %t15096) - store ptr %t15097, ptr %retval + %t15142 = load ptr, ptr %t380 + %t15143 = icmp eq ptr %t15142, null + %t15144 = zext i1 %t15143 to i32 + %t15145 = icmp ne i32 %t15144, 0 + br i1 %t15145, label %then3017, label %ifend3019 +then3017: + %t15146 = load ptr, ptr %t0 + %t15147 = call ptr @lp_str_concat(ptr @.str8098, ptr %t15146) + %t15148 = call ptr @lp_str_concat(ptr %t15147, ptr @.str8099) + %t15149 = load ptr, ptr %t1 + %t15150 = call ptr @lp_str_concat(ptr %t15148, ptr %t15149) + call void @fn_perr(ptr %t15150) + br label %ifend3019 +ifend3019: + %t15151 = load ptr, ptr %t2 + %t15152 = load ptr, ptr %t387 + call void @fn_reorder_named(ptr %t15151, ptr %t15152) + %t15153 = call ptr @fn_node(i32 33) + store ptr %t15153, ptr %t15154 + %t15155 = load ptr, ptr %t15154 + %t15156 = getelementptr inbounds %Cmp_Node, ptr %t15155, i32 0, i32 1 + %t15157 = load ptr, ptr %t380 + store ptr %t15157, ptr %t15156 + %t15158 = load ptr, ptr %t2 + %t15159 = getelementptr inbounds %Cmp_Node, ptr %t15158, i32 0, i32 4 + %t15160 = load ptr, ptr %t15154 + store ptr %t15160, ptr %t15159 + %t15161 = load ptr, ptr %t2 + %t15162 = call ptr @fn_emit_call(ptr %t15161) + store ptr %t15162, ptr %retval br label %ret ret: - %t15098 = load ptr, ptr %retval - ret ptr %t15098 + %t15163 = load ptr, ptr %retval + ret ptr %t15163 } define ptr @fn_emit_variant_new(ptr %arg_en, i32 %arg_ord, ptr %arg_args) { @@ -87187,12 +87343,12 @@ then0: %t25 = load ptr, ptr %t11 %t26 = getelementptr inbounds %Cmp_Node, ptr %t25, i32 0, i32 1 %t27 = load ptr, ptr %t26 - %t28 = call ptr @lp_str_concat(ptr @.str8095, ptr %t27) - %t29 = call ptr @lp_str_concat(ptr %t28, ptr @.str8096) + %t28 = call ptr @lp_str_concat(ptr @.str8100, ptr %t27) + %t29 = call ptr @lp_str_concat(ptr %t28, ptr @.str8101) %t30 = load i32, ptr %t17 %t31 = call ptr @fn_itoa(i32 %t30) %t32 = call ptr @lp_str_concat(ptr %t29, ptr %t31) - %t33 = call ptr @lp_str_concat(ptr %t32, ptr @.str8097) + %t33 = call ptr @lp_str_concat(ptr %t32, ptr @.str8102) %t34 = load ptr, ptr %t2 %t35 = getelementptr inbounds %LSlice, ptr %t34, i32 0, i32 1 %t36 = load i32, ptr %t35 @@ -87204,18 +87360,18 @@ ifend2: %t39 = load ptr, ptr %t0 %t40 = call i32 @fn_enum_box_size(ptr %t39) %t41 = call ptr @fn_itoa(i32 %t40) - %t42 = call ptr @lp_str_concat(ptr @.str8098, ptr %t41) - %t43 = call ptr @lp_str_concat(ptr %t42, ptr @.str8099) + %t42 = call ptr @lp_str_concat(ptr @.str8103, ptr %t41) + %t43 = call ptr @lp_str_concat(ptr %t42, ptr @.str8104) %t44 = call ptr @fn_emit_bind(ptr %t43) store ptr %t44, ptr %t45 - call void @fn_emit(ptr @.str8100) + call void @fn_emit(ptr @.str8105) %t46 = load i32, ptr %t1 %t47 = call ptr @fn_itoa(i32 %t46) call void @fn_emit(ptr %t47) - call void @fn_emit(ptr @.str8101) + call void @fn_emit(ptr @.str8106) %t48 = load ptr, ptr %t45 call void @fn_emit(ptr %t48) - call void @fn_emit(ptr @.str8102) + call void @fn_emit(ptr @.str8107) store i32 0, ptr %t49 br label %wcond3 wcond3: @@ -87251,30 +87407,30 @@ wbody4: store ptr %t76, ptr %t77 %t78 = call ptr @fn_nreg() store ptr %t78, ptr %t79 - call void @fn_emit(ptr @.str8103) + call void @fn_emit(ptr @.str8108) %t80 = load ptr, ptr %t79 call void @fn_emit(ptr %t80) - call void @fn_emit(ptr @.str8104) + call void @fn_emit(ptr @.str8109) %t81 = load ptr, ptr %t45 call void @fn_emit(ptr %t81) - call void @fn_emit(ptr @.str8105) + call void @fn_emit(ptr @.str8110) %t82 = load i32, ptr %t49 %t83 = add i32 %t82, 1 %t84 = mul i32 8, %t83 %t85 = call ptr @fn_itoa(i32 %t84) call void @fn_emit(ptr %t85) - call void @fn_emit(ptr @.str8106) - call void @fn_emit(ptr @.str8107) + call void @fn_emit(ptr @.str8111) + call void @fn_emit(ptr @.str8112) %t86 = load ptr, ptr %t65 %t87 = call ptr @fn_llty(ptr %t86) call void @fn_emit(ptr %t87) - call void @fn_emit(ptr @.str8108) + call void @fn_emit(ptr @.str8113) %t88 = load ptr, ptr %t77 call void @fn_emit(ptr %t88) - call void @fn_emit(ptr @.str8109) + call void @fn_emit(ptr @.str8114) %t89 = load ptr, ptr %t79 call void @fn_emit(ptr %t89) - call void @fn_emit(ptr @.str8110) + call void @fn_emit(ptr @.str8115) %t90 = load i32, ptr %t49 %t91 = add i32 %t90, 1 store i32 %t91, ptr %t49 @@ -87495,7 +87651,7 @@ then3: store ptr %t32, ptr %retval br label %ret ifend5: - call void @fn_perr(ptr @.str8111) + call void @fn_perr(ptr @.str8116) br label %ifend2 ifend2: %t33 = load ptr, ptr %t0 @@ -87505,7 +87661,7 @@ ifend2: %t37 = load ptr, ptr %t36 store ptr %t37, ptr %t38 %t39 = load ptr, ptr %t38 - %t40 = call i32 @lp_str_eq(ptr %t39, ptr @.str8112) + %t40 = call i32 @lp_str_eq(ptr %t39, ptr @.str8117) %t41 = icmp ne i32 %t40, 0 br i1 %t41, label %then6, label %ifend8 then6: @@ -87515,7 +87671,7 @@ then6: %t45 = icmp ne i32 %t44, 0 br i1 %t45, label %then9, label %ifend11 then9: - %t46 = call ptr @fn_val(ptr @.str8113, ptr @.str8114) + %t46 = call ptr @fn_val(ptr @.str8118, ptr @.str8119) store ptr %t46, ptr %retval br label %ret ifend11: @@ -87526,64 +87682,64 @@ ifend11: %t51 = sub i32 %t50, 1 %t52 = getelementptr inbounds ptr, ptr %t49, i32 %t51 %t53 = load ptr, ptr %t52 - %t54 = call ptr @lp_str_concat(ptr @.str8115, ptr %t53) + %t54 = call ptr @lp_str_concat(ptr @.str8120, ptr %t53) %t55 = call ptr @fn_emit_bind(ptr %t54) - %t56 = call ptr @fn_val(ptr %t55, ptr @.str8116) + %t56 = call ptr @fn_val(ptr %t55, ptr @.str8121) store ptr %t56, ptr %retval br label %ret ifend8: %t57 = load ptr, ptr %t38 - %t58 = call i32 @lp_str_eq(ptr %t57, ptr @.str8117) + %t58 = call i32 @lp_str_eq(ptr %t57, ptr @.str8122) %t59 = icmp ne i32 %t58, 0 br i1 %t59, label %then12, label %ifend14 then12: - %t60 = call ptr @fn_emit_bind(ptr @.str8118) - %t61 = call ptr @fn_val(ptr %t60, ptr @.str8119) + %t60 = call ptr @fn_emit_bind(ptr @.str8123) + %t61 = call ptr @fn_val(ptr %t60, ptr @.str8124) store ptr %t61, ptr %retval br label %ret ifend14: %t62 = load ptr, ptr %t38 - %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str8120) + %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str8125) %t64 = icmp ne i32 %t63, 0 br i1 %t64, label %then15, label %ifend17 then15: - call void @fn_emit(ptr @.str8121) - %t65 = call ptr @fn_val(ptr @.str8122, ptr @.str8123) + call void @fn_emit(ptr @.str8126) + %t65 = call ptr @fn_val(ptr @.str8127, ptr @.str8128) store ptr %t65, ptr %retval br label %ret ifend17: %t66 = load ptr, ptr %t38 - %t67 = call i32 @lp_str_eq(ptr %t66, ptr @.str8124) + %t67 = call i32 @lp_str_eq(ptr %t66, ptr @.str8129) %t68 = icmp ne i32 %t67, 0 br i1 %t68, label %then18, label %ifend20 then18: - call void @fn_emit(ptr @.str8125) - %t69 = call ptr @fn_val(ptr @.str8126, ptr @.str8127) + call void @fn_emit(ptr @.str8130) + %t69 = call ptr @fn_val(ptr @.str8131, ptr @.str8132) store ptr %t69, ptr %retval br label %ret ifend20: %t70 = load ptr, ptr %t38 - %t71 = call i32 @lp_str_eq(ptr %t70, ptr @.str8128) + %t71 = call i32 @lp_str_eq(ptr %t70, ptr @.str8133) %t72 = icmp ne i32 %t71, 0 br i1 %t72, label %then21, label %ifend23 then21: - %t73 = call ptr @fn_emit_bind(ptr @.str8129) - %t74 = call ptr @fn_val(ptr %t73, ptr @.str8130) + %t73 = call ptr @fn_emit_bind(ptr @.str8134) + %t74 = call ptr @fn_val(ptr %t73, ptr @.str8135) store ptr %t74, ptr %retval br label %ret ifend23: %t75 = load ptr, ptr %t38 - %t76 = call i32 @lp_str_eq(ptr %t75, ptr @.str8131) + %t76 = call i32 @lp_str_eq(ptr %t75, ptr @.str8136) %t77 = icmp ne i32 %t76, 0 br i1 %t77, label %then24, label %ifend26 then24: - %t78 = call ptr @fn_emit_bind(ptr @.str8132) - %t79 = call ptr @fn_val(ptr %t78, ptr @.str8133) + %t78 = call ptr @fn_emit_bind(ptr @.str8137) + %t79 = call ptr @fn_val(ptr %t78, ptr @.str8138) store ptr %t79, ptr %retval br label %ret ifend26: %t80 = load ptr, ptr %t38 - %t81 = call i32 @lp_str_eq(ptr %t80, ptr @.str8134) + %t81 = call i32 @lp_str_eq(ptr %t80, ptr @.str8139) %t82 = icmp ne i32 %t81, 0 br i1 %t82, label %then27, label %ifend29 then27: @@ -87599,15 +87755,15 @@ then27: %t92 = load ptr, ptr %t91 %t93 = getelementptr inbounds %Cmp_Val, ptr %t92, i32 0, i32 0 %t94 = load ptr, ptr %t93 - %t95 = call ptr @lp_str_concat(ptr @.str8135, ptr %t94) - %t96 = call ptr @lp_str_concat(ptr %t95, ptr @.str8136) + %t95 = call ptr @lp_str_concat(ptr @.str8140, ptr %t94) + %t96 = call ptr @lp_str_concat(ptr %t95, ptr @.str8141) %t97 = call ptr @fn_emit_bind(ptr %t96) - %t98 = call ptr @fn_val(ptr %t97, ptr @.str8137) + %t98 = call ptr @fn_val(ptr %t97, ptr @.str8142) store ptr %t98, ptr %retval br label %ret ifend29: %t99 = load ptr, ptr %t38 - %t100 = call i32 @lp_str_eq(ptr %t99, ptr @.str8138) + %t100 = call i32 @lp_str_eq(ptr %t99, ptr @.str8143) %t101 = icmp ne i32 %t100, 0 br i1 %t101, label %then30, label %ifend32 then30: @@ -87629,33 +87785,33 @@ then30: %t117 = load ptr, ptr %t116 %t118 = call ptr @fn_emit_expr(ptr %t117) store ptr %t118, ptr %t119 - call void @fn_emit(ptr @.str8139) + call void @fn_emit(ptr @.str8144) %t120 = load ptr, ptr %t110 %t121 = getelementptr inbounds %Cmp_Val, ptr %t120, i32 0, i32 0 %t122 = load ptr, ptr %t121 call void @fn_emit(ptr %t122) - call void @fn_emit(ptr @.str8140) + call void @fn_emit(ptr @.str8145) %t123 = load ptr, ptr %t119 %t124 = getelementptr inbounds %Cmp_Val, ptr %t123, i32 0, i32 0 %t125 = load ptr, ptr %t124 call void @fn_emit(ptr %t125) - call void @fn_emit(ptr @.str8141) - %t126 = call ptr @fn_val(ptr @.str8142, ptr @.str8143) + call void @fn_emit(ptr @.str8146) + %t126 = call ptr @fn_val(ptr @.str8147, ptr @.str8148) store ptr %t126, ptr %retval br label %ret ifend32: %t127 = load ptr, ptr %t38 - %t128 = call i32 @lp_str_eq(ptr %t127, ptr @.str8144) + %t128 = call i32 @lp_str_eq(ptr %t127, ptr @.str8149) %t129 = icmp ne i32 %t128, 0 br i1 %t129, label %then33, label %ifend35 then33: - call void @fn_emit(ptr @.str8145) - %t130 = call ptr @fn_val(ptr @.str8146, ptr @.str8147) + call void @fn_emit(ptr @.str8150) + %t130 = call ptr @fn_val(ptr @.str8151, ptr @.str8152) store ptr %t130, ptr %retval br label %ret ifend35: %t131 = load ptr, ptr %t38 - %t132 = call i32 @lp_str_eq(ptr %t131, ptr @.str8148) + %t132 = call i32 @lp_str_eq(ptr %t131, ptr @.str8153) %t133 = icmp ne i32 %t132, 0 br i1 %t133, label %then36, label %ifend38 then36: @@ -87680,20 +87836,20 @@ then36: %t152 = load ptr, ptr %t142 %t153 = getelementptr inbounds %Cmp_Val, ptr %t152, i32 0, i32 0 %t154 = load ptr, ptr %t153 - %t155 = call ptr @lp_str_concat(ptr @.str8149, ptr %t154) - %t156 = call ptr @lp_str_concat(ptr %t155, ptr @.str8150) + %t155 = call ptr @lp_str_concat(ptr @.str8154, ptr %t154) + %t156 = call ptr @lp_str_concat(ptr %t155, ptr @.str8155) %t157 = load ptr, ptr %t151 %t158 = getelementptr inbounds %Cmp_Val, ptr %t157, i32 0, i32 0 %t159 = load ptr, ptr %t158 %t160 = call ptr @lp_str_concat(ptr %t156, ptr %t159) - %t161 = call ptr @lp_str_concat(ptr %t160, ptr @.str8151) + %t161 = call ptr @lp_str_concat(ptr %t160, ptr @.str8156) %t162 = call ptr @fn_emit_bind(ptr %t161) - %t163 = call ptr @fn_val(ptr %t162, ptr @.str8152) + %t163 = call ptr @fn_val(ptr %t162, ptr @.str8157) store ptr %t163, ptr %retval br label %ret ifend38: %t164 = load ptr, ptr %t38 - %t165 = call i32 @lp_str_eq(ptr %t164, ptr @.str8153) + %t165 = call i32 @lp_str_eq(ptr %t164, ptr @.str8158) %t166 = icmp ne i32 %t165, 0 br i1 %t166, label %then39, label %ifend41 then39: @@ -87724,28 +87880,28 @@ then39: %t191 = load ptr, ptr %t190 %t192 = call ptr @fn_emit_expr(ptr %t191) store ptr %t192, ptr %t193 - call void @fn_emit(ptr @.str8154) + call void @fn_emit(ptr @.str8159) %t194 = load ptr, ptr %t175 %t195 = getelementptr inbounds %Cmp_Val, ptr %t194, i32 0, i32 0 %t196 = load ptr, ptr %t195 call void @fn_emit(ptr %t196) - call void @fn_emit(ptr @.str8155) + call void @fn_emit(ptr @.str8160) %t197 = load ptr, ptr %t184 %t198 = getelementptr inbounds %Cmp_Val, ptr %t197, i32 0, i32 0 %t199 = load ptr, ptr %t198 call void @fn_emit(ptr %t199) - call void @fn_emit(ptr @.str8156) + call void @fn_emit(ptr @.str8161) %t200 = load ptr, ptr %t193 %t201 = getelementptr inbounds %Cmp_Val, ptr %t200, i32 0, i32 0 %t202 = load ptr, ptr %t201 call void @fn_emit(ptr %t202) - call void @fn_emit(ptr @.str8157) - %t203 = call ptr @fn_val(ptr @.str8158, ptr @.str8159) + call void @fn_emit(ptr @.str8162) + %t203 = call ptr @fn_val(ptr @.str8163, ptr @.str8164) store ptr %t203, ptr %retval br label %ret ifend41: %t204 = load ptr, ptr %t38 - %t205 = call i32 @lp_str_eq(ptr %t204, ptr @.str8160) + %t205 = call i32 @lp_str_eq(ptr %t204, ptr @.str8165) %t206 = icmp ne i32 %t205, 0 br i1 %t206, label %then42, label %ifend44 then42: @@ -87761,15 +87917,15 @@ then42: %t216 = load ptr, ptr %t215 %t217 = getelementptr inbounds %Cmp_Val, ptr %t216, i32 0, i32 0 %t218 = load ptr, ptr %t217 - %t219 = call ptr @lp_str_concat(ptr @.str8161, ptr %t218) - %t220 = call ptr @lp_str_concat(ptr %t219, ptr @.str8162) + %t219 = call ptr @lp_str_concat(ptr @.str8166, ptr %t218) + %t220 = call ptr @lp_str_concat(ptr %t219, ptr @.str8167) %t221 = call ptr @fn_emit_bind(ptr %t220) - %t222 = call ptr @fn_val(ptr %t221, ptr @.str8163) + %t222 = call ptr @fn_val(ptr %t221, ptr @.str8168) store ptr %t222, ptr %retval br label %ret ifend44: %t223 = load ptr, ptr %t38 - %t224 = call i32 @lp_str_eq(ptr %t223, ptr @.str8164) + %t224 = call i32 @lp_str_eq(ptr %t223, ptr @.str8169) %t225 = icmp ne i32 %t224, 0 br i1 %t225, label %then45, label %ifend47 then45: @@ -87785,15 +87941,15 @@ then45: %t235 = load ptr, ptr %t234 %t236 = getelementptr inbounds %Cmp_Val, ptr %t235, i32 0, i32 0 %t237 = load ptr, ptr %t236 - %t238 = call ptr @lp_str_concat(ptr @.str8165, ptr %t237) - %t239 = call ptr @lp_str_concat(ptr %t238, ptr @.str8166) + %t238 = call ptr @lp_str_concat(ptr @.str8170, ptr %t237) + %t239 = call ptr @lp_str_concat(ptr %t238, ptr @.str8171) %t240 = call ptr @fn_emit_bind(ptr %t239) - %t241 = call ptr @fn_val(ptr %t240, ptr @.str8167) + %t241 = call ptr @fn_val(ptr %t240, ptr @.str8172) store ptr %t241, ptr %retval br label %ret ifend47: %t242 = load ptr, ptr %t38 - %t243 = call i32 @lp_str_eq(ptr %t242, ptr @.str8168) + %t243 = call i32 @lp_str_eq(ptr %t242, ptr @.str8173) %t244 = icmp ne i32 %t243, 0 br i1 %t244, label %then48, label %ifend50 then48: @@ -87815,23 +87971,23 @@ then48: %t260 = load ptr, ptr %t259 %t261 = call ptr @fn_emit_expr(ptr %t260) store ptr %t261, ptr %t262 - call void @fn_emit(ptr @.str8169) + call void @fn_emit(ptr @.str8174) %t263 = load ptr, ptr %t253 %t264 = getelementptr inbounds %Cmp_Val, ptr %t263, i32 0, i32 0 %t265 = load ptr, ptr %t264 call void @fn_emit(ptr %t265) - call void @fn_emit(ptr @.str8170) + call void @fn_emit(ptr @.str8175) %t266 = load ptr, ptr %t262 %t267 = getelementptr inbounds %Cmp_Val, ptr %t266, i32 0, i32 0 %t268 = load ptr, ptr %t267 call void @fn_emit(ptr %t268) - call void @fn_emit(ptr @.str8171) - %t269 = call ptr @fn_val(ptr @.str8172, ptr @.str8173) + call void @fn_emit(ptr @.str8176) + %t269 = call ptr @fn_val(ptr @.str8177, ptr @.str8178) store ptr %t269, ptr %retval br label %ret ifend50: %t270 = load ptr, ptr %t38 - %t271 = call i32 @lp_str_eq(ptr %t270, ptr @.str8174) + %t271 = call i32 @lp_str_eq(ptr %t270, ptr @.str8179) %t272 = icmp ne i32 %t271, 0 br i1 %t272, label %then51, label %ifend53 then51: @@ -87847,75 +88003,75 @@ then51: %t282 = load ptr, ptr %t281 %t283 = getelementptr inbounds %Cmp_Val, ptr %t282, i32 0, i32 0 %t284 = load ptr, ptr %t283 - %t285 = call ptr @lp_str_concat(ptr @.str8175, ptr %t284) - %t286 = call ptr @lp_str_concat(ptr %t285, ptr @.str8176) + %t285 = call ptr @lp_str_concat(ptr @.str8180, ptr %t284) + %t286 = call ptr @lp_str_concat(ptr %t285, ptr @.str8181) %t287 = call ptr @fn_emit_bind(ptr %t286) - %t288 = call ptr @fn_val(ptr %t287, ptr @.str8177) + %t288 = call ptr @fn_val(ptr %t287, ptr @.str8182) store ptr %t288, ptr %retval br label %ret ifend53: %t289 = load ptr, ptr %t38 - %t290 = call i32 @lp_str_eq(ptr %t289, ptr @.str8178) + %t290 = call i32 @lp_str_eq(ptr %t289, ptr @.str8183) %t291 = icmp ne i32 %t290, 0 br i1 %t291, label %then54, label %ifend56 then54: - %t292 = call ptr @fn_emit_bind(ptr @.str8179) + %t292 = call ptr @fn_emit_bind(ptr @.str8184) store ptr %t292, ptr %t293 %t294 = load ptr, ptr %t293 - %t295 = call ptr @lp_str_concat(ptr @.str8180, ptr %t294) - %t296 = call ptr @lp_str_concat(ptr %t295, ptr @.str8181) + %t295 = call ptr @lp_str_concat(ptr @.str8185, ptr %t294) + %t296 = call ptr @lp_str_concat(ptr %t295, ptr @.str8186) %t297 = call ptr @fn_emit_bind(ptr %t296) store ptr %t297, ptr %t298 %t299 = load ptr, ptr %t298 - %t300 = call ptr @lp_str_concat(ptr @.str8182, ptr %t299) - %t301 = call ptr @lp_str_concat(ptr %t300, ptr @.str8183) + %t300 = call ptr @lp_str_concat(ptr @.str8187, ptr %t299) + %t301 = call ptr @lp_str_concat(ptr %t300, ptr @.str8188) %t302 = call ptr @fn_emit_bind(ptr %t301) - %t303 = call ptr @fn_val(ptr %t302, ptr @.str8184) + %t303 = call ptr @fn_val(ptr %t302, ptr @.str8189) store ptr %t303, ptr %retval br label %ret ifend56: %t304 = load ptr, ptr %t38 - %t305 = call i32 @lp_str_eq(ptr %t304, ptr @.str8185) + %t305 = call i32 @lp_str_eq(ptr %t304, ptr @.str8190) %t306 = icmp ne i32 %t305, 0 br i1 %t306, label %then57, label %ifend59 then57: - %t307 = call ptr @fn_emit_bind(ptr @.str8186) - %t308 = call ptr @fn_val(ptr %t307, ptr @.str8187) + %t307 = call ptr @fn_emit_bind(ptr @.str8191) + %t308 = call ptr @fn_val(ptr %t307, ptr @.str8192) store ptr %t308, ptr %retval br label %ret ifend59: %t309 = load ptr, ptr %t38 - %t310 = call i32 @lp_str_eq(ptr %t309, ptr @.str8188) + %t310 = call i32 @lp_str_eq(ptr %t309, ptr @.str8193) %t311 = icmp ne i32 %t310, 0 br i1 %t311, label %then60, label %ifend62 then60: - call void @fn_emit(ptr @.str8189) - %t312 = call ptr @fn_val(ptr @.str8190, ptr @.str8191) + call void @fn_emit(ptr @.str8194) + %t312 = call ptr @fn_val(ptr @.str8195, ptr @.str8196) store ptr %t312, ptr %retval br label %ret ifend62: %t313 = load ptr, ptr %t38 - %t314 = call i32 @lp_str_eq(ptr %t313, ptr @.str8192) + %t314 = call i32 @lp_str_eq(ptr %t313, ptr @.str8197) %t315 = icmp ne i32 %t314, 0 br i1 %t315, label %then63, label %ifend65 then63: - call void @fn_emit(ptr @.str8193) - %t316 = call ptr @fn_val(ptr @.str8194, ptr @.str8195) + call void @fn_emit(ptr @.str8198) + %t316 = call ptr @fn_val(ptr @.str8199, ptr @.str8200) store ptr %t316, ptr %retval br label %ret ifend65: %t317 = load ptr, ptr %t38 - %t318 = call i32 @lp_str_eq(ptr %t317, ptr @.str8196) + %t318 = call i32 @lp_str_eq(ptr %t317, ptr @.str8201) %t319 = icmp ne i32 %t318, 0 br i1 %t319, label %then66, label %ifend68 then66: - call void @fn_emit(ptr @.str8197) - %t320 = call ptr @fn_val(ptr @.str8198, ptr @.str8199) + call void @fn_emit(ptr @.str8202) + %t320 = call ptr @fn_val(ptr @.str8203, ptr @.str8204) store ptr %t320, ptr %retval br label %ret ifend68: %t321 = load ptr, ptr %t38 - %t322 = call i32 @lp_str_eq(ptr %t321, ptr @.str8200) + %t322 = call i32 @lp_str_eq(ptr %t321, ptr @.str8205) %t323 = icmp ne i32 %t322, 0 br i1 %t323, label %then69, label %ifend71 then69: @@ -87928,18 +88084,18 @@ then69: %t330 = load ptr, ptr %t329 %t331 = call ptr @fn_emit_expr(ptr %t330) store ptr %t331, ptr %t332 - call void @fn_emit(ptr @.str8201) + call void @fn_emit(ptr @.str8206) %t333 = load ptr, ptr %t332 %t334 = getelementptr inbounds %Cmp_Val, ptr %t333, i32 0, i32 0 %t335 = load ptr, ptr %t334 call void @fn_emit(ptr %t335) - call void @fn_emit(ptr @.str8202) - %t336 = call ptr @fn_val(ptr @.str8203, ptr @.str8204) + call void @fn_emit(ptr @.str8207) + %t336 = call ptr @fn_val(ptr @.str8208, ptr @.str8209) store ptr %t336, ptr %retval br label %ret ifend71: %t337 = load ptr, ptr %t38 - %t338 = call i32 @lp_str_eq(ptr %t337, ptr @.str8205) + %t338 = call i32 @lp_str_eq(ptr %t337, ptr @.str8210) %t339 = icmp ne i32 %t338, 0 br i1 %t339, label %then72, label %ifend74 then72: @@ -87952,24 +88108,24 @@ then72: %t346 = load ptr, ptr %t345 %t347 = call ptr @fn_emit_expr(ptr %t346) store ptr %t347, ptr %t348 - call void @fn_emit(ptr @.str8206) + call void @fn_emit(ptr @.str8211) %t349 = load ptr, ptr %t348 %t350 = getelementptr inbounds %Cmp_Val, ptr %t349, i32 0, i32 0 %t351 = load ptr, ptr %t350 call void @fn_emit(ptr %t351) - call void @fn_emit(ptr @.str8207) - %t352 = call ptr @fn_val(ptr @.str8208, ptr @.str8209) + call void @fn_emit(ptr @.str8212) + %t352 = call ptr @fn_val(ptr @.str8213, ptr @.str8214) store ptr %t352, ptr %retval br label %ret ifend74: %t354 = load ptr, ptr %t38 - %t355 = call i32 @lp_str_eq(ptr %t354, ptr @.str8210) + %t355 = call i32 @lp_str_eq(ptr %t354, ptr @.str8215) %t356 = icmp ne i32 %t355, 0 %t357 = zext i1 %t356 to i32 store i32 %t357, ptr %t353 br i1 %t356, label %sc75, label %scend76 sc75: - %t358 = call ptr @fn_find_extern(ptr @.str8211) + %t358 = call ptr @fn_find_extern(ptr @.str8216) %t359 = icmp eq ptr %t358, null %t360 = zext i1 %t359 to i32 %t361 = icmp ne i32 %t360, 0 @@ -88009,34 +88165,34 @@ then77: %t389 = load ptr, ptr %t388 %t390 = call ptr @fn_emit_expr(ptr %t389) store ptr %t390, ptr %t391 - call void @fn_emit(ptr @.str8212) + call void @fn_emit(ptr @.str8217) %t392 = load ptr, ptr %t373 %t393 = getelementptr inbounds %Cmp_Val, ptr %t392, i32 0, i32 0 %t394 = load ptr, ptr %t393 call void @fn_emit(ptr %t394) - call void @fn_emit(ptr @.str8213) + call void @fn_emit(ptr @.str8218) %t395 = load ptr, ptr %t382 %t396 = getelementptr inbounds %Cmp_Val, ptr %t395, i32 0, i32 0 %t397 = load ptr, ptr %t396 call void @fn_emit(ptr %t397) - call void @fn_emit(ptr @.str8214) + call void @fn_emit(ptr @.str8219) %t398 = load ptr, ptr %t391 %t399 = getelementptr inbounds %Cmp_Val, ptr %t398, i32 0, i32 0 %t400 = load ptr, ptr %t399 call void @fn_emit(ptr %t400) - call void @fn_emit(ptr @.str8215) - %t401 = call ptr @fn_val(ptr @.str8216, ptr @.str8217) + call void @fn_emit(ptr @.str8220) + %t401 = call ptr @fn_val(ptr @.str8221, ptr @.str8222) store ptr %t401, ptr %retval br label %ret ifend79: %t403 = load ptr, ptr %t38 - %t404 = call i32 @lp_str_eq(ptr %t403, ptr @.str8218) + %t404 = call i32 @lp_str_eq(ptr %t403, ptr @.str8223) %t405 = icmp ne i32 %t404, 0 %t406 = zext i1 %t405 to i32 store i32 %t406, ptr %t402 br i1 %t405, label %sc80, label %scend81 sc80: - %t407 = call ptr @fn_find_extern(ptr @.str8219) + %t407 = call ptr @fn_find_extern(ptr @.str8224) %t408 = icmp eq ptr %t407, null %t409 = zext i1 %t408 to i32 %t410 = icmp ne i32 %t409, 0 @@ -88070,20 +88226,20 @@ then82: %t432 = load ptr, ptr %t422 %t433 = getelementptr inbounds %Cmp_Val, ptr %t432, i32 0, i32 0 %t434 = load ptr, ptr %t433 - %t435 = call ptr @lp_str_concat(ptr @.str8220, ptr %t434) - %t436 = call ptr @lp_str_concat(ptr %t435, ptr @.str8221) + %t435 = call ptr @lp_str_concat(ptr @.str8225, ptr %t434) + %t436 = call ptr @lp_str_concat(ptr %t435, ptr @.str8226) %t437 = load ptr, ptr %t431 %t438 = getelementptr inbounds %Cmp_Val, ptr %t437, i32 0, i32 0 %t439 = load ptr, ptr %t438 %t440 = call ptr @lp_str_concat(ptr %t436, ptr %t439) - %t441 = call ptr @lp_str_concat(ptr %t440, ptr @.str8222) + %t441 = call ptr @lp_str_concat(ptr %t440, ptr @.str8227) %t442 = call ptr @fn_emit_bind(ptr %t441) - %t443 = call ptr @fn_val(ptr %t442, ptr @.str8223) + %t443 = call ptr @fn_val(ptr %t442, ptr @.str8228) store ptr %t443, ptr %retval br label %ret ifend84: %t444 = load ptr, ptr %t38 - %t445 = call i32 @lp_str_eq(ptr %t444, ptr @.str8224) + %t445 = call i32 @lp_str_eq(ptr %t444, ptr @.str8229) %t446 = icmp ne i32 %t445, 0 br i1 %t446, label %then85, label %ifend87 then85: @@ -88093,7 +88249,7 @@ then85: br label %ret ifend87: %t449 = load ptr, ptr %t38 - %t450 = call i32 @lp_str_eq(ptr %t449, ptr @.str8225) + %t450 = call i32 @lp_str_eq(ptr %t449, ptr @.str8230) %t451 = icmp ne i32 %t450, 0 br i1 %t451, label %then88, label %ifend90 then88: @@ -88103,7 +88259,7 @@ then88: br label %ret ifend90: %t454 = load ptr, ptr %t38 - %t455 = call i32 @lp_str_eq(ptr %t454, ptr @.str8226) + %t455 = call i32 @lp_str_eq(ptr %t454, ptr @.str8231) %t456 = icmp ne i32 %t455, 0 br i1 %t456, label %then91, label %ifend93 then91: @@ -88120,7 +88276,7 @@ then91: %t467 = getelementptr inbounds %Cmp_Val, ptr %t466, i32 0, i32 1 %t468 = load ptr, ptr %t467 %t469 = call ptr @fn_llty(ptr %t468) - %t470 = call i32 @lp_str_eq(ptr %t469, ptr @.str8227) + %t470 = call i32 @lp_str_eq(ptr %t469, ptr @.str8232) %t471 = icmp ne i32 %t470, 0 br i1 %t471, label %then94, label %ifend96 then94: @@ -88132,7 +88288,7 @@ ifend96: %t474 = getelementptr inbounds %Cmp_Val, ptr %t473, i32 0, i32 1 %t475 = load ptr, ptr %t474 %t476 = call ptr @fn_llty(ptr %t475) - %t477 = call i32 @lp_str_eq(ptr %t476, ptr @.str8228) + %t477 = call i32 @lp_str_eq(ptr %t476, ptr @.str8233) %t478 = icmp ne i32 %t477, 0 br i1 %t478, label %then97, label %ifend99 then97: @@ -88140,10 +88296,10 @@ then97: %t479 = load ptr, ptr %t465 %t480 = getelementptr inbounds %Cmp_Val, ptr %t479, i32 0, i32 0 %t481 = load ptr, ptr %t480 - %t482 = call ptr @lp_str_concat(ptr @.str8229, ptr %t481) - %t483 = call ptr @lp_str_concat(ptr %t482, ptr @.str8230) + %t482 = call ptr @lp_str_concat(ptr @.str8234, ptr %t481) + %t483 = call ptr @lp_str_concat(ptr %t482, ptr @.str8235) %t484 = call ptr @fn_emit_bind(ptr %t483) - %t485 = call ptr @fn_val(ptr %t484, ptr @.str8231) + %t485 = call ptr @fn_val(ptr %t484, ptr @.str8236) store ptr %t485, ptr %retval br label %ret ifend99: @@ -88151,15 +88307,15 @@ ifend99: %t486 = load ptr, ptr %t465 %t487 = getelementptr inbounds %Cmp_Val, ptr %t486, i32 0, i32 0 %t488 = load ptr, ptr %t487 - %t489 = call ptr @lp_str_concat(ptr @.str8232, ptr %t488) - %t490 = call ptr @lp_str_concat(ptr %t489, ptr @.str8233) + %t489 = call ptr @lp_str_concat(ptr @.str8237, ptr %t488) + %t490 = call ptr @lp_str_concat(ptr %t489, ptr @.str8238) %t491 = call ptr @fn_emit_bind(ptr %t490) - %t492 = call ptr @fn_val(ptr %t491, ptr @.str8234) + %t492 = call ptr @fn_val(ptr %t491, ptr @.str8239) store ptr %t492, ptr %retval br label %ret ifend93: %t493 = load ptr, ptr %t38 - %t494 = call i32 @lp_str_eq(ptr %t493, ptr @.str8235) + %t494 = call i32 @lp_str_eq(ptr %t493, ptr @.str8240) %t495 = icmp ne i32 %t494, 0 br i1 %t495, label %then100, label %ifend102 then100: @@ -88176,15 +88332,15 @@ then100: %t506 = getelementptr inbounds %Cmp_Val, ptr %t505, i32 0, i32 1 %t507 = load ptr, ptr %t506 %t508 = call ptr @fn_llty(ptr %t507) - %t509 = call i32 @lp_str_eq(ptr %t508, ptr @.str8236) + %t509 = call i32 @lp_str_eq(ptr %t508, ptr @.str8241) %t510 = icmp ne i32 %t509, 0 br i1 %t510, label %then103, label %else104 then103: %t511 = load ptr, ptr %t504 %t512 = getelementptr inbounds %Cmp_Val, ptr %t511, i32 0, i32 0 %t513 = load ptr, ptr %t512 - %t514 = call ptr @lp_str_concat(ptr %t513, ptr @.str8238) - %t515 = call ptr @lp_str_concat(ptr @.str8237, ptr %t514) + %t514 = call ptr @lp_str_concat(ptr %t513, ptr @.str8243) + %t515 = call ptr @lp_str_concat(ptr @.str8242, ptr %t514) call void @fn_emit(ptr %t515) br label %ifend105 else104: @@ -88192,34 +88348,34 @@ else104: %t517 = getelementptr inbounds %Cmp_Val, ptr %t516, i32 0, i32 1 %t518 = load ptr, ptr %t517 %t519 = call ptr @fn_llty(ptr %t518) - %t520 = call i32 @lp_str_eq(ptr %t519, ptr @.str8239) + %t520 = call i32 @lp_str_eq(ptr %t519, ptr @.str8244) %t521 = icmp ne i32 %t520, 0 br i1 %t521, label %then106, label %else107 then106: %t522 = load ptr, ptr %t504 %t523 = getelementptr inbounds %Cmp_Val, ptr %t522, i32 0, i32 0 %t524 = load ptr, ptr %t523 - %t525 = call ptr @lp_str_concat(ptr %t524, ptr @.str8241) - %t526 = call ptr @lp_str_concat(ptr @.str8240, ptr %t525) + %t525 = call ptr @lp_str_concat(ptr %t524, ptr @.str8246) + %t526 = call ptr @lp_str_concat(ptr @.str8245, ptr %t525) call void @fn_emit(ptr %t526) br label %ifend108 else107: %t527 = load ptr, ptr %t504 %t528 = getelementptr inbounds %Cmp_Val, ptr %t527, i32 0, i32 0 %t529 = load ptr, ptr %t528 - %t530 = call ptr @lp_str_concat(ptr %t529, ptr @.str8243) - %t531 = call ptr @lp_str_concat(ptr @.str8242, ptr %t530) + %t530 = call ptr @lp_str_concat(ptr %t529, ptr @.str8248) + %t531 = call ptr @lp_str_concat(ptr @.str8247, ptr %t530) call void @fn_emit(ptr %t531) br label %ifend108 ifend108: br label %ifend105 ifend105: - %t532 = call ptr @fn_val(ptr @.str8244, ptr @.str8245) + %t532 = call ptr @fn_val(ptr @.str8249, ptr @.str8250) store ptr %t532, ptr %retval br label %ret ifend102: %t533 = load ptr, ptr %t38 - %t534 = call i32 @lp_str_eq(ptr %t533, ptr @.str8246) + %t534 = call i32 @lp_str_eq(ptr %t533, ptr @.str8251) %t535 = icmp ne i32 %t534, 0 br i1 %t535, label %then109, label %ifend111 then109: @@ -88235,20 +88391,20 @@ then109: %t545 = load ptr, ptr %t544 %t546 = getelementptr inbounds %Cmp_Val, ptr %t545, i32 0, i32 0 %t547 = load ptr, ptr %t546 - %t548 = call ptr @lp_str_concat(ptr @.str8247, ptr %t547) - %t549 = call ptr @lp_str_concat(ptr %t548, ptr @.str8248) + %t548 = call ptr @lp_str_concat(ptr @.str8252, ptr %t547) + %t549 = call ptr @lp_str_concat(ptr %t548, ptr @.str8253) %t550 = call ptr @fn_emit_bind(ptr %t549) store ptr %t550, ptr %t551 %t552 = load ptr, ptr %t551 - %t553 = call ptr @lp_str_concat(ptr @.str8249, ptr %t552) - %t554 = call ptr @lp_str_concat(ptr %t553, ptr @.str8250) + %t553 = call ptr @lp_str_concat(ptr @.str8254, ptr %t552) + %t554 = call ptr @lp_str_concat(ptr %t553, ptr @.str8255) %t555 = call ptr @fn_emit_bind(ptr %t554) - %t556 = call ptr @fn_val(ptr %t555, ptr @.str8251) + %t556 = call ptr @fn_val(ptr %t555, ptr @.str8256) store ptr %t556, ptr %retval br label %ret ifend111: %t557 = load ptr, ptr %t38 - %t558 = call i32 @lp_str_eq(ptr %t557, ptr @.str8252) + %t558 = call i32 @lp_str_eq(ptr %t557, ptr @.str8257) %t559 = icmp ne i32 %t558, 0 br i1 %t559, label %then112, label %ifend114 then112: @@ -88264,25 +88420,25 @@ then112: %t569 = load ptr, ptr %t568 %t570 = getelementptr inbounds %Cmp_Val, ptr %t569, i32 0, i32 0 %t571 = load ptr, ptr %t570 - %t572 = call ptr @lp_str_concat(ptr @.str8253, ptr %t571) - %t573 = call ptr @lp_str_concat(ptr %t572, ptr @.str8254) + %t572 = call ptr @lp_str_concat(ptr @.str8258, ptr %t571) + %t573 = call ptr @lp_str_concat(ptr %t572, ptr @.str8259) %t574 = call ptr @fn_emit_bind(ptr %t573) store ptr %t574, ptr %t575 %t576 = load ptr, ptr %t575 - %t577 = call ptr @lp_str_concat(ptr @.str8255, ptr %t576) - %t578 = call ptr @lp_str_concat(ptr %t577, ptr @.str8256) + %t577 = call ptr @lp_str_concat(ptr @.str8260, ptr %t576) + %t578 = call ptr @lp_str_concat(ptr %t577, ptr @.str8261) %t579 = call ptr @fn_emit_bind(ptr %t578) store ptr %t579, ptr %t580 %t581 = load ptr, ptr %t580 - %t582 = call ptr @lp_str_concat(ptr @.str8257, ptr %t581) - %t583 = call ptr @lp_str_concat(ptr %t582, ptr @.str8258) + %t582 = call ptr @lp_str_concat(ptr @.str8262, ptr %t581) + %t583 = call ptr @lp_str_concat(ptr %t582, ptr @.str8263) %t584 = call ptr @fn_emit_bind(ptr %t583) - %t585 = call ptr @fn_val(ptr %t584, ptr @.str8259) + %t585 = call ptr @fn_val(ptr %t584, ptr @.str8264) store ptr %t585, ptr %retval br label %ret ifend114: %t586 = load ptr, ptr %t38 - %t587 = call i32 @lp_str_eq(ptr %t586, ptr @.str8260) + %t587 = call i32 @lp_str_eq(ptr %t586, ptr @.str8265) %t588 = icmp ne i32 %t587, 0 br i1 %t588, label %then115, label %ifend117 then115: @@ -88298,15 +88454,15 @@ then115: %t598 = load ptr, ptr %t597 %t599 = getelementptr inbounds %Cmp_Val, ptr %t598, i32 0, i32 0 %t600 = load ptr, ptr %t599 - %t601 = call ptr @lp_str_concat(ptr @.str8261, ptr %t600) - %t602 = call ptr @lp_str_concat(ptr %t601, ptr @.str8262) + %t601 = call ptr @lp_str_concat(ptr @.str8266, ptr %t600) + %t602 = call ptr @lp_str_concat(ptr %t601, ptr @.str8267) %t603 = call ptr @fn_emit_bind(ptr %t602) - %t604 = call ptr @fn_val(ptr %t603, ptr @.str8263) + %t604 = call ptr @fn_val(ptr %t603, ptr @.str8268) store ptr %t604, ptr %retval br label %ret ifend117: %t605 = load ptr, ptr %t38 - %t606 = call i32 @lp_str_eq(ptr %t605, ptr @.str8264) + %t606 = call i32 @lp_str_eq(ptr %t605, ptr @.str8269) %t607 = icmp ne i32 %t606, 0 br i1 %t607, label %then118, label %ifend120 then118: @@ -88322,15 +88478,15 @@ then118: %t617 = load ptr, ptr %t616 %t618 = getelementptr inbounds %Cmp_Val, ptr %t617, i32 0, i32 0 %t619 = load ptr, ptr %t618 - %t620 = call ptr @lp_str_concat(ptr @.str8265, ptr %t619) - %t621 = call ptr @lp_str_concat(ptr %t620, ptr @.str8266) + %t620 = call ptr @lp_str_concat(ptr @.str8270, ptr %t619) + %t621 = call ptr @lp_str_concat(ptr %t620, ptr @.str8271) %t622 = call ptr @fn_emit_bind(ptr %t621) - %t623 = call ptr @fn_val(ptr %t622, ptr @.str8267) + %t623 = call ptr @fn_val(ptr %t622, ptr @.str8272) store ptr %t623, ptr %retval br label %ret ifend120: %t624 = load ptr, ptr %t38 - %t625 = call i32 @lp_str_eq(ptr %t624, ptr @.str8268) + %t625 = call i32 @lp_str_eq(ptr %t624, ptr @.str8273) %t626 = icmp ne i32 %t625, 0 br i1 %t626, label %then121, label %ifend123 then121: @@ -88347,29 +88503,29 @@ then121: %t636 = load ptr, ptr %t635 %t637 = getelementptr inbounds %Cmp_Val, ptr %t636, i32 0, i32 0 %t638 = load ptr, ptr %t637 - %t639 = call ptr @lp_str_concat(ptr @.str8269, ptr %t638) - %t640 = call ptr @lp_str_concat(ptr %t639, ptr @.str8270) + %t639 = call ptr @lp_str_concat(ptr @.str8274, ptr %t638) + %t640 = call ptr @lp_str_concat(ptr %t639, ptr @.str8275) %t641 = call ptr @fn_emit_bind(ptr %t640) store ptr %t641, ptr %t642 %t643 = load ptr, ptr @g_g_src_name - %t644 = call ptr @lp_str_concat(ptr %t643, ptr @.str8271) + %t644 = call ptr @lp_str_concat(ptr %t643, ptr @.str8276) %t645 = load ptr, ptr %t0 %t646 = getelementptr inbounds %Cmp_Node, ptr %t645, i32 0, i32 8 %t647 = load i32, ptr %t646 %t648 = call ptr @fn_itoa(i32 %t647) %t649 = call ptr @lp_str_concat(ptr %t644, ptr %t648) - %t650 = call ptr @lp_str_concat(ptr %t649, ptr @.str8272) + %t650 = call ptr @lp_str_concat(ptr %t649, ptr @.str8277) %t651 = call ptr @fn_emit_str_const(ptr %t650) store ptr %t651, ptr %t652 %t653 = load ptr, ptr %t642 %t654 = load ptr, ptr %t652 - call void @fn_emit_expect_fail(ptr %t653, ptr %t654, ptr @.str8273, ptr @.str8274) - %t655 = call ptr @fn_val(ptr @.str8275, ptr @.str8276) + call void @fn_emit_expect_fail(ptr %t653, ptr %t654, ptr @.str8278, ptr @.str8279) + %t655 = call ptr @fn_val(ptr @.str8280, ptr @.str8281) store ptr %t655, ptr %retval br label %ret ifend123: %t656 = load ptr, ptr %t38 - %t657 = call i32 @lp_str_eq(ptr %t656, ptr @.str8277) + %t657 = call i32 @lp_str_eq(ptr %t656, ptr @.str8282) %t658 = icmp ne i32 %t657, 0 br i1 %t658, label %then124, label %ifend126 then124: @@ -88395,8 +88551,8 @@ then124: %t677 = load ptr, ptr %t667 %t678 = getelementptr inbounds %Cmp_Val, ptr %t677, i32 0, i32 0 %t679 = load ptr, ptr %t678 - %t680 = call ptr @lp_str_concat(ptr @.str8278, ptr %t679) - %t681 = call ptr @lp_str_concat(ptr %t680, ptr @.str8279) + %t680 = call ptr @lp_str_concat(ptr @.str8283, ptr %t679) + %t681 = call ptr @lp_str_concat(ptr %t680, ptr @.str8284) %t682 = load ptr, ptr %t676 %t683 = getelementptr inbounds %Cmp_Val, ptr %t682, i32 0, i32 0 %t684 = load ptr, ptr %t683 @@ -88404,13 +88560,13 @@ then124: %t686 = call ptr @fn_emit_bind(ptr %t685) store ptr %t686, ptr %t687 %t688 = load ptr, ptr @g_g_src_name - %t689 = call ptr @lp_str_concat(ptr %t688, ptr @.str8280) + %t689 = call ptr @lp_str_concat(ptr %t688, ptr @.str8285) %t690 = load ptr, ptr %t0 %t691 = getelementptr inbounds %Cmp_Node, ptr %t690, i32 0, i32 8 %t692 = load i32, ptr %t691 %t693 = call ptr @fn_itoa(i32 %t692) %t694 = call ptr @lp_str_concat(ptr %t689, ptr %t693) - %t695 = call ptr @lp_str_concat(ptr %t694, ptr @.str8281) + %t695 = call ptr @lp_str_concat(ptr %t694, ptr @.str8286) %t696 = call ptr @fn_emit_str_const(ptr %t695) store ptr %t696, ptr %t697 %t698 = load ptr, ptr %t687 @@ -88422,12 +88578,12 @@ then124: %t704 = getelementptr inbounds %Cmp_Val, ptr %t703, i32 0, i32 0 %t705 = load ptr, ptr %t704 call void @fn_emit_expect_fail(ptr %t698, ptr %t699, ptr %t702, ptr %t705) - %t706 = call ptr @fn_val(ptr @.str8282, ptr @.str8283) + %t706 = call ptr @fn_val(ptr @.str8287, ptr @.str8288) store ptr %t706, ptr %retval br label %ret ifend126: %t707 = load ptr, ptr %t38 - %t708 = call i32 @lp_str_eq(ptr %t707, ptr @.str8284) + %t708 = call i32 @lp_str_eq(ptr %t707, ptr @.str8289) %t709 = icmp ne i32 %t708, 0 br i1 %t709, label %then127, label %ifend129 then127: @@ -88462,8 +88618,8 @@ then127: %t737 = load ptr, ptr %t718 %t738 = getelementptr inbounds %Cmp_Val, ptr %t737, i32 0, i32 0 %t739 = load ptr, ptr %t738 - %t740 = call ptr @lp_str_concat(ptr @.str8285, ptr %t739) - %t741 = call ptr @lp_str_concat(ptr %t740, ptr @.str8286) + %t740 = call ptr @lp_str_concat(ptr @.str8290, ptr %t739) + %t741 = call ptr @lp_str_concat(ptr %t740, ptr @.str8291) %t742 = load ptr, ptr %t727 %t743 = getelementptr inbounds %Cmp_Val, ptr %t742, i32 0, i32 0 %t744 = load ptr, ptr %t743 @@ -88471,27 +88627,27 @@ then127: %t746 = call ptr @fn_emit_bind(ptr %t745) store ptr %t746, ptr %t747 %t748 = load ptr, ptr %t747 - %t749 = call ptr @lp_str_concat(ptr @.str8287, ptr %t748) + %t749 = call ptr @lp_str_concat(ptr @.str8292, ptr %t748) %t750 = call ptr @fn_emit_bind(ptr %t749) store ptr %t750, ptr %t751 %t752 = load ptr, ptr %t747 - %t753 = call ptr @lp_str_concat(ptr @.str8288, ptr %t752) - %t754 = call ptr @lp_str_concat(ptr %t753, ptr @.str8289) + %t753 = call ptr @lp_str_concat(ptr @.str8293, ptr %t752) + %t754 = call ptr @lp_str_concat(ptr %t753, ptr @.str8294) %t755 = call ptr @fn_emit_bind(ptr %t754) store ptr %t755, ptr %t756 %t757 = load ptr, ptr %t756 - %t758 = call ptr @lp_str_concat(ptr @.str8290, ptr %t757) - %t759 = call ptr @lp_str_concat(ptr %t758, ptr @.str8291) + %t758 = call ptr @lp_str_concat(ptr @.str8295, ptr %t757) + %t759 = call ptr @lp_str_concat(ptr %t758, ptr @.str8296) %t760 = load ptr, ptr %t751 %t761 = call ptr @lp_str_concat(ptr %t759, ptr %t760) - %t762 = call ptr @lp_str_concat(ptr %t761, ptr @.str8292) + %t762 = call ptr @lp_str_concat(ptr %t761, ptr @.str8297) %t763 = load ptr, ptr %t747 %t764 = call ptr @lp_str_concat(ptr %t762, ptr %t763) %t765 = call ptr @fn_emit_bind(ptr %t764) store ptr %t765, ptr %t766 %t767 = load ptr, ptr %t766 - %t768 = call ptr @lp_str_concat(ptr @.str8293, ptr %t767) - %t769 = call ptr @lp_str_concat(ptr %t768, ptr @.str8294) + %t768 = call ptr @lp_str_concat(ptr @.str8298, ptr %t767) + %t769 = call ptr @lp_str_concat(ptr %t768, ptr @.str8299) %t770 = load ptr, ptr %t736 %t771 = getelementptr inbounds %Cmp_Val, ptr %t770, i32 0, i32 0 %t772 = load ptr, ptr %t771 @@ -88499,13 +88655,13 @@ then127: %t774 = call ptr @fn_emit_bind(ptr %t773) store ptr %t774, ptr %t775 %t776 = load ptr, ptr @g_g_src_name - %t777 = call ptr @lp_str_concat(ptr %t776, ptr @.str8295) + %t777 = call ptr @lp_str_concat(ptr %t776, ptr @.str8300) %t778 = load ptr, ptr %t0 %t779 = getelementptr inbounds %Cmp_Node, ptr %t778, i32 0, i32 8 %t780 = load i32, ptr %t779 %t781 = call ptr @fn_itoa(i32 %t780) %t782 = call ptr @lp_str_concat(ptr %t777, ptr %t781) - %t783 = call ptr @lp_str_concat(ptr %t782, ptr @.str8296) + %t783 = call ptr @lp_str_concat(ptr %t782, ptr @.str8301) %t784 = call ptr @fn_emit_str_const(ptr %t783) store ptr %t784, ptr %t785 %t786 = load ptr, ptr %t775 @@ -88517,12 +88673,12 @@ then127: %t792 = getelementptr inbounds %Cmp_Val, ptr %t791, i32 0, i32 0 %t793 = load ptr, ptr %t792 call void @fn_emit_expect_fail(ptr %t786, ptr %t787, ptr %t790, ptr %t793) - %t794 = call ptr @fn_val(ptr @.str8297, ptr @.str8298) + %t794 = call ptr @fn_val(ptr @.str8302, ptr @.str8303) store ptr %t794, ptr %retval br label %ret ifend129: %t795 = load ptr, ptr %t38 - %t796 = call i32 @lp_str_eq(ptr %t795, ptr @.str8299) + %t796 = call i32 @lp_str_eq(ptr %t795, ptr @.str8304) %t797 = icmp ne i32 %t796, 0 br i1 %t797, label %then130, label %ifend132 then130: @@ -88537,37 +88693,37 @@ then130: %t805 = call ptr @fn_emit_expr(ptr %t804) store ptr %t805, ptr %t806 %t807 = load ptr, ptr @g_g_src_name - %t808 = call ptr @lp_str_concat(ptr %t807, ptr @.str8300) + %t808 = call ptr @lp_str_concat(ptr %t807, ptr @.str8305) %t809 = load ptr, ptr %t0 %t810 = getelementptr inbounds %Cmp_Node, ptr %t809, i32 0, i32 8 %t811 = load i32, ptr %t810 %t812 = call ptr @fn_itoa(i32 %t811) %t813 = call ptr @lp_str_concat(ptr %t808, ptr %t812) - %t814 = call ptr @lp_str_concat(ptr %t813, ptr @.str8301) + %t814 = call ptr @lp_str_concat(ptr %t813, ptr @.str8306) %t815 = call ptr @fn_emit_str_const(ptr %t814) store ptr %t815, ptr %t816 - %t817 = call ptr @fn_emit_bind(ptr @.str8302) + %t817 = call ptr @fn_emit_bind(ptr @.str8307) store ptr %t817, ptr %t818 %t819 = load ptr, ptr %t818 - %t820 = call ptr @lp_str_concat(ptr @.str8303, ptr %t819) - %t821 = call ptr @lp_str_concat(ptr %t820, ptr @.str8304) + %t820 = call ptr @lp_str_concat(ptr @.str8308, ptr %t819) + %t821 = call ptr @lp_str_concat(ptr %t820, ptr @.str8309) %t822 = load ptr, ptr %t816 %t823 = call ptr @lp_str_concat(ptr %t821, ptr %t822) - %t824 = call ptr @lp_str_concat(ptr %t823, ptr @.str8305) + %t824 = call ptr @lp_str_concat(ptr %t823, ptr @.str8310) %t825 = load ptr, ptr %t806 %t826 = getelementptr inbounds %Cmp_Val, ptr %t825, i32 0, i32 0 %t827 = load ptr, ptr %t826 %t828 = call ptr @lp_str_concat(ptr %t824, ptr %t827) - %t829 = call ptr @lp_str_concat(ptr %t828, ptr @.str8306) + %t829 = call ptr @lp_str_concat(ptr %t828, ptr @.str8311) call void @fn_emit(ptr %t829) - call void @fn_emit(ptr @.str8307) + call void @fn_emit(ptr @.str8312) store i32 1, ptr @g_g_term - %t830 = call ptr @fn_val(ptr @.str8308, ptr @.str8309) + %t830 = call ptr @fn_val(ptr @.str8313, ptr @.str8314) store ptr %t830, ptr %retval br label %ret ifend132: %t831 = load ptr, ptr %t38 - %t832 = call i32 @lp_str_eq(ptr %t831, ptr @.str8310) + %t832 = call i32 @lp_str_eq(ptr %t831, ptr @.str8315) %t833 = icmp ne i32 %t832, 0 br i1 %t833, label %then133, label %ifend135 then133: @@ -88584,26 +88740,26 @@ then133: %t843 = load ptr, ptr %t842 %t844 = getelementptr inbounds %Cmp_Val, ptr %t843, i32 0, i32 0 %t845 = load ptr, ptr %t844 - %t846 = call ptr @lp_str_concat(ptr @.str8311, ptr %t845) - %t847 = call ptr @lp_str_concat(ptr %t846, ptr @.str8312) + %t846 = call ptr @lp_str_concat(ptr @.str8316, ptr %t845) + %t847 = call ptr @lp_str_concat(ptr %t846, ptr @.str8317) %t848 = call ptr @fn_emit_bind(ptr %t847) store ptr %t848, ptr %t849 - %t850 = call ptr @fn_lbl(ptr @.str8313) + %t850 = call ptr @fn_lbl(ptr @.str8318) store ptr %t850, ptr %t851 - %t852 = call ptr @fn_lbl(ptr @.str8314) + %t852 = call ptr @fn_lbl(ptr @.str8319) store ptr %t852, ptr %t853 %t854 = load ptr, ptr %t849 - %t855 = call ptr @lp_str_concat(ptr @.str8315, ptr %t854) - %t856 = call ptr @lp_str_concat(ptr %t855, ptr @.str8316) + %t855 = call ptr @lp_str_concat(ptr @.str8320, ptr %t854) + %t856 = call ptr @lp_str_concat(ptr %t855, ptr @.str8321) %t857 = load ptr, ptr %t851 %t858 = call ptr @lp_str_concat(ptr %t856, ptr %t857) - %t859 = call ptr @lp_str_concat(ptr %t858, ptr @.str8317) + %t859 = call ptr @lp_str_concat(ptr %t858, ptr @.str8322) %t860 = load ptr, ptr %t853 %t861 = call ptr @lp_str_concat(ptr %t859, ptr %t860) - %t862 = call ptr @lp_str_concat(ptr %t861, ptr @.str8318) + %t862 = call ptr @lp_str_concat(ptr %t861, ptr @.str8323) call void @fn_emit(ptr %t862) %t863 = load ptr, ptr %t853 - %t864 = call ptr @lp_str_concat(ptr %t863, ptr @.str8319) + %t864 = call ptr @lp_str_concat(ptr %t863, ptr @.str8324) call void @fn_emit(ptr %t864) %t865 = load ptr, ptr %t0 %t866 = getelementptr inbounds %Cmp_Node, ptr %t865, i32 0, i32 7 @@ -88615,45 +88771,45 @@ then133: %t872 = call ptr @fn_emit_expr(ptr %t871) store ptr %t872, ptr %t873 %t874 = load ptr, ptr @g_g_src_name - %t875 = call ptr @lp_str_concat(ptr %t874, ptr @.str8320) + %t875 = call ptr @lp_str_concat(ptr %t874, ptr @.str8325) %t876 = load ptr, ptr %t0 %t877 = getelementptr inbounds %Cmp_Node, ptr %t876, i32 0, i32 8 %t878 = load i32, ptr %t877 %t879 = call ptr @fn_itoa(i32 %t878) %t880 = call ptr @lp_str_concat(ptr %t875, ptr %t879) - %t881 = call ptr @lp_str_concat(ptr %t880, ptr @.str8321) + %t881 = call ptr @lp_str_concat(ptr %t880, ptr @.str8326) %t882 = call ptr @fn_emit_str_const(ptr %t881) store ptr %t882, ptr %t883 - %t884 = call ptr @fn_emit_bind(ptr @.str8322) + %t884 = call ptr @fn_emit_bind(ptr @.str8327) store ptr %t884, ptr %t885 %t886 = load ptr, ptr %t885 - %t887 = call ptr @lp_str_concat(ptr @.str8323, ptr %t886) - %t888 = call ptr @lp_str_concat(ptr %t887, ptr @.str8324) + %t887 = call ptr @lp_str_concat(ptr @.str8328, ptr %t886) + %t888 = call ptr @lp_str_concat(ptr %t887, ptr @.str8329) %t889 = load ptr, ptr %t883 %t890 = call ptr @lp_str_concat(ptr %t888, ptr %t889) - %t891 = call ptr @lp_str_concat(ptr %t890, ptr @.str8325) + %t891 = call ptr @lp_str_concat(ptr %t890, ptr @.str8330) %t892 = load ptr, ptr %t873 %t893 = getelementptr inbounds %Cmp_Val, ptr %t892, i32 0, i32 0 %t894 = load ptr, ptr %t893 %t895 = call ptr @lp_str_concat(ptr %t891, ptr %t894) - %t896 = call ptr @lp_str_concat(ptr %t895, ptr @.str8326) + %t896 = call ptr @lp_str_concat(ptr %t895, ptr @.str8331) call void @fn_emit(ptr %t896) - call void @fn_emit(ptr @.str8327) + call void @fn_emit(ptr @.str8332) %t897 = load ptr, ptr %t851 - %t898 = call ptr @lp_str_concat(ptr %t897, ptr @.str8328) + %t898 = call ptr @lp_str_concat(ptr %t897, ptr @.str8333) call void @fn_emit(ptr %t898) - %t899 = call ptr @fn_val(ptr @.str8329, ptr @.str8330) + %t899 = call ptr @fn_val(ptr @.str8334, ptr @.str8335) store ptr %t899, ptr %retval br label %ret ifend135: %t901 = load ptr, ptr %t38 - %t902 = call i32 @lp_str_eq(ptr %t901, ptr @.str8331) + %t902 = call i32 @lp_str_eq(ptr %t901, ptr @.str8336) %t903 = icmp ne i32 %t902, 0 %t904 = zext i1 %t903 to i32 store i32 %t904, ptr %t900 br i1 %t903, label %sc136, label %scend137 sc136: - %t905 = call ptr @fn_find_fn(ptr @.str8332) + %t905 = call ptr @fn_find_fn(ptr @.str8337) %t906 = icmp eq ptr %t905, null %t907 = zext i1 %t906 to i32 %t908 = icmp ne i32 %t907, 0 @@ -88675,52 +88831,52 @@ then138: %t918 = load ptr, ptr %t917 %t919 = call ptr @fn_emit_expr(ptr %t918) store ptr %t919, ptr %t920 - %t921 = call ptr @fn_emit_bind(ptr @.str8333) + %t921 = call ptr @fn_emit_bind(ptr @.str8338) store ptr %t921, ptr %t922 %t923 = load ptr, ptr %t922 - %t924 = call ptr @lp_str_concat(ptr @.str8334, ptr %t923) - %t925 = call ptr @lp_str_concat(ptr %t924, ptr @.str8335) + %t924 = call ptr @lp_str_concat(ptr @.str8339, ptr %t923) + %t925 = call ptr @lp_str_concat(ptr %t924, ptr @.str8340) %t926 = call ptr @fn_emit_bind(ptr %t925) store ptr %t926, ptr %t927 %t928 = load ptr, ptr %t927 - %t929 = call ptr @lp_str_concat(ptr @.str8336, ptr %t928) - %t930 = call ptr @lp_str_concat(ptr %t929, ptr @.str8337) + %t929 = call ptr @lp_str_concat(ptr @.str8341, ptr %t928) + %t930 = call ptr @lp_str_concat(ptr %t929, ptr @.str8342) call void @fn_emit(ptr %t930) %t931 = load ptr, ptr %t922 - %t932 = call ptr @lp_str_concat(ptr @.str8338, ptr %t931) - %t933 = call ptr @lp_str_concat(ptr %t932, ptr @.str8339) + %t932 = call ptr @lp_str_concat(ptr @.str8343, ptr %t931) + %t933 = call ptr @lp_str_concat(ptr %t932, ptr @.str8344) %t934 = call ptr @fn_emit_bind(ptr %t933) store ptr %t934, ptr %t935 %t936 = load ptr, ptr %t920 - %t937 = call ptr @fn_coerce_code(ptr %t936, ptr @.str8341) - %t938 = call ptr @lp_str_concat(ptr @.str8340, ptr %t937) - %t939 = call ptr @lp_str_concat(ptr %t938, ptr @.str8342) + %t937 = call ptr @fn_coerce_code(ptr %t936, ptr @.str8346) + %t938 = call ptr @lp_str_concat(ptr @.str8345, ptr %t937) + %t939 = call ptr @lp_str_concat(ptr %t938, ptr @.str8347) %t940 = load ptr, ptr %t935 %t941 = call ptr @lp_str_concat(ptr %t939, ptr %t940) - %t942 = call ptr @lp_str_concat(ptr %t941, ptr @.str8343) + %t942 = call ptr @lp_str_concat(ptr %t941, ptr @.str8348) call void @fn_emit(ptr %t942) %t943 = load ptr, ptr %t922 - %t944 = call ptr @lp_str_concat(ptr @.str8344, ptr %t943) - %t945 = call ptr @lp_str_concat(ptr %t944, ptr @.str8345) + %t944 = call ptr @lp_str_concat(ptr @.str8349, ptr %t943) + %t945 = call ptr @lp_str_concat(ptr %t944, ptr @.str8350) %t946 = call ptr @fn_emit_bind(ptr %t945) store ptr %t946, ptr %t947 %t948 = load ptr, ptr %t947 - %t949 = call ptr @lp_str_concat(ptr @.str8346, ptr %t948) - %t950 = call ptr @lp_str_concat(ptr %t949, ptr @.str8347) + %t949 = call ptr @lp_str_concat(ptr @.str8351, ptr %t948) + %t950 = call ptr @lp_str_concat(ptr %t949, ptr @.str8352) call void @fn_emit(ptr %t950) %t951 = load ptr, ptr %t922 - %t952 = call ptr @fn_val(ptr %t951, ptr @.str8348) + %t952 = call ptr @fn_val(ptr %t951, ptr @.str8353) store ptr %t952, ptr %retval br label %ret ifend140: %t954 = load ptr, ptr %t38 - %t955 = call i32 @lp_str_eq(ptr %t954, ptr @.str8349) + %t955 = call i32 @lp_str_eq(ptr %t954, ptr @.str8354) %t956 = icmp ne i32 %t955, 0 %t957 = zext i1 %t956 to i32 store i32 %t957, ptr %t953 br i1 %t956, label %sc141, label %scend142 sc141: - %t958 = call ptr @fn_find_fn(ptr @.str8350) + %t958 = call ptr @fn_find_fn(ptr @.str8355) %t959 = icmp eq ptr %t958, null %t960 = zext i1 %t959 to i32 %t961 = icmp ne i32 %t960, 0 @@ -88742,53 +88898,53 @@ then143: %t971 = load ptr, ptr %t970 %t972 = call ptr @fn_emit_expr(ptr %t971) store ptr %t972, ptr %t973 - %t974 = call ptr @fn_emit_bind(ptr @.str8351) + %t974 = call ptr @fn_emit_bind(ptr @.str8356) store ptr %t974, ptr %t975 %t976 = load ptr, ptr %t975 - %t977 = call ptr @lp_str_concat(ptr @.str8352, ptr %t976) - %t978 = call ptr @lp_str_concat(ptr %t977, ptr @.str8353) + %t977 = call ptr @lp_str_concat(ptr @.str8357, ptr %t976) + %t978 = call ptr @lp_str_concat(ptr %t977, ptr @.str8358) %t979 = call ptr @fn_emit_bind(ptr %t978) store ptr %t979, ptr %t980 %t981 = load ptr, ptr %t980 - %t982 = call ptr @lp_str_concat(ptr @.str8354, ptr %t981) - %t983 = call ptr @lp_str_concat(ptr %t982, ptr @.str8355) + %t982 = call ptr @lp_str_concat(ptr @.str8359, ptr %t981) + %t983 = call ptr @lp_str_concat(ptr %t982, ptr @.str8360) call void @fn_emit(ptr %t983) %t984 = load ptr, ptr %t975 - %t985 = call ptr @lp_str_concat(ptr @.str8356, ptr %t984) - %t986 = call ptr @lp_str_concat(ptr %t985, ptr @.str8357) + %t985 = call ptr @lp_str_concat(ptr @.str8361, ptr %t984) + %t986 = call ptr @lp_str_concat(ptr %t985, ptr @.str8362) %t987 = call ptr @fn_emit_bind(ptr %t986) store ptr %t987, ptr %t988 %t989 = load ptr, ptr %t988 - %t990 = call ptr @lp_str_concat(ptr @.str8358, ptr %t989) - %t991 = call ptr @lp_str_concat(ptr %t990, ptr @.str8359) + %t990 = call ptr @lp_str_concat(ptr @.str8363, ptr %t989) + %t991 = call ptr @lp_str_concat(ptr %t990, ptr @.str8364) call void @fn_emit(ptr %t991) %t992 = load ptr, ptr %t975 - %t993 = call ptr @lp_str_concat(ptr @.str8360, ptr %t992) - %t994 = call ptr @lp_str_concat(ptr %t993, ptr @.str8361) + %t993 = call ptr @lp_str_concat(ptr @.str8365, ptr %t992) + %t994 = call ptr @lp_str_concat(ptr %t993, ptr @.str8366) %t995 = call ptr @fn_emit_bind(ptr %t994) store ptr %t995, ptr %t996 %t997 = load ptr, ptr %t973 %t998 = getelementptr inbounds %Cmp_Val, ptr %t997, i32 0, i32 0 %t999 = load ptr, ptr %t998 - %t1000 = call ptr @lp_str_concat(ptr @.str8362, ptr %t999) - %t1001 = call ptr @lp_str_concat(ptr %t1000, ptr @.str8363) + %t1000 = call ptr @lp_str_concat(ptr @.str8367, ptr %t999) + %t1001 = call ptr @lp_str_concat(ptr %t1000, ptr @.str8368) %t1002 = load ptr, ptr %t996 %t1003 = call ptr @lp_str_concat(ptr %t1001, ptr %t1002) - %t1004 = call ptr @lp_str_concat(ptr %t1003, ptr @.str8364) + %t1004 = call ptr @lp_str_concat(ptr %t1003, ptr @.str8369) call void @fn_emit(ptr %t1004) %t1005 = load ptr, ptr %t975 - %t1006 = call ptr @fn_val(ptr %t1005, ptr @.str8365) + %t1006 = call ptr @fn_val(ptr %t1005, ptr @.str8370) store ptr %t1006, ptr %retval br label %ret ifend145: %t1008 = load ptr, ptr %t38 - %t1009 = call i32 @lp_str_eq(ptr %t1008, ptr @.str8366) + %t1009 = call i32 @lp_str_eq(ptr %t1008, ptr @.str8371) %t1010 = icmp ne i32 %t1009, 0 %t1011 = zext i1 %t1010 to i32 store i32 %t1011, ptr %t1007 br i1 %t1010, label %sc146, label %scend147 sc146: - %t1012 = call ptr @fn_find_fn(ptr @.str8367) + %t1012 = call ptr @fn_find_fn(ptr @.str8372) %t1013 = icmp eq ptr %t1012, null %t1014 = zext i1 %t1013 to i32 %t1015 = icmp ne i32 %t1014, 0 @@ -88812,35 +88968,35 @@ then148: %t1028 = load ptr, ptr %t1027 %t1029 = getelementptr inbounds %Cmp_Val, ptr %t1028, i32 0, i32 0 %t1030 = load ptr, ptr %t1029 - %t1031 = call ptr @lp_str_concat(ptr @.str8368, ptr %t1030) - %t1032 = call ptr @lp_str_concat(ptr %t1031, ptr @.str8369) + %t1031 = call ptr @lp_str_concat(ptr @.str8373, ptr %t1030) + %t1032 = call ptr @lp_str_concat(ptr %t1031, ptr @.str8374) %t1033 = call ptr @fn_emit_bind(ptr %t1032) store ptr %t1033, ptr %t1034 %t1035 = load ptr, ptr %t1034 - %t1036 = call ptr @lp_str_concat(ptr @.str8370, ptr %t1035) + %t1036 = call ptr @lp_str_concat(ptr @.str8375, ptr %t1035) %t1037 = call ptr @fn_emit_bind(ptr %t1036) store ptr %t1037, ptr %t1038 %t1039 = load ptr, ptr %t1038 - %t1040 = call ptr @lp_str_concat(ptr @.str8371, ptr %t1039) - %t1041 = call ptr @lp_str_concat(ptr %t1040, ptr @.str8372) + %t1040 = call ptr @lp_str_concat(ptr @.str8376, ptr %t1039) + %t1041 = call ptr @lp_str_concat(ptr %t1040, ptr @.str8377) %t1042 = call ptr @fn_emit_bind(ptr %t1041) store ptr %t1042, ptr %t1043 %t1044 = load ptr, ptr %t1043 - %t1045 = call ptr @lp_str_concat(ptr @.str8373, ptr %t1044) - %t1046 = call ptr @lp_str_concat(ptr %t1045, ptr @.str8374) + %t1045 = call ptr @lp_str_concat(ptr @.str8378, ptr %t1044) + %t1046 = call ptr @lp_str_concat(ptr %t1045, ptr @.str8379) %t1047 = call ptr @fn_emit_bind(ptr %t1046) - %t1048 = call ptr @fn_val(ptr %t1047, ptr @.str8375) + %t1048 = call ptr @fn_val(ptr %t1047, ptr @.str8380) store ptr %t1048, ptr %retval br label %ret ifend150: %t1050 = load ptr, ptr %t38 - %t1051 = call i32 @lp_str_eq(ptr %t1050, ptr @.str8376) + %t1051 = call i32 @lp_str_eq(ptr %t1050, ptr @.str8381) %t1052 = icmp ne i32 %t1051, 0 %t1053 = zext i1 %t1052 to i32 store i32 %t1053, ptr %t1049 br i1 %t1052, label %sc151, label %scend152 sc151: - %t1054 = call ptr @fn_find_fn(ptr @.str8377) + %t1054 = call ptr @fn_find_fn(ptr @.str8382) %t1055 = icmp eq ptr %t1054, null %t1056 = zext i1 %t1055 to i32 %t1057 = icmp ne i32 %t1056, 0 @@ -88864,35 +89020,35 @@ then153: %t1070 = load ptr, ptr %t1069 %t1071 = getelementptr inbounds %Cmp_Val, ptr %t1070, i32 0, i32 0 %t1072 = load ptr, ptr %t1071 - %t1073 = call ptr @lp_str_concat(ptr @.str8378, ptr %t1072) - %t1074 = call ptr @lp_str_concat(ptr %t1073, ptr @.str8379) + %t1073 = call ptr @lp_str_concat(ptr @.str8383, ptr %t1072) + %t1074 = call ptr @lp_str_concat(ptr %t1073, ptr @.str8384) %t1075 = call ptr @fn_emit_bind(ptr %t1074) store ptr %t1075, ptr %t1076 %t1077 = load ptr, ptr %t1076 - %t1078 = call ptr @lp_str_concat(ptr @.str8380, ptr %t1077) + %t1078 = call ptr @lp_str_concat(ptr @.str8385, ptr %t1077) %t1079 = call ptr @fn_emit_bind(ptr %t1078) store ptr %t1079, ptr %t1080 %t1081 = load ptr, ptr %t1080 - %t1082 = call ptr @lp_str_concat(ptr @.str8381, ptr %t1081) - %t1083 = call ptr @lp_str_concat(ptr %t1082, ptr @.str8382) + %t1082 = call ptr @lp_str_concat(ptr @.str8386, ptr %t1081) + %t1083 = call ptr @lp_str_concat(ptr %t1082, ptr @.str8387) %t1084 = call ptr @fn_emit_bind(ptr %t1083) store ptr %t1084, ptr %t1085 %t1086 = load ptr, ptr %t1085 - %t1087 = call ptr @lp_str_concat(ptr @.str8383, ptr %t1086) - %t1088 = call ptr @lp_str_concat(ptr %t1087, ptr @.str8384) + %t1087 = call ptr @lp_str_concat(ptr @.str8388, ptr %t1086) + %t1088 = call ptr @lp_str_concat(ptr %t1087, ptr @.str8389) %t1089 = call ptr @fn_emit_bind(ptr %t1088) - %t1090 = call ptr @fn_val(ptr %t1089, ptr @.str8385) + %t1090 = call ptr @fn_val(ptr %t1089, ptr @.str8390) store ptr %t1090, ptr %retval br label %ret ifend155: %t1092 = load ptr, ptr %t38 - %t1093 = call i32 @lp_str_eq(ptr %t1092, ptr @.str8386) + %t1093 = call i32 @lp_str_eq(ptr %t1092, ptr @.str8391) %t1094 = icmp ne i32 %t1093, 0 %t1095 = zext i1 %t1094 to i32 store i32 %t1095, ptr %t1091 br i1 %t1094, label %sc156, label %scend157 sc156: - %t1096 = call ptr @fn_find_fn(ptr @.str8387) + %t1096 = call ptr @fn_find_fn(ptr @.str8392) %t1097 = icmp eq ptr %t1096, null %t1098 = zext i1 %t1097 to i32 %t1099 = icmp ne i32 %t1098, 0 @@ -88914,43 +89070,43 @@ then158: %t1109 = load ptr, ptr %t1108 %t1110 = call ptr @fn_emit_expr(ptr %t1109) store ptr %t1110, ptr %t1111 - %t1112 = call ptr @fn_emit_bind(ptr @.str8388) + %t1112 = call ptr @fn_emit_bind(ptr @.str8393) store ptr %t1112, ptr %t1113 %t1114 = load ptr, ptr %t1113 - %t1115 = call ptr @lp_str_concat(ptr @.str8389, ptr %t1114) - %t1116 = call ptr @lp_str_concat(ptr %t1115, ptr @.str8390) + %t1115 = call ptr @lp_str_concat(ptr @.str8394, ptr %t1114) + %t1116 = call ptr @lp_str_concat(ptr %t1115, ptr @.str8395) %t1117 = call ptr @fn_emit_bind(ptr %t1116) store ptr %t1117, ptr %t1118 %t1119 = load ptr, ptr %t1118 - %t1120 = call ptr @lp_str_concat(ptr @.str8391, ptr %t1119) - %t1121 = call ptr @lp_str_concat(ptr %t1120, ptr @.str8392) + %t1120 = call ptr @lp_str_concat(ptr @.str8396, ptr %t1119) + %t1121 = call ptr @lp_str_concat(ptr %t1120, ptr @.str8397) call void @fn_emit(ptr %t1121) %t1122 = load ptr, ptr %t1113 - %t1123 = call ptr @lp_str_concat(ptr @.str8393, ptr %t1122) - %t1124 = call ptr @lp_str_concat(ptr %t1123, ptr @.str8394) + %t1123 = call ptr @lp_str_concat(ptr @.str8398, ptr %t1122) + %t1124 = call ptr @lp_str_concat(ptr %t1123, ptr @.str8399) %t1125 = call ptr @fn_emit_bind(ptr %t1124) store ptr %t1125, ptr %t1126 %t1127 = load ptr, ptr %t1111 - %t1128 = call ptr @fn_coerce_code(ptr %t1127, ptr @.str8396) - %t1129 = call ptr @lp_str_concat(ptr @.str8395, ptr %t1128) - %t1130 = call ptr @lp_str_concat(ptr %t1129, ptr @.str8397) + %t1128 = call ptr @fn_coerce_code(ptr %t1127, ptr @.str8401) + %t1129 = call ptr @lp_str_concat(ptr @.str8400, ptr %t1128) + %t1130 = call ptr @lp_str_concat(ptr %t1129, ptr @.str8402) %t1131 = load ptr, ptr %t1126 %t1132 = call ptr @lp_str_concat(ptr %t1130, ptr %t1131) - %t1133 = call ptr @lp_str_concat(ptr %t1132, ptr @.str8398) + %t1133 = call ptr @lp_str_concat(ptr %t1132, ptr @.str8403) call void @fn_emit(ptr %t1133) %t1134 = load ptr, ptr %t1113 - %t1135 = call ptr @fn_val(ptr %t1134, ptr @.str8399) + %t1135 = call ptr @fn_val(ptr %t1134, ptr @.str8404) store ptr %t1135, ptr %retval br label %ret ifend160: %t1137 = load ptr, ptr %t38 - %t1138 = call i32 @lp_str_eq(ptr %t1137, ptr @.str8400) + %t1138 = call i32 @lp_str_eq(ptr %t1137, ptr @.str8405) %t1139 = icmp ne i32 %t1138, 0 %t1140 = zext i1 %t1139 to i32 store i32 %t1140, ptr %t1136 br i1 %t1139, label %sc161, label %scend162 sc161: - %t1141 = call ptr @fn_find_fn(ptr @.str8401) + %t1141 = call ptr @fn_find_fn(ptr @.str8406) %t1142 = icmp eq ptr %t1141, null %t1143 = zext i1 %t1142 to i32 %t1144 = icmp ne i32 %t1143, 0 @@ -88963,39 +89119,39 @@ scend162: br i1 %t1147, label %then163, label %ifend165 then163: store i32 1, ptr @g_g_uses_option - %t1148 = call ptr @fn_emit_bind(ptr @.str8402) + %t1148 = call ptr @fn_emit_bind(ptr @.str8407) store ptr %t1148, ptr %t1149 %t1150 = load ptr, ptr %t1149 - %t1151 = call ptr @lp_str_concat(ptr @.str8403, ptr %t1150) - %t1152 = call ptr @lp_str_concat(ptr %t1151, ptr @.str8404) + %t1151 = call ptr @lp_str_concat(ptr @.str8408, ptr %t1150) + %t1152 = call ptr @lp_str_concat(ptr %t1151, ptr @.str8409) %t1153 = call ptr @fn_emit_bind(ptr %t1152) store ptr %t1153, ptr %t1154 %t1155 = load ptr, ptr %t1154 - %t1156 = call ptr @lp_str_concat(ptr @.str8405, ptr %t1155) - %t1157 = call ptr @lp_str_concat(ptr %t1156, ptr @.str8406) + %t1156 = call ptr @lp_str_concat(ptr @.str8410, ptr %t1155) + %t1157 = call ptr @lp_str_concat(ptr %t1156, ptr @.str8411) call void @fn_emit(ptr %t1157) %t1158 = load ptr, ptr %t1149 - %t1159 = call ptr @lp_str_concat(ptr @.str8407, ptr %t1158) - %t1160 = call ptr @lp_str_concat(ptr %t1159, ptr @.str8408) + %t1159 = call ptr @lp_str_concat(ptr @.str8412, ptr %t1158) + %t1160 = call ptr @lp_str_concat(ptr %t1159, ptr @.str8413) %t1161 = call ptr @fn_emit_bind(ptr %t1160) store ptr %t1161, ptr %t1162 %t1163 = load ptr, ptr %t1162 - %t1164 = call ptr @lp_str_concat(ptr @.str8409, ptr %t1163) - %t1165 = call ptr @lp_str_concat(ptr %t1164, ptr @.str8410) + %t1164 = call ptr @lp_str_concat(ptr @.str8414, ptr %t1163) + %t1165 = call ptr @lp_str_concat(ptr %t1164, ptr @.str8415) call void @fn_emit(ptr %t1165) %t1166 = load ptr, ptr %t1149 - %t1167 = call ptr @fn_val(ptr %t1166, ptr @.str8411) + %t1167 = call ptr @fn_val(ptr %t1166, ptr @.str8416) store ptr %t1167, ptr %retval br label %ret ifend165: %t1169 = load ptr, ptr %t38 - %t1170 = call i32 @lp_str_eq(ptr %t1169, ptr @.str8412) + %t1170 = call i32 @lp_str_eq(ptr %t1169, ptr @.str8417) %t1171 = icmp ne i32 %t1170, 0 %t1172 = zext i1 %t1171 to i32 store i32 %t1172, ptr %t1168 br i1 %t1171, label %sc166, label %scend167 sc166: - %t1173 = call ptr @fn_find_fn(ptr @.str8413) + %t1173 = call ptr @fn_find_fn(ptr @.str8418) %t1174 = icmp eq ptr %t1173, null %t1175 = zext i1 %t1174 to i32 %t1176 = icmp ne i32 %t1175, 0 @@ -89019,35 +89175,35 @@ then168: %t1189 = load ptr, ptr %t1188 %t1190 = getelementptr inbounds %Cmp_Val, ptr %t1189, i32 0, i32 0 %t1191 = load ptr, ptr %t1190 - %t1192 = call ptr @lp_str_concat(ptr @.str8414, ptr %t1191) - %t1193 = call ptr @lp_str_concat(ptr %t1192, ptr @.str8415) + %t1192 = call ptr @lp_str_concat(ptr @.str8419, ptr %t1191) + %t1193 = call ptr @lp_str_concat(ptr %t1192, ptr @.str8420) %t1194 = call ptr @fn_emit_bind(ptr %t1193) store ptr %t1194, ptr %t1195 %t1196 = load ptr, ptr %t1195 - %t1197 = call ptr @lp_str_concat(ptr @.str8416, ptr %t1196) + %t1197 = call ptr @lp_str_concat(ptr @.str8421, ptr %t1196) %t1198 = call ptr @fn_emit_bind(ptr %t1197) store ptr %t1198, ptr %t1199 %t1200 = load ptr, ptr %t1199 - %t1201 = call ptr @lp_str_concat(ptr @.str8417, ptr %t1200) - %t1202 = call ptr @lp_str_concat(ptr %t1201, ptr @.str8418) + %t1201 = call ptr @lp_str_concat(ptr @.str8422, ptr %t1200) + %t1202 = call ptr @lp_str_concat(ptr %t1201, ptr @.str8423) %t1203 = call ptr @fn_emit_bind(ptr %t1202) store ptr %t1203, ptr %t1204 %t1205 = load ptr, ptr %t1204 - %t1206 = call ptr @lp_str_concat(ptr @.str8419, ptr %t1205) - %t1207 = call ptr @lp_str_concat(ptr %t1206, ptr @.str8420) + %t1206 = call ptr @lp_str_concat(ptr @.str8424, ptr %t1205) + %t1207 = call ptr @lp_str_concat(ptr %t1206, ptr @.str8425) %t1208 = call ptr @fn_emit_bind(ptr %t1207) - %t1209 = call ptr @fn_val(ptr %t1208, ptr @.str8421) + %t1209 = call ptr @fn_val(ptr %t1208, ptr @.str8426) store ptr %t1209, ptr %retval br label %ret ifend170: %t1211 = load ptr, ptr %t38 - %t1212 = call i32 @lp_str_eq(ptr %t1211, ptr @.str8422) + %t1212 = call i32 @lp_str_eq(ptr %t1211, ptr @.str8427) %t1213 = icmp ne i32 %t1212, 0 %t1214 = zext i1 %t1213 to i32 store i32 %t1214, ptr %t1210 br i1 %t1213, label %sc171, label %scend172 sc171: - %t1215 = call ptr @fn_find_fn(ptr @.str8423) + %t1215 = call ptr @fn_find_fn(ptr @.str8428) %t1216 = icmp eq ptr %t1215, null %t1217 = zext i1 %t1216 to i32 %t1218 = icmp ne i32 %t1217, 0 @@ -89071,35 +89227,35 @@ then173: %t1231 = load ptr, ptr %t1230 %t1232 = getelementptr inbounds %Cmp_Val, ptr %t1231, i32 0, i32 0 %t1233 = load ptr, ptr %t1232 - %t1234 = call ptr @lp_str_concat(ptr @.str8424, ptr %t1233) - %t1235 = call ptr @lp_str_concat(ptr %t1234, ptr @.str8425) + %t1234 = call ptr @lp_str_concat(ptr @.str8429, ptr %t1233) + %t1235 = call ptr @lp_str_concat(ptr %t1234, ptr @.str8430) %t1236 = call ptr @fn_emit_bind(ptr %t1235) store ptr %t1236, ptr %t1237 %t1238 = load ptr, ptr %t1237 - %t1239 = call ptr @lp_str_concat(ptr @.str8426, ptr %t1238) + %t1239 = call ptr @lp_str_concat(ptr @.str8431, ptr %t1238) %t1240 = call ptr @fn_emit_bind(ptr %t1239) store ptr %t1240, ptr %t1241 %t1242 = load ptr, ptr %t1241 - %t1243 = call ptr @lp_str_concat(ptr @.str8427, ptr %t1242) - %t1244 = call ptr @lp_str_concat(ptr %t1243, ptr @.str8428) + %t1243 = call ptr @lp_str_concat(ptr @.str8432, ptr %t1242) + %t1244 = call ptr @lp_str_concat(ptr %t1243, ptr @.str8433) %t1245 = call ptr @fn_emit_bind(ptr %t1244) store ptr %t1245, ptr %t1246 %t1247 = load ptr, ptr %t1246 - %t1248 = call ptr @lp_str_concat(ptr @.str8429, ptr %t1247) - %t1249 = call ptr @lp_str_concat(ptr %t1248, ptr @.str8430) + %t1248 = call ptr @lp_str_concat(ptr @.str8434, ptr %t1247) + %t1249 = call ptr @lp_str_concat(ptr %t1248, ptr @.str8435) %t1250 = call ptr @fn_emit_bind(ptr %t1249) - %t1251 = call ptr @fn_val(ptr %t1250, ptr @.str8431) + %t1251 = call ptr @fn_val(ptr %t1250, ptr @.str8436) store ptr %t1251, ptr %retval br label %ret ifend175: %t1253 = load ptr, ptr %t38 - %t1254 = call i32 @lp_str_eq(ptr %t1253, ptr @.str8432) + %t1254 = call i32 @lp_str_eq(ptr %t1253, ptr @.str8437) %t1255 = icmp ne i32 %t1254, 0 %t1256 = zext i1 %t1255 to i32 store i32 %t1256, ptr %t1252 br i1 %t1255, label %sc176, label %scend177 sc176: - %t1257 = call ptr @fn_find_fn(ptr @.str8433) + %t1257 = call ptr @fn_find_fn(ptr @.str8438) %t1258 = icmp eq ptr %t1257, null %t1259 = zext i1 %t1258 to i32 %t1260 = icmp ne i32 %t1259, 0 @@ -89132,46 +89288,46 @@ then178: %t1282 = load ptr, ptr %t1272 %t1283 = getelementptr inbounds %Cmp_Val, ptr %t1282, i32 0, i32 0 %t1284 = load ptr, ptr %t1283 - %t1285 = call ptr @lp_str_concat(ptr @.str8434, ptr %t1284) - %t1286 = call ptr @lp_str_concat(ptr %t1285, ptr @.str8435) + %t1285 = call ptr @lp_str_concat(ptr @.str8439, ptr %t1284) + %t1286 = call ptr @lp_str_concat(ptr %t1285, ptr @.str8440) %t1287 = call ptr @fn_emit_bind(ptr %t1286) store ptr %t1287, ptr %t1288 %t1289 = load ptr, ptr %t1288 - %t1290 = call ptr @lp_str_concat(ptr @.str8436, ptr %t1289) + %t1290 = call ptr @lp_str_concat(ptr @.str8441, ptr %t1289) %t1291 = call ptr @fn_emit_bind(ptr %t1290) store ptr %t1291, ptr %t1292 %t1293 = load ptr, ptr %t1272 %t1294 = getelementptr inbounds %Cmp_Val, ptr %t1293, i32 0, i32 0 %t1295 = load ptr, ptr %t1294 - %t1296 = call ptr @lp_str_concat(ptr @.str8437, ptr %t1295) - %t1297 = call ptr @lp_str_concat(ptr %t1296, ptr @.str8438) + %t1296 = call ptr @lp_str_concat(ptr @.str8442, ptr %t1295) + %t1297 = call ptr @lp_str_concat(ptr %t1296, ptr @.str8443) %t1298 = call ptr @fn_emit_bind(ptr %t1297) store ptr %t1298, ptr %t1299 %t1300 = load ptr, ptr %t1299 - %t1301 = call ptr @lp_str_concat(ptr @.str8439, ptr %t1300) + %t1301 = call ptr @lp_str_concat(ptr @.str8444, ptr %t1300) %t1302 = call ptr @fn_emit_bind(ptr %t1301) store ptr %t1302, ptr %t1303 %t1304 = load ptr, ptr %t1292 - %t1305 = call ptr @lp_str_concat(ptr @.str8440, ptr %t1304) - %t1306 = call ptr @lp_str_concat(ptr %t1305, ptr @.str8441) + %t1305 = call ptr @lp_str_concat(ptr @.str8445, ptr %t1304) + %t1306 = call ptr @lp_str_concat(ptr %t1305, ptr @.str8446) %t1307 = call ptr @fn_emit_bind(ptr %t1306) store ptr %t1307, ptr %t1308 %t1309 = load ptr, ptr %t1308 - %t1310 = call ptr @lp_str_concat(ptr @.str8442, ptr %t1309) - %t1311 = call ptr @lp_str_concat(ptr %t1310, ptr @.str8443) + %t1310 = call ptr @lp_str_concat(ptr @.str8447, ptr %t1309) + %t1311 = call ptr @lp_str_concat(ptr %t1310, ptr @.str8448) %t1312 = load ptr, ptr %t1303 %t1313 = call ptr @lp_str_concat(ptr %t1311, ptr %t1312) - %t1314 = call ptr @lp_str_concat(ptr %t1313, ptr @.str8444) + %t1314 = call ptr @lp_str_concat(ptr %t1313, ptr @.str8449) %t1315 = load ptr, ptr %t1281 - %t1316 = call ptr @fn_coerce_code(ptr %t1315, ptr @.str8445) + %t1316 = call ptr @fn_coerce_code(ptr %t1315, ptr @.str8450) %t1317 = call ptr @lp_str_concat(ptr %t1314, ptr %t1316) %t1318 = call ptr @fn_emit_bind(ptr %t1317) - %t1319 = call ptr @fn_val(ptr %t1318, ptr @.str8446) + %t1319 = call ptr @fn_val(ptr %t1318, ptr @.str8451) store ptr %t1319, ptr %retval br label %ret ifend180: %t1320 = load ptr, ptr %t38 - %t1321 = call i32 @lp_str_eq(ptr %t1320, ptr @.str8447) + %t1321 = call i32 @lp_str_eq(ptr %t1320, ptr @.str8452) %t1322 = icmp ne i32 %t1321, 0 br i1 %t1322, label %then181, label %ifend183 then181: @@ -89187,15 +89343,15 @@ then181: %t1332 = load ptr, ptr %t1331 %t1333 = getelementptr inbounds %Cmp_Val, ptr %t1332, i32 0, i32 0 %t1334 = load ptr, ptr %t1333 - %t1335 = call ptr @lp_str_concat(ptr @.str8448, ptr %t1334) - %t1336 = call ptr @lp_str_concat(ptr %t1335, ptr @.str8449) + %t1335 = call ptr @lp_str_concat(ptr @.str8453, ptr %t1334) + %t1336 = call ptr @lp_str_concat(ptr %t1335, ptr @.str8454) %t1337 = call ptr @fn_emit_bind(ptr %t1336) - %t1338 = call ptr @fn_val(ptr %t1337, ptr @.str8450) + %t1338 = call ptr @fn_val(ptr %t1337, ptr @.str8455) store ptr %t1338, ptr %retval br label %ret ifend183: %t1339 = load ptr, ptr %t38 - %t1340 = call i32 @lp_str_eq(ptr %t1339, ptr @.str8451) + %t1340 = call i32 @lp_str_eq(ptr %t1339, ptr @.str8456) %t1341 = icmp ne i32 %t1340, 0 br i1 %t1341, label %then184, label %ifend186 then184: @@ -89220,20 +89376,20 @@ then184: %t1360 = load ptr, ptr %t1350 %t1361 = getelementptr inbounds %Cmp_Val, ptr %t1360, i32 0, i32 0 %t1362 = load ptr, ptr %t1361 - %t1363 = call ptr @lp_str_concat(ptr @.str8452, ptr %t1362) - %t1364 = call ptr @lp_str_concat(ptr %t1363, ptr @.str8453) + %t1363 = call ptr @lp_str_concat(ptr @.str8457, ptr %t1362) + %t1364 = call ptr @lp_str_concat(ptr %t1363, ptr @.str8458) %t1365 = load ptr, ptr %t1359 %t1366 = getelementptr inbounds %Cmp_Val, ptr %t1365, i32 0, i32 0 %t1367 = load ptr, ptr %t1366 %t1368 = call ptr @lp_str_concat(ptr %t1364, ptr %t1367) - %t1369 = call ptr @lp_str_concat(ptr %t1368, ptr @.str8454) + %t1369 = call ptr @lp_str_concat(ptr %t1368, ptr @.str8459) %t1370 = call ptr @fn_emit_bind(ptr %t1369) - %t1371 = call ptr @fn_val(ptr %t1370, ptr @.str8455) + %t1371 = call ptr @fn_val(ptr %t1370, ptr @.str8460) store ptr %t1371, ptr %retval br label %ret ifend186: %t1372 = load ptr, ptr %t38 - %t1373 = call i32 @lp_str_eq(ptr %t1372, ptr @.str8456) + %t1373 = call i32 @lp_str_eq(ptr %t1372, ptr @.str8461) %t1374 = icmp ne i32 %t1373, 0 br i1 %t1374, label %then187, label %ifend189 then187: @@ -89267,30 +89423,30 @@ then187: %t1402 = load ptr, ptr %t1383 %t1403 = getelementptr inbounds %Cmp_Val, ptr %t1402, i32 0, i32 0 %t1404 = load ptr, ptr %t1403 - %t1405 = call ptr @lp_str_concat(ptr @.str8457, ptr %t1404) - %t1406 = call ptr @lp_str_concat(ptr %t1405, ptr @.str8458) + %t1405 = call ptr @lp_str_concat(ptr @.str8462, ptr %t1404) + %t1406 = call ptr @lp_str_concat(ptr %t1405, ptr @.str8463) %t1407 = load ptr, ptr %t1392 %t1408 = getelementptr inbounds %Cmp_Val, ptr %t1407, i32 0, i32 0 %t1409 = load ptr, ptr %t1408 %t1410 = call ptr @lp_str_concat(ptr %t1406, ptr %t1409) - %t1411 = call ptr @lp_str_concat(ptr %t1410, ptr @.str8459) + %t1411 = call ptr @lp_str_concat(ptr %t1410, ptr @.str8464) %t1412 = load ptr, ptr %t1401 %t1413 = getelementptr inbounds %Cmp_Val, ptr %t1412, i32 0, i32 0 %t1414 = load ptr, ptr %t1413 %t1415 = call ptr @lp_str_concat(ptr %t1411, ptr %t1414) - %t1416 = call ptr @lp_str_concat(ptr %t1415, ptr @.str8460) + %t1416 = call ptr @lp_str_concat(ptr %t1415, ptr @.str8465) %t1417 = call ptr @fn_emit_bind(ptr %t1416) store ptr %t1417, ptr %t1418 %t1419 = load ptr, ptr %t1418 - %t1420 = call ptr @lp_str_concat(ptr @.str8461, ptr %t1419) - %t1421 = call ptr @lp_str_concat(ptr %t1420, ptr @.str8462) + %t1420 = call ptr @lp_str_concat(ptr @.str8466, ptr %t1419) + %t1421 = call ptr @lp_str_concat(ptr %t1420, ptr @.str8467) %t1422 = call ptr @fn_emit_bind(ptr %t1421) - %t1423 = call ptr @fn_val(ptr %t1422, ptr @.str8463) + %t1423 = call ptr @fn_val(ptr %t1422, ptr @.str8468) store ptr %t1423, ptr %retval br label %ret ifend189: %t1424 = load ptr, ptr %t38 - %t1425 = call i32 @lp_str_eq(ptr %t1424, ptr @.str8464) + %t1425 = call i32 @lp_str_eq(ptr %t1424, ptr @.str8469) %t1426 = icmp ne i32 %t1425, 0 br i1 %t1426, label %then190, label %ifend192 then190: @@ -89333,35 +89489,35 @@ then190: %t1463 = load ptr, ptr %t1462 %t1464 = getelementptr inbounds %Cmp_Val, ptr %t1463, i32 0, i32 0 %t1465 = load ptr, ptr %t1464 - %t1466 = call ptr @lp_str_concat(ptr @.str8465, ptr %t1465) - %t1467 = call ptr @lp_str_concat(ptr %t1466, ptr @.str8466) + %t1466 = call ptr @lp_str_concat(ptr @.str8470, ptr %t1465) + %t1467 = call ptr @lp_str_concat(ptr %t1466, ptr @.str8471) %t1468 = call ptr @fn_emit_bind(ptr %t1467) store ptr %t1468, ptr %t1469 - call void @fn_emit(ptr @.str8467) + call void @fn_emit(ptr @.str8472) %t1470 = load ptr, ptr %t1435 %t1471 = getelementptr inbounds %Cmp_Val, ptr %t1470, i32 0, i32 0 %t1472 = load ptr, ptr %t1471 call void @fn_emit(ptr %t1472) - call void @fn_emit(ptr @.str8468) + call void @fn_emit(ptr @.str8473) %t1473 = load ptr, ptr %t1444 %t1474 = getelementptr inbounds %Cmp_Val, ptr %t1473, i32 0, i32 0 %t1475 = load ptr, ptr %t1474 call void @fn_emit(ptr %t1475) - call void @fn_emit(ptr @.str8469) + call void @fn_emit(ptr @.str8474) %t1476 = load ptr, ptr %t1453 %t1477 = getelementptr inbounds %Cmp_Val, ptr %t1476, i32 0, i32 0 %t1478 = load ptr, ptr %t1477 call void @fn_emit(ptr %t1478) - call void @fn_emit(ptr @.str8470) + call void @fn_emit(ptr @.str8475) %t1479 = load ptr, ptr %t1469 call void @fn_emit(ptr %t1479) - call void @fn_emit(ptr @.str8471) - %t1480 = call ptr @fn_val(ptr @.str8472, ptr @.str8473) + call void @fn_emit(ptr @.str8476) + %t1480 = call ptr @fn_val(ptr @.str8477, ptr @.str8478) store ptr %t1480, ptr %retval br label %ret ifend192: %t1481 = load ptr, ptr %t38 - %t1482 = call i32 @lp_str_eq(ptr %t1481, ptr @.str8474) + %t1482 = call i32 @lp_str_eq(ptr %t1481, ptr @.str8479) %t1483 = icmp ne i32 %t1482, 0 br i1 %t1483, label %then193, label %ifend195 then193: @@ -89386,30 +89542,30 @@ then193: %t1502 = load ptr, ptr %t1492 %t1503 = getelementptr inbounds %Cmp_Val, ptr %t1502, i32 0, i32 0 %t1504 = load ptr, ptr %t1503 - %t1505 = call ptr @lp_str_concat(ptr @.str8475, ptr %t1504) - %t1506 = call ptr @lp_str_concat(ptr %t1505, ptr @.str8476) + %t1505 = call ptr @lp_str_concat(ptr @.str8480, ptr %t1504) + %t1506 = call ptr @lp_str_concat(ptr %t1505, ptr @.str8481) %t1507 = load ptr, ptr %t1501 %t1508 = getelementptr inbounds %Cmp_Val, ptr %t1507, i32 0, i32 0 %t1509 = load ptr, ptr %t1508 %t1510 = call ptr @lp_str_concat(ptr %t1506, ptr %t1509) - %t1511 = call ptr @lp_str_concat(ptr %t1510, ptr @.str8477) + %t1511 = call ptr @lp_str_concat(ptr %t1510, ptr @.str8482) %t1512 = call ptr @fn_emit_bind(ptr %t1511) - %t1513 = call ptr @fn_val(ptr %t1512, ptr @.str8478) + %t1513 = call ptr @fn_val(ptr %t1512, ptr @.str8483) store ptr %t1513, ptr %retval br label %ret ifend195: %t1514 = load ptr, ptr %t38 - %t1515 = call i32 @lp_str_eq(ptr %t1514, ptr @.str8479) + %t1515 = call i32 @lp_str_eq(ptr %t1514, ptr @.str8484) %t1516 = icmp ne i32 %t1515, 0 br i1 %t1516, label %then196, label %ifend198 then196: - %t1517 = call ptr @fn_emit_bind(ptr @.str8480) - %t1518 = call ptr @fn_val(ptr %t1517, ptr @.str8481) + %t1517 = call ptr @fn_emit_bind(ptr @.str8485) + %t1518 = call ptr @fn_val(ptr %t1517, ptr @.str8486) store ptr %t1518, ptr %retval br label %ret ifend198: %t1519 = load ptr, ptr %t38 - %t1520 = call i32 @lp_str_eq(ptr %t1519, ptr @.str8482) + %t1520 = call i32 @lp_str_eq(ptr %t1519, ptr @.str8487) %t1521 = icmp ne i32 %t1520, 0 br i1 %t1521, label %then199, label %ifend201 then199: @@ -89425,15 +89581,15 @@ then199: %t1531 = load ptr, ptr %t1530 %t1532 = getelementptr inbounds %Cmp_Val, ptr %t1531, i32 0, i32 0 %t1533 = load ptr, ptr %t1532 - %t1534 = call ptr @lp_str_concat(ptr @.str8483, ptr %t1533) - %t1535 = call ptr @lp_str_concat(ptr %t1534, ptr @.str8484) + %t1534 = call ptr @lp_str_concat(ptr @.str8488, ptr %t1533) + %t1535 = call ptr @lp_str_concat(ptr %t1534, ptr @.str8489) %t1536 = call ptr @fn_emit_bind(ptr %t1535) - %t1537 = call ptr @fn_val(ptr %t1536, ptr @.str8485) + %t1537 = call ptr @fn_val(ptr %t1536, ptr @.str8490) store ptr %t1537, ptr %retval br label %ret ifend201: %t1538 = load ptr, ptr %t38 - %t1539 = call i32 @lp_str_eq(ptr %t1538, ptr @.str8486) + %t1539 = call i32 @lp_str_eq(ptr %t1538, ptr @.str8491) %t1540 = icmp ne i32 %t1539, 0 br i1 %t1540, label %then202, label %ifend204 then202: @@ -89449,15 +89605,15 @@ then202: %t1550 = load ptr, ptr %t1549 %t1551 = getelementptr inbounds %Cmp_Val, ptr %t1550, i32 0, i32 0 %t1552 = load ptr, ptr %t1551 - %t1553 = call ptr @lp_str_concat(ptr @.str8487, ptr %t1552) - %t1554 = call ptr @lp_str_concat(ptr %t1553, ptr @.str8488) + %t1553 = call ptr @lp_str_concat(ptr @.str8492, ptr %t1552) + %t1554 = call ptr @lp_str_concat(ptr %t1553, ptr @.str8493) %t1555 = call ptr @fn_emit_bind(ptr %t1554) - %t1556 = call ptr @fn_val(ptr %t1555, ptr @.str8489) + %t1556 = call ptr @fn_val(ptr %t1555, ptr @.str8494) store ptr %t1556, ptr %retval br label %ret ifend204: %t1557 = load ptr, ptr %t38 - %t1558 = call i32 @lp_str_eq(ptr %t1557, ptr @.str8490) + %t1558 = call i32 @lp_str_eq(ptr %t1557, ptr @.str8495) %t1559 = icmp ne i32 %t1558, 0 br i1 %t1559, label %then205, label %ifend207 then205: @@ -89482,20 +89638,20 @@ then205: %t1578 = load ptr, ptr %t1568 %t1579 = getelementptr inbounds %Cmp_Val, ptr %t1578, i32 0, i32 0 %t1580 = load ptr, ptr %t1579 - %t1581 = call ptr @lp_str_concat(ptr @.str8491, ptr %t1580) - %t1582 = call ptr @lp_str_concat(ptr %t1581, ptr @.str8492) + %t1581 = call ptr @lp_str_concat(ptr @.str8496, ptr %t1580) + %t1582 = call ptr @lp_str_concat(ptr %t1581, ptr @.str8497) %t1583 = load ptr, ptr %t1577 %t1584 = getelementptr inbounds %Cmp_Val, ptr %t1583, i32 0, i32 0 %t1585 = load ptr, ptr %t1584 %t1586 = call ptr @lp_str_concat(ptr %t1582, ptr %t1585) - %t1587 = call ptr @lp_str_concat(ptr %t1586, ptr @.str8493) + %t1587 = call ptr @lp_str_concat(ptr %t1586, ptr @.str8498) %t1588 = call ptr @fn_emit_bind(ptr %t1587) - %t1589 = call ptr @fn_val(ptr %t1588, ptr @.str8494) + %t1589 = call ptr @fn_val(ptr %t1588, ptr @.str8499) store ptr %t1589, ptr %retval br label %ret ifend207: %t1590 = load ptr, ptr %t38 - %t1591 = call i32 @lp_str_eq(ptr %t1590, ptr @.str8495) + %t1591 = call i32 @lp_str_eq(ptr %t1590, ptr @.str8500) %t1592 = icmp ne i32 %t1591, 0 br i1 %t1592, label %then208, label %ifend210 then208: @@ -89520,20 +89676,20 @@ then208: %t1611 = load ptr, ptr %t1601 %t1612 = getelementptr inbounds %Cmp_Val, ptr %t1611, i32 0, i32 0 %t1613 = load ptr, ptr %t1612 - %t1614 = call ptr @lp_str_concat(ptr @.str8496, ptr %t1613) - %t1615 = call ptr @lp_str_concat(ptr %t1614, ptr @.str8497) + %t1614 = call ptr @lp_str_concat(ptr @.str8501, ptr %t1613) + %t1615 = call ptr @lp_str_concat(ptr %t1614, ptr @.str8502) %t1616 = load ptr, ptr %t1610 %t1617 = getelementptr inbounds %Cmp_Val, ptr %t1616, i32 0, i32 0 %t1618 = load ptr, ptr %t1617 %t1619 = call ptr @lp_str_concat(ptr %t1615, ptr %t1618) - %t1620 = call ptr @lp_str_concat(ptr %t1619, ptr @.str8498) + %t1620 = call ptr @lp_str_concat(ptr %t1619, ptr @.str8503) %t1621 = call ptr @fn_emit_bind(ptr %t1620) - %t1622 = call ptr @fn_val(ptr %t1621, ptr @.str8499) + %t1622 = call ptr @fn_val(ptr %t1621, ptr @.str8504) store ptr %t1622, ptr %retval br label %ret ifend210: %t1623 = load ptr, ptr %t38 - %t1624 = call i32 @lp_str_eq(ptr %t1623, ptr @.str8500) + %t1624 = call i32 @lp_str_eq(ptr %t1623, ptr @.str8505) %t1625 = icmp ne i32 %t1624, 0 br i1 %t1625, label %then211, label %ifend213 then211: @@ -89555,23 +89711,23 @@ then211: %t1641 = load ptr, ptr %t1640 %t1642 = call ptr @fn_emit_expr(ptr %t1641) store ptr %t1642, ptr %t1643 - call void @fn_emit(ptr @.str8501) + call void @fn_emit(ptr @.str8506) %t1644 = load ptr, ptr %t1634 %t1645 = getelementptr inbounds %Cmp_Val, ptr %t1644, i32 0, i32 0 %t1646 = load ptr, ptr %t1645 call void @fn_emit(ptr %t1646) - call void @fn_emit(ptr @.str8502) + call void @fn_emit(ptr @.str8507) %t1647 = load ptr, ptr %t1643 %t1648 = getelementptr inbounds %Cmp_Val, ptr %t1647, i32 0, i32 0 %t1649 = load ptr, ptr %t1648 call void @fn_emit(ptr %t1649) - call void @fn_emit(ptr @.str8503) - %t1650 = call ptr @fn_val(ptr @.str8504, ptr @.str8505) + call void @fn_emit(ptr @.str8508) + %t1650 = call ptr @fn_val(ptr @.str8509, ptr @.str8510) store ptr %t1650, ptr %retval br label %ret ifend213: %t1651 = load ptr, ptr %t38 - %t1652 = call i32 @lp_str_eq(ptr %t1651, ptr @.str8506) + %t1652 = call i32 @lp_str_eq(ptr %t1651, ptr @.str8511) %t1653 = icmp ne i32 %t1652, 0 br i1 %t1653, label %then214, label %ifend216 then214: @@ -89593,23 +89749,23 @@ then214: %t1669 = load ptr, ptr %t1668 %t1670 = call ptr @fn_emit_expr(ptr %t1669) store ptr %t1670, ptr %t1671 - call void @fn_emit(ptr @.str8507) + call void @fn_emit(ptr @.str8512) %t1672 = load ptr, ptr %t1662 %t1673 = getelementptr inbounds %Cmp_Val, ptr %t1672, i32 0, i32 0 %t1674 = load ptr, ptr %t1673 call void @fn_emit(ptr %t1674) - call void @fn_emit(ptr @.str8508) + call void @fn_emit(ptr @.str8513) %t1675 = load ptr, ptr %t1671 %t1676 = getelementptr inbounds %Cmp_Val, ptr %t1675, i32 0, i32 0 %t1677 = load ptr, ptr %t1676 call void @fn_emit(ptr %t1677) - call void @fn_emit(ptr @.str8509) - %t1678 = call ptr @fn_val(ptr @.str8510, ptr @.str8511) + call void @fn_emit(ptr @.str8514) + %t1678 = call ptr @fn_val(ptr @.str8515, ptr @.str8516) store ptr %t1678, ptr %retval br label %ret ifend216: %t1679 = load ptr, ptr %t38 - %t1680 = call i32 @lp_str_eq(ptr %t1679, ptr @.str8512) + %t1680 = call i32 @lp_str_eq(ptr %t1679, ptr @.str8517) %t1681 = icmp ne i32 %t1680, 0 br i1 %t1681, label %then217, label %ifend219 then217: @@ -89625,25 +89781,25 @@ then217: %t1691 = load ptr, ptr %t1690 %t1692 = getelementptr inbounds %Cmp_Val, ptr %t1691, i32 0, i32 0 %t1693 = load ptr, ptr %t1692 - %t1694 = call ptr @lp_str_concat(ptr @.str8513, ptr %t1693) - %t1695 = call ptr @lp_str_concat(ptr %t1694, ptr @.str8514) + %t1694 = call ptr @lp_str_concat(ptr @.str8518, ptr %t1693) + %t1695 = call ptr @lp_str_concat(ptr %t1694, ptr @.str8519) %t1696 = call ptr @fn_emit_bind(ptr %t1695) - %t1697 = call ptr @fn_val(ptr %t1696, ptr @.str8515) + %t1697 = call ptr @fn_val(ptr %t1696, ptr @.str8520) store ptr %t1697, ptr %retval br label %ret ifend219: %t1698 = load ptr, ptr %t38 - %t1699 = call i32 @lp_str_eq(ptr %t1698, ptr @.str8516) + %t1699 = call i32 @lp_str_eq(ptr %t1698, ptr @.str8521) %t1700 = icmp ne i32 %t1699, 0 br i1 %t1700, label %then220, label %ifend222 then220: - %t1701 = call ptr @fn_emit_bind(ptr @.str8517) - %t1702 = call ptr @fn_val(ptr %t1701, ptr @.str8518) + %t1701 = call ptr @fn_emit_bind(ptr @.str8522) + %t1702 = call ptr @fn_val(ptr %t1701, ptr @.str8523) store ptr %t1702, ptr %retval br label %ret ifend222: %t1703 = load ptr, ptr %t38 - %t1704 = call i32 @lp_str_eq(ptr %t1703, ptr @.str8519) + %t1704 = call i32 @lp_str_eq(ptr %t1703, ptr @.str8524) %t1705 = icmp ne i32 %t1704, 0 br i1 %t1705, label %then223, label %ifend225 then223: @@ -89659,15 +89815,15 @@ then223: %t1715 = load ptr, ptr %t1714 %t1716 = getelementptr inbounds %Cmp_Val, ptr %t1715, i32 0, i32 0 %t1717 = load ptr, ptr %t1716 - %t1718 = call ptr @lp_str_concat(ptr @.str8520, ptr %t1717) - %t1719 = call ptr @lp_str_concat(ptr %t1718, ptr @.str8521) + %t1718 = call ptr @lp_str_concat(ptr @.str8525, ptr %t1717) + %t1719 = call ptr @lp_str_concat(ptr %t1718, ptr @.str8526) %t1720 = call ptr @fn_emit_bind(ptr %t1719) - %t1721 = call ptr @fn_val(ptr %t1720, ptr @.str8522) + %t1721 = call ptr @fn_val(ptr %t1720, ptr @.str8527) store ptr %t1721, ptr %retval br label %ret ifend225: %t1722 = load ptr, ptr %t38 - %t1723 = call i32 @lp_str_eq(ptr %t1722, ptr @.str8523) + %t1723 = call i32 @lp_str_eq(ptr %t1722, ptr @.str8528) %t1724 = icmp ne i32 %t1723, 0 br i1 %t1724, label %then226, label %ifend228 then226: @@ -89683,15 +89839,15 @@ then226: %t1734 = load ptr, ptr %t1733 %t1735 = getelementptr inbounds %Cmp_Val, ptr %t1734, i32 0, i32 0 %t1736 = load ptr, ptr %t1735 - %t1737 = call ptr @lp_str_concat(ptr @.str8524, ptr %t1736) - %t1738 = call ptr @lp_str_concat(ptr %t1737, ptr @.str8525) + %t1737 = call ptr @lp_str_concat(ptr @.str8529, ptr %t1736) + %t1738 = call ptr @lp_str_concat(ptr %t1737, ptr @.str8530) %t1739 = call ptr @fn_emit_bind(ptr %t1738) - %t1740 = call ptr @fn_val(ptr %t1739, ptr @.str8526) + %t1740 = call ptr @fn_val(ptr %t1739, ptr @.str8531) store ptr %t1740, ptr %retval br label %ret ifend228: %t1741 = load ptr, ptr %t38 - %t1742 = call i32 @lp_str_eq(ptr %t1741, ptr @.str8527) + %t1742 = call i32 @lp_str_eq(ptr %t1741, ptr @.str8532) %t1743 = icmp ne i32 %t1742, 0 br i1 %t1743, label %then229, label %ifend231 then229: @@ -89716,20 +89872,20 @@ then229: %t1762 = load ptr, ptr %t1752 %t1763 = getelementptr inbounds %Cmp_Val, ptr %t1762, i32 0, i32 0 %t1764 = load ptr, ptr %t1763 - %t1765 = call ptr @lp_str_concat(ptr @.str8528, ptr %t1764) - %t1766 = call ptr @lp_str_concat(ptr %t1765, ptr @.str8529) + %t1765 = call ptr @lp_str_concat(ptr @.str8533, ptr %t1764) + %t1766 = call ptr @lp_str_concat(ptr %t1765, ptr @.str8534) %t1767 = load ptr, ptr %t1761 %t1768 = getelementptr inbounds %Cmp_Val, ptr %t1767, i32 0, i32 0 %t1769 = load ptr, ptr %t1768 %t1770 = call ptr @lp_str_concat(ptr %t1766, ptr %t1769) - %t1771 = call ptr @lp_str_concat(ptr %t1770, ptr @.str8530) + %t1771 = call ptr @lp_str_concat(ptr %t1770, ptr @.str8535) %t1772 = call ptr @fn_emit_bind(ptr %t1771) - %t1773 = call ptr @fn_val(ptr %t1772, ptr @.str8531) + %t1773 = call ptr @fn_val(ptr %t1772, ptr @.str8536) store ptr %t1773, ptr %retval br label %ret ifend231: %t1774 = load ptr, ptr %t38 - %t1775 = call i32 @lp_str_eq(ptr %t1774, ptr @.str8532) + %t1775 = call i32 @lp_str_eq(ptr %t1774, ptr @.str8537) %t1776 = icmp ne i32 %t1775, 0 br i1 %t1776, label %then232, label %ifend234 then232: @@ -89754,15 +89910,15 @@ then232: %t1795 = load ptr, ptr %t1785 %t1796 = getelementptr inbounds %Cmp_Val, ptr %t1795, i32 0, i32 0 %t1797 = load ptr, ptr %t1796 - %t1798 = call ptr @lp_str_concat(ptr @.str8533, ptr %t1797) - %t1799 = call ptr @lp_str_concat(ptr %t1798, ptr @.str8534) + %t1798 = call ptr @lp_str_concat(ptr @.str8538, ptr %t1797) + %t1799 = call ptr @lp_str_concat(ptr %t1798, ptr @.str8539) %t1800 = load ptr, ptr %t1794 %t1801 = getelementptr inbounds %Cmp_Val, ptr %t1800, i32 0, i32 0 %t1802 = load ptr, ptr %t1801 %t1803 = call ptr @lp_str_concat(ptr %t1799, ptr %t1802) - %t1804 = call ptr @lp_str_concat(ptr %t1803, ptr @.str8535) + %t1804 = call ptr @lp_str_concat(ptr %t1803, ptr @.str8540) %t1805 = call ptr @fn_emit_bind(ptr %t1804) - %t1806 = call ptr @fn_val(ptr %t1805, ptr @.str8536) + %t1806 = call ptr @fn_val(ptr %t1805, ptr @.str8541) store ptr %t1806, ptr %retval br label %ret ifend234: @@ -89926,10 +90082,10 @@ wend249: %t1917 = load ptr, ptr %t1916 %t1918 = call ptr @fn_llty(ptr %t1917) store ptr %t1918, ptr %t1919 - call void @fn_emit(ptr @.str8537) - store ptr @.str8538, ptr %t1920 + call void @fn_emit(ptr @.str8542) + store ptr @.str8543, ptr %t1920 %t1921 = load ptr, ptr %t1919 - %t1922 = call i32 @lp_str_eq(ptr %t1921, ptr @.str8539) + %t1922 = call i32 @lp_str_eq(ptr %t1921, ptr @.str8544) %t1923 = icmp eq i32 %t1922, 0 %t1924 = zext i1 %t1923 to i32 %t1925 = icmp ne i32 %t1924, 0 @@ -89939,20 +90095,20 @@ then254: store ptr %t1926, ptr %t1920 %t1927 = load ptr, ptr %t1920 call void @fn_emit(ptr %t1927) - call void @fn_emit(ptr @.str8540) + call void @fn_emit(ptr @.str8545) br label %ifend256 ifend256: - call void @fn_emit(ptr @.str8541) + call void @fn_emit(ptr @.str8546) %t1928 = load ptr, ptr %t1919 call void @fn_emit(ptr %t1928) - call void @fn_emit(ptr @.str8542) + call void @fn_emit(ptr @.str8547) %t1929 = load ptr, ptr %t1827 %t1930 = getelementptr inbounds %Cmp_Node, ptr %t1929, i32 0, i32 4 %t1931 = load ptr, ptr %t1930 %t1932 = getelementptr inbounds %Cmp_Node, ptr %t1931, i32 0, i32 1 %t1933 = load ptr, ptr %t1932 call void @fn_emit(ptr %t1933) - call void @fn_emit(ptr @.str8543) + call void @fn_emit(ptr @.str8548) store i32 0, ptr %t1849 br label %wcond257 wcond257: @@ -89971,7 +90127,7 @@ wbody258: %t1944 = icmp ne i32 %t1943, 0 br i1 %t1944, label %then260, label %ifend262 then260: - call void @fn_emit(ptr @.str8544) + call void @fn_emit(ptr @.str8549) br label %ifend262 ifend262: %t1945 = load ptr, ptr %t1848 @@ -89982,7 +90138,7 @@ ifend262: %t1950 = load ptr, ptr %t1949 %t1951 = call ptr @fn_llty(ptr %t1950) call void @fn_emit(ptr %t1951) - call void @fn_emit(ptr @.str8545) + call void @fn_emit(ptr @.str8550) %t1952 = load ptr, ptr %t1841 %t1953 = getelementptr inbounds %LSlice, ptr %t1952, i32 0, i32 0 %t1954 = load ptr, ptr %t1953 @@ -89995,7 +90151,7 @@ ifend262: store i32 %t1959, ptr %t1849 br label %wcond257 wend259: - call void @fn_emit(ptr @.str8546) + call void @fn_emit(ptr @.str8551) %t1960 = load ptr, ptr %t1920 %t1961 = load ptr, ptr %t1827 %t1962 = getelementptr inbounds %Cmp_Node, ptr %t1961, i32 0, i32 3 @@ -90034,7 +90190,7 @@ ifend265: br i1 %t1986, label %then266, label %ifend268 then266: %t1987 = load ptr, ptr %t38 - %t1988 = call ptr @lp_str_concat(ptr @.str8547, ptr %t1987) + %t1988 = call ptr @lp_str_concat(ptr @.str8552, ptr %t1987) store ptr %t1988, ptr %t1989 %t1990 = load ptr, ptr %t1989 %t1991 = call ptr @fn_find_fn(ptr %t1990) @@ -90046,7 +90202,7 @@ then266: br i1 %t1995, label %then269, label %ifend271 then269: %t1996 = load ptr, ptr %t38 - %t1997 = call ptr @lp_str_concat(ptr @.str8548, ptr %t1996) + %t1997 = call ptr @lp_str_concat(ptr @.str8553, ptr %t1996) call void @fn_perr(ptr %t1997) br label %ifend271 ifend271: @@ -90195,10 +90351,10 @@ wend274: %t2102 = load ptr, ptr %t2101 %t2103 = call ptr @fn_llty(ptr %t2102) store ptr %t2103, ptr %t2104 - call void @fn_emit(ptr @.str8549) - store ptr @.str8550, ptr %t2105 + call void @fn_emit(ptr @.str8554) + store ptr @.str8555, ptr %t2105 %t2106 = load ptr, ptr %t2104 - %t2107 = call i32 @lp_str_eq(ptr %t2106, ptr @.str8551) + %t2107 = call i32 @lp_str_eq(ptr %t2106, ptr @.str8556) %t2108 = icmp eq i32 %t2107, 0 %t2109 = zext i1 %t2108 to i32 %t2110 = icmp ne i32 %t2109, 0 @@ -90208,16 +90364,16 @@ then282: store ptr %t2111, ptr %t2105 %t2112 = load ptr, ptr %t2105 call void @fn_emit(ptr %t2112) - call void @fn_emit(ptr @.str8552) + call void @fn_emit(ptr @.str8557) br label %ifend284 ifend284: - call void @fn_emit(ptr @.str8553) + call void @fn_emit(ptr @.str8558) %t2113 = load ptr, ptr %t2104 call void @fn_emit(ptr %t2113) - call void @fn_emit(ptr @.str8554) + call void @fn_emit(ptr @.str8559) %t2114 = load ptr, ptr %t1982 call void @fn_emit(ptr %t2114) - call void @fn_emit(ptr @.str8555) + call void @fn_emit(ptr @.str8560) store i32 0, ptr %t2019 br label %wcond285 wcond285: @@ -90236,7 +90392,7 @@ wbody286: %t2125 = icmp ne i32 %t2124, 0 br i1 %t2125, label %then288, label %ifend290 then288: - call void @fn_emit(ptr @.str8556) + call void @fn_emit(ptr @.str8561) br label %ifend290 ifend290: %t2126 = load ptr, ptr %t2018 @@ -90247,7 +90403,7 @@ ifend290: %t2131 = load ptr, ptr %t2130 %t2132 = call ptr @fn_llty(ptr %t2131) call void @fn_emit(ptr %t2132) - call void @fn_emit(ptr @.str8557) + call void @fn_emit(ptr @.str8562) %t2133 = load ptr, ptr %t2011 %t2134 = getelementptr inbounds %LSlice, ptr %t2133, i32 0, i32 0 %t2135 = load ptr, ptr %t2134 @@ -90260,7 +90416,7 @@ ifend290: store i32 %t2140, ptr %t2019 br label %wcond285 wend287: - call void @fn_emit(ptr @.str8558) + call void @fn_emit(ptr @.str8563) %t2141 = load ptr, ptr %t2105 %t2142 = load ptr, ptr %t1980 %t2143 = getelementptr inbounds %Cmp_Node, ptr %t2142, i32 0, i32 3 @@ -90304,7 +90460,7 @@ entry: %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: - %t5 = call ptr @fn_val(ptr @.str8559, ptr @.str8560) + %t5 = call ptr @fn_val(ptr @.str8564, ptr @.str8565) store ptr %t5, ptr %retval br label %ret ifend2: @@ -90320,7 +90476,7 @@ then3: %t13 = getelementptr inbounds %Cmp_Node, ptr %t12, i32 0, i32 2 %t14 = load i32, ptr %t13 %t15 = call ptr @fn_itoa(i32 %t14) - %t16 = call ptr @fn_val(ptr %t15, ptr @.str8561) + %t16 = call ptr @fn_val(ptr %t15, ptr @.str8566) store ptr %t16, ptr %retval br label %ret ifend5: @@ -90336,7 +90492,7 @@ then6: %t24 = getelementptr inbounds %Cmp_Node, ptr %t23, i32 0, i32 2 %t25 = load i32, ptr %t24 %t26 = call ptr @fn_itoa(i32 %t25) - %t27 = call ptr @fn_val(ptr %t26, ptr @.str8562) + %t27 = call ptr @fn_val(ptr %t26, ptr @.str8567) store ptr %t27, ptr %retval br label %ret ifend8: @@ -90352,7 +90508,7 @@ then9: %t35 = getelementptr inbounds %Cmp_Node, ptr %t34, i32 0, i32 2 %t36 = load i32, ptr %t35 %t37 = call ptr @fn_itoa(i32 %t36) - %t38 = call ptr @fn_val(ptr %t37, ptr @.str8563) + %t38 = call ptr @fn_val(ptr %t37, ptr @.str8568) store ptr %t38, ptr %retval br label %ret ifend11: @@ -90364,7 +90520,7 @@ ifend11: %t44 = icmp ne i32 %t43, 0 br i1 %t44, label %then12, label %ifend14 then12: - %t45 = call ptr @fn_val(ptr @.str8564, ptr @.str8565) + %t45 = call ptr @fn_val(ptr @.str8569, ptr @.str8570) store ptr %t45, ptr %retval br label %ret ifend14: @@ -90378,7 +90534,7 @@ ifend14: then15: %t52 = load ptr, ptr %t0 %t53 = call ptr @fn_emit_spawn(ptr %t52) - %t54 = call ptr @fn_val(ptr %t53, ptr @.str8566) + %t54 = call ptr @fn_val(ptr %t53, ptr @.str8571) store ptr %t54, ptr %retval br label %ret ifend17: @@ -90409,20 +90565,20 @@ then18: %t76 = load ptr, ptr %t65 %t77 = getelementptr inbounds %Cmp_Val, ptr %t76, i32 0, i32 0 %t78 = load ptr, ptr %t77 - %t79 = call ptr @lp_str_concat(ptr @.str8567, ptr %t78) - %t80 = call ptr @lp_str_concat(ptr %t79, ptr @.str8568) + %t79 = call ptr @lp_str_concat(ptr @.str8572, ptr %t78) + %t80 = call ptr @lp_str_concat(ptr %t79, ptr @.str8573) %t81 = load ptr, ptr %t70 %t82 = getelementptr inbounds %Cmp_Val, ptr %t81, i32 0, i32 0 %t83 = load ptr, ptr %t82 %t84 = call ptr @lp_str_concat(ptr %t80, ptr %t83) - %t85 = call ptr @lp_str_concat(ptr %t84, ptr @.str8569) + %t85 = call ptr @lp_str_concat(ptr %t84, ptr @.str8574) %t86 = load ptr, ptr %t75 %t87 = getelementptr inbounds %Cmp_Val, ptr %t86, i32 0, i32 0 %t88 = load ptr, ptr %t87 %t89 = call ptr @lp_str_concat(ptr %t85, ptr %t88) - %t90 = call ptr @lp_str_concat(ptr %t89, ptr @.str8570) + %t90 = call ptr @lp_str_concat(ptr %t89, ptr @.str8575) %t91 = call ptr @fn_emit_bind(ptr %t90) - %t92 = call ptr @fn_val(ptr %t91, ptr @.str8571) + %t92 = call ptr @fn_val(ptr %t91, ptr @.str8576) store ptr %t92, ptr %retval br label %ret ifend20: @@ -90438,7 +90594,7 @@ then21: %t100 = getelementptr inbounds %Cmp_Node, ptr %t99, i32 0, i32 1 %t101 = load ptr, ptr %t100 %t102 = call ptr @fn_emit_str_const(ptr %t101) - %t103 = call ptr @fn_val(ptr %t102, ptr @.str8572) + %t103 = call ptr @fn_val(ptr %t102, ptr @.str8577) store ptr %t103, ptr %retval br label %ret ifend23: @@ -90552,8 +90708,8 @@ ifend44: %t182 = getelementptr inbounds %Cmp_Node, ptr %t181, i32 0, i32 3 %t183 = load ptr, ptr %t182 %t184 = call ptr @fn_llty(ptr %t183) - %t185 = call ptr @lp_str_concat(ptr @.str8573, ptr %t184) - %t186 = call ptr @lp_str_concat(ptr %t185, ptr @.str8574) + %t185 = call ptr @lp_str_concat(ptr @.str8578, ptr %t184) + %t186 = call ptr @lp_str_concat(ptr %t185, ptr @.str8579) %t187 = load ptr, ptr %t0 %t188 = getelementptr inbounds %Cmp_Node, ptr %t187, i32 0, i32 1 %t189 = load ptr, ptr %t188 @@ -90580,7 +90736,7 @@ then45: %t205 = load ptr, ptr %t204 %t206 = call i32 @fn_ui_index_of(ptr %t205) %t207 = call ptr @fn_itoa(i32 %t206) - %t208 = call ptr @fn_val(ptr %t207, ptr @.str8575) + %t208 = call ptr @fn_val(ptr %t207, ptr @.str8580) store ptr %t208, ptr %retval br label %ret ifend47: @@ -90613,7 +90769,7 @@ ifend50: %t227 = load ptr, ptr %t0 %t228 = getelementptr inbounds %Cmp_Node, ptr %t227, i32 0, i32 1 %t229 = load ptr, ptr %t228 - %t230 = call ptr @lp_str_concat(ptr @.str8576, ptr %t229) + %t230 = call ptr @lp_str_concat(ptr @.str8581, ptr %t229) call void @fn_perr(ptr %t230) br label %ifend35 ifend35: @@ -90640,7 +90796,7 @@ then54: %t247 = load ptr, ptr %t246 %t248 = getelementptr inbounds %Cmp_Node, ptr %t247, i32 0, i32 1 %t249 = load ptr, ptr %t248 - %t250 = call i32 @lp_str_eq(ptr %t249, ptr @.str8577) + %t250 = call i32 @lp_str_eq(ptr %t249, ptr @.str8582) %t251 = icmp ne i32 %t250, 0 br i1 %t251, label %then57, label %ifend59 then57: @@ -90658,13 +90814,13 @@ then60: %t261 = load ptr, ptr %t0 %t262 = getelementptr inbounds %Cmp_Node, ptr %t261, i32 0, i32 1 %t263 = load ptr, ptr %t262 - %t264 = call ptr @lp_str_concat(ptr @.str8578, ptr %t263) + %t264 = call ptr @lp_str_concat(ptr @.str8583, ptr %t263) call void @fn_perr(ptr %t264) br label %ifend62 ifend62: %t265 = load i32, ptr %t256 %t266 = call ptr @fn_itoa(i32 %t265) - %t267 = call ptr @fn_val(ptr %t266, ptr @.str8579) + %t267 = call ptr @fn_val(ptr %t266, ptr @.str8584) store ptr %t267, ptr %retval br label %ret ifend59: @@ -90673,7 +90829,7 @@ ifend59: %t270 = load ptr, ptr %t269 %t271 = getelementptr inbounds %Cmp_Node, ptr %t270, i32 0, i32 1 %t272 = load ptr, ptr %t271 - %t273 = call i32 @lp_str_eq(ptr %t272, ptr @.str8580) + %t273 = call i32 @lp_str_eq(ptr %t272, ptr @.str8585) %t274 = icmp ne i32 %t273, 0 br i1 %t274, label %then63, label %ifend65 then63: @@ -90691,13 +90847,13 @@ then66: %t284 = load ptr, ptr %t0 %t285 = getelementptr inbounds %Cmp_Node, ptr %t284, i32 0, i32 1 %t286 = load ptr, ptr %t285 - %t287 = call ptr @lp_str_concat(ptr @.str8581, ptr %t286) + %t287 = call ptr @lp_str_concat(ptr @.str8586, ptr %t286) call void @fn_perr(ptr %t287) br label %ifend68 ifend68: %t288 = load i32, ptr %t279 %t289 = call ptr @fn_itoa(i32 %t288) - %t290 = call ptr @fn_val(ptr %t289, ptr @.str8582) + %t290 = call ptr @fn_val(ptr %t289, ptr @.str8587) store ptr %t290, ptr %retval br label %ret ifend65: @@ -90719,7 +90875,7 @@ ifend65: then69: %t305 = load i32, ptr %t300 %t306 = call ptr @fn_itoa(i32 %t305) - %t307 = call ptr @fn_val(ptr %t306, ptr @.str8583) + %t307 = call ptr @fn_val(ptr %t306, ptr @.str8588) store ptr %t307, ptr %retval br label %ret ifend71: @@ -90737,7 +90893,7 @@ ifend56: br i1 %t316, label %then72, label %ifend74 then72: %t318 = load ptr, ptr %t312 - %t319 = call i32 @lp_str_eq(ptr %t318, ptr @.str8584) + %t319 = call i32 @lp_str_eq(ptr %t318, ptr @.str8589) %t320 = icmp ne i32 %t319, 0 %t321 = zext i1 %t320 to i32 store i32 %t321, ptr %t317 @@ -90746,7 +90902,7 @@ sc75: %t323 = load ptr, ptr %t0 %t324 = getelementptr inbounds %Cmp_Node, ptr %t323, i32 0, i32 1 %t325 = load ptr, ptr %t324 - %t326 = call i32 @lp_str_eq(ptr %t325, ptr @.str8585) + %t326 = call i32 @lp_str_eq(ptr %t325, ptr @.str8590) %t327 = icmp ne i32 %t326, 0 %t328 = zext i1 %t327 to i32 store i32 %t328, ptr %t322 @@ -90755,7 +90911,7 @@ sc77: %t329 = load ptr, ptr %t0 %t330 = getelementptr inbounds %Cmp_Node, ptr %t329, i32 0, i32 1 %t331 = load ptr, ptr %t330 - %t332 = call i32 @lp_str_eq(ptr %t331, ptr @.str8586) + %t332 = call i32 @lp_str_eq(ptr %t331, ptr @.str8591) %t333 = icmp ne i32 %t332, 0 %t334 = zext i1 %t333 to i32 store i32 %t334, ptr %t322 @@ -90779,7 +90935,7 @@ then79: %t345 = load ptr, ptr %t0 %t346 = getelementptr inbounds %Cmp_Node, ptr %t345, i32 0, i32 1 %t347 = load ptr, ptr %t346 - %t348 = call i32 @lp_str_eq(ptr %t347, ptr @.str8587) + %t348 = call i32 @lp_str_eq(ptr %t347, ptr @.str8592) %t349 = icmp ne i32 %t348, 0 br i1 %t349, label %then82, label %ifend84 then82: @@ -90787,7 +90943,7 @@ then82: %t351 = getelementptr inbounds %Cmp_Val, ptr %t350, i32 0, i32 0 %t352 = load ptr, ptr %t351 %t353 = call ptr @fn_vec_x(ptr %t352) - %t354 = call ptr @fn_val(ptr %t353, ptr @.str8588) + %t354 = call ptr @fn_val(ptr %t353, ptr @.str8593) store ptr %t354, ptr %retval br label %ret ifend84: @@ -90795,7 +90951,7 @@ ifend84: %t356 = getelementptr inbounds %Cmp_Val, ptr %t355, i32 0, i32 0 %t357 = load ptr, ptr %t356 %t358 = call ptr @fn_vec_y(ptr %t357) - %t359 = call ptr @fn_val(ptr %t358, ptr @.str8589) + %t359 = call ptr @fn_val(ptr %t358, ptr @.str8594) store ptr %t359, ptr %retval br label %ret ifend81: @@ -90843,19 +90999,19 @@ then88: %t389 = call ptr @fn_emit_index_addr(ptr %t388) store ptr %t389, ptr %t390 %t391 = load ptr, ptr @g_g_addr_ty - %t392 = call i32 @lp_str_eq(ptr %t391, ptr @.str8590) + %t392 = call i32 @lp_str_eq(ptr %t391, ptr @.str8595) %t393 = icmp ne i32 %t392, 0 br i1 %t393, label %then91, label %ifend93 then91: %t394 = load ptr, ptr %t390 - %t395 = call ptr @lp_str_concat(ptr @.str8591, ptr %t394) + %t395 = call ptr @lp_str_concat(ptr @.str8596, ptr %t394) %t396 = call ptr @fn_emit_bind(ptr %t395) store ptr %t396, ptr %t397 %t398 = load ptr, ptr %t397 - %t399 = call ptr @lp_str_concat(ptr @.str8592, ptr %t398) - %t400 = call ptr @lp_str_concat(ptr %t399, ptr @.str8593) + %t399 = call ptr @lp_str_concat(ptr @.str8597, ptr %t398) + %t400 = call ptr @lp_str_concat(ptr %t399, ptr @.str8598) %t401 = call ptr @fn_emit_bind(ptr %t400) - %t402 = call ptr @fn_val(ptr %t401, ptr @.str8594) + %t402 = call ptr @fn_val(ptr %t401, ptr @.str8599) store ptr %t402, ptr %retval br label %ret ifend93: @@ -90934,40 +91090,40 @@ then106: %t450 = getelementptr inbounds %Cmp_Val, ptr %t449, i32 0, i32 1 %t451 = load ptr, ptr %t450 %t452 = call ptr @fn_llty(ptr %t451) - %t453 = call i32 @lp_str_eq(ptr %t452, ptr @.str8595) + %t453 = call i32 @lp_str_eq(ptr %t452, ptr @.str8600) %t454 = icmp ne i32 %t453, 0 br i1 %t454, label %then109, label %ifend111 then109: %t455 = load ptr, ptr %t0 %t456 = getelementptr inbounds %Cmp_Node, ptr %t455, i32 0, i32 1 %t457 = load ptr, ptr %t456 - %t458 = call i32 @lp_str_eq(ptr %t457, ptr @.str8596) + %t458 = call i32 @lp_str_eq(ptr %t457, ptr @.str8601) %t459 = icmp ne i32 %t458, 0 br i1 %t459, label %then112, label %ifend114 then112: %t460 = load ptr, ptr %t448 %t461 = getelementptr inbounds %Cmp_Val, ptr %t460, i32 0, i32 0 %t462 = load ptr, ptr %t461 - %t463 = call ptr @lp_str_concat(ptr @.str8597, ptr %t462) + %t463 = call ptr @lp_str_concat(ptr @.str8602, ptr %t462) %t464 = call ptr @fn_emit_bind(ptr %t463) - %t465 = call ptr @fn_val(ptr %t464, ptr @.str8598) + %t465 = call ptr @fn_val(ptr %t464, ptr @.str8603) store ptr %t465, ptr %retval br label %ret ifend114: %t466 = load ptr, ptr %t0 %t467 = getelementptr inbounds %Cmp_Node, ptr %t466, i32 0, i32 1 %t468 = load ptr, ptr %t467 - %t469 = call i32 @lp_str_eq(ptr %t468, ptr @.str8599) + %t469 = call i32 @lp_str_eq(ptr %t468, ptr @.str8604) %t470 = icmp ne i32 %t469, 0 br i1 %t470, label %then115, label %ifend117 then115: %t471 = load ptr, ptr %t448 %t472 = getelementptr inbounds %Cmp_Val, ptr %t471, i32 0, i32 0 %t473 = load ptr, ptr %t472 - %t474 = call ptr @lp_str_concat(ptr @.str8600, ptr %t473) - %t475 = call ptr @lp_str_concat(ptr %t474, ptr @.str8601) + %t474 = call ptr @lp_str_concat(ptr @.str8605, ptr %t473) + %t475 = call ptr @lp_str_concat(ptr %t474, ptr @.str8606) %t476 = call ptr @fn_emit_bind(ptr %t475) - %t477 = call ptr @fn_val(ptr %t476, ptr @.str8602) + %t477 = call ptr @fn_val(ptr %t476, ptr @.str8607) store ptr %t477, ptr %retval br label %ret ifend117: @@ -90976,14 +91132,14 @@ ifend111: %t478 = load ptr, ptr %t0 %t479 = getelementptr inbounds %Cmp_Node, ptr %t478, i32 0, i32 1 %t480 = load ptr, ptr %t479 - %t481 = call i32 @lp_str_eq(ptr %t480, ptr @.str8603) + %t481 = call i32 @lp_str_eq(ptr %t480, ptr @.str8608) %t482 = icmp ne i32 %t481, 0 br i1 %t482, label %then118, label %ifend120 then118: %t483 = load ptr, ptr %t448 %t484 = getelementptr inbounds %Cmp_Val, ptr %t483, i32 0, i32 0 %t485 = load ptr, ptr %t484 - %t486 = call ptr @lp_str_concat(ptr @.str8604, ptr %t485) + %t486 = call ptr @lp_str_concat(ptr @.str8609, ptr %t485) %t487 = call ptr @fn_emit_bind(ptr %t486) %t488 = load ptr, ptr %t448 %t489 = getelementptr inbounds %Cmp_Val, ptr %t488, i32 0, i32 1 @@ -90996,15 +91152,15 @@ ifend120: %t493 = load ptr, ptr %t0 %t494 = getelementptr inbounds %Cmp_Node, ptr %t493, i32 0, i32 1 %t495 = load ptr, ptr %t494 - %t496 = call i32 @lp_str_eq(ptr %t495, ptr @.str8605) + %t496 = call i32 @lp_str_eq(ptr %t495, ptr @.str8610) %t497 = icmp ne i32 %t496, 0 br i1 %t497, label %then121, label %ifend123 then121: %t498 = load ptr, ptr %t448 %t499 = getelementptr inbounds %Cmp_Val, ptr %t498, i32 0, i32 0 %t500 = load ptr, ptr %t499 - %t501 = call ptr @lp_str_concat(ptr @.str8606, ptr %t500) - %t502 = call ptr @lp_str_concat(ptr %t501, ptr @.str8607) + %t501 = call ptr @lp_str_concat(ptr @.str8611, ptr %t500) + %t502 = call ptr @lp_str_concat(ptr %t501, ptr @.str8612) %t503 = call ptr @fn_emit_bind(ptr %t502) %t504 = load ptr, ptr %t448 %t505 = getelementptr inbounds %Cmp_Val, ptr %t504, i32 0, i32 1 @@ -91017,20 +91173,20 @@ ifend123: %t509 = load ptr, ptr %t448 %t510 = getelementptr inbounds %Cmp_Val, ptr %t509, i32 0, i32 0 %t511 = load ptr, ptr %t510 - %t512 = call ptr @lp_str_concat(ptr @.str8608, ptr %t511) - %t513 = call ptr @lp_str_concat(ptr %t512, ptr @.str8609) + %t512 = call ptr @lp_str_concat(ptr @.str8613, ptr %t511) + %t513 = call ptr @lp_str_concat(ptr %t512, ptr @.str8614) %t514 = call ptr @fn_emit_bind(ptr %t513) store ptr %t514, ptr %t515 %t516 = load ptr, ptr %t515 - %t517 = call ptr @lp_str_concat(ptr @.str8610, ptr %t516) - %t518 = call ptr @lp_str_concat(ptr %t517, ptr @.str8611) + %t517 = call ptr @lp_str_concat(ptr @.str8615, ptr %t516) + %t518 = call ptr @lp_str_concat(ptr %t517, ptr @.str8616) %t519 = call ptr @fn_emit_bind(ptr %t518) - %t520 = call ptr @fn_val(ptr %t519, ptr @.str8612) + %t520 = call ptr @fn_val(ptr %t519, ptr @.str8617) store ptr %t520, ptr %retval br label %ret ifend108: - call void @fn_perr(ptr @.str8613) - %t521 = call ptr @fn_val(ptr @.str8614, ptr @.str8615) + call void @fn_perr(ptr @.str8618) + %t521 = call ptr @fn_val(ptr @.str8619, ptr @.str8620) store ptr %t521, ptr %retval br label %ret ret: @@ -91090,16 +91246,16 @@ entry: store ptr %arg_lt, ptr %t0 store ptr %arg_v, ptr %t1 store ptr %arg_addr, ptr %t2 - call void @fn_emit(ptr @.str8616) + call void @fn_emit(ptr @.str8621) %t3 = load ptr, ptr %t0 call void @fn_emit(ptr %t3) - call void @fn_emit(ptr @.str8617) + call void @fn_emit(ptr @.str8622) %t4 = load ptr, ptr %t1 call void @fn_emit(ptr %t4) - call void @fn_emit(ptr @.str8618) + call void @fn_emit(ptr @.str8623) %t5 = load ptr, ptr %t2 call void @fn_emit(ptr %t5) - call void @fn_emit(ptr @.str8619) + call void @fn_emit(ptr @.str8624) br label %ret ret: ret void @@ -91136,8 +91292,8 @@ entry: %t2 = getelementptr inbounds %Cmp_Node, ptr %t1, i32 0, i32 4 %t3 = load ptr, ptr %t2 store ptr %t3, ptr %t4 - store ptr @.str8620, ptr %t5 - store ptr @.str8621, ptr %t6 + store ptr @.str8625, ptr %t5 + store ptr @.str8626, ptr %t6 %t7 = load ptr, ptr %t4 %t8 = getelementptr inbounds %Cmp_Node, ptr %t7, i32 0, i32 0 %t9 = load i32, ptr %t8 @@ -91171,8 +91327,8 @@ then6: %t31 = load ptr, ptr %t4 %t32 = getelementptr inbounds %Cmp_Node, ptr %t31, i32 0, i32 1 %t33 = load ptr, ptr %t32 - %t34 = call ptr @lp_str_concat(ptr @.str8622, ptr %t33) - %t35 = call ptr @lp_str_concat(ptr %t34, ptr @.str8623) + %t34 = call ptr @lp_str_concat(ptr @.str8627, ptr %t33) + %t35 = call ptr @lp_str_concat(ptr %t34, ptr @.str8628) %t36 = load ptr, ptr %t0 %t37 = getelementptr inbounds %Cmp_Node, ptr %t36, i32 0, i32 8 %t38 = load i32, ptr %t37 @@ -91211,14 +91367,14 @@ then9: %t62 = load ptr, ptr %t4 %t63 = getelementptr inbounds %Cmp_Node, ptr %t62, i32 0, i32 1 %t64 = load ptr, ptr %t63 - %t65 = call ptr @lp_str_concat(ptr @.str8624, ptr %t64) + %t65 = call ptr @lp_str_concat(ptr @.str8629, ptr %t64) call void @fn_perr(ptr %t65) br label %ifend11 ifend11: %t66 = load ptr, ptr %t4 %t67 = getelementptr inbounds %Cmp_Node, ptr %t66, i32 0, i32 1 %t68 = load ptr, ptr %t67 - %t69 = call ptr @lp_str_concat(ptr @.str8625, ptr %t68) + %t69 = call ptr @lp_str_concat(ptr @.str8630, ptr %t68) store ptr %t69, ptr %t5 %t70 = load ptr, ptr %t57 %t71 = getelementptr inbounds %Cmp_Node, ptr %t70, i32 0, i32 3 @@ -91258,7 +91414,7 @@ then15: store ptr %t90, ptr %t6 br label %ifend17 else16: - call void @fn_perr(ptr @.str8626) + call void @fn_perr(ptr @.str8631) br label %ifend17 ifend17: br label %ifend14 @@ -91276,15 +91432,15 @@ ifend2: %t99 = load ptr, ptr %t0 %t100 = getelementptr inbounds %Cmp_Node, ptr %t99, i32 0, i32 1 %t101 = load ptr, ptr %t100 - %t102 = call i32 @lp_str_eq(ptr %t101, ptr @.str8627) + %t102 = call i32 @lp_str_eq(ptr %t101, ptr @.str8632) %t103 = icmp eq i32 %t102, 0 %t104 = zext i1 %t103 to i32 %t105 = icmp ne i32 %t104, 0 br i1 %t105, label %then18, label %ifend20 then18: %t106 = load ptr, ptr %t93 - %t107 = call ptr @lp_str_concat(ptr @.str8628, ptr %t106) - %t108 = call ptr @lp_str_concat(ptr %t107, ptr @.str8629) + %t107 = call ptr @lp_str_concat(ptr @.str8633, ptr %t106) + %t108 = call ptr @lp_str_concat(ptr %t107, ptr @.str8634) %t109 = load ptr, ptr %t5 %t110 = call ptr @lp_str_concat(ptr %t108, ptr %t109) %t111 = call ptr @fn_emit_bind(ptr %t110) @@ -91306,13 +91462,13 @@ ifend20: %t124 = call ptr @fn_coerce_code(ptr %t122, ptr %t123) store ptr %t124, ptr %t125 %t126 = load ptr, ptr %t93 - %t127 = call i32 @lp_str_eq(ptr %t126, ptr @.str8630) + %t127 = call i32 @lp_str_eq(ptr %t126, ptr @.str8635) %t128 = icmp ne i32 %t127, 0 br i1 %t128, label %then21, label %ifend23 then21: %t129 = load ptr, ptr %t125 - %t130 = call ptr @lp_str_concat(ptr @.str8631, ptr %t129) - %t131 = call ptr @lp_str_concat(ptr %t130, ptr @.str8632) + %t130 = call ptr @lp_str_concat(ptr @.str8636, ptr %t129) + %t131 = call ptr @lp_str_concat(ptr %t130, ptr @.str8637) %t132 = call ptr @fn_emit_bind(ptr %t131) store ptr %t132, ptr %t125 br label %ifend23 @@ -91344,8 +91500,8 @@ entry: %t6 = load ptr, ptr %t5 %t7 = getelementptr inbounds %Cmp_Val, ptr %t6, i32 0, i32 0 %t8 = load ptr, ptr %t7 - %t9 = call ptr @lp_str_concat(ptr @.str8633, ptr %t8) - %t10 = call ptr @lp_str_concat(ptr %t9, ptr @.str8634) + %t9 = call ptr @lp_str_concat(ptr @.str8638, ptr %t8) + %t10 = call ptr @lp_str_concat(ptr %t9, ptr @.str8639) %t11 = call ptr @fn_emit_bind(ptr %t10) store ptr %t11, ptr %t12 %t13 = load ptr, ptr %t0 @@ -91354,43 +91510,43 @@ entry: %t16 = icmp ne ptr %t15, null %t17 = zext i1 %t16 to i32 store i32 %t17, ptr %t18 - %t19 = call ptr @fn_lbl(ptr @.str8635) + %t19 = call ptr @fn_lbl(ptr @.str8640) store ptr %t19, ptr %t20 - %t21 = call ptr @fn_lbl(ptr @.str8636) + %t21 = call ptr @fn_lbl(ptr @.str8641) store ptr %t21, ptr %t22 - %t23 = call ptr @fn_lbl(ptr @.str8637) + %t23 = call ptr @fn_lbl(ptr @.str8642) store ptr %t23, ptr %t24 %t25 = load i32, ptr %t18 %t26 = icmp ne i32 %t25, 0 br i1 %t26, label %then0, label %else1 then0: - call void @fn_emit(ptr @.str8638) + call void @fn_emit(ptr @.str8643) %t27 = load ptr, ptr %t12 call void @fn_emit(ptr %t27) - call void @fn_emit(ptr @.str8639) + call void @fn_emit(ptr @.str8644) %t28 = load ptr, ptr %t20 call void @fn_emit(ptr %t28) - call void @fn_emit(ptr @.str8640) + call void @fn_emit(ptr @.str8645) %t29 = load ptr, ptr %t22 call void @fn_emit(ptr %t29) - call void @fn_emit(ptr @.str8641) + call void @fn_emit(ptr @.str8646) br label %ifend2 else1: - call void @fn_emit(ptr @.str8642) + call void @fn_emit(ptr @.str8647) %t30 = load ptr, ptr %t12 call void @fn_emit(ptr %t30) - call void @fn_emit(ptr @.str8643) + call void @fn_emit(ptr @.str8648) %t31 = load ptr, ptr %t20 call void @fn_emit(ptr %t31) - call void @fn_emit(ptr @.str8644) + call void @fn_emit(ptr @.str8649) %t32 = load ptr, ptr %t24 call void @fn_emit(ptr %t32) - call void @fn_emit(ptr @.str8645) + call void @fn_emit(ptr @.str8650) br label %ifend2 ifend2: %t33 = load ptr, ptr %t20 call void @fn_emit(ptr %t33) - call void @fn_emit(ptr @.str8646) + call void @fn_emit(ptr @.str8651) store i32 0, ptr @g_g_term %t34 = load ptr, ptr %t0 %t35 = getelementptr inbounds %Cmp_Node, ptr %t34, i32 0, i32 5 @@ -91402,10 +91558,10 @@ ifend2: %t40 = icmp ne i32 %t39, 0 br i1 %t40, label %then3, label %ifend5 then3: - call void @fn_emit(ptr @.str8647) + call void @fn_emit(ptr @.str8652) %t41 = load ptr, ptr %t24 call void @fn_emit(ptr %t41) - call void @fn_emit(ptr @.str8648) + call void @fn_emit(ptr @.str8653) br label %ifend5 ifend5: %t42 = load i32, ptr %t18 @@ -91414,7 +91570,7 @@ ifend5: then6: %t44 = load ptr, ptr %t22 call void @fn_emit(ptr %t44) - call void @fn_emit(ptr @.str8649) + call void @fn_emit(ptr @.str8654) store i32 0, ptr @g_g_term %t45 = load ptr, ptr %t0 %t46 = getelementptr inbounds %Cmp_Node, ptr %t45, i32 0, i32 6 @@ -91444,17 +91600,17 @@ ifend11: %t62 = icmp ne i32 %t61, 0 br i1 %t62, label %then12, label %ifend14 then12: - call void @fn_emit(ptr @.str8650) + call void @fn_emit(ptr @.str8655) %t63 = load ptr, ptr %t24 call void @fn_emit(ptr %t63) - call void @fn_emit(ptr @.str8651) + call void @fn_emit(ptr @.str8656) br label %ifend14 ifend14: br label %ifend8 ifend8: %t64 = load ptr, ptr %t24 call void @fn_emit(ptr %t64) - call void @fn_emit(ptr @.str8652) + call void @fn_emit(ptr @.str8657) store i32 0, ptr @g_g_term br label %ret ret: @@ -91470,19 +91626,19 @@ entry: %t13 = alloca ptr %t20 = alloca ptr store ptr %arg_st, ptr %t0 - %t1 = call ptr @fn_lbl(ptr @.str8653) + %t1 = call ptr @fn_lbl(ptr @.str8658) store ptr %t1, ptr %t2 - %t3 = call ptr @fn_lbl(ptr @.str8654) + %t3 = call ptr @fn_lbl(ptr @.str8659) store ptr %t3, ptr %t4 - %t5 = call ptr @fn_lbl(ptr @.str8655) + %t5 = call ptr @fn_lbl(ptr @.str8660) store ptr %t5, ptr %t6 - call void @fn_emit(ptr @.str8656) + call void @fn_emit(ptr @.str8661) %t7 = load ptr, ptr %t2 call void @fn_emit(ptr %t7) - call void @fn_emit(ptr @.str8657) + call void @fn_emit(ptr @.str8662) %t8 = load ptr, ptr %t2 call void @fn_emit(ptr %t8) - call void @fn_emit(ptr @.str8658) + call void @fn_emit(ptr @.str8663) %t9 = load ptr, ptr %t0 %t10 = getelementptr inbounds %Cmp_Node, ptr %t9, i32 0, i32 4 %t11 = load ptr, ptr %t10 @@ -91491,23 +91647,23 @@ entry: %t14 = load ptr, ptr %t13 %t15 = getelementptr inbounds %Cmp_Val, ptr %t14, i32 0, i32 0 %t16 = load ptr, ptr %t15 - %t17 = call ptr @lp_str_concat(ptr @.str8659, ptr %t16) - %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str8660) + %t17 = call ptr @lp_str_concat(ptr @.str8664, ptr %t16) + %t18 = call ptr @lp_str_concat(ptr %t17, ptr @.str8665) %t19 = call ptr @fn_emit_bind(ptr %t18) store ptr %t19, ptr %t20 - call void @fn_emit(ptr @.str8661) + call void @fn_emit(ptr @.str8666) %t21 = load ptr, ptr %t20 call void @fn_emit(ptr %t21) - call void @fn_emit(ptr @.str8662) + call void @fn_emit(ptr @.str8667) %t22 = load ptr, ptr %t4 call void @fn_emit(ptr %t22) - call void @fn_emit(ptr @.str8663) + call void @fn_emit(ptr @.str8668) %t23 = load ptr, ptr %t6 call void @fn_emit(ptr %t23) - call void @fn_emit(ptr @.str8664) + call void @fn_emit(ptr @.str8669) %t24 = load ptr, ptr %t4 call void @fn_emit(ptr %t24) - call void @fn_emit(ptr @.str8665) + call void @fn_emit(ptr @.str8670) store i32 0, ptr @g_g_term %t25 = load ptr, ptr %t2 %t26 = load ptr, ptr %t6 @@ -91523,15 +91679,15 @@ entry: %t33 = icmp ne i32 %t32, 0 br i1 %t33, label %then0, label %ifend2 then0: - call void @fn_emit(ptr @.str8666) + call void @fn_emit(ptr @.str8671) %t34 = load ptr, ptr %t2 call void @fn_emit(ptr %t34) - call void @fn_emit(ptr @.str8667) + call void @fn_emit(ptr @.str8672) br label %ifend2 ifend2: %t35 = load ptr, ptr %t6 call void @fn_emit(ptr %t35) - call void @fn_emit(ptr @.str8668) + call void @fn_emit(ptr @.str8673) store i32 0, ptr @g_g_term br label %ret ret: @@ -91553,7 +91709,7 @@ entry: %t62 = alloca ptr %t67 = alloca ptr store ptr %arg_st, ptr %t0 - %t1 = call ptr @fn_emit_alloca(ptr @.str8669) + %t1 = call ptr @fn_emit_alloca(ptr @.str8674) store ptr %t1, ptr %t2 %t3 = load ptr, ptr %t0 %t4 = getelementptr inbounds %Cmp_Node, ptr %t3, i32 0, i32 4 @@ -91564,29 +91720,29 @@ entry: %t9 = getelementptr inbounds %Cmp_Val, ptr %t8, i32 0, i32 0 %t10 = load ptr, ptr %t9 %t11 = load ptr, ptr %t2 - call void @fn_store_at(ptr @.str8670, ptr %t10, ptr %t11) + call void @fn_store_at(ptr @.str8675, ptr %t10, ptr %t11) %t12 = load ptr, ptr %t0 %t13 = getelementptr inbounds %Cmp_Node, ptr %t12, i32 0, i32 1 %t14 = load ptr, ptr %t13 %t15 = load ptr, ptr %t2 - call void @fn_loc_push(ptr %t14, ptr %t15, ptr @.str8671) - %t16 = call ptr @fn_lbl(ptr @.str8672) + call void @fn_loc_push(ptr %t14, ptr %t15, ptr @.str8676) + %t16 = call ptr @fn_lbl(ptr @.str8677) store ptr %t16, ptr %t17 - %t18 = call ptr @fn_lbl(ptr @.str8673) + %t18 = call ptr @fn_lbl(ptr @.str8678) store ptr %t18, ptr %t19 - %t20 = call ptr @fn_lbl(ptr @.str8674) + %t20 = call ptr @fn_lbl(ptr @.str8679) store ptr %t20, ptr %t21 - %t22 = call ptr @fn_lbl(ptr @.str8675) + %t22 = call ptr @fn_lbl(ptr @.str8680) store ptr %t22, ptr %t23 - call void @fn_emit(ptr @.str8676) + call void @fn_emit(ptr @.str8681) %t24 = load ptr, ptr %t17 call void @fn_emit(ptr %t24) - call void @fn_emit(ptr @.str8677) + call void @fn_emit(ptr @.str8682) %t25 = load ptr, ptr %t17 call void @fn_emit(ptr %t25) - call void @fn_emit(ptr @.str8678) + call void @fn_emit(ptr @.str8683) %t26 = load ptr, ptr %t2 - %t27 = call ptr @lp_str_concat(ptr @.str8679, ptr %t26) + %t27 = call ptr @lp_str_concat(ptr @.str8684, ptr %t26) %t28 = call ptr @fn_emit_bind(ptr %t27) store ptr %t28, ptr %t29 %t30 = load ptr, ptr %t0 @@ -91595,27 +91751,27 @@ entry: %t33 = call ptr @fn_emit_expr(ptr %t32) store ptr %t33, ptr %t34 %t35 = load ptr, ptr %t29 - %t36 = call ptr @lp_str_concat(ptr @.str8680, ptr %t35) - %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str8681) + %t36 = call ptr @lp_str_concat(ptr @.str8685, ptr %t35) + %t37 = call ptr @lp_str_concat(ptr %t36, ptr @.str8686) %t38 = load ptr, ptr %t34 %t39 = getelementptr inbounds %Cmp_Val, ptr %t38, i32 0, i32 0 %t40 = load ptr, ptr %t39 %t41 = call ptr @lp_str_concat(ptr %t37, ptr %t40) %t42 = call ptr @fn_emit_bind(ptr %t41) store ptr %t42, ptr %t43 - call void @fn_emit(ptr @.str8682) + call void @fn_emit(ptr @.str8687) %t44 = load ptr, ptr %t43 call void @fn_emit(ptr %t44) - call void @fn_emit(ptr @.str8683) + call void @fn_emit(ptr @.str8688) %t45 = load ptr, ptr %t19 call void @fn_emit(ptr %t45) - call void @fn_emit(ptr @.str8684) + call void @fn_emit(ptr @.str8689) %t46 = load ptr, ptr %t23 call void @fn_emit(ptr %t46) - call void @fn_emit(ptr @.str8685) + call void @fn_emit(ptr @.str8690) %t47 = load ptr, ptr %t19 call void @fn_emit(ptr %t47) - call void @fn_emit(ptr @.str8686) + call void @fn_emit(ptr @.str8691) store i32 0, ptr @g_g_term %t48 = load ptr, ptr %t21 %t49 = load ptr, ptr %t23 @@ -91631,34 +91787,34 @@ entry: %t56 = icmp ne i32 %t55, 0 br i1 %t56, label %then0, label %ifend2 then0: - call void @fn_emit(ptr @.str8687) + call void @fn_emit(ptr @.str8692) %t57 = load ptr, ptr %t21 call void @fn_emit(ptr %t57) - call void @fn_emit(ptr @.str8688) + call void @fn_emit(ptr @.str8693) br label %ifend2 ifend2: %t58 = load ptr, ptr %t21 call void @fn_emit(ptr %t58) - call void @fn_emit(ptr @.str8689) + call void @fn_emit(ptr @.str8694) %t59 = load ptr, ptr %t2 - %t60 = call ptr @lp_str_concat(ptr @.str8690, ptr %t59) + %t60 = call ptr @lp_str_concat(ptr @.str8695, ptr %t59) %t61 = call ptr @fn_emit_bind(ptr %t60) store ptr %t61, ptr %t62 %t63 = load ptr, ptr %t62 - %t64 = call ptr @lp_str_concat(ptr @.str8691, ptr %t63) - %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str8692) + %t64 = call ptr @lp_str_concat(ptr @.str8696, ptr %t63) + %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str8697) %t66 = call ptr @fn_emit_bind(ptr %t65) store ptr %t66, ptr %t67 %t68 = load ptr, ptr %t67 %t69 = load ptr, ptr %t2 - call void @fn_store_at(ptr @.str8693, ptr %t68, ptr %t69) - call void @fn_emit(ptr @.str8694) + call void @fn_store_at(ptr @.str8698, ptr %t68, ptr %t69) + call void @fn_emit(ptr @.str8699) %t70 = load ptr, ptr %t17 call void @fn_emit(ptr %t70) - call void @fn_emit(ptr @.str8695) + call void @fn_emit(ptr @.str8700) %t71 = load ptr, ptr %t23 call void @fn_emit(ptr %t71) - call void @fn_emit(ptr @.str8696) + call void @fn_emit(ptr @.str8701) store i32 0, ptr @g_g_term br label %ret ret: @@ -91688,10 +91844,10 @@ then0: %t14 = load ptr, ptr %t11 %t15 = load ptr, ptr @g_ret_ty %t16 = call ptr @fn_coerce_code(ptr %t14, ptr %t15) - call void @fn_store_at(ptr %t13, ptr %t16, ptr @.str8697) + call void @fn_store_at(ptr %t13, ptr %t16, ptr @.str8702) br label %ifend2 ifend2: - call void @fn_emit(ptr @.str8698) + call void @fn_emit(ptr @.str8703) store i32 1, ptr @g_g_term br label %ret ret: @@ -91746,7 +91902,7 @@ sc3: %t33 = load ptr, ptr %t32 %t34 = getelementptr inbounds %Cmp_Node, ptr %t33, i32 0, i32 1 %t35 = load ptr, ptr %t34 - %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str8699) + %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str8704) %t37 = icmp ne i32 %t36, 0 %t38 = zext i1 %t37 to i32 store i32 %t38, ptr %t11 @@ -91824,8 +91980,8 @@ then0: %t35 = load ptr, ptr %t34 %t36 = getelementptr inbounds %Cmp_Node, ptr %t35, i32 0, i32 1 %t37 = load ptr, ptr %t36 - %t38 = call ptr @lp_str_concat(ptr @.str8700, ptr %t37) - %t39 = call ptr @lp_str_concat(ptr %t38, ptr @.str8701) + %t38 = call ptr @lp_str_concat(ptr @.str8705, ptr %t37) + %t39 = call ptr @lp_str_concat(ptr %t38, ptr @.str8706) %t40 = load ptr, ptr %t1 %t41 = getelementptr inbounds %Cmp_Node, ptr %t40, i32 0, i32 7 %t42 = load ptr, ptr %t41 @@ -91833,7 +91989,7 @@ then0: %t44 = load i32, ptr %t43 %t45 = call ptr @fn_itoa(i32 %t44) %t46 = call ptr @lp_str_concat(ptr %t39, ptr %t45) - %t47 = call ptr @lp_str_concat(ptr %t46, ptr @.str8702) + %t47 = call ptr @lp_str_concat(ptr %t46, ptr @.str8707) %t48 = load ptr, ptr %t19 %t49 = getelementptr inbounds %Cmp_Node, ptr %t48, i32 0, i32 7 %t50 = load ptr, ptr %t49 @@ -91880,12 +92036,12 @@ then6: %t82 = load ptr, ptr %t81 %t83 = getelementptr inbounds %Cmp_Node, ptr %t82, i32 0, i32 1 %t84 = load ptr, ptr %t83 - %t85 = call ptr @lp_str_concat(ptr @.str8703, ptr %t84) - %t86 = call ptr @lp_str_concat(ptr %t85, ptr @.str8704) + %t85 = call ptr @lp_str_concat(ptr @.str8708, ptr %t84) + %t86 = call ptr @lp_str_concat(ptr %t85, ptr @.str8709) %t87 = load i32, ptr %t55 %t88 = call ptr @fn_itoa(i32 %t87) %t89 = call ptr @lp_str_concat(ptr %t86, ptr %t88) - %t90 = call ptr @lp_str_concat(ptr %t89, ptr @.str8705) + %t90 = call ptr @lp_str_concat(ptr %t89, ptr @.str8710) call void @fn_perr(ptr %t90) br label %ifend8 ifend8: @@ -91905,24 +92061,24 @@ ifend8: store ptr %t103, ptr %t104 %t105 = call ptr @fn_nreg() store ptr %t105, ptr %t106 - call void @fn_emit(ptr @.str8706) + call void @fn_emit(ptr @.str8711) %t107 = load ptr, ptr %t106 call void @fn_emit(ptr %t107) - call void @fn_emit(ptr @.str8707) + call void @fn_emit(ptr @.str8712) %t108 = load ptr, ptr %t2 %t109 = getelementptr inbounds %Cmp_Val, ptr %t108, i32 0, i32 0 %t110 = load ptr, ptr %t109 call void @fn_emit(ptr %t110) - call void @fn_emit(ptr @.str8708) + call void @fn_emit(ptr @.str8713) %t111 = load i32, ptr %t55 %t112 = add i32 %t111, 1 %t113 = mul i32 8, %t112 %t114 = call ptr @fn_itoa(i32 %t113) call void @fn_emit(ptr %t114) - call void @fn_emit(ptr @.str8709) + call void @fn_emit(ptr @.str8714) %t115 = load ptr, ptr %t104 - %t116 = call ptr @lp_str_concat(ptr @.str8710, ptr %t115) - %t117 = call ptr @lp_str_concat(ptr %t116, ptr @.str8711) + %t116 = call ptr @lp_str_concat(ptr @.str8715, ptr %t115) + %t117 = call ptr @lp_str_concat(ptr %t116, ptr @.str8716) %t118 = load ptr, ptr %t106 %t119 = call ptr @lp_str_concat(ptr %t117, ptr %t118) %t120 = call ptr @fn_emit_bind(ptr %t119) @@ -91987,10 +92143,10 @@ entry: %t3 = load ptr, ptr %t1 %t4 = getelementptr inbounds %Cmp_Val, ptr %t3, i32 0, i32 0 %t5 = load ptr, ptr %t4 - %t6 = call ptr @lp_str_concat(ptr @.str8712, ptr %t5) + %t6 = call ptr @lp_str_concat(ptr @.str8717, ptr %t5) %t7 = call ptr @fn_emit_bind(ptr %t6) store ptr %t7, ptr %t8 - %t9 = call ptr @fn_lbl(ptr @.str8713) + %t9 = call ptr @fn_lbl(ptr @.str8718) store ptr %t9, ptr %t10 store ptr null, ptr %t11 store i32 0, ptr %t12 @@ -92026,7 +92182,7 @@ then3: store ptr %t35, ptr %t11 br label %ifend5 else4: - store ptr @.str8714, ptr %t36 + store ptr @.str8719, ptr %t36 store i32 1, ptr %t37 store ptr null, ptr %t38 store i32 0, ptr %t39 @@ -92085,8 +92241,8 @@ ifend11: br i1 %t81, label %then12, label %ifend14 then12: %t82 = load ptr, ptr %t61 - %t83 = call ptr @lp_str_concat(ptr @.str8715, ptr %t82) - %t84 = call ptr @lp_str_concat(ptr %t83, ptr @.str8716) + %t83 = call ptr @lp_str_concat(ptr @.str8720, ptr %t82) + %t84 = call ptr @lp_str_concat(ptr %t83, ptr @.str8721) %t85 = load ptr, ptr %t2 %t86 = getelementptr inbounds %Cmp_Node, ptr %t85, i32 0, i32 1 %t87 = load ptr, ptr %t86 @@ -92100,8 +92256,8 @@ ifend14: %t92 = or i32 %t89, %t91 store i32 %t92, ptr %t12 %t93 = load ptr, ptr %t8 - %t94 = call ptr @lp_str_concat(ptr @.str8717, ptr %t93) - %t95 = call ptr @lp_str_concat(ptr %t94, ptr @.str8718) + %t94 = call ptr @lp_str_concat(ptr @.str8722, ptr %t93) + %t95 = call ptr @lp_str_concat(ptr %t94, ptr @.str8723) %t96 = load i32, ptr %t77 %t97 = call ptr @fn_itoa(i32 %t96) %t98 = call ptr @lp_str_concat(ptr %t95, ptr %t97) @@ -92117,8 +92273,8 @@ then15: br label %ifend17 else16: %t104 = load ptr, ptr %t36 - %t105 = call ptr @lp_str_concat(ptr @.str8719, ptr %t104) - %t106 = call ptr @lp_str_concat(ptr %t105, ptr @.str8720) + %t105 = call ptr @lp_str_concat(ptr @.str8724, ptr %t104) + %t106 = call ptr @lp_str_concat(ptr %t105, ptr @.str8725) %t107 = load ptr, ptr %t100 %t108 = call ptr @lp_str_concat(ptr %t106, ptr %t107) %t109 = call ptr @fn_emit_bind(ptr %t108) @@ -92130,23 +92286,23 @@ ifend17: store i32 %t111, ptr %t39 br label %wcond6 wend8: - %t112 = call ptr @fn_lbl(ptr @.str8721) + %t112 = call ptr @fn_lbl(ptr @.str8726) store ptr %t112, ptr %t113 - %t114 = call ptr @fn_lbl(ptr @.str8722) + %t114 = call ptr @fn_lbl(ptr @.str8727) store ptr %t114, ptr %t115 - call void @fn_emit(ptr @.str8723) + call void @fn_emit(ptr @.str8728) %t116 = load ptr, ptr %t36 call void @fn_emit(ptr %t116) - call void @fn_emit(ptr @.str8724) + call void @fn_emit(ptr @.str8729) %t117 = load ptr, ptr %t113 call void @fn_emit(ptr %t117) - call void @fn_emit(ptr @.str8725) + call void @fn_emit(ptr @.str8730) %t118 = load ptr, ptr %t115 call void @fn_emit(ptr %t118) - call void @fn_emit(ptr @.str8726) + call void @fn_emit(ptr @.str8731) %t119 = load ptr, ptr %t113 call void @fn_emit(ptr %t119) - call void @fn_emit(ptr @.str8727) + call void @fn_emit(ptr @.str8732) store i32 0, ptr @g_g_term %t120 = load i32, ptr @g_nloc store i32 %t120, ptr %t121 @@ -92174,15 +92330,15 @@ ifend20: %t136 = icmp ne i32 %t135, 0 br i1 %t136, label %then21, label %ifend23 then21: - call void @fn_emit(ptr @.str8728) + call void @fn_emit(ptr @.str8733) %t137 = load ptr, ptr %t10 call void @fn_emit(ptr %t137) - call void @fn_emit(ptr @.str8729) + call void @fn_emit(ptr @.str8734) br label %ifend23 ifend23: %t138 = load ptr, ptr %t115 call void @fn_emit(ptr %t138) - call void @fn_emit(ptr @.str8730) + call void @fn_emit(ptr @.str8735) store i32 0, ptr @g_g_term br label %ifend5 ifend5: @@ -92246,8 +92402,8 @@ then33: %t180 = load ptr, ptr %t2 %t181 = getelementptr inbounds %Cmp_Node, ptr %t180, i32 0, i32 1 %t182 = load ptr, ptr %t181 - %t183 = call ptr @lp_str_concat(ptr @.str8731, ptr %t182) - %t184 = call ptr @lp_str_concat(ptr %t183, ptr @.str8732) + %t183 = call ptr @lp_str_concat(ptr @.str8736, ptr %t182) + %t184 = call ptr @lp_str_concat(ptr %t183, ptr @.str8737) %t185 = load ptr, ptr %t2 %t186 = getelementptr inbounds %Cmp_Node, ptr %t185, i32 0, i32 7 %t187 = load ptr, ptr %t186 @@ -92259,7 +92415,7 @@ then33: %t193 = getelementptr inbounds %Cmp_Node, ptr %t192, i32 0, i32 1 %t194 = load ptr, ptr %t193 %t195 = call ptr @lp_str_concat(ptr %t184, ptr %t194) - %t196 = call ptr @lp_str_concat(ptr %t195, ptr @.str8733) + %t196 = call ptr @lp_str_concat(ptr %t195, ptr @.str8738) call void @fn_perr(ptr %t196) br label %ifend35 ifend35: @@ -92278,15 +92434,15 @@ ifend26: %t202 = icmp ne i32 %t201, 0 br i1 %t202, label %then36, label %ifend38 then36: - call void @fn_emit(ptr @.str8734) + call void @fn_emit(ptr @.str8739) %t203 = load ptr, ptr %t10 call void @fn_emit(ptr %t203) - call void @fn_emit(ptr @.str8735) + call void @fn_emit(ptr @.str8740) br label %ifend38 ifend38: %t204 = load ptr, ptr %t10 call void @fn_emit(ptr %t204) - call void @fn_emit(ptr @.str8736) + call void @fn_emit(ptr @.str8741) store i32 0, ptr @g_g_term br label %ret ret: @@ -92332,7 +92488,7 @@ then0: call void @fn_emit_match_tagged(ptr %t15, ptr %t16, ptr %t17) br label %ret ifend2: - %t18 = call ptr @fn_lbl(ptr @.str8737) + %t18 = call ptr @fn_lbl(ptr @.str8742) store ptr %t18, ptr %t19 store ptr null, ptr %t20 store i32 0, ptr %t21 @@ -92367,7 +92523,7 @@ then6: store ptr %t43, ptr %t20 br label %ifend8 else7: - store ptr @.str8738, ptr %t44 + store ptr @.str8743, ptr %t44 store i32 1, ptr %t45 store i32 0, ptr %t46 br label %wcond9 @@ -92396,8 +92552,8 @@ wbody10: %t66 = load ptr, ptr %t5 %t67 = getelementptr inbounds %Cmp_Val, ptr %t66, i32 0, i32 0 %t68 = load ptr, ptr %t67 - %t69 = call ptr @lp_str_concat(ptr @.str8739, ptr %t68) - %t70 = call ptr @lp_str_concat(ptr %t69, ptr @.str8740) + %t69 = call ptr @lp_str_concat(ptr @.str8744, ptr %t68) + %t70 = call ptr @lp_str_concat(ptr %t69, ptr @.str8745) %t71 = load ptr, ptr %t65 %t72 = getelementptr inbounds %Cmp_Val, ptr %t71, i32 0, i32 0 %t73 = load ptr, ptr %t72 @@ -92414,8 +92570,8 @@ then12: br label %ifend14 else13: %t80 = load ptr, ptr %t44 - %t81 = call ptr @lp_str_concat(ptr @.str8741, ptr %t80) - %t82 = call ptr @lp_str_concat(ptr %t81, ptr @.str8742) + %t81 = call ptr @lp_str_concat(ptr @.str8746, ptr %t80) + %t82 = call ptr @lp_str_concat(ptr %t81, ptr @.str8747) %t83 = load ptr, ptr %t76 %t84 = call ptr @lp_str_concat(ptr %t82, ptr %t83) %t85 = call ptr @fn_emit_bind(ptr %t84) @@ -92427,23 +92583,23 @@ ifend14: store i32 %t87, ptr %t46 br label %wcond9 wend11: - %t88 = call ptr @fn_lbl(ptr @.str8743) + %t88 = call ptr @fn_lbl(ptr @.str8748) store ptr %t88, ptr %t89 - %t90 = call ptr @fn_lbl(ptr @.str8744) + %t90 = call ptr @fn_lbl(ptr @.str8749) store ptr %t90, ptr %t91 - call void @fn_emit(ptr @.str8745) + call void @fn_emit(ptr @.str8750) %t92 = load ptr, ptr %t44 call void @fn_emit(ptr %t92) - call void @fn_emit(ptr @.str8746) + call void @fn_emit(ptr @.str8751) %t93 = load ptr, ptr %t89 call void @fn_emit(ptr %t93) - call void @fn_emit(ptr @.str8747) + call void @fn_emit(ptr @.str8752) %t94 = load ptr, ptr %t91 call void @fn_emit(ptr %t94) - call void @fn_emit(ptr @.str8748) + call void @fn_emit(ptr @.str8753) %t95 = load ptr, ptr %t89 call void @fn_emit(ptr %t95) - call void @fn_emit(ptr @.str8749) + call void @fn_emit(ptr @.str8754) store i32 0, ptr @g_g_term %t96 = load ptr, ptr %t39 %t97 = getelementptr inbounds %Cmp_Node, ptr %t96, i32 0, i32 4 @@ -92455,15 +92611,15 @@ wend11: %t102 = icmp ne i32 %t101, 0 br i1 %t102, label %then15, label %ifend17 then15: - call void @fn_emit(ptr @.str8750) + call void @fn_emit(ptr @.str8755) %t103 = load ptr, ptr %t19 call void @fn_emit(ptr %t103) - call void @fn_emit(ptr @.str8751) + call void @fn_emit(ptr @.str8756) br label %ifend17 ifend17: %t104 = load ptr, ptr %t91 call void @fn_emit(ptr %t104) - call void @fn_emit(ptr @.str8752) + call void @fn_emit(ptr @.str8757) store i32 0, ptr @g_g_term br label %ifend8 ifend8: @@ -92490,15 +92646,15 @@ ifend20: %t117 = icmp ne i32 %t116, 0 br i1 %t117, label %then21, label %ifend23 then21: - call void @fn_emit(ptr @.str8753) + call void @fn_emit(ptr @.str8758) %t118 = load ptr, ptr %t19 call void @fn_emit(ptr %t118) - call void @fn_emit(ptr @.str8754) + call void @fn_emit(ptr @.str8759) br label %ifend23 ifend23: %t119 = load ptr, ptr %t19 call void @fn_emit(ptr %t119) - call void @fn_emit(ptr @.str8755) + call void @fn_emit(ptr @.str8760) store i32 0, ptr @g_g_term br label %ret ret: @@ -92543,7 +92699,7 @@ then0: %t10 = load ptr, ptr %t0 %t11 = getelementptr inbounds %Cmp_Node, ptr %t10, i32 0, i32 1 %t12 = load ptr, ptr %t11 - %t13 = call ptr @lp_str_concat(ptr @.str8756, ptr %t12) + %t13 = call ptr @lp_str_concat(ptr @.str8761, ptr %t12) call void @fn_perr(ptr %t13) br label %ifend2 ifend2: @@ -92651,13 +92807,13 @@ wend8: %t93 = load ptr, ptr %t92 %t94 = call ptr @fn_llty(ptr %t93) store ptr %t94, ptr %t95 - store ptr @.str8757, ptr %t96 + store ptr @.str8762, ptr %t96 %t97 = load ptr, ptr %t95 - %t98 = call i32 @lp_str_eq(ptr %t97, ptr @.str8758) + %t98 = call i32 @lp_str_eq(ptr %t97, ptr @.str8763) %t99 = icmp ne i32 %t98, 0 br i1 %t99, label %then12, label %ifend14 then12: - store ptr @.str8759, ptr %t96 + store ptr @.str8764, ptr %t96 br label %ifend14 ifend14: %t100 = load ptr, ptr %t47 @@ -92767,21 +92923,21 @@ wend5: then25: %t172 = call ptr @fn_nreg() store ptr %t172, ptr %t173 - call void @fn_emit(ptr @.str8760) + call void @fn_emit(ptr @.str8765) %t174 = load ptr, ptr %t173 call void @fn_emit(ptr %t174) - call void @fn_emit(ptr @.str8761) - call void @fn_emit(ptr @.str8762) + call void @fn_emit(ptr @.str8766) + call void @fn_emit(ptr @.str8767) %t175 = load ptr, ptr %t0 %t176 = getelementptr inbounds %Cmp_Node, ptr %t175, i32 0, i32 1 %t177 = load ptr, ptr %t176 %t178 = call i32 @fn_net_event_id(ptr %t177) %t179 = call ptr @fn_itoa(i32 %t178) call void @fn_emit(ptr %t179) - call void @fn_emit(ptr @.str8763) + call void @fn_emit(ptr @.str8768) %t180 = load ptr, ptr %t173 call void @fn_emit(ptr %t180) - call void @fn_emit(ptr @.str8764) + call void @fn_emit(ptr @.str8769) store i32 4, ptr %t181 store i32 0, ptr %t182 br label %wcond28 @@ -92799,15 +92955,15 @@ wcond28: wbody29: %t192 = call ptr @fn_nreg() store ptr %t192, ptr %t193 - call void @fn_emit(ptr @.str8765) + call void @fn_emit(ptr @.str8770) %t194 = load ptr, ptr %t193 call void @fn_emit(ptr %t194) - call void @fn_emit(ptr @.str8766) + call void @fn_emit(ptr @.str8771) %t195 = load i32, ptr %t181 %t196 = call ptr @fn_itoa(i32 %t195) call void @fn_emit(ptr %t196) - call void @fn_emit(ptr @.str8767) - call void @fn_emit(ptr @.str8768) + call void @fn_emit(ptr @.str8772) + call void @fn_emit(ptr @.str8773) %t197 = load ptr, ptr %t27 %t198 = getelementptr inbounds %LSlice, ptr %t197, i32 0, i32 0 %t199 = load ptr, ptr %t198 @@ -92815,7 +92971,7 @@ wbody29: %t201 = getelementptr inbounds ptr, ptr %t199, i32 %t200 %t202 = load ptr, ptr %t201 call void @fn_emit(ptr %t202) - call void @fn_emit(ptr @.str8769) + call void @fn_emit(ptr @.str8774) %t203 = load ptr, ptr %t20 %t204 = getelementptr inbounds %LSlice, ptr %t203, i32 0, i32 0 %t205 = load ptr, ptr %t204 @@ -92823,10 +92979,10 @@ wbody29: %t207 = getelementptr inbounds ptr, ptr %t205, i32 %t206 %t208 = load ptr, ptr %t207 call void @fn_emit(ptr %t208) - call void @fn_emit(ptr @.str8770) + call void @fn_emit(ptr @.str8775) %t209 = load ptr, ptr %t193 call void @fn_emit(ptr %t209) - call void @fn_emit(ptr @.str8771) + call void @fn_emit(ptr @.str8776) %t210 = load ptr, ptr %t5 %t211 = getelementptr inbounds %Cmp_Node, ptr %t210, i32 0, i32 7 %t212 = load ptr, ptr %t211 @@ -92846,18 +93002,18 @@ wbody29: store i32 %t224, ptr %t182 br label %wcond28 wend30: - store ptr @.str8772, ptr %t225 + store ptr @.str8777, ptr %t225 %t226 = load ptr, ptr %t5 %t227 = getelementptr inbounds %Cmp_Node, ptr %t226, i32 0, i32 3 %t228 = load ptr, ptr %t227 - %t229 = call i32 @lp_str_eq(ptr %t228, ptr @.str8773) + %t229 = call i32 @lp_str_eq(ptr %t228, ptr @.str8778) %t230 = icmp ne i32 %t229, 0 br i1 %t230, label %then31, label %ifend33 then31: - store ptr @.str8774, ptr %t225 + store ptr @.str8779, ptr %t225 br label %ifend33 ifend33: - %t231 = call ptr @fn_find_extern(ptr @.str8775) + %t231 = call ptr @fn_find_extern(ptr @.str8780) %t232 = icmp eq ptr %t231, null %t233 = zext i1 %t232 to i32 %t234 = icmp ne i32 %t233, 0 @@ -92866,18 +93022,18 @@ then34: store i32 1, ptr @g_g_uses_loopback br label %ifend36 ifend36: - call void @fn_emit(ptr @.str8776) + call void @fn_emit(ptr @.str8781) %t235 = call ptr @fn_net_send_sym() call void @fn_emit(ptr %t235) - call void @fn_emit(ptr @.str8777) + call void @fn_emit(ptr @.str8782) %t236 = load ptr, ptr %t225 call void @fn_emit(ptr %t236) - call void @fn_emit(ptr @.str8778) + call void @fn_emit(ptr @.str8783) %t237 = load i32, ptr %t181 %t238 = call ptr @fn_itoa(i32 %t237) call void @fn_emit(ptr %t238) - call void @fn_emit(ptr @.str8779) - %t239 = call ptr @fn_val(ptr @.str8780, ptr @.str8781) + call void @fn_emit(ptr @.str8784) + %t239 = call ptr @fn_val(ptr @.str8785, ptr @.str8786) store ptr %t239, ptr %retval br label %ret ifend27: @@ -92902,7 +93058,7 @@ wbody38: br i1 %t253, label %then40, label %ifend42 then40: %t254 = load ptr, ptr %t241 - call void @fn_buf_puts(ptr %t254, ptr @.str8782) + call void @fn_buf_puts(ptr %t254, ptr @.str8787) br label %ifend42 ifend42: %t255 = load ptr, ptr %t241 @@ -92914,7 +93070,7 @@ ifend42: %t261 = load ptr, ptr %t260 call void @fn_buf_puts(ptr %t255, ptr %t261) %t262 = load ptr, ptr %t241 - call void @fn_buf_puts(ptr %t262, ptr @.str8783) + call void @fn_buf_puts(ptr %t262, ptr @.str8788) %t263 = load ptr, ptr %t241 %t264 = load ptr, ptr %t20 %t265 = getelementptr inbounds %LSlice, ptr %t264, i32 0, i32 0 @@ -92938,35 +93094,35 @@ wend39: then43: %t278 = call ptr @fn_nreg() store ptr %t278, ptr %t279 - call void @fn_emit(ptr @.str8784) + call void @fn_emit(ptr @.str8789) %t280 = load ptr, ptr %t279 call void @fn_emit(ptr %t280) - call void @fn_emit(ptr @.str8785) + call void @fn_emit(ptr @.str8790) %t281 = load ptr, ptr %t0 %t282 = getelementptr inbounds %Cmp_Node, ptr %t281, i32 0, i32 1 %t283 = load ptr, ptr %t282 call void @fn_emit(ptr %t283) - call void @fn_emit(ptr @.str8786) + call void @fn_emit(ptr @.str8791) %t284 = load ptr, ptr %t241 %t285 = call ptr @fn_buf_str(ptr %t284) call void @fn_emit(ptr %t285) - call void @fn_emit(ptr @.str8787) + call void @fn_emit(ptr @.str8792) %t286 = load ptr, ptr %t279 - %t287 = call ptr @fn_val(ptr %t286, ptr @.str8788) + %t287 = call ptr @fn_val(ptr %t286, ptr @.str8793) store ptr %t287, ptr %retval br label %ret ifend45: - call void @fn_emit(ptr @.str8789) + call void @fn_emit(ptr @.str8794) %t288 = load ptr, ptr %t0 %t289 = getelementptr inbounds %Cmp_Node, ptr %t288, i32 0, i32 1 %t290 = load ptr, ptr %t289 call void @fn_emit(ptr %t290) - call void @fn_emit(ptr @.str8790) + call void @fn_emit(ptr @.str8795) %t291 = load ptr, ptr %t241 %t292 = call ptr @fn_buf_str(ptr %t291) call void @fn_emit(ptr %t292) - call void @fn_emit(ptr @.str8791) - %t293 = call ptr @fn_val(ptr @.str8792, ptr @.str8793) + call void @fn_emit(ptr @.str8796) + %t293 = call ptr @fn_val(ptr @.str8797, ptr @.str8798) store ptr %t293, ptr %retval br label %ret ret: @@ -93061,14 +93217,14 @@ ifend5: %t59 = icmp ne i32 %t58, 0 br i1 %t59, label %then6, label %else7 then6: - store ptr @.str8794, ptr %t60 + store ptr @.str8799, ptr %t60 %t61 = load ptr, ptr %t19 %t62 = call ptr @fn_llty(ptr %t61) - %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str8795) + %t63 = call i32 @lp_str_eq(ptr %t62, ptr @.str8800) %t64 = icmp ne i32 %t63, 0 br i1 %t64, label %then9, label %ifend11 then9: - store ptr @.str8796, ptr %t60 + store ptr @.str8801, ptr %t60 br label %ifend11 ifend11: %t65 = load ptr, ptr %t19 @@ -93172,7 +93328,7 @@ ifend26: %t128 = icmp ne i32 %t127, 0 br i1 %t128, label %then27, label %ifend29 then27: - call void @fn_emit(ptr @.str8797) + call void @fn_emit(ptr @.str8802) %t129 = load ptr, ptr @g_brk_lbl %t130 = getelementptr inbounds %LSlice, ptr %t129, i32 0, i32 0 %t131 = load ptr, ptr %t130 @@ -93181,7 +93337,7 @@ then27: %t134 = getelementptr inbounds ptr, ptr %t131, i32 %t133 %t135 = load ptr, ptr %t134 call void @fn_emit(ptr %t135) - call void @fn_emit(ptr @.str8798) + call void @fn_emit(ptr @.str8803) store i32 1, ptr @g_g_term br label %ret ifend29: @@ -93193,7 +93349,7 @@ ifend29: %t141 = icmp ne i32 %t140, 0 br i1 %t141, label %then30, label %ifend32 then30: - call void @fn_emit(ptr @.str8799) + call void @fn_emit(ptr @.str8804) %t142 = load ptr, ptr @g_cnt_lbl %t143 = getelementptr inbounds %LSlice, ptr %t142, i32 0, i32 0 %t144 = load ptr, ptr %t143 @@ -93202,7 +93358,7 @@ then30: %t147 = getelementptr inbounds ptr, ptr %t144, i32 %t146 %t148 = load ptr, ptr %t147 call void @fn_emit(ptr %t148) - call void @fn_emit(ptr @.str8800) + call void @fn_emit(ptr @.str8805) store i32 1, ptr @g_g_term br label %ret ifend32: @@ -93318,13 +93474,13 @@ then57: %t218 = icmp ne i32 %t217, 0 br i1 %t218, label %then60, label %ifend62 then60: - call void @fn_perr(ptr @.str8801) + call void @fn_perr(ptr @.str8806) br label %ifend62 ifend62: - call void @fn_emit(ptr @.str8802) + call void @fn_emit(ptr @.str8807) %t219 = load ptr, ptr @g_g_cancel_addr call void @fn_emit(ptr %t219) - call void @fn_emit(ptr @.str8803) + call void @fn_emit(ptr @.str8808) br label %ret ifend59: %t220 = load ptr, ptr %t0 @@ -93366,7 +93522,7 @@ then69: store ptr %t243, ptr %t244 br label %ret ifend71: - call void @fn_perr(ptr @.str8804) + call void @fn_perr(ptr @.str8809) br label %ret ret: ret void @@ -93610,7 +93766,7 @@ ifend5: store i32 %t19, ptr %t0 br label %wcond0 wend2: - %t20 = call ptr @fn_find_comp(ptr @.str8805) + %t20 = call ptr @fn_find_comp(ptr @.str8810) %t21 = icmp ne ptr %t20, null %t22 = zext i1 %t21 to i32 %t23 = icmp ne i32 %t22, 0 @@ -93700,9 +93856,9 @@ entry: %t24 = alloca i32 %t38 = alloca ptr %t90 = alloca i32 - call void @fn_emith(ptr @.str8806) - call void @fn_emith(ptr @.str8807) - call void @fn_emith(ptr @.str8808) + call void @fn_emith(ptr @.str8811) + call void @fn_emith(ptr @.str8812) + call void @fn_emith(ptr @.str8813) %t0 = load ptr, ptr @g_g_scenes %t1 = getelementptr inbounds %LSlice, ptr %t0, i32 0, i32 1 %t2 = load i32, ptr %t1 @@ -93711,31 +93867,31 @@ entry: %t5 = icmp ne i32 %t4, 0 br i1 %t5, label %then0, label %ifend2 then0: - call void @fn_emith(ptr @.str8809) + call void @fn_emith(ptr @.str8814) br label %ifend2 ifend2: - call void @fn_emith(ptr @.str8810) + call void @fn_emith(ptr @.str8815) %t6 = call ptr @fn_itoa(i32 1024) store ptr %t6, ptr %t7 %t8 = load ptr, ptr %t7 - %t9 = call ptr @lp_str_concat(ptr @.str8811, ptr %t8) - %t10 = call ptr @lp_str_concat(ptr %t9, ptr @.str8812) + %t9 = call ptr @lp_str_concat(ptr @.str8816, ptr %t8) + %t10 = call ptr @lp_str_concat(ptr %t9, ptr @.str8817) call void @fn_emith(ptr %t10) %t11 = load ptr, ptr %t7 - %t12 = call ptr @lp_str_concat(ptr @.str8813, ptr %t11) - %t13 = call ptr @lp_str_concat(ptr %t12, ptr @.str8814) + %t12 = call ptr @lp_str_concat(ptr @.str8818, ptr %t11) + %t13 = call ptr @lp_str_concat(ptr %t12, ptr @.str8819) call void @fn_emith(ptr %t13) %t14 = load ptr, ptr %t7 - %t15 = call ptr @lp_str_concat(ptr @.str8815, ptr %t14) - %t16 = call ptr @lp_str_concat(ptr %t15, ptr @.str8816) + %t15 = call ptr @lp_str_concat(ptr @.str8820, ptr %t14) + %t16 = call ptr @lp_str_concat(ptr %t15, ptr @.str8821) call void @fn_emith(ptr %t16) - call void @fn_emith(ptr @.str8817) + call void @fn_emith(ptr @.str8822) %t17 = call i32 @fn_net_any() %t18 = icmp ne i32 %t17, 0 br i1 %t18, label %then3, label %ifend5 then3: - call void @fn_emith(ptr @.str8818) - call void @fn_emith(ptr @.str8819) + call void @fn_emith(ptr @.str8823) + call void @fn_emith(ptr @.str8824) br label %ifend5 ifend5: %t19 = call i32 @fn_net_has_owned() @@ -93743,8 +93899,8 @@ ifend5: br i1 %t20, label %then6, label %ifend8 then6: %t21 = load ptr, ptr %t7 - %t22 = call ptr @lp_str_concat(ptr @.str8820, ptr %t21) - %t23 = call ptr @lp_str_concat(ptr %t22, ptr @.str8821) + %t22 = call ptr @lp_str_concat(ptr @.str8825, ptr %t21) + %t23 = call ptr @lp_str_concat(ptr %t22, ptr @.str8826) call void @fn_emith(ptr %t23) br label %ifend8 ifend8: @@ -93778,25 +93934,25 @@ then12: %t45 = load ptr, ptr %t38 %t46 = getelementptr inbounds %Cmp_Node, ptr %t45, i32 0, i32 1 %t47 = load ptr, ptr %t46 - %t48 = call ptr @lp_str_concat(ptr @.str8822, ptr %t47) - %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str8823) + %t48 = call ptr @lp_str_concat(ptr @.str8827, ptr %t47) + %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str8828) %t50 = load ptr, ptr %t7 %t51 = call ptr @lp_str_concat(ptr %t49, ptr %t50) - %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str8824) + %t52 = call ptr @lp_str_concat(ptr %t51, ptr @.str8829) %t53 = load ptr, ptr %t38 %t54 = getelementptr inbounds %Cmp_Node, ptr %t53, i32 0, i32 1 %t55 = load ptr, ptr %t54 %t56 = call ptr @lp_str_concat(ptr %t52, ptr %t55) - %t57 = call ptr @lp_str_concat(ptr %t56, ptr @.str8825) + %t57 = call ptr @lp_str_concat(ptr %t56, ptr @.str8830) call void @fn_emith(ptr %t57) %t58 = load ptr, ptr %t38 %t59 = getelementptr inbounds %Cmp_Node, ptr %t58, i32 0, i32 1 %t60 = load ptr, ptr %t59 - %t61 = call ptr @lp_str_concat(ptr @.str8826, ptr %t60) - %t62 = call ptr @lp_str_concat(ptr %t61, ptr @.str8827) + %t61 = call ptr @lp_str_concat(ptr @.str8831, ptr %t60) + %t62 = call ptr @lp_str_concat(ptr %t61, ptr @.str8832) %t63 = load ptr, ptr %t7 %t64 = call ptr @lp_str_concat(ptr %t62, ptr %t63) - %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str8828) + %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str8833) call void @fn_emith(ptr %t65) br label %ifend14 ifend14: @@ -93811,8 +93967,8 @@ then15: %t72 = load ptr, ptr %t38 %t73 = getelementptr inbounds %Cmp_Node, ptr %t72, i32 0, i32 1 %t74 = load ptr, ptr %t73 - %t75 = call ptr @lp_str_concat(ptr @.str8829, ptr %t74) - %t76 = call ptr @lp_str_concat(ptr %t75, ptr @.str8830) + %t75 = call ptr @lp_str_concat(ptr @.str8834, ptr %t74) + %t76 = call ptr @lp_str_concat(ptr %t75, ptr @.str8835) call void @fn_emith(ptr %t76) br label %ifend17 ifend17: @@ -93827,8 +93983,8 @@ then18: %t83 = load ptr, ptr %t38 %t84 = getelementptr inbounds %Cmp_Node, ptr %t83, i32 0, i32 1 %t85 = load ptr, ptr %t84 - %t86 = call ptr @lp_str_concat(ptr @.str8831, ptr %t85) - %t87 = call ptr @lp_str_concat(ptr %t86, ptr @.str8832) + %t86 = call ptr @lp_str_concat(ptr @.str8836, ptr %t85) + %t87 = call ptr @lp_str_concat(ptr %t86, ptr @.str8837) call void @fn_emith(ptr %t87) br label %ifend20 ifend20: @@ -93855,8 +94011,8 @@ wbody22: %t101 = load i32, ptr %t90 %t102 = getelementptr inbounds ptr, ptr %t100, i32 %t101 %t103 = load ptr, ptr %t102 - %t104 = call ptr @lp_str_concat(ptr @.str8833, ptr %t103) - %t105 = call ptr @lp_str_concat(ptr %t104, ptr @.str8834) + %t104 = call ptr @lp_str_concat(ptr @.str8838, ptr %t103) + %t105 = call ptr @lp_str_concat(ptr %t104, ptr @.str8839) call void @fn_emith(ptr %t105) %t106 = load i32, ptr %t90 %t107 = add i32 %t106, 1 @@ -93875,7 +94031,7 @@ entry: %t24 = alloca ptr %t0 = call ptr @fn_itoa(i32 1024) store ptr %t0, ptr %t1 - call void @fn_emit(ptr @.str8835) + call void @fn_emit(ptr @.str8840) store i32 0, ptr %t2 br label %wcond0 wcond0: @@ -93903,15 +94059,15 @@ wbody1: then3: %t21 = load i32, ptr %t2 %t22 = call ptr @fn_itoa(i32 %t21) - %t23 = call ptr @lp_str_concat(ptr @.str8836, ptr %t22) + %t23 = call ptr @lp_str_concat(ptr @.str8841, ptr %t22) store ptr %t23, ptr %t24 - call void @fn_emit(ptr @.str8837) + call void @fn_emit(ptr @.str8842) %t25 = load ptr, ptr %t24 call void @fn_emit(ptr %t25) - call void @fn_emit(ptr @.str8838) + call void @fn_emit(ptr @.str8843) %t26 = load ptr, ptr %t1 call void @fn_emit(ptr %t26) - call void @fn_emit(ptr @.str8839) + call void @fn_emit(ptr @.str8844) %t27 = load ptr, ptr @g_prog %t28 = getelementptr inbounds %LSlice, ptr %t27, i32 0, i32 0 %t29 = load ptr, ptr %t28 @@ -93921,11 +94077,11 @@ then3: %t33 = getelementptr inbounds %Cmp_Node, ptr %t32, i32 0, i32 1 %t34 = load ptr, ptr %t33 call void @fn_emit(ptr %t34) - call void @fn_emit(ptr @.str8840) - call void @fn_emit(ptr @.str8841) + call void @fn_emit(ptr @.str8845) + call void @fn_emit(ptr @.str8846) %t35 = load ptr, ptr %t24 call void @fn_emit(ptr %t35) - call void @fn_emit(ptr @.str8842) + call void @fn_emit(ptr @.str8847) br label %ifend5 ifend5: %t36 = load i32, ptr %t2 @@ -93933,38 +94089,33 @@ ifend5: store i32 %t37, ptr %t2 br label %wcond0 wend2: - call void @fn_emit(ptr @.str8843) + call void @fn_emit(ptr @.str8848) %t38 = load ptr, ptr %t1 call void @fn_emit(ptr %t38) - call void @fn_emit(ptr @.str8844) - call void @fn_emit(ptr @.str8845) + call void @fn_emit(ptr @.str8849) + call void @fn_emit(ptr @.str8850) %t39 = call i32 @fn_net_has_owned() %t40 = icmp ne i32 %t39, 0 br i1 %t40, label %then6, label %ifend8 then6: - call void @fn_emit(ptr @.str8846) + call void @fn_emit(ptr @.str8851) %t41 = load ptr, ptr %t1 call void @fn_emit(ptr %t41) - call void @fn_emit(ptr @.str8847) - call void @fn_emit(ptr @.str8848) - br label %ifend8 -ifend8: - call void @fn_emit(ptr @.str8849) - call void @fn_emit(ptr @.str8850) - call void @fn_emit(ptr @.str8851) call void @fn_emit(ptr @.str8852) call void @fn_emit(ptr @.str8853) + br label %ifend8 +ifend8: call void @fn_emit(ptr @.str8854) call void @fn_emit(ptr @.str8855) call void @fn_emit(ptr @.str8856) call void @fn_emit(ptr @.str8857) - %t42 = load ptr, ptr %t1 - call void @fn_emit(ptr %t42) call void @fn_emit(ptr @.str8858) call void @fn_emit(ptr @.str8859) call void @fn_emit(ptr @.str8860) call void @fn_emit(ptr @.str8861) call void @fn_emit(ptr @.str8862) + %t42 = load ptr, ptr %t1 + call void @fn_emit(ptr %t42) call void @fn_emit(ptr @.str8863) call void @fn_emit(ptr @.str8864) call void @fn_emit(ptr @.str8865) @@ -93972,27 +94123,32 @@ ifend8: call void @fn_emit(ptr @.str8867) call void @fn_emit(ptr @.str8868) call void @fn_emit(ptr @.str8869) - %t43 = load ptr, ptr %t1 - call void @fn_emit(ptr %t43) call void @fn_emit(ptr @.str8870) call void @fn_emit(ptr @.str8871) call void @fn_emit(ptr @.str8872) call void @fn_emit(ptr @.str8873) call void @fn_emit(ptr @.str8874) - %t44 = load ptr, ptr %t1 - call void @fn_emit(ptr %t44) + %t43 = load ptr, ptr %t1 + call void @fn_emit(ptr %t43) call void @fn_emit(ptr @.str8875) call void @fn_emit(ptr @.str8876) call void @fn_emit(ptr @.str8877) call void @fn_emit(ptr @.str8878) call void @fn_emit(ptr @.str8879) - %t45 = load ptr, ptr %t1 - call void @fn_emit(ptr %t45) + %t44 = load ptr, ptr %t1 + call void @fn_emit(ptr %t44) call void @fn_emit(ptr @.str8880) call void @fn_emit(ptr @.str8881) call void @fn_emit(ptr @.str8882) call void @fn_emit(ptr @.str8883) call void @fn_emit(ptr @.str8884) + %t45 = load ptr, ptr %t1 + call void @fn_emit(ptr %t45) + call void @fn_emit(ptr @.str8885) + call void @fn_emit(ptr @.str8886) + call void @fn_emit(ptr @.str8887) + call void @fn_emit(ptr @.str8888) + call void @fn_emit(ptr @.str8889) br label %ret ret: ret void @@ -94109,10 +94265,10 @@ entry: store ptr %arg_st, ptr %t0 %t1 = call ptr @fn_itoa(i32 1024) store ptr %t1, ptr %t2 - %t3 = call ptr @fn_emit_alloca(ptr @.str8885) + %t3 = call ptr @fn_emit_alloca(ptr @.str8890) store ptr %t3, ptr %t4 %t5 = load ptr, ptr %t4 - call void @fn_store_at(ptr @.str8886, ptr @.str8887, ptr %t5) + call void @fn_store_at(ptr @.str8891, ptr @.str8892, ptr %t5) %t6 = load i32, ptr @g_nself %t7 = load ptr, ptr @g_self_stk %t8 = getelementptr inbounds %LSlice, ptr %t7, i32 0, i32 1 @@ -94164,88 +94320,88 @@ ifend2: %t39 = load i32, ptr @g_nself %t40 = add i32 %t39, 1 store i32 %t40, ptr @g_nself - %t41 = call ptr @fn_lbl(ptr @.str8888) + %t41 = call ptr @fn_lbl(ptr @.str8893) store ptr %t41, ptr %t42 - %t43 = call ptr @fn_lbl(ptr @.str8889) + %t43 = call ptr @fn_lbl(ptr @.str8894) store ptr %t43, ptr %t44 - %t45 = call ptr @fn_lbl(ptr @.str8890) + %t45 = call ptr @fn_lbl(ptr @.str8895) store ptr %t45, ptr %t46 - %t47 = call ptr @fn_lbl(ptr @.str8891) + %t47 = call ptr @fn_lbl(ptr @.str8896) store ptr %t47, ptr %t48 - call void @fn_emit(ptr @.str8892) + call void @fn_emit(ptr @.str8897) %t49 = load ptr, ptr %t42 call void @fn_emit(ptr %t49) - call void @fn_emit(ptr @.str8893) + call void @fn_emit(ptr @.str8898) %t50 = load ptr, ptr %t42 call void @fn_emit(ptr %t50) - call void @fn_emit(ptr @.str8894) + call void @fn_emit(ptr @.str8899) %t51 = load ptr, ptr %t4 - %t52 = call ptr @lp_str_concat(ptr @.str8895, ptr %t51) + %t52 = call ptr @lp_str_concat(ptr @.str8900, ptr %t51) %t53 = call ptr @fn_emit_bind(ptr %t52) store ptr %t53, ptr %t54 - %t55 = call ptr @fn_emit_bind(ptr @.str8896) + %t55 = call ptr @fn_emit_bind(ptr @.str8901) store ptr %t55, ptr %t56 %t57 = load ptr, ptr %t54 - %t58 = call ptr @lp_str_concat(ptr @.str8897, ptr %t57) - %t59 = call ptr @lp_str_concat(ptr %t58, ptr @.str8898) + %t58 = call ptr @lp_str_concat(ptr @.str8902, ptr %t57) + %t59 = call ptr @lp_str_concat(ptr %t58, ptr @.str8903) %t60 = load ptr, ptr %t56 %t61 = call ptr @lp_str_concat(ptr %t59, ptr %t60) %t62 = call ptr @fn_emit_bind(ptr %t61) store ptr %t62, ptr %t63 - call void @fn_emit(ptr @.str8899) + call void @fn_emit(ptr @.str8904) %t64 = load ptr, ptr %t63 call void @fn_emit(ptr %t64) - call void @fn_emit(ptr @.str8900) + call void @fn_emit(ptr @.str8905) %t65 = load ptr, ptr %t44 call void @fn_emit(ptr %t65) - call void @fn_emit(ptr @.str8901) + call void @fn_emit(ptr @.str8906) %t66 = load ptr, ptr %t48 call void @fn_emit(ptr %t66) - call void @fn_emit(ptr @.str8902) + call void @fn_emit(ptr @.str8907) %t67 = load ptr, ptr %t44 call void @fn_emit(ptr %t67) - call void @fn_emit(ptr @.str8903) + call void @fn_emit(ptr @.str8908) store i32 0, ptr @g_g_term %t68 = load ptr, ptr %t4 - %t69 = call ptr @lp_str_concat(ptr @.str8904, ptr %t68) + %t69 = call ptr @lp_str_concat(ptr @.str8909, ptr %t68) %t70 = call ptr @fn_emit_bind(ptr %t69) store ptr %t70, ptr %t71 %t72 = call ptr @fn_nreg() store ptr %t72, ptr %t73 - call void @fn_emit(ptr @.str8905) + call void @fn_emit(ptr @.str8910) %t74 = load ptr, ptr %t73 call void @fn_emit(ptr %t74) - call void @fn_emit(ptr @.str8906) + call void @fn_emit(ptr @.str8911) %t75 = load ptr, ptr %t2 call void @fn_emit(ptr %t75) - call void @fn_emit(ptr @.str8907) + call void @fn_emit(ptr @.str8912) %t76 = load ptr, ptr %t71 call void @fn_emit(ptr %t76) - call void @fn_emit(ptr @.str8908) + call void @fn_emit(ptr @.str8913) %t77 = load ptr, ptr %t73 - %t78 = call ptr @lp_str_concat(ptr @.str8909, ptr %t77) + %t78 = call ptr @lp_str_concat(ptr @.str8914, ptr %t77) %t79 = call ptr @fn_emit_bind(ptr %t78) store ptr %t79, ptr %t80 %t81 = load ptr, ptr %t80 - %t82 = call ptr @lp_str_concat(ptr @.str8910, ptr %t81) - %t83 = call ptr @lp_str_concat(ptr %t82, ptr @.str8911) + %t82 = call ptr @lp_str_concat(ptr @.str8915, ptr %t81) + %t83 = call ptr @lp_str_concat(ptr %t82, ptr @.str8916) %t84 = call ptr @fn_emit_bind(ptr %t83) store ptr %t84, ptr %t85 - %t86 = call ptr @fn_lbl(ptr @.str8912) + %t86 = call ptr @fn_lbl(ptr @.str8917) store ptr %t86, ptr %t87 - call void @fn_emit(ptr @.str8913) + call void @fn_emit(ptr @.str8918) %t88 = load ptr, ptr %t85 call void @fn_emit(ptr %t88) - call void @fn_emit(ptr @.str8914) + call void @fn_emit(ptr @.str8919) %t89 = load ptr, ptr %t87 call void @fn_emit(ptr %t89) - call void @fn_emit(ptr @.str8915) + call void @fn_emit(ptr @.str8920) %t90 = load ptr, ptr %t46 call void @fn_emit(ptr %t90) - call void @fn_emit(ptr @.str8916) + call void @fn_emit(ptr @.str8921) %t91 = load ptr, ptr %t87 call void @fn_emit(ptr %t91) - call void @fn_emit(ptr @.str8917) + call void @fn_emit(ptr @.str8922) %t92 = load ptr, ptr %t0 %t93 = getelementptr inbounds %Cmp_Node, ptr %t92, i32 0, i32 6 %t94 = load ptr, ptr %t93 @@ -94278,7 +94434,7 @@ wbody6: %t117 = load ptr, ptr %t116 %t118 = call i32 @fn_find_arch_id(ptr %t117) store i32 %t118, ptr %t119 - store ptr @.str8918, ptr %t120 + store ptr @.str8923, ptr %t120 %t121 = load i32, ptr %t119 %t122 = icmp sgt i32 %t121, 0 %t123 = zext i1 %t122 to i32 @@ -94287,23 +94443,23 @@ wbody6: then8: %t125 = call ptr @fn_nreg() store ptr %t125, ptr %t126 - call void @fn_emit(ptr @.str8919) + call void @fn_emit(ptr @.str8924) %t127 = load ptr, ptr %t126 call void @fn_emit(ptr %t127) - call void @fn_emit(ptr @.str8920) + call void @fn_emit(ptr @.str8925) %t128 = load ptr, ptr %t2 call void @fn_emit(ptr %t128) - call void @fn_emit(ptr @.str8921) + call void @fn_emit(ptr @.str8926) %t129 = load ptr, ptr %t71 call void @fn_emit(ptr %t129) - call void @fn_emit(ptr @.str8922) + call void @fn_emit(ptr @.str8927) %t130 = load ptr, ptr %t126 - %t131 = call ptr @lp_str_concat(ptr @.str8923, ptr %t130) + %t131 = call ptr @lp_str_concat(ptr @.str8928, ptr %t130) %t132 = call ptr @fn_emit_bind(ptr %t131) store ptr %t132, ptr %t133 %t134 = load ptr, ptr %t133 - %t135 = call ptr @lp_str_concat(ptr @.str8924, ptr %t134) - %t136 = call ptr @lp_str_concat(ptr %t135, ptr @.str8925) + %t135 = call ptr @lp_str_concat(ptr @.str8929, ptr %t134) + %t136 = call ptr @lp_str_concat(ptr %t135, ptr @.str8930) %t137 = load i32, ptr %t119 %t138 = call ptr @fn_itoa(i32 %t137) %t139 = call ptr @lp_str_concat(ptr %t136, ptr %t138) @@ -94312,17 +94468,17 @@ then8: %t142 = load ptr, ptr %t114 %t143 = getelementptr inbounds %Cmp_Node, ptr %t142, i32 0, i32 1 %t144 = load ptr, ptr %t143 - %t145 = call ptr @lp_str_concat(ptr @.str8926, ptr %t144) + %t145 = call ptr @lp_str_concat(ptr @.str8931, ptr %t144) %t146 = call ptr @fn_emit_bind(ptr %t145) store ptr %t146, ptr %t147 %t148 = load ptr, ptr %t147 - %t149 = call ptr @lp_str_concat(ptr @.str8927, ptr %t148) - %t150 = call ptr @lp_str_concat(ptr %t149, ptr @.str8928) + %t149 = call ptr @lp_str_concat(ptr @.str8932, ptr %t148) + %t150 = call ptr @lp_str_concat(ptr %t149, ptr @.str8933) %t151 = call ptr @fn_emit_bind(ptr %t150) store ptr %t151, ptr %t152 %t153 = load ptr, ptr %t141 - %t154 = call ptr @lp_str_concat(ptr @.str8929, ptr %t153) - %t155 = call ptr @lp_str_concat(ptr %t154, ptr @.str8930) + %t154 = call ptr @lp_str_concat(ptr @.str8934, ptr %t153) + %t155 = call ptr @lp_str_concat(ptr %t154, ptr @.str8935) %t156 = load ptr, ptr %t152 %t157 = call ptr @lp_str_concat(ptr %t155, ptr %t156) %t158 = call ptr @fn_emit_bind(ptr %t157) @@ -94331,47 +94487,47 @@ then8: else9: %t159 = call ptr @fn_nreg() store ptr %t159, ptr %t160 - call void @fn_emit(ptr @.str8931) + call void @fn_emit(ptr @.str8936) %t161 = load ptr, ptr %t160 call void @fn_emit(ptr %t161) - call void @fn_emit(ptr @.str8932) + call void @fn_emit(ptr @.str8937) %t162 = load ptr, ptr %t2 call void @fn_emit(ptr %t162) - call void @fn_emit(ptr @.str8933) + call void @fn_emit(ptr @.str8938) %t163 = load ptr, ptr %t114 %t164 = getelementptr inbounds %Cmp_Node, ptr %t163, i32 0, i32 1 %t165 = load ptr, ptr %t164 call void @fn_emit(ptr %t165) - call void @fn_emit(ptr @.str8934) + call void @fn_emit(ptr @.str8939) %t166 = load ptr, ptr %t71 call void @fn_emit(ptr %t166) - call void @fn_emit(ptr @.str8935) + call void @fn_emit(ptr @.str8940) %t167 = load ptr, ptr %t160 - %t168 = call ptr @lp_str_concat(ptr @.str8936, ptr %t167) + %t168 = call ptr @lp_str_concat(ptr @.str8941, ptr %t167) %t169 = call ptr @fn_emit_bind(ptr %t168) store ptr %t169, ptr %t170 %t171 = load ptr, ptr %t170 - %t172 = call ptr @lp_str_concat(ptr @.str8937, ptr %t171) - %t173 = call ptr @lp_str_concat(ptr %t172, ptr @.str8938) + %t172 = call ptr @lp_str_concat(ptr @.str8942, ptr %t171) + %t173 = call ptr @lp_str_concat(ptr %t172, ptr @.str8943) %t174 = call ptr @fn_emit_bind(ptr %t173) store ptr %t174, ptr %t120 br label %ifend10 ifend10: - %t175 = call ptr @fn_lbl(ptr @.str8939) + %t175 = call ptr @fn_lbl(ptr @.str8944) store ptr %t175, ptr %t176 - call void @fn_emit(ptr @.str8940) + call void @fn_emit(ptr @.str8945) %t177 = load ptr, ptr %t120 call void @fn_emit(ptr %t177) - call void @fn_emit(ptr @.str8941) + call void @fn_emit(ptr @.str8946) %t178 = load ptr, ptr %t176 call void @fn_emit(ptr %t178) - call void @fn_emit(ptr @.str8942) + call void @fn_emit(ptr @.str8947) %t179 = load ptr, ptr %t46 call void @fn_emit(ptr %t179) - call void @fn_emit(ptr @.str8943) + call void @fn_emit(ptr @.str8948) %t180 = load ptr, ptr %t176 call void @fn_emit(ptr %t180) - call void @fn_emit(ptr @.str8944) + call void @fn_emit(ptr @.str8949) %t181 = load i32, ptr %t96 %t182 = add i32 %t181, 1 store i32 %t182, ptr %t96 @@ -94441,35 +94597,35 @@ then16: then19: %t231 = call ptr @fn_nreg() store ptr %t231, ptr %t232 - call void @fn_emit(ptr @.str8945) + call void @fn_emit(ptr @.str8950) %t233 = load ptr, ptr %t232 call void @fn_emit(ptr %t233) - call void @fn_emit(ptr @.str8946) + call void @fn_emit(ptr @.str8951) %t234 = load ptr, ptr %t2 call void @fn_emit(ptr %t234) - call void @fn_emit(ptr @.str8947) + call void @fn_emit(ptr @.str8952) %t235 = load ptr, ptr %t203 %t236 = getelementptr inbounds %Cmp_Node, ptr %t235, i32 0, i32 1 %t237 = load ptr, ptr %t236 call void @fn_emit(ptr %t237) - call void @fn_emit(ptr @.str8948) + call void @fn_emit(ptr @.str8953) %t238 = load ptr, ptr %t203 %t239 = getelementptr inbounds %Cmp_Node, ptr %t238, i32 0, i32 1 %t240 = load ptr, ptr %t239 call void @fn_emit(ptr %t240) - call void @fn_emit(ptr @.str8949) + call void @fn_emit(ptr @.str8954) %t241 = load ptr, ptr %t71 call void @fn_emit(ptr %t241) - call void @fn_emit(ptr @.str8950) - %t242 = call ptr @fn_emit_alloca(ptr @.str8951) + call void @fn_emit(ptr @.str8955) + %t242 = call ptr @fn_emit_alloca(ptr @.str8956) store ptr %t242, ptr %t243 - call void @fn_emit(ptr @.str8952) + call void @fn_emit(ptr @.str8957) %t244 = load ptr, ptr %t232 call void @fn_emit(ptr %t244) - call void @fn_emit(ptr @.str8953) + call void @fn_emit(ptr @.str8958) %t245 = load ptr, ptr %t243 call void @fn_emit(ptr %t245) - call void @fn_emit(ptr @.str8954) + call void @fn_emit(ptr @.str8959) %t246 = load ptr, ptr %t0 %t247 = getelementptr inbounds %Cmp_Node, ptr %t246, i32 0, i32 7 %t248 = load ptr, ptr %t247 @@ -94513,25 +94669,25 @@ then22: %t275 = load ptr, ptr %t274 %t276 = getelementptr inbounds %Cmp_Val, ptr %t275, i32 0, i32 0 %t277 = load ptr, ptr %t276 - %t278 = call ptr @lp_str_concat(ptr @.str8955, ptr %t277) - %t279 = call ptr @lp_str_concat(ptr %t278, ptr @.str8956) + %t278 = call ptr @lp_str_concat(ptr @.str8960, ptr %t277) + %t279 = call ptr @lp_str_concat(ptr %t278, ptr @.str8961) %t280 = call ptr @fn_emit_bind(ptr %t279) store ptr %t280, ptr %t281 - %t282 = call ptr @fn_lbl(ptr @.str8957) + %t282 = call ptr @fn_lbl(ptr @.str8962) store ptr %t282, ptr %t283 - call void @fn_emit(ptr @.str8958) + call void @fn_emit(ptr @.str8963) %t284 = load ptr, ptr %t281 call void @fn_emit(ptr %t284) - call void @fn_emit(ptr @.str8959) + call void @fn_emit(ptr @.str8964) %t285 = load ptr, ptr %t283 call void @fn_emit(ptr %t285) - call void @fn_emit(ptr @.str8960) + call void @fn_emit(ptr @.str8965) %t286 = load ptr, ptr %t46 call void @fn_emit(ptr %t286) - call void @fn_emit(ptr @.str8961) + call void @fn_emit(ptr @.str8966) %t287 = load ptr, ptr %t283 call void @fn_emit(ptr %t287) - call void @fn_emit(ptr @.str8962) + call void @fn_emit(ptr @.str8967) br label %ifend24 ifend24: %t288 = load ptr, ptr %t46 @@ -94550,34 +94706,34 @@ ifend24: %t297 = icmp ne i32 %t296, 0 br i1 %t297, label %then25, label %ifend27 then25: - call void @fn_emit(ptr @.str8963) + call void @fn_emit(ptr @.str8968) %t298 = load ptr, ptr %t46 call void @fn_emit(ptr %t298) - call void @fn_emit(ptr @.str8964) + call void @fn_emit(ptr @.str8969) br label %ifend27 ifend27: %t299 = load ptr, ptr %t46 call void @fn_emit(ptr %t299) - call void @fn_emit(ptr @.str8965) + call void @fn_emit(ptr @.str8970) %t300 = load ptr, ptr %t4 - %t301 = call ptr @lp_str_concat(ptr @.str8966, ptr %t300) + %t301 = call ptr @lp_str_concat(ptr @.str8971, ptr %t300) %t302 = call ptr @fn_emit_bind(ptr %t301) store ptr %t302, ptr %t303 %t304 = load ptr, ptr %t303 - %t305 = call ptr @lp_str_concat(ptr @.str8967, ptr %t304) - %t306 = call ptr @lp_str_concat(ptr %t305, ptr @.str8968) + %t305 = call ptr @lp_str_concat(ptr @.str8972, ptr %t304) + %t306 = call ptr @lp_str_concat(ptr %t305, ptr @.str8973) %t307 = call ptr @fn_emit_bind(ptr %t306) store ptr %t307, ptr %t308 %t309 = load ptr, ptr %t308 %t310 = load ptr, ptr %t4 - call void @fn_store_at(ptr @.str8969, ptr %t309, ptr %t310) - call void @fn_emit(ptr @.str8970) + call void @fn_store_at(ptr @.str8974, ptr %t309, ptr %t310) + call void @fn_emit(ptr @.str8975) %t311 = load ptr, ptr %t42 call void @fn_emit(ptr %t311) - call void @fn_emit(ptr @.str8971) + call void @fn_emit(ptr @.str8976) %t312 = load ptr, ptr %t48 call void @fn_emit(ptr %t312) - call void @fn_emit(ptr @.str8972) + call void @fn_emit(ptr @.str8977) store i32 0, ptr @g_g_term %t313 = load i32, ptr @g_nself %t314 = sub i32 %t313, 1 @@ -94594,15 +94750,15 @@ entry: %t3 = alloca ptr store ptr %arg_e, ptr %t0 store ptr %arg_body, ptr %t1 - %t2 = call ptr @fn_emit_alloca(ptr @.str8973) + %t2 = call ptr @fn_emit_alloca(ptr @.str8978) store ptr %t2, ptr %t3 - call void @fn_emit(ptr @.str8974) + call void @fn_emit(ptr @.str8979) %t4 = load ptr, ptr %t0 call void @fn_emit(ptr %t4) - call void @fn_emit(ptr @.str8975) + call void @fn_emit(ptr @.str8980) %t5 = load ptr, ptr %t3 call void @fn_emit(ptr %t5) - call void @fn_emit(ptr @.str8976) + call void @fn_emit(ptr @.str8981) %t6 = load i32, ptr @g_nself %t7 = load ptr, ptr @g_self_stk %t8 = getelementptr inbounds %LSlice, ptr %t7, i32 0, i32 1 @@ -94703,47 +94859,47 @@ entry: br i1 %t11, label %then0, label %ifend2 then0: %t12 = load ptr, ptr %t1 - %t13 = call ptr @lp_str_concat(ptr @.str8977, ptr %t12) + %t13 = call ptr @lp_str_concat(ptr @.str8982, ptr %t12) call void @fn_perr(ptr %t13) br label %ifend2 ifend2: %t14 = call ptr @fn_nreg() store ptr %t14, ptr %t15 - call void @fn_emit(ptr @.str8978) + call void @fn_emit(ptr @.str8983) %t16 = load ptr, ptr %t15 call void @fn_emit(ptr %t16) - call void @fn_emit(ptr @.str8979) + call void @fn_emit(ptr @.str8984) %t17 = load ptr, ptr %t4 call void @fn_emit(ptr %t17) - call void @fn_emit(ptr @.str8980) + call void @fn_emit(ptr @.str8985) %t18 = load ptr, ptr %t1 call void @fn_emit(ptr %t18) - call void @fn_emit(ptr @.str8981) + call void @fn_emit(ptr @.str8986) %t19 = load ptr, ptr %t0 call void @fn_emit(ptr %t19) - call void @fn_emit(ptr @.str8982) - call void @fn_emit(ptr @.str8983) + call void @fn_emit(ptr @.str8987) + call void @fn_emit(ptr @.str8988) %t20 = load ptr, ptr %t15 call void @fn_emit(ptr %t20) - call void @fn_emit(ptr @.str8984) + call void @fn_emit(ptr @.str8989) %t21 = call ptr @fn_nreg() store ptr %t21, ptr %t22 - call void @fn_emit(ptr @.str8985) + call void @fn_emit(ptr @.str8990) %t23 = load ptr, ptr %t22 call void @fn_emit(ptr %t23) - call void @fn_emit(ptr @.str8986) + call void @fn_emit(ptr @.str8991) %t24 = load ptr, ptr %t4 call void @fn_emit(ptr %t24) - call void @fn_emit(ptr @.str8987) + call void @fn_emit(ptr @.str8992) %t25 = load ptr, ptr %t1 call void @fn_emit(ptr %t25) - call void @fn_emit(ptr @.str8988) + call void @fn_emit(ptr @.str8993) %t26 = load ptr, ptr %t1 call void @fn_emit(ptr %t26) - call void @fn_emit(ptr @.str8989) + call void @fn_emit(ptr @.str8994) %t27 = load ptr, ptr %t0 call void @fn_emit(ptr %t27) - call void @fn_emit(ptr @.str8990) + call void @fn_emit(ptr @.str8995) store i32 0, ptr %t28 br label %wcond3 wcond3: @@ -94769,32 +94925,32 @@ wbody4: store ptr %t45, ptr %t46 %t47 = call ptr @fn_nreg() store ptr %t47, ptr %t48 - call void @fn_emit(ptr @.str8991) + call void @fn_emit(ptr @.str8996) %t49 = load ptr, ptr %t48 call void @fn_emit(ptr %t49) - call void @fn_emit(ptr @.str8992) + call void @fn_emit(ptr @.str8997) %t50 = load ptr, ptr %t1 call void @fn_emit(ptr %t50) - call void @fn_emit(ptr @.str8993) + call void @fn_emit(ptr @.str8998) %t51 = load ptr, ptr %t22 call void @fn_emit(ptr %t51) - call void @fn_emit(ptr @.str8994) + call void @fn_emit(ptr @.str8999) %t52 = load i32, ptr %t28 %t53 = call ptr @fn_itoa(i32 %t52) call void @fn_emit(ptr %t53) - call void @fn_emit(ptr @.str8995) + call void @fn_emit(ptr @.str9000) %t54 = load ptr, ptr %t46 %t55 = getelementptr inbounds %Cmp_Node, ptr %t54, i32 0, i32 3 %t56 = load ptr, ptr %t55 %t57 = call ptr @fn_llty(ptr %t56) store ptr %t57, ptr %t58 - store ptr @.str8996, ptr %t59 + store ptr @.str9001, ptr %t59 %t60 = load ptr, ptr %t58 - %t61 = call i32 @lp_str_eq(ptr %t60, ptr @.str8997) + %t61 = call i32 @lp_str_eq(ptr %t60, ptr @.str9002) %t62 = icmp ne i32 %t61, 0 br i1 %t62, label %then6, label %ifend8 then6: - store ptr @.str8998, ptr %t59 + store ptr @.str9003, ptr %t59 br label %ifend8 ifend8: %t63 = load ptr, ptr %t46 @@ -94816,16 +94972,16 @@ then9: store ptr %t76, ptr %t59 br label %ifend11 ifend11: - call void @fn_emit(ptr @.str8999) + call void @fn_emit(ptr @.str9004) %t77 = load ptr, ptr %t58 call void @fn_emit(ptr %t77) - call void @fn_emit(ptr @.str9000) + call void @fn_emit(ptr @.str9005) %t78 = load ptr, ptr %t59 call void @fn_emit(ptr %t78) - call void @fn_emit(ptr @.str9001) + call void @fn_emit(ptr @.str9006) %t79 = load ptr, ptr %t48 call void @fn_emit(ptr %t79) - call void @fn_emit(ptr @.str9002) + call void @fn_emit(ptr @.str9007) %t80 = load i32, ptr %t28 %t81 = add i32 %t80, 1 store i32 %t81, ptr %t28 @@ -94874,26 +95030,26 @@ wbody16: then18: %t115 = call ptr @fn_nreg() store ptr %t115, ptr %t116 - call void @fn_emit(ptr @.str9003) + call void @fn_emit(ptr @.str9008) %t117 = load ptr, ptr %t116 call void @fn_emit(ptr %t117) - call void @fn_emit(ptr @.str9004) + call void @fn_emit(ptr @.str9009) %t118 = load ptr, ptr %t1 call void @fn_emit(ptr %t118) - call void @fn_emit(ptr @.str9005) + call void @fn_emit(ptr @.str9010) %t119 = load ptr, ptr %t22 call void @fn_emit(ptr %t119) - call void @fn_emit(ptr @.str9006) + call void @fn_emit(ptr @.str9011) %t120 = load i32, ptr %t110 %t121 = call ptr @fn_itoa(i32 %t120) call void @fn_emit(ptr %t121) - call void @fn_emit(ptr @.str9007) + call void @fn_emit(ptr @.str9012) %t122 = load ptr, ptr %t104 %t123 = getelementptr inbounds %Cmp_Node, ptr %t122, i32 0, i32 4 %t124 = load ptr, ptr %t123 %t125 = call ptr @fn_emit_expr(ptr %t124) store ptr %t125, ptr %t126 - call void @fn_emit(ptr @.str9008) + call void @fn_emit(ptr @.str9013) %t127 = load ptr, ptr %t7 %t128 = load ptr, ptr %t104 %t129 = getelementptr inbounds %Cmp_Node, ptr %t128, i32 0, i32 1 @@ -94901,15 +95057,15 @@ then18: %t131 = call ptr @fn_field_type(ptr %t127, ptr %t130) %t132 = call ptr @fn_llty(ptr %t131) call void @fn_emit(ptr %t132) - call void @fn_emit(ptr @.str9009) + call void @fn_emit(ptr @.str9014) %t133 = load ptr, ptr %t126 %t134 = getelementptr inbounds %Cmp_Val, ptr %t133, i32 0, i32 0 %t135 = load ptr, ptr %t134 call void @fn_emit(ptr %t135) - call void @fn_emit(ptr @.str9010) + call void @fn_emit(ptr @.str9015) %t136 = load ptr, ptr %t116 call void @fn_emit(ptr %t136) - call void @fn_emit(ptr @.str9011) + call void @fn_emit(ptr @.str9016) br label %ifend20 ifend20: %t137 = load i32, ptr %t86 @@ -94930,15 +95086,15 @@ ifend14: then21: %t146 = load i32, ptr @g_nloc store i32 %t146, ptr %t147 - %t148 = call ptr @fn_emit_alloca(ptr @.str9012) + %t148 = call ptr @fn_emit_alloca(ptr @.str9017) store ptr %t148, ptr %t149 - call void @fn_emit(ptr @.str9013) + call void @fn_emit(ptr @.str9018) %t150 = load ptr, ptr %t22 call void @fn_emit(ptr %t150) - call void @fn_emit(ptr @.str9014) + call void @fn_emit(ptr @.str9019) %t151 = load ptr, ptr %t149 call void @fn_emit(ptr %t151) - call void @fn_emit(ptr @.str9015) + call void @fn_emit(ptr @.str9020) %t152 = load ptr, ptr %t1 %t153 = load ptr, ptr %t149 %t154 = load ptr, ptr %t1 @@ -94951,8 +95107,8 @@ then21: br label %ifend23 ifend23: %t158 = load ptr, ptr %t1 - %t159 = call ptr @lp_str_concat(ptr @.str9016, ptr %t158) - %t160 = call ptr @lp_str_concat(ptr %t159, ptr @.str9017) + %t159 = call ptr @lp_str_concat(ptr @.str9021, ptr %t158) + %t160 = call ptr @lp_str_concat(ptr %t159, ptr @.str9022) store ptr %t160, ptr %t161 %t162 = load ptr, ptr %t161 %t163 = call ptr @fn_find_event(ptr %t162) @@ -94961,13 +95117,13 @@ ifend23: %t166 = icmp ne i32 %t165, 0 br i1 %t166, label %then24, label %ifend26 then24: - call void @fn_emit(ptr @.str9018) + call void @fn_emit(ptr @.str9023) %t167 = load ptr, ptr %t161 call void @fn_emit(ptr %t167) - call void @fn_emit(ptr @.str9019) + call void @fn_emit(ptr @.str9024) %t168 = load ptr, ptr %t0 call void @fn_emit(ptr %t168) - call void @fn_emit(ptr @.str9020) + call void @fn_emit(ptr @.str9025) br label %ifend26 ifend26: br label %ret @@ -95015,31 +95171,31 @@ wbody1: store ptr %t23, ptr %t24 %t25 = call ptr @fn_nreg() store ptr %t25, ptr %t26 - call void @fn_emit(ptr @.str9021) + call void @fn_emit(ptr @.str9026) %t27 = load ptr, ptr %t26 call void @fn_emit(ptr %t27) - call void @fn_emit(ptr @.str9022) + call void @fn_emit(ptr @.str9027) %t28 = load ptr, ptr %t3 call void @fn_emit(ptr %t28) - call void @fn_emit(ptr @.str9023) + call void @fn_emit(ptr @.str9028) %t29 = load ptr, ptr %t24 call void @fn_emit(ptr %t29) - call void @fn_emit(ptr @.str9024) + call void @fn_emit(ptr @.str9029) %t30 = load ptr, ptr %t24 call void @fn_emit(ptr %t30) - call void @fn_emit(ptr @.str9025) + call void @fn_emit(ptr @.str9030) %t31 = load ptr, ptr %t1 call void @fn_emit(ptr %t31) - call void @fn_emit(ptr @.str9026) - %t32 = call ptr @fn_emit_alloca(ptr @.str9027) + call void @fn_emit(ptr @.str9031) + %t32 = call ptr @fn_emit_alloca(ptr @.str9032) store ptr %t32, ptr %t33 - call void @fn_emit(ptr @.str9028) + call void @fn_emit(ptr @.str9033) %t34 = load ptr, ptr %t26 call void @fn_emit(ptr %t34) - call void @fn_emit(ptr @.str9029) + call void @fn_emit(ptr @.str9034) %t35 = load ptr, ptr %t33 call void @fn_emit(ptr %t35) - call void @fn_emit(ptr @.str9030) + call void @fn_emit(ptr @.str9035) %t36 = load ptr, ptr %t24 %t37 = load ptr, ptr %t33 %t38 = load ptr, ptr %t24 @@ -95319,8 +95475,8 @@ ifend5: br i1 %t21, label %then6, label %ifend8 then6: %t22 = load ptr, ptr %t0 - %t23 = call ptr @lp_str_concat(ptr @.str9031, ptr %t22) - %t24 = call ptr @lp_str_concat(ptr %t23, ptr @.str9032) + %t23 = call ptr @lp_str_concat(ptr @.str9036, ptr %t22) + %t24 = call ptr @lp_str_concat(ptr %t23, ptr @.str9037) call void @fn_perr(ptr %t24) br label %ifend8 ifend8: @@ -95388,7 +95544,7 @@ entry: %t102 = alloca ptr %t110 = alloca i32 store ptr %arg_st, ptr %t0 - %t1 = call ptr @fn_emit_bind(ptr @.str9033) + %t1 = call ptr @fn_emit_bind(ptr @.str9038) store ptr %t1, ptr %t2 %t3 = load ptr, ptr %t0 %t4 = getelementptr inbounds %Cmp_Node, ptr %t3, i32 0, i32 1 @@ -95424,8 +95580,8 @@ then2: %t27 = load ptr, ptr %t0 %t28 = getelementptr inbounds %Cmp_Node, ptr %t27, i32 0, i32 1 %t29 = load ptr, ptr %t28 - %t30 = call ptr @lp_str_concat(ptr @.str9034, ptr %t29) - %t31 = call ptr @lp_str_concat(ptr %t30, ptr @.str9035) + %t30 = call ptr @lp_str_concat(ptr @.str9039, ptr %t29) + %t31 = call ptr @lp_str_concat(ptr %t30, ptr @.str9040) %t32 = load ptr, ptr %t7 %t33 = call ptr @lp_str_concat(ptr %t31, ptr %t32) call void @fn_perr(ptr %t33) @@ -95441,24 +95597,24 @@ then5: store ptr %t38, ptr %t39 %t40 = call ptr @fn_nreg() store ptr %t40, ptr %t41 - call void @fn_emit(ptr @.str9036) + call void @fn_emit(ptr @.str9041) %t42 = load ptr, ptr %t41 call void @fn_emit(ptr %t42) - call void @fn_emit(ptr @.str9037) + call void @fn_emit(ptr @.str9042) %t43 = load ptr, ptr %t39 call void @fn_emit(ptr %t43) - call void @fn_emit(ptr @.str9038) + call void @fn_emit(ptr @.str9043) %t44 = load ptr, ptr %t2 call void @fn_emit(ptr %t44) - call void @fn_emit(ptr @.str9039) - call void @fn_emit(ptr @.str9040) + call void @fn_emit(ptr @.str9044) + call void @fn_emit(ptr @.str9045) %t45 = load i32, ptr %t10 %t46 = call ptr @fn_itoa(i32 %t45) call void @fn_emit(ptr %t46) - call void @fn_emit(ptr @.str9041) + call void @fn_emit(ptr @.str9046) %t47 = load ptr, ptr %t41 call void @fn_emit(ptr %t47) - call void @fn_emit(ptr @.str9042) + call void @fn_emit(ptr @.str9047) %t48 = load ptr, ptr %t7 %t49 = call ptr @fn_find_arch(ptr %t48) store ptr %t49, ptr %t50 @@ -95526,8 +95682,8 @@ then11: br label %ifend13 ifend13: %t99 = load ptr, ptr %t7 - %t100 = call ptr @lp_str_concat(ptr @.str9043, ptr %t99) - %t101 = call ptr @lp_str_concat(ptr %t100, ptr @.str9044) + %t100 = call ptr @lp_str_concat(ptr @.str9048, ptr %t99) + %t101 = call ptr @lp_str_concat(ptr %t100, ptr @.str9049) store ptr %t101, ptr %t102 %t103 = load ptr, ptr %t102 %t104 = call ptr @fn_find_event(ptr %t103) @@ -95536,13 +95692,13 @@ ifend13: %t107 = icmp ne i32 %t106, 0 br i1 %t107, label %then14, label %ifend16 then14: - call void @fn_emit(ptr @.str9045) + call void @fn_emit(ptr @.str9050) %t108 = load ptr, ptr %t102 call void @fn_emit(ptr %t108) - call void @fn_emit(ptr @.str9046) + call void @fn_emit(ptr @.str9051) %t109 = load ptr, ptr %t2 call void @fn_emit(ptr %t109) - call void @fn_emit(ptr @.str9047) + call void @fn_emit(ptr @.str9052) br label %ifend16 ifend16: br label %ifend7 @@ -95629,20 +95785,20 @@ then0: store ptr %t12, ptr %t13 %t14 = call ptr @fn_nreg() store ptr %t14, ptr %t15 - call void @fn_emit(ptr @.str9048) + call void @fn_emit(ptr @.str9053) %t16 = load ptr, ptr %t15 call void @fn_emit(ptr %t16) - call void @fn_emit(ptr @.str9049) + call void @fn_emit(ptr @.str9054) %t17 = load ptr, ptr %t13 call void @fn_emit(ptr %t17) - call void @fn_emit(ptr @.str9050) + call void @fn_emit(ptr @.str9055) %t18 = load ptr, ptr %t5 %t19 = getelementptr inbounds %Cmp_Val, ptr %t18, i32 0, i32 0 %t20 = load ptr, ptr %t19 call void @fn_emit(ptr %t20) - call void @fn_emit(ptr @.str9051) + call void @fn_emit(ptr @.str9056) %t21 = load ptr, ptr %t15 - %t22 = call ptr @lp_str_concat(ptr @.str9052, ptr %t21) + %t22 = call ptr @lp_str_concat(ptr @.str9057, ptr %t21) %t23 = call ptr @fn_emit_bind(ptr %t22) store ptr %t23, ptr %t24 store i32 0, ptr %t25 @@ -95667,42 +95823,42 @@ wbody4: %t40 = load ptr, ptr %t39 store ptr %t40, ptr %t41 %t42 = load ptr, ptr %t24 - %t43 = call ptr @lp_str_concat(ptr @.str9053, ptr %t42) - %t44 = call ptr @lp_str_concat(ptr %t43, ptr @.str9054) + %t43 = call ptr @lp_str_concat(ptr @.str9058, ptr %t42) + %t44 = call ptr @lp_str_concat(ptr %t43, ptr @.str9059) %t45 = load ptr, ptr %t41 %t46 = call i32 @fn_find_arch_id(ptr %t45) %t47 = call ptr @fn_itoa(i32 %t46) %t48 = call ptr @lp_str_concat(ptr %t44, ptr %t47) %t49 = call ptr @fn_emit_bind(ptr %t48) store ptr %t49, ptr %t50 - %t51 = call ptr @fn_lbl(ptr @.str9055) + %t51 = call ptr @fn_lbl(ptr @.str9060) store ptr %t51, ptr %t52 - %t53 = call ptr @fn_lbl(ptr @.str9056) + %t53 = call ptr @fn_lbl(ptr @.str9061) store ptr %t53, ptr %t54 - call void @fn_emit(ptr @.str9057) + call void @fn_emit(ptr @.str9062) %t55 = load ptr, ptr %t50 call void @fn_emit(ptr %t55) - call void @fn_emit(ptr @.str9058) + call void @fn_emit(ptr @.str9063) %t56 = load ptr, ptr %t52 call void @fn_emit(ptr %t56) - call void @fn_emit(ptr @.str9059) + call void @fn_emit(ptr @.str9064) %t57 = load ptr, ptr %t54 call void @fn_emit(ptr %t57) - call void @fn_emit(ptr @.str9060) + call void @fn_emit(ptr @.str9065) %t58 = load ptr, ptr %t52 call void @fn_emit(ptr %t58) - call void @fn_emit(ptr @.str9061) + call void @fn_emit(ptr @.str9066) %t59 = load ptr, ptr %t41 call void @fn_emit(ptr %t59) - call void @fn_emit(ptr @.str9062) + call void @fn_emit(ptr @.str9067) %t60 = load ptr, ptr %t5 %t61 = getelementptr inbounds %Cmp_Val, ptr %t60, i32 0, i32 0 %t62 = load ptr, ptr %t61 call void @fn_emit(ptr %t62) - call void @fn_emit(ptr @.str9063) + call void @fn_emit(ptr @.str9068) %t63 = load ptr, ptr %t41 - %t64 = call ptr @lp_str_concat(ptr @.str9064, ptr %t63) - %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str9065) + %t64 = call ptr @lp_str_concat(ptr @.str9069, ptr %t63) + %t65 = call ptr @lp_str_concat(ptr %t64, ptr @.str9070) store ptr %t65, ptr %t66 %t67 = load ptr, ptr %t66 %t68 = call ptr @fn_find_event(ptr %t67) @@ -95711,24 +95867,24 @@ wbody4: %t71 = icmp ne i32 %t70, 0 br i1 %t71, label %then6, label %ifend8 then6: - call void @fn_emit(ptr @.str9066) + call void @fn_emit(ptr @.str9071) %t72 = load ptr, ptr %t66 call void @fn_emit(ptr %t72) - call void @fn_emit(ptr @.str9067) + call void @fn_emit(ptr @.str9072) %t73 = load ptr, ptr %t5 %t74 = getelementptr inbounds %Cmp_Val, ptr %t73, i32 0, i32 0 %t75 = load ptr, ptr %t74 call void @fn_emit(ptr %t75) - call void @fn_emit(ptr @.str9068) + call void @fn_emit(ptr @.str9073) br label %ifend8 ifend8: - call void @fn_emit(ptr @.str9069) + call void @fn_emit(ptr @.str9074) %t76 = load ptr, ptr %t54 call void @fn_emit(ptr %t76) - call void @fn_emit(ptr @.str9070) + call void @fn_emit(ptr @.str9075) %t77 = load ptr, ptr %t54 call void @fn_emit(ptr %t77) - call void @fn_emit(ptr @.str9071) + call void @fn_emit(ptr @.str9076) %t78 = load i32, ptr %t25 %t79 = add i32 %t78, 1 store i32 %t79, ptr %t25 @@ -95744,20 +95900,20 @@ ifend2: %t85 = icmp ne i32 %t84, 0 br i1 %t85, label %then9, label %ifend11 then9: - call void @fn_emit(ptr @.str9072) + call void @fn_emit(ptr @.str9077) %t86 = load ptr, ptr %t5 %t87 = getelementptr inbounds %Cmp_Val, ptr %t86, i32 0, i32 0 %t88 = load ptr, ptr %t87 call void @fn_emit(ptr %t88) - call void @fn_emit(ptr @.str9073) + call void @fn_emit(ptr @.str9078) br label %ifend11 ifend11: - call void @fn_emit(ptr @.str9074) + call void @fn_emit(ptr @.str9079) %t89 = load ptr, ptr %t5 %t90 = getelementptr inbounds %Cmp_Val, ptr %t89, i32 0, i32 0 %t91 = load ptr, ptr %t90 call void @fn_emit(ptr %t91) - call void @fn_emit(ptr @.str9075) + call void @fn_emit(ptr @.str9080) br label %ret ret: ret void @@ -95783,49 +95939,49 @@ entry: store ptr %t6, ptr %t7 %t8 = call ptr @fn_nreg() store ptr %t8, ptr %t9 - call void @fn_emit(ptr @.str9076) + call void @fn_emit(ptr @.str9081) %t10 = load ptr, ptr %t9 call void @fn_emit(ptr %t10) - call void @fn_emit(ptr @.str9077) + call void @fn_emit(ptr @.str9082) %t11 = load ptr, ptr %t7 call void @fn_emit(ptr %t11) - call void @fn_emit(ptr @.str9078) + call void @fn_emit(ptr @.str9083) %t12 = load ptr, ptr %t0 %t13 = getelementptr inbounds %Cmp_Node, ptr %t12, i32 0, i32 1 %t14 = load ptr, ptr %t13 call void @fn_emit(ptr %t14) - call void @fn_emit(ptr @.str9079) + call void @fn_emit(ptr @.str9084) %t15 = load ptr, ptr %t5 %t16 = getelementptr inbounds %Cmp_Val, ptr %t15, i32 0, i32 0 %t17 = load ptr, ptr %t16 call void @fn_emit(ptr %t17) - call void @fn_emit(ptr @.str9080) + call void @fn_emit(ptr @.str9085) %t18 = load ptr, ptr %t9 - %t19 = call ptr @lp_str_concat(ptr @.str9081, ptr %t18) + %t19 = call ptr @lp_str_concat(ptr @.str9086, ptr %t18) %t20 = call ptr @fn_emit_bind(ptr %t19) store ptr %t20, ptr %t21 %t22 = load ptr, ptr %t21 - %t23 = call ptr @lp_str_concat(ptr @.str9082, ptr %t22) - %t24 = call ptr @lp_str_concat(ptr %t23, ptr @.str9083) + %t23 = call ptr @lp_str_concat(ptr @.str9087, ptr %t22) + %t24 = call ptr @lp_str_concat(ptr %t23, ptr @.str9088) %t25 = call ptr @fn_emit_bind(ptr %t24) store ptr %t25, ptr %t26 - %t27 = call ptr @fn_lbl(ptr @.str9084) + %t27 = call ptr @fn_lbl(ptr @.str9089) store ptr %t27, ptr %t28 - %t29 = call ptr @fn_lbl(ptr @.str9085) + %t29 = call ptr @fn_lbl(ptr @.str9090) store ptr %t29, ptr %t30 - call void @fn_emit(ptr @.str9086) + call void @fn_emit(ptr @.str9091) %t31 = load ptr, ptr %t26 call void @fn_emit(ptr %t31) - call void @fn_emit(ptr @.str9087) + call void @fn_emit(ptr @.str9092) %t32 = load ptr, ptr %t28 call void @fn_emit(ptr %t32) - call void @fn_emit(ptr @.str9088) + call void @fn_emit(ptr @.str9093) %t33 = load ptr, ptr %t30 call void @fn_emit(ptr %t33) - call void @fn_emit(ptr @.str9089) + call void @fn_emit(ptr @.str9094) %t34 = load ptr, ptr %t28 call void @fn_emit(ptr %t34) - call void @fn_emit(ptr @.str9090) + call void @fn_emit(ptr @.str9095) store i32 0, ptr @g_g_term %t35 = load ptr, ptr %t5 %t36 = getelementptr inbounds %Cmp_Val, ptr %t35, i32 0, i32 0 @@ -95843,15 +95999,15 @@ entry: %t47 = icmp ne i32 %t46, 0 br i1 %t47, label %then0, label %ifend2 then0: - call void @fn_emit(ptr @.str9091) + call void @fn_emit(ptr @.str9096) %t48 = load ptr, ptr %t30 call void @fn_emit(ptr %t48) - call void @fn_emit(ptr @.str9092) + call void @fn_emit(ptr @.str9097) br label %ifend2 ifend2: %t49 = load ptr, ptr %t30 call void @fn_emit(ptr %t49) - call void @fn_emit(ptr @.str9093) + call void @fn_emit(ptr @.str9098) store i32 0, ptr @g_g_term br label %ret ret: @@ -95883,54 +96039,54 @@ entry: store ptr %t6, ptr %t7 %t8 = call ptr @fn_nreg() store ptr %t8, ptr %t9 - call void @fn_emit(ptr @.str9094) + call void @fn_emit(ptr @.str9099) %t10 = load ptr, ptr %t9 call void @fn_emit(ptr %t10) - call void @fn_emit(ptr @.str9095) + call void @fn_emit(ptr @.str9100) %t11 = load ptr, ptr %t7 call void @fn_emit(ptr %t11) - call void @fn_emit(ptr @.str9096) + call void @fn_emit(ptr @.str9101) %t12 = load ptr, ptr %t0 %t13 = getelementptr inbounds %Cmp_Node, ptr %t12, i32 0, i32 1 %t14 = load ptr, ptr %t13 call void @fn_emit(ptr %t14) - call void @fn_emit(ptr @.str9097) + call void @fn_emit(ptr @.str9102) %t15 = load ptr, ptr %t5 %t16 = getelementptr inbounds %Cmp_Val, ptr %t15, i32 0, i32 0 %t17 = load ptr, ptr %t16 call void @fn_emit(ptr %t17) - call void @fn_emit(ptr @.str9098) + call void @fn_emit(ptr @.str9103) %t18 = load ptr, ptr %t9 - %t19 = call ptr @lp_str_concat(ptr @.str9099, ptr %t18) + %t19 = call ptr @lp_str_concat(ptr @.str9104, ptr %t18) %t20 = call ptr @fn_emit_bind(ptr %t19) store ptr %t20, ptr %t21 %t22 = load ptr, ptr %t21 - %t23 = call ptr @lp_str_concat(ptr @.str9100, ptr %t22) - %t24 = call ptr @lp_str_concat(ptr %t23, ptr @.str9101) + %t23 = call ptr @lp_str_concat(ptr @.str9105, ptr %t22) + %t24 = call ptr @lp_str_concat(ptr %t23, ptr @.str9106) %t25 = call ptr @fn_emit_bind(ptr %t24) store ptr %t25, ptr %t26 - %t27 = call ptr @fn_lbl(ptr @.str9102) + %t27 = call ptr @fn_lbl(ptr @.str9107) store ptr %t27, ptr %t28 - %t29 = call ptr @fn_lbl(ptr @.str9103) + %t29 = call ptr @fn_lbl(ptr @.str9108) store ptr %t29, ptr %t30 - call void @fn_emit(ptr @.str9104) + call void @fn_emit(ptr @.str9109) %t31 = load ptr, ptr %t26 call void @fn_emit(ptr %t31) - call void @fn_emit(ptr @.str9105) + call void @fn_emit(ptr @.str9110) %t32 = load ptr, ptr %t28 call void @fn_emit(ptr %t32) - call void @fn_emit(ptr @.str9106) + call void @fn_emit(ptr @.str9111) %t33 = load ptr, ptr %t30 call void @fn_emit(ptr %t33) - call void @fn_emit(ptr @.str9107) + call void @fn_emit(ptr @.str9112) %t34 = load ptr, ptr %t28 call void @fn_emit(ptr %t34) - call void @fn_emit(ptr @.str9108) + call void @fn_emit(ptr @.str9113) store i32 0, ptr @g_g_term - call void @fn_emit(ptr @.str9109) + call void @fn_emit(ptr @.str9114) %t35 = load ptr, ptr %t9 call void @fn_emit(ptr %t35) - call void @fn_emit(ptr @.str9110) + call void @fn_emit(ptr @.str9115) %t36 = load ptr, ptr %t0 %t37 = getelementptr inbounds %Cmp_Node, ptr %t36, i32 0, i32 1 %t38 = load ptr, ptr %t37 @@ -95946,37 +96102,37 @@ then0: store i32 %t45, ptr %t46 %t47 = call ptr @fn_nreg() store ptr %t47, ptr %t48 - call void @fn_emit(ptr @.str9111) + call void @fn_emit(ptr @.str9116) %t49 = load ptr, ptr %t48 call void @fn_emit(ptr %t49) - call void @fn_emit(ptr @.str9112) + call void @fn_emit(ptr @.str9117) %t50 = load ptr, ptr %t7 call void @fn_emit(ptr %t50) - call void @fn_emit(ptr @.str9113) + call void @fn_emit(ptr @.str9118) %t51 = load ptr, ptr %t0 %t52 = getelementptr inbounds %Cmp_Node, ptr %t51, i32 0, i32 1 %t53 = load ptr, ptr %t52 call void @fn_emit(ptr %t53) - call void @fn_emit(ptr @.str9114) + call void @fn_emit(ptr @.str9119) %t54 = load ptr, ptr %t0 %t55 = getelementptr inbounds %Cmp_Node, ptr %t54, i32 0, i32 1 %t56 = load ptr, ptr %t55 call void @fn_emit(ptr %t56) - call void @fn_emit(ptr @.str9115) + call void @fn_emit(ptr @.str9120) %t57 = load ptr, ptr %t5 %t58 = getelementptr inbounds %Cmp_Val, ptr %t57, i32 0, i32 0 %t59 = load ptr, ptr %t58 call void @fn_emit(ptr %t59) - call void @fn_emit(ptr @.str9116) - %t60 = call ptr @fn_emit_alloca(ptr @.str9117) + call void @fn_emit(ptr @.str9121) + %t60 = call ptr @fn_emit_alloca(ptr @.str9122) store ptr %t60, ptr %t61 - call void @fn_emit(ptr @.str9118) + call void @fn_emit(ptr @.str9123) %t62 = load ptr, ptr %t48 call void @fn_emit(ptr %t62) - call void @fn_emit(ptr @.str9119) + call void @fn_emit(ptr @.str9124) %t63 = load ptr, ptr %t61 call void @fn_emit(ptr %t63) - call void @fn_emit(ptr @.str9120) + call void @fn_emit(ptr @.str9125) %t64 = load ptr, ptr %t0 %t65 = getelementptr inbounds %Cmp_Node, ptr %t64, i32 0, i32 1 %t66 = load ptr, ptr %t65 @@ -95994,8 +96150,8 @@ ifend2: %t73 = load ptr, ptr %t0 %t74 = getelementptr inbounds %Cmp_Node, ptr %t73, i32 0, i32 1 %t75 = load ptr, ptr %t74 - %t76 = call ptr @lp_str_concat(ptr @.str9121, ptr %t75) - %t77 = call ptr @lp_str_concat(ptr %t76, ptr @.str9122) + %t76 = call ptr @lp_str_concat(ptr @.str9126, ptr %t75) + %t77 = call ptr @lp_str_concat(ptr %t76, ptr @.str9127) store ptr %t77, ptr %t78 %t79 = load ptr, ptr %t78 %t80 = call ptr @fn_find_event(ptr %t79) @@ -96004,15 +96160,15 @@ ifend2: %t83 = icmp ne i32 %t82, 0 br i1 %t83, label %then3, label %ifend5 then3: - call void @fn_emit(ptr @.str9123) + call void @fn_emit(ptr @.str9128) %t84 = load ptr, ptr %t78 call void @fn_emit(ptr %t84) - call void @fn_emit(ptr @.str9124) + call void @fn_emit(ptr @.str9129) %t85 = load ptr, ptr %t5 %t86 = getelementptr inbounds %Cmp_Val, ptr %t85, i32 0, i32 0 %t87 = load ptr, ptr %t86 call void @fn_emit(ptr %t87) - call void @fn_emit(ptr @.str9125) + call void @fn_emit(ptr @.str9130) br label %ifend5 ifend5: %t88 = load i32, ptr @g_g_term @@ -96021,15 +96177,15 @@ ifend5: %t91 = icmp ne i32 %t90, 0 br i1 %t91, label %then6, label %ifend8 then6: - call void @fn_emit(ptr @.str9126) + call void @fn_emit(ptr @.str9131) %t92 = load ptr, ptr %t30 call void @fn_emit(ptr %t92) - call void @fn_emit(ptr @.str9127) + call void @fn_emit(ptr @.str9132) br label %ifend8 ifend8: %t93 = load ptr, ptr %t30 call void @fn_emit(ptr %t93) - call void @fn_emit(ptr @.str9128) + call void @fn_emit(ptr @.str9133) store i32 0, ptr @g_g_term br label %ret ret: @@ -96124,7 +96280,7 @@ entry: %t176 = alloca i32 %t203 = alloca ptr store ptr %arg_st, ptr %t0 - store ptr @.str9129, ptr %t1 + store ptr @.str9134, ptr %t1 %t2 = load ptr, ptr %t0 %t3 = getelementptr inbounds %Cmp_Node, ptr %t2, i32 0, i32 2 %t4 = load i32, ptr %t3 @@ -96133,7 +96289,7 @@ entry: %t7 = icmp ne i32 %t6, 0 br i1 %t7, label %then0, label %ifend2 then0: - store ptr @.str9130, ptr %t1 + store ptr @.str9135, ptr %t1 br label %ifend2 ifend2: %t9 = load ptr, ptr %t0 @@ -96149,7 +96305,7 @@ sc3: %t16 = load ptr, ptr %t0 %t17 = getelementptr inbounds %Cmp_Node, ptr %t16, i32 0, i32 3 %t18 = load ptr, ptr %t17 - %t19 = call i32 @lp_str_eq(ptr %t18, ptr @.str9131) + %t19 = call i32 @lp_str_eq(ptr %t18, ptr @.str9136) %t20 = icmp ne i32 %t19, 0 %t21 = zext i1 %t20 to i32 store i32 %t21, ptr %t8 @@ -96174,7 +96330,7 @@ sc8: %t32 = load ptr, ptr %t0 %t33 = getelementptr inbounds %Cmp_Node, ptr %t32, i32 0, i32 3 %t34 = load ptr, ptr %t33 - %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str9132) + %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str9137) %t36 = icmp ne i32 %t35, 0 %t37 = zext i1 %t36 to i32 store i32 %t37, ptr %t24 @@ -96184,20 +96340,20 @@ scend9: %t39 = icmp ne i32 %t38, 0 br i1 %t39, label %then10, label %ifend12 then10: - call void @fn_emit(ptr @.str9133) + call void @fn_emit(ptr @.str9138) %t40 = load ptr, ptr %t1 call void @fn_emit(ptr %t40) - call void @fn_emit(ptr @.str9134) + call void @fn_emit(ptr @.str9139) %t41 = load ptr, ptr %t0 %t42 = getelementptr inbounds %Cmp_Node, ptr %t41, i32 0, i32 1 %t43 = load ptr, ptr %t42 call void @fn_emit(ptr %t43) - call void @fn_emit(ptr @.str9135) + call void @fn_emit(ptr @.str9140) %t44 = load ptr, ptr %t0 %t45 = getelementptr inbounds %Cmp_Node, ptr %t44, i32 0, i32 1 %t46 = load ptr, ptr %t45 - %t47 = call ptr @lp_str_concat(ptr @.str9136, ptr %t46) - %t48 = call ptr @lp_str_concat(ptr %t47, ptr @.str9137) + %t47 = call ptr @lp_str_concat(ptr @.str9141, ptr %t46) + %t48 = call ptr @lp_str_concat(ptr %t47, ptr @.str9142) store ptr %t48, ptr %t49 %t50 = load ptr, ptr %t0 %t51 = getelementptr inbounds %Cmp_Node, ptr %t50, i32 0, i32 2 @@ -96210,8 +96366,8 @@ then13: %t56 = load ptr, ptr %t0 %t57 = getelementptr inbounds %Cmp_Node, ptr %t56, i32 0, i32 1 %t58 = load ptr, ptr %t57 - %t59 = call ptr @lp_str_concat(ptr @.str9138, ptr %t58) - %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str9139) + %t59 = call ptr @lp_str_concat(ptr @.str9143, ptr %t58) + %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str9144) store ptr %t60, ptr %t49 br label %ifend15 ifend15: @@ -96222,10 +96378,10 @@ ifend15: %t65 = icmp ne i32 %t64, 0 br i1 %t65, label %then16, label %ifend18 then16: - call void @fn_emit(ptr @.str9140) + call void @fn_emit(ptr @.str9145) %t66 = load ptr, ptr %t49 call void @fn_emit(ptr %t66) - call void @fn_emit(ptr @.str9141) + call void @fn_emit(ptr @.str9146) br label %ifend18 ifend18: br label %ret @@ -96247,30 +96403,30 @@ then19: store ptr %t78, ptr %t79 %t80 = call ptr @fn_nreg() store ptr %t80, ptr %t81 - call void @fn_emit(ptr @.str9142) + call void @fn_emit(ptr @.str9147) %t82 = load ptr, ptr %t81 call void @fn_emit(ptr %t82) - call void @fn_emit(ptr @.str9143) + call void @fn_emit(ptr @.str9148) %t83 = load ptr, ptr %t79 call void @fn_emit(ptr %t83) - call void @fn_emit(ptr @.str9144) + call void @fn_emit(ptr @.str9149) %t84 = load ptr, ptr %t0 %t85 = getelementptr inbounds %Cmp_Node, ptr %t84, i32 0, i32 1 %t86 = load ptr, ptr %t85 call void @fn_emit(ptr %t86) - call void @fn_emit(ptr @.str9145) + call void @fn_emit(ptr @.str9150) %t87 = load ptr, ptr %t77 %t88 = getelementptr inbounds %Cmp_Val, ptr %t87, i32 0, i32 0 %t89 = load ptr, ptr %t88 call void @fn_emit(ptr %t89) - call void @fn_emit(ptr @.str9146) - call void @fn_emit(ptr @.str9147) + call void @fn_emit(ptr @.str9151) + call void @fn_emit(ptr @.str9152) %t90 = load ptr, ptr %t1 call void @fn_emit(ptr %t90) - call void @fn_emit(ptr @.str9148) + call void @fn_emit(ptr @.str9153) %t91 = load ptr, ptr %t81 call void @fn_emit(ptr %t91) - call void @fn_emit(ptr @.str9149) + call void @fn_emit(ptr @.str9154) store ptr null, ptr %t92 %t93 = load ptr, ptr %t0 %t94 = getelementptr inbounds %Cmp_Node, ptr %t93, i32 0, i32 2 @@ -96304,37 +96460,37 @@ then25: store i32 %t111, ptr %t112 %t113 = call ptr @fn_nreg() store ptr %t113, ptr %t114 - call void @fn_emit(ptr @.str9150) + call void @fn_emit(ptr @.str9155) %t115 = load ptr, ptr %t114 call void @fn_emit(ptr %t115) - call void @fn_emit(ptr @.str9151) + call void @fn_emit(ptr @.str9156) %t116 = load ptr, ptr %t79 call void @fn_emit(ptr %t116) - call void @fn_emit(ptr @.str9152) + call void @fn_emit(ptr @.str9157) %t117 = load ptr, ptr %t0 %t118 = getelementptr inbounds %Cmp_Node, ptr %t117, i32 0, i32 1 %t119 = load ptr, ptr %t118 call void @fn_emit(ptr %t119) - call void @fn_emit(ptr @.str9153) + call void @fn_emit(ptr @.str9158) %t120 = load ptr, ptr %t0 %t121 = getelementptr inbounds %Cmp_Node, ptr %t120, i32 0, i32 1 %t122 = load ptr, ptr %t121 call void @fn_emit(ptr %t122) - call void @fn_emit(ptr @.str9154) + call void @fn_emit(ptr @.str9159) %t123 = load ptr, ptr %t77 %t124 = getelementptr inbounds %Cmp_Val, ptr %t123, i32 0, i32 0 %t125 = load ptr, ptr %t124 call void @fn_emit(ptr %t125) - call void @fn_emit(ptr @.str9155) - %t126 = call ptr @fn_emit_alloca(ptr @.str9156) + call void @fn_emit(ptr @.str9160) + %t126 = call ptr @fn_emit_alloca(ptr @.str9161) store ptr %t126, ptr %t127 - call void @fn_emit(ptr @.str9157) + call void @fn_emit(ptr @.str9162) %t128 = load ptr, ptr %t114 call void @fn_emit(ptr %t128) - call void @fn_emit(ptr @.str9158) + call void @fn_emit(ptr @.str9163) %t129 = load ptr, ptr %t127 call void @fn_emit(ptr %t129) - call void @fn_emit(ptr @.str9159) + call void @fn_emit(ptr @.str9164) %t130 = load ptr, ptr %t0 %t131 = getelementptr inbounds %Cmp_Node, ptr %t130, i32 0, i32 1 %t132 = load ptr, ptr %t131 @@ -96352,8 +96508,8 @@ ifend27: %t139 = load ptr, ptr %t0 %t140 = getelementptr inbounds %Cmp_Node, ptr %t139, i32 0, i32 1 %t141 = load ptr, ptr %t140 - %t142 = call ptr @lp_str_concat(ptr @.str9160, ptr %t141) - %t143 = call ptr @lp_str_concat(ptr %t142, ptr @.str9161) + %t142 = call ptr @lp_str_concat(ptr @.str9165, ptr %t141) + %t143 = call ptr @lp_str_concat(ptr %t142, ptr @.str9166) store ptr %t143, ptr %t144 %t145 = load ptr, ptr %t0 %t146 = getelementptr inbounds %Cmp_Node, ptr %t145, i32 0, i32 2 @@ -96366,8 +96522,8 @@ then28: %t151 = load ptr, ptr %t0 %t152 = getelementptr inbounds %Cmp_Node, ptr %t151, i32 0, i32 1 %t153 = load ptr, ptr %t152 - %t154 = call ptr @lp_str_concat(ptr @.str9162, ptr %t153) - %t155 = call ptr @lp_str_concat(ptr %t154, ptr @.str9163) + %t154 = call ptr @lp_str_concat(ptr @.str9167, ptr %t153) + %t155 = call ptr @lp_str_concat(ptr %t154, ptr @.str9168) store ptr %t155, ptr %t144 br label %ifend30 ifend30: @@ -96378,20 +96534,20 @@ ifend30: %t160 = icmp ne i32 %t159, 0 br i1 %t160, label %then31, label %ifend33 then31: - call void @fn_emit(ptr @.str9164) + call void @fn_emit(ptr @.str9169) %t161 = load ptr, ptr %t144 call void @fn_emit(ptr %t161) - call void @fn_emit(ptr @.str9165) + call void @fn_emit(ptr @.str9170) %t162 = load ptr, ptr %t77 %t163 = getelementptr inbounds %Cmp_Val, ptr %t162, i32 0, i32 0 %t164 = load ptr, ptr %t163 call void @fn_emit(ptr %t164) - call void @fn_emit(ptr @.str9166) + call void @fn_emit(ptr @.str9171) br label %ifend33 ifend33: br label %ifend21 else20: - store ptr @.str9167, ptr %t165 + store ptr @.str9172, ptr %t165 %t166 = load ptr, ptr %t0 %t167 = getelementptr inbounds %Cmp_Node, ptr %t166, i32 0, i32 1 %t168 = load ptr, ptr %t167 @@ -96399,7 +96555,7 @@ else20: %t170 = icmp ne i32 %t169, 0 br i1 %t170, label %then34, label %ifend36 then34: - store ptr @.str9168, ptr %t165 + store ptr @.str9173, ptr %t165 br label %ifend36 ifend36: %t171 = load ptr, ptr %t0 @@ -96407,7 +96563,7 @@ ifend36: %t173 = load ptr, ptr %t172 store ptr %t173, ptr %t174 %t177 = load ptr, ptr %t165 - %t178 = call i32 @lp_str_eq(ptr %t177, ptr @.str9169) + %t178 = call i32 @lp_str_eq(ptr %t177, ptr @.str9174) %t179 = icmp ne i32 %t178, 0 %t180 = zext i1 %t179 to i32 store i32 %t180, ptr %t176 @@ -96443,7 +96599,7 @@ then41: %t197 = load ptr, ptr @g_g_cur_scene %t198 = getelementptr inbounds %Cmp_Node, ptr %t197, i32 0, i32 1 %t199 = load ptr, ptr %t198 - %t200 = call ptr @lp_str_concat(ptr %t199, ptr @.str9170) + %t200 = call ptr @lp_str_concat(ptr %t199, ptr @.str9175) %t201 = load ptr, ptr %t174 %t202 = call ptr @lp_str_concat(ptr %t200, ptr %t201) store ptr %t202, ptr %t203 @@ -96460,15 +96616,15 @@ then44: ifend46: br label %ifend43 ifend43: - call void @fn_emit(ptr @.str9171) + call void @fn_emit(ptr @.str9176) %t210 = load ptr, ptr %t1 call void @fn_emit(ptr %t210) - call void @fn_emit(ptr @.str9172) + call void @fn_emit(ptr @.str9177) %t211 = load ptr, ptr %t165 call void @fn_emit(ptr %t211) %t212 = load ptr, ptr %t174 call void @fn_emit(ptr %t212) - call void @fn_emit(ptr @.str9173) + call void @fn_emit(ptr @.str9178) br label %ifend21 ifend21: br label %ret @@ -96492,7 +96648,7 @@ entry: call void @fn_loc_reset() store i32 0, ptr @g_nloop store i32 0, ptr @g_nself - store ptr @.str9174, ptr @g_ret_ty + store ptr @.str9179, ptr @g_ret_ty %t4 = call ptr @fn_buf_new() store ptr %t4, ptr %t5 %t6 = call ptr @fn_buf_new() @@ -96511,25 +96667,25 @@ entry: %t16 = icmp ne i32 %t15, 0 br i1 %t16, label %then0, label %ifend2 then0: - call void @fn_emit(ptr @.str9175) + call void @fn_emit(ptr @.str9180) br label %ifend2 ifend2: - call void @fn_emit(ptr @.str9176) + call void @fn_emit(ptr @.str9181) %t17 = load ptr, ptr %t8 store ptr %t17, ptr @g_code - call void @fn_emit(ptr @.str9177) + call void @fn_emit(ptr @.str9182) %t18 = load ptr, ptr %t0 %t19 = getelementptr inbounds %Cmp_Node, ptr %t18, i32 0, i32 1 %t20 = load ptr, ptr %t19 call void @fn_emit(ptr %t20) - call void @fn_emit(ptr @.str9178) + call void @fn_emit(ptr @.str9183) %t21 = load ptr, ptr @g_falloc %t22 = call ptr @fn_buf_str(ptr %t21) call void @fn_emit(ptr %t22) %t23 = load ptr, ptr %t5 %t24 = call ptr @fn_buf_str(ptr %t23) call void @fn_emit(ptr %t24) - call void @fn_emit(ptr @.str9179) + call void @fn_emit(ptr @.str9184) br label %ret ret: ret void @@ -96551,12 +96707,12 @@ entry: %t1 = load ptr, ptr %t0 %t2 = getelementptr inbounds %Cmp_Node, ptr %t1, i32 0, i32 1 %t3 = load ptr, ptr %t2 - %t4 = call ptr @lp_str_concat(ptr @.str9180, ptr %t3) + %t4 = call ptr @lp_str_concat(ptr @.str9185, ptr %t3) %t5 = call ptr @fn_emit_bind(ptr %t4) store ptr %t5, ptr %t6 %t7 = load ptr, ptr %t6 - %t8 = call ptr @lp_str_concat(ptr @.str9181, ptr %t7) - %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str9182) + %t8 = call ptr @lp_str_concat(ptr @.str9186, ptr %t7) + %t9 = call ptr @lp_str_concat(ptr %t8, ptr @.str9187) %t10 = call ptr @fn_emit_bind(ptr %t9) store ptr %t10, ptr %t11 %t13 = load ptr, ptr %t0 @@ -96589,17 +96745,17 @@ then2: %t32 = load ptr, ptr %t31 %t33 = getelementptr inbounds %Cmp_Node, ptr %t32, i32 0, i32 1 %t34 = load ptr, ptr %t33 - %t35 = call ptr @lp_str_concat(ptr @.str9183, ptr %t34) + %t35 = call ptr @lp_str_concat(ptr @.str9188, ptr %t34) %t36 = call ptr @fn_emit_bind(ptr %t35) store ptr %t36, ptr %t37 %t38 = load ptr, ptr %t37 - %t39 = call ptr @lp_str_concat(ptr @.str9184, ptr %t38) - %t40 = call ptr @lp_str_concat(ptr %t39, ptr @.str9185) + %t39 = call ptr @lp_str_concat(ptr @.str9189, ptr %t38) + %t40 = call ptr @lp_str_concat(ptr %t39, ptr @.str9190) %t41 = call ptr @fn_emit_bind(ptr %t40) store ptr %t41, ptr %t42 %t43 = load ptr, ptr %t11 - %t44 = call ptr @lp_str_concat(ptr @.str9186, ptr %t43) - %t45 = call ptr @lp_str_concat(ptr %t44, ptr @.str9187) + %t44 = call ptr @lp_str_concat(ptr @.str9191, ptr %t43) + %t45 = call ptr @lp_str_concat(ptr %t44, ptr @.str9192) %t46 = load ptr, ptr %t42 %t47 = call ptr @lp_str_concat(ptr %t45, ptr %t46) %t48 = call ptr @fn_emit_bind(ptr %t47) @@ -96614,51 +96770,51 @@ ifend4: %t54 = icmp ne i32 %t53, 0 br i1 %t54, label %then5, label %ifend7 then5: - %t55 = call ptr @fn_emit_bind(ptr @.str9188) + %t55 = call ptr @fn_emit_bind(ptr @.str9193) store ptr %t55, ptr %t56 %t57 = load ptr, ptr %t56 - %t58 = call ptr @lp_str_concat(ptr @.str9189, ptr %t57) - %t59 = call ptr @lp_str_concat(ptr %t58, ptr @.str9190) + %t58 = call ptr @lp_str_concat(ptr @.str9194, ptr %t57) + %t59 = call ptr @lp_str_concat(ptr %t58, ptr @.str9195) %t60 = call ptr @fn_emit_bind(ptr %t59) store ptr %t60, ptr %t61 %t62 = load ptr, ptr %t11 - %t63 = call ptr @lp_str_concat(ptr @.str9191, ptr %t62) - %t64 = call ptr @lp_str_concat(ptr %t63, ptr @.str9192) + %t63 = call ptr @lp_str_concat(ptr @.str9196, ptr %t62) + %t64 = call ptr @lp_str_concat(ptr %t63, ptr @.str9197) %t65 = load ptr, ptr %t61 %t66 = call ptr @lp_str_concat(ptr %t64, ptr %t65) %t67 = call ptr @fn_emit_bind(ptr %t66) store ptr %t67, ptr %t11 br label %ifend7 ifend7: - %t68 = call ptr @fn_lbl(ptr @.str9193) + %t68 = call ptr @fn_lbl(ptr @.str9198) store ptr %t68, ptr %t69 - %t70 = call ptr @fn_lbl(ptr @.str9194) + %t70 = call ptr @fn_lbl(ptr @.str9199) store ptr %t70, ptr %t71 - call void @fn_emit(ptr @.str9195) + call void @fn_emit(ptr @.str9200) %t72 = load ptr, ptr %t11 call void @fn_emit(ptr %t72) - call void @fn_emit(ptr @.str9196) + call void @fn_emit(ptr @.str9201) %t73 = load ptr, ptr %t69 call void @fn_emit(ptr %t73) - call void @fn_emit(ptr @.str9197) + call void @fn_emit(ptr @.str9202) %t74 = load ptr, ptr %t71 call void @fn_emit(ptr %t74) - call void @fn_emit(ptr @.str9198) + call void @fn_emit(ptr @.str9203) %t75 = load ptr, ptr %t69 call void @fn_emit(ptr %t75) - call void @fn_emit(ptr @.str9199) + call void @fn_emit(ptr @.str9204) %t76 = load ptr, ptr %t0 %t77 = getelementptr inbounds %Cmp_Node, ptr %t76, i32 0, i32 1 %t78 = load ptr, ptr %t77 call void @fn_emit(ptr %t78) - call void @fn_emit(ptr @.str9200) - call void @fn_emit(ptr @.str9201) + call void @fn_emit(ptr @.str9205) + call void @fn_emit(ptr @.str9206) %t79 = load ptr, ptr %t71 call void @fn_emit(ptr %t79) - call void @fn_emit(ptr @.str9202) + call void @fn_emit(ptr @.str9207) %t80 = load ptr, ptr %t71 call void @fn_emit(ptr %t80) - call void @fn_emit(ptr @.str9203) + call void @fn_emit(ptr @.str9208) br label %ret ret: ret void @@ -96700,10 +96856,10 @@ scend4: %t19 = icmp ne i32 %t18, 0 br i1 %t19, label %then5, label %ifend7 then5: - call void @fn_emit(ptr @.str9204) + call void @fn_emit(ptr @.str9209) %t20 = load ptr, ptr %t1 call void @fn_emit(ptr %t20) - call void @fn_emit(ptr @.str9205) + call void @fn_emit(ptr @.str9210) br label %ifend7 ifend7: br label %ret @@ -96763,7 +96919,7 @@ ifend5: br label %wcond0 wend2: %t32 = load ptr, ptr %t0 - %t33 = call i32 @lp_str_eq(ptr %t32, ptr @.str9206) + %t33 = call i32 @lp_str_eq(ptr %t32, ptr @.str9211) %t34 = icmp ne i32 %t33, 0 br i1 %t34, label %then6, label %ifend8 then6: @@ -96773,7 +96929,7 @@ then6: store i32 %t38, ptr %t35 br i1 %t37, label %sc9, label %scend10 sc9: - %t39 = call ptr @fn_find_fn(ptr @.str9207) + %t39 = call ptr @fn_find_fn(ptr @.str9212) %t40 = icmp ne ptr %t39, null %t41 = zext i1 %t40 to i32 %t42 = icmp ne i32 %t41, 0 @@ -96785,14 +96941,14 @@ scend10: %t45 = icmp ne i32 %t44, 0 br i1 %t45, label %then11, label %ifend13 then11: - call void @fn_emit(ptr @.str9208) + call void @fn_emit(ptr @.str9213) br label %ifend13 ifend13: %t46 = call i32 @fn_has_countdowns() %t47 = icmp ne i32 %t46, 0 br i1 %t47, label %then14, label %ifend16 then14: - call void @fn_emit(ptr @.str9209) + call void @fn_emit(ptr @.str9214) br label %ifend16 ifend16: %t49 = load i32, ptr @g_g_uses_fx @@ -96801,7 +96957,7 @@ ifend16: store i32 %t51, ptr %t48 br i1 %t50, label %sc17, label %scend18 sc17: - %t52 = call ptr @fn_find_fn(ptr @.str9210) + %t52 = call ptr @fn_find_fn(ptr @.str9215) %t53 = icmp ne ptr %t52, null %t54 = zext i1 %t53 to i32 %t55 = icmp ne i32 %t54, 0 @@ -96813,13 +96969,13 @@ scend18: %t58 = icmp ne i32 %t57, 0 br i1 %t58, label %then19, label %ifend21 then19: - call void @fn_emit(ptr @.str9211) + call void @fn_emit(ptr @.str9216) br label %ifend21 ifend21: br label %ifend8 ifend8: %t59 = load ptr, ptr %t0 - %t60 = call i32 @lp_str_eq(ptr %t59, ptr @.str9212) + %t60 = call i32 @lp_str_eq(ptr %t59, ptr @.str9217) %t61 = icmp ne i32 %t60, 0 br i1 %t61, label %then22, label %ifend24 then22: @@ -96829,7 +96985,7 @@ then22: store i32 %t65, ptr %t62 br i1 %t64, label %sc25, label %scend26 sc25: - %t66 = call ptr @fn_find_fn(ptr @.str9213) + %t66 = call ptr @fn_find_fn(ptr @.str9218) %t67 = icmp ne ptr %t66, null %t68 = zext i1 %t67 to i32 %t69 = icmp ne i32 %t68, 0 @@ -96841,7 +96997,7 @@ scend26: %t72 = icmp ne i32 %t71, 0 br i1 %t72, label %then27, label %ifend29 then27: - call void @fn_emit(ptr @.str9214) + call void @fn_emit(ptr @.str9219) br label %ifend29 ifend29: br label %ifend24 @@ -96864,15 +97020,15 @@ entry: %t107 = alloca ptr %t0 = call ptr @fn_itoa(i32 1024) store ptr %t0, ptr %t1 - call void @fn_emit(ptr @.str9215) - call void @fn_emit(ptr @.str9216) - call void @fn_emit(ptr @.str9217) - call void @fn_emit(ptr @.str9218) - call void @fn_emit(ptr @.str9219) - %t2 = load ptr, ptr %t1 - call void @fn_emit(ptr %t2) call void @fn_emit(ptr @.str9220) call void @fn_emit(ptr @.str9221) + call void @fn_emit(ptr @.str9222) + call void @fn_emit(ptr @.str9223) + call void @fn_emit(ptr @.str9224) + %t2 = load ptr, ptr %t1 + call void @fn_emit(ptr %t2) + call void @fn_emit(ptr @.str9225) + call void @fn_emit(ptr @.str9226) store i32 0, ptr %t3 store i32 0, ptr %t4 br label %wcond0 @@ -96926,7 +97082,7 @@ wbody7: %t43 = load ptr, ptr %t42 %t44 = getelementptr inbounds %Cmp_Node, ptr %t43, i32 0, i32 3 %t45 = load ptr, ptr %t44 - %t46 = call i32 @lp_str_eq(ptr %t45, ptr @.str9222) + %t46 = call i32 @lp_str_eq(ptr %t45, ptr @.str9227) %t47 = icmp ne i32 %t46, 0 br i1 %t47, label %then9, label %ifend11 then9: @@ -96949,67 +97105,67 @@ then12: %t56 = add i32 %t55, 1 %t57 = call ptr @fn_itoa(i32 %t56) store ptr %t57, ptr %t58 - call void @fn_emit(ptr @.str9223) + call void @fn_emit(ptr @.str9228) %t59 = load ptr, ptr %t54 call void @fn_emit(ptr %t59) - call void @fn_emit(ptr @.str9224) - call void @fn_emit(ptr @.str9225) + call void @fn_emit(ptr @.str9229) + call void @fn_emit(ptr @.str9230) %t60 = load ptr, ptr %t54 call void @fn_emit(ptr %t60) - call void @fn_emit(ptr @.str9226) + call void @fn_emit(ptr @.str9231) %t61 = load ptr, ptr %t1 call void @fn_emit(ptr %t61) - call void @fn_emit(ptr @.str9227) + call void @fn_emit(ptr @.str9232) %t62 = load ptr, ptr %t18 %t63 = getelementptr inbounds %Cmp_Node, ptr %t62, i32 0, i32 1 %t64 = load ptr, ptr %t63 call void @fn_emit(ptr %t64) - call void @fn_emit(ptr @.str9228) - call void @fn_emit(ptr @.str9229) + call void @fn_emit(ptr @.str9233) + call void @fn_emit(ptr @.str9234) %t65 = load ptr, ptr %t54 call void @fn_emit(ptr %t65) - call void @fn_emit(ptr @.str9230) + call void @fn_emit(ptr @.str9235) %t66 = load ptr, ptr %t54 call void @fn_emit(ptr %t66) - call void @fn_emit(ptr @.str9231) - call void @fn_emit(ptr @.str9232) + call void @fn_emit(ptr @.str9236) + call void @fn_emit(ptr @.str9237) %t67 = load ptr, ptr %t54 call void @fn_emit(ptr %t67) - call void @fn_emit(ptr @.str9233) + call void @fn_emit(ptr @.str9238) %t68 = load ptr, ptr %t54 call void @fn_emit(ptr %t68) - call void @fn_emit(ptr @.str9234) - call void @fn_emit(ptr @.str9235) + call void @fn_emit(ptr @.str9239) + call void @fn_emit(ptr @.str9240) %t69 = load ptr, ptr %t54 call void @fn_emit(ptr %t69) - call void @fn_emit(ptr @.str9236) + call void @fn_emit(ptr @.str9241) %t70 = load ptr, ptr %t54 call void @fn_emit(ptr %t70) - call void @fn_emit(ptr @.str9237) + call void @fn_emit(ptr @.str9242) %t71 = load ptr, ptr %t58 call void @fn_emit(ptr %t71) - call void @fn_emit(ptr @.str9238) - call void @fn_emit(ptr @.str9239) + call void @fn_emit(ptr @.str9243) + call void @fn_emit(ptr @.str9244) %t72 = load ptr, ptr %t54 call void @fn_emit(ptr %t72) - call void @fn_emit(ptr @.str9240) - call void @fn_emit(ptr @.str9241) + call void @fn_emit(ptr @.str9245) + call void @fn_emit(ptr @.str9246) %t73 = load ptr, ptr %t54 call void @fn_emit(ptr %t73) - call void @fn_emit(ptr @.str9242) + call void @fn_emit(ptr @.str9247) %t74 = load ptr, ptr %t1 call void @fn_emit(ptr %t74) - call void @fn_emit(ptr @.str9243) + call void @fn_emit(ptr @.str9248) %t75 = load ptr, ptr %t18 %t76 = getelementptr inbounds %Cmp_Node, ptr %t75, i32 0, i32 1 %t77 = load ptr, ptr %t76 call void @fn_emit(ptr %t77) - call void @fn_emit(ptr @.str9244) + call void @fn_emit(ptr @.str9249) %t78 = load ptr, ptr %t18 %t79 = getelementptr inbounds %Cmp_Node, ptr %t78, i32 0, i32 1 %t80 = load ptr, ptr %t79 call void @fn_emit(ptr %t80) - call void @fn_emit(ptr @.str9245) + call void @fn_emit(ptr @.str9250) store i32 0, ptr %t26 br label %wcond15 wcond15: @@ -97034,73 +97190,73 @@ wbody16: %t97 = load ptr, ptr %t96 %t98 = getelementptr inbounds %Cmp_Node, ptr %t97, i32 0, i32 3 %t99 = load ptr, ptr %t98 - %t100 = call i32 @lp_str_eq(ptr %t99, ptr @.str9246) + %t100 = call i32 @lp_str_eq(ptr %t99, ptr @.str9251) %t101 = icmp ne i32 %t100, 0 br i1 %t101, label %then18, label %ifend20 then18: %t102 = load ptr, ptr %t54 - %t103 = call ptr @lp_str_concat(ptr %t102, ptr @.str9247) + %t103 = call ptr @lp_str_concat(ptr %t102, ptr @.str9252) %t104 = load i32, ptr %t26 %t105 = call ptr @fn_itoa(i32 %t104) %t106 = call ptr @lp_str_concat(ptr %t103, ptr %t105) store ptr %t106, ptr %t107 - call void @fn_emit(ptr @.str9248) + call void @fn_emit(ptr @.str9253) %t108 = load ptr, ptr %t107 call void @fn_emit(ptr %t108) - call void @fn_emit(ptr @.str9249) + call void @fn_emit(ptr @.str9254) %t109 = load ptr, ptr %t18 %t110 = getelementptr inbounds %Cmp_Node, ptr %t109, i32 0, i32 1 %t111 = load ptr, ptr %t110 call void @fn_emit(ptr %t111) - call void @fn_emit(ptr @.str9250) + call void @fn_emit(ptr @.str9255) %t112 = load ptr, ptr %t54 call void @fn_emit(ptr %t112) - call void @fn_emit(ptr @.str9251) + call void @fn_emit(ptr @.str9256) %t113 = load i32, ptr %t26 %t114 = call ptr @fn_itoa(i32 %t113) call void @fn_emit(ptr %t114) - call void @fn_emit(ptr @.str9252) - call void @fn_emit(ptr @.str9253) + call void @fn_emit(ptr @.str9257) + call void @fn_emit(ptr @.str9258) %t115 = load ptr, ptr %t107 call void @fn_emit(ptr %t115) - call void @fn_emit(ptr @.str9254) + call void @fn_emit(ptr @.str9259) %t116 = load ptr, ptr %t107 call void @fn_emit(ptr %t116) - call void @fn_emit(ptr @.str9255) - call void @fn_emit(ptr @.str9256) + call void @fn_emit(ptr @.str9260) + call void @fn_emit(ptr @.str9261) %t117 = load ptr, ptr %t107 call void @fn_emit(ptr %t117) - call void @fn_emit(ptr @.str9257) + call void @fn_emit(ptr @.str9262) %t118 = load ptr, ptr %t107 call void @fn_emit(ptr %t118) - call void @fn_emit(ptr @.str9258) - call void @fn_emit(ptr @.str9259) + call void @fn_emit(ptr @.str9263) + call void @fn_emit(ptr @.str9264) %t119 = load ptr, ptr %t107 call void @fn_emit(ptr %t119) - call void @fn_emit(ptr @.str9260) + call void @fn_emit(ptr @.str9265) %t120 = load ptr, ptr %t107 call void @fn_emit(ptr %t120) - call void @fn_emit(ptr @.str9261) - call void @fn_emit(ptr @.str9262) - %t121 = load ptr, ptr %t107 - call void @fn_emit(ptr %t121) - call void @fn_emit(ptr @.str9263) - %t122 = load ptr, ptr %t107 - call void @fn_emit(ptr %t122) - call void @fn_emit(ptr @.str9264) - %t123 = load ptr, ptr %t107 - call void @fn_emit(ptr %t123) - call void @fn_emit(ptr @.str9265) - %t124 = load ptr, ptr %t107 - call void @fn_emit(ptr %t124) call void @fn_emit(ptr @.str9266) call void @fn_emit(ptr @.str9267) + %t121 = load ptr, ptr %t107 + call void @fn_emit(ptr %t121) + call void @fn_emit(ptr @.str9268) + %t122 = load ptr, ptr %t107 + call void @fn_emit(ptr %t122) + call void @fn_emit(ptr @.str9269) + %t123 = load ptr, ptr %t107 + call void @fn_emit(ptr %t123) + call void @fn_emit(ptr @.str9270) + %t124 = load ptr, ptr %t107 + call void @fn_emit(ptr %t124) + call void @fn_emit(ptr @.str9271) + call void @fn_emit(ptr @.str9272) %t125 = load ptr, ptr %t107 call void @fn_emit(ptr %t125) - call void @fn_emit(ptr @.str9268) + call void @fn_emit(ptr @.str9273) %t126 = load ptr, ptr %t107 call void @fn_emit(ptr %t126) - call void @fn_emit(ptr @.str9269) + call void @fn_emit(ptr @.str9274) br label %ifend20 ifend20: %t127 = load i32, ptr %t26 @@ -97108,10 +97264,10 @@ ifend20: store i32 %t128, ptr %t26 br label %wcond15 wend17: - call void @fn_emit(ptr @.str9270) + call void @fn_emit(ptr @.str9275) %t129 = load ptr, ptr %t58 call void @fn_emit(ptr %t129) - call void @fn_emit(ptr @.str9271) + call void @fn_emit(ptr @.str9276) %t130 = load i32, ptr %t3 %t131 = add i32 %t130, 1 store i32 %t131, ptr %t3 @@ -97124,12 +97280,12 @@ ifend5: store i32 %t133, ptr %t4 br label %wcond0 wend2: - call void @fn_emit(ptr @.str9272) + call void @fn_emit(ptr @.str9277) %t134 = load i32, ptr %t3 %t135 = call ptr @fn_itoa(i32 %t134) call void @fn_emit(ptr %t135) - call void @fn_emit(ptr @.str9273) - call void @fn_emit(ptr @.str9274) + call void @fn_emit(ptr @.str9278) + call void @fn_emit(ptr @.str9279) br label %ret ret: ret void @@ -97150,7 +97306,7 @@ entry: store i32 0, ptr @g_nloop store i32 0, ptr @g_nself store ptr null, ptr @g_g_cur_scene - store ptr @.str9275, ptr @g_ret_ty + store ptr @.str9280, ptr @g_ret_ty %t1 = call ptr @fn_buf_new() store ptr %t1, ptr %t2 %t3 = call ptr @fn_buf_new() @@ -97170,25 +97326,25 @@ entry: %t14 = load ptr, ptr %t8 %t15 = call ptr @fn_emit_spawn(ptr %t14) store ptr %t15, ptr %t16 - call void @fn_emit(ptr @.str9276) + call void @fn_emit(ptr @.str9281) %t17 = load ptr, ptr %t16 call void @fn_emit(ptr %t17) - call void @fn_emit(ptr @.str9277) + call void @fn_emit(ptr @.str9282) %t18 = load ptr, ptr %t5 store ptr %t18, ptr @g_code - call void @fn_emit(ptr @.str9278) + call void @fn_emit(ptr @.str9283) %t19 = load ptr, ptr %t0 %t20 = getelementptr inbounds %Cmp_Node, ptr %t19, i32 0, i32 1 %t21 = load ptr, ptr %t20 call void @fn_emit(ptr %t21) - call void @fn_emit(ptr @.str9279) + call void @fn_emit(ptr @.str9284) %t22 = load ptr, ptr @g_falloc %t23 = call ptr @fn_buf_str(ptr %t22) call void @fn_emit(ptr %t23) %t24 = load ptr, ptr %t2 %t25 = call ptr @fn_buf_str(ptr %t24) call void @fn_emit(ptr %t25) - call void @fn_emit(ptr @.str9280) + call void @fn_emit(ptr @.str9285) br label %ret ret: ret void @@ -97302,46 +97458,46 @@ then9: %t63 = load ptr, ptr %t62 %t64 = getelementptr inbounds %Cmp_Val, ptr %t63, i32 0, i32 0 %t65 = load ptr, ptr %t64 - %t66 = call ptr @lp_str_concat(ptr @.str9281, ptr %t65) - %t67 = call ptr @lp_str_concat(ptr %t66, ptr @.str9282) + %t66 = call ptr @lp_str_concat(ptr @.str9286, ptr %t65) + %t67 = call ptr @lp_str_concat(ptr %t66, ptr @.str9287) %t68 = call ptr @fn_emit_bind(ptr %t67) store ptr %t68, ptr %t69 %t70 = load ptr, ptr %t69 - %t71 = call ptr @lp_str_concat(ptr @.str9283, ptr %t70) - %t72 = call ptr @lp_str_concat(ptr %t71, ptr @.str9284) + %t71 = call ptr @lp_str_concat(ptr @.str9288, ptr %t70) + %t72 = call ptr @lp_str_concat(ptr %t71, ptr @.str9289) %t73 = call ptr @fn_emit_bind(ptr %t72) store ptr %t73, ptr %t74 - %t75 = call ptr @fn_lbl(ptr @.str9285) + %t75 = call ptr @fn_lbl(ptr @.str9290) store ptr %t75, ptr %t76 - %t77 = call ptr @fn_lbl(ptr @.str9286) + %t77 = call ptr @fn_lbl(ptr @.str9291) store ptr %t77, ptr %t78 - call void @fn_emit(ptr @.str9287) + call void @fn_emit(ptr @.str9292) %t79 = load ptr, ptr %t74 call void @fn_emit(ptr %t79) - call void @fn_emit(ptr @.str9288) + call void @fn_emit(ptr @.str9293) %t80 = load ptr, ptr %t76 call void @fn_emit(ptr %t80) - call void @fn_emit(ptr @.str9289) + call void @fn_emit(ptr @.str9294) %t81 = load ptr, ptr %t78 call void @fn_emit(ptr %t81) - call void @fn_emit(ptr @.str9290) + call void @fn_emit(ptr @.str9295) %t82 = load ptr, ptr %t76 call void @fn_emit(ptr %t82) - call void @fn_emit(ptr @.str9291) + call void @fn_emit(ptr @.str9296) %t83 = load ptr, ptr %t46 %t84 = getelementptr inbounds %Cmp_Node, ptr %t83, i32 0, i32 1 %t85 = load ptr, ptr %t84 - %t86 = call ptr @lp_str_concat(ptr @.str9292, ptr %t85) - %t87 = call ptr @lp_str_concat(ptr %t86, ptr @.str9293) + %t86 = call ptr @lp_str_concat(ptr @.str9297, ptr %t85) + %t87 = call ptr @lp_str_concat(ptr %t86, ptr @.str9298) %t88 = call ptr @fn_emit_bind(ptr %t87) store ptr %t88, ptr %t89 - call void @fn_emit(ptr @.str9294) + call void @fn_emit(ptr @.str9299) %t90 = load ptr, ptr %t89 call void @fn_emit(ptr %t90) - call void @fn_emit(ptr @.str9295) + call void @fn_emit(ptr @.str9300) %t91 = load ptr, ptr %t78 call void @fn_emit(ptr %t91) - call void @fn_emit(ptr @.str9296) + call void @fn_emit(ptr @.str9301) br label %ifend11 ifend11: %t92 = load i32, ptr %t0 @@ -97349,17 +97505,17 @@ ifend11: store i32 %t93, ptr %t0 br label %wcond6 wend8: - call void @fn_emit(ptr @.str9297) + call void @fn_emit(ptr @.str9302) %t94 = load ptr, ptr %t31 store ptr %t94, ptr @g_code - call void @fn_emit(ptr @.str9298) + call void @fn_emit(ptr @.str9303) %t95 = load ptr, ptr @g_falloc %t96 = call ptr @fn_buf_str(ptr %t95) call void @fn_emit(ptr %t96) %t97 = load ptr, ptr %t28 %t98 = call ptr @fn_buf_str(ptr %t97) call void @fn_emit(ptr %t98) - call void @fn_emit(ptr @.str9299) + call void @fn_emit(ptr @.str9304) br label %ret ret: ret void @@ -97371,7 +97527,7 @@ entry: %t0 = alloca ptr store ptr %arg_phase, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call i32 @lp_str_eq(ptr %t1, ptr @.str9300) + %t2 = call i32 @lp_str_eq(ptr %t1, ptr @.str9305) %t3 = icmp ne i32 %t2, 0 br i1 %t3, label %then0, label %ifend2 then0: @@ -97379,7 +97535,7 @@ then0: br label %ret ifend2: %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str9301) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str9306) %t6 = icmp ne i32 %t5, 0 br i1 %t6, label %then3, label %ifend5 then3: @@ -97387,7 +97543,7 @@ then3: br label %ret ifend5: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str9302) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str9307) %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then6, label %ifend8 then6: @@ -97395,7 +97551,7 @@ then6: br label %ret ifend8: %t10 = load ptr, ptr %t0 - %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str9303) + %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str9308) %t12 = icmp ne i32 %t11, 0 br i1 %t12, label %then9, label %ifend11 then9: @@ -97403,7 +97559,7 @@ then9: br label %ret ifend11: %t13 = load ptr, ptr %t0 - %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str9304) + %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str9309) %t15 = icmp ne i32 %t14, 0 br i1 %t15, label %then12, label %ifend14 then12: @@ -97411,7 +97567,7 @@ then12: br label %ret ifend14: %t16 = load ptr, ptr %t0 - %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str9305) + %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str9310) %t18 = icmp ne i32 %t17, 0 br i1 %t18, label %then15, label %ifend17 then15: @@ -97419,7 +97575,7 @@ then15: br label %ret ifend17: %t19 = load ptr, ptr %t0 - %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str9306) + %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str9311) %t21 = icmp ne i32 %t20, 0 br i1 %t21, label %then18, label %ifend20 then18: @@ -97427,7 +97583,7 @@ then18: br label %ret ifend20: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str9307) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str9312) %t24 = icmp ne i32 %t23, 0 br i1 %t24, label %then21, label %ifend23 then21: @@ -97435,8 +97591,8 @@ then21: br label %ret ifend23: %t25 = load ptr, ptr %t0 - %t26 = call ptr @lp_str_concat(ptr @.str9308, ptr %t25) - %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str9309) + %t26 = call ptr @lp_str_concat(ptr @.str9313, ptr %t25) + %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str9314) call void @fn_perr(ptr %t27) store i32 7, ptr %retval br label %ret @@ -97456,14 +97612,14 @@ entry: %t29 = alloca i32 store ptr %arg_name, ptr %t0 %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str9310) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str9315) %t6 = icmp ne i32 %t5, 0 %t7 = zext i1 %t6 to i32 store i32 %t7, ptr %t3 br i1 %t6, label %scend1, label %sc0 sc0: %t8 = load ptr, ptr %t0 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str9311) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str9316) %t10 = icmp ne i32 %t9, 0 %t11 = zext i1 %t10 to i32 store i32 %t11, ptr %t3 @@ -97476,7 +97632,7 @@ scend1: br i1 %t13, label %scend3, label %sc2 sc2: %t15 = load ptr, ptr %t0 - %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str9312) + %t16 = call i32 @lp_str_eq(ptr %t15, ptr @.str9317) %t17 = icmp ne i32 %t16, 0 %t18 = zext i1 %t17 to i32 store i32 %t18, ptr %t2 @@ -97489,7 +97645,7 @@ scend3: br i1 %t20, label %scend5, label %sc4 sc4: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str9313) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str9318) %t24 = icmp ne i32 %t23, 0 %t25 = zext i1 %t24 to i32 store i32 %t25, ptr %t1 @@ -97503,14 +97659,14 @@ then6: br label %ret ifend8: %t30 = load ptr, ptr %t0 - %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str9314) + %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str9319) %t32 = icmp ne i32 %t31, 0 %t33 = zext i1 %t32 to i32 store i32 %t33, ptr %t29 br i1 %t32, label %scend10, label %sc9 sc9: %t34 = load ptr, ptr %t0 - %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str9315) + %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str9320) %t36 = icmp ne i32 %t35, 0 %t37 = zext i1 %t36 to i32 store i32 %t37, ptr %t29 @@ -97523,7 +97679,7 @@ scend10: br i1 %t39, label %scend12, label %sc11 sc11: %t41 = load ptr, ptr %t0 - %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str9316) + %t42 = call i32 @lp_str_eq(ptr %t41, ptr @.str9321) %t43 = icmp ne i32 %t42, 0 %t44 = zext i1 %t43 to i32 store i32 %t44, ptr %t28 @@ -97546,11 +97702,6 @@ ret: define void @fn_emit_module_glue() { entry: %t4 = alloca i32 - call void @fn_emith(ptr @.str9317) - call void @fn_emith(ptr @.str9318) - call void @fn_emith(ptr @.str9319) - call void @fn_emith(ptr @.str9320) - call void @fn_emith(ptr @.str9321) call void @fn_emith(ptr @.str9322) call void @fn_emith(ptr @.str9323) call void @fn_emith(ptr @.str9324) @@ -97565,14 +97716,19 @@ entry: call void @fn_emith(ptr @.str9333) call void @fn_emith(ptr @.str9334) call void @fn_emith(ptr @.str9335) - call void @fn_emit(ptr @.str9336) - %t0 = call ptr @fn_find_fn(ptr @.str9337) + call void @fn_emith(ptr @.str9336) + call void @fn_emith(ptr @.str9337) + call void @fn_emith(ptr @.str9338) + call void @fn_emith(ptr @.str9339) + call void @fn_emith(ptr @.str9340) + call void @fn_emit(ptr @.str9341) + %t0 = call ptr @fn_find_fn(ptr @.str9342) %t1 = icmp ne ptr %t0, null %t2 = zext i1 %t1 to i32 %t3 = icmp ne i32 %t2, 0 br i1 %t3, label %then0, label %ifend2 then0: - call void @fn_emit(ptr @.str9338) + call void @fn_emit(ptr @.str9343) br label %ifend2 ifend2: store i32 0, ptr %t4 @@ -97587,7 +97743,7 @@ wcond3: %t11 = icmp ne i32 %t10, 0 br i1 %t11, label %wbody4, label %wend5 wbody4: - call void @fn_emit(ptr @.str9339) + call void @fn_emit(ptr @.str9344) %t12 = load ptr, ptr @g_g_mod_sys_fn %t13 = getelementptr inbounds %LSlice, ptr %t12, i32 0, i32 0 %t14 = load ptr, ptr %t13 @@ -97595,7 +97751,7 @@ wbody4: %t16 = getelementptr inbounds ptr, ptr %t14, i32 %t15 %t17 = load ptr, ptr %t16 call void @fn_emit(ptr %t17) - call void @fn_emit(ptr @.str9340) + call void @fn_emit(ptr @.str9345) %t18 = load ptr, ptr @g_g_mod_sys_phase %t19 = getelementptr inbounds %LSlice, ptr %t18, i32 0, i32 0 %t20 = load ptr, ptr %t19 @@ -97605,14 +97761,14 @@ wbody4: %t24 = call i32 @fn_phase_id(ptr %t23) %t25 = call ptr @fn_itoa(i32 %t24) call void @fn_emit(ptr %t25) - call void @fn_emit(ptr @.str9341) + call void @fn_emit(ptr @.str9346) %t26 = load i32, ptr %t4 %t27 = add i32 %t26, 1 store i32 %t27, ptr %t4 br label %wcond3 wend5: - call void @fn_emit(ptr @.str9342) - call void @fn_emith(ptr @.str9343) + call void @fn_emit(ptr @.str9347) + call void @fn_emith(ptr @.str9348) br label %ret ret: ret void @@ -97623,35 +97779,35 @@ entry: %t1 = alloca ptr %t0 = call ptr @fn_itoa(i32 64) store ptr %t0, ptr %t1 - call void @fn_emith(ptr @.str9344) + call void @fn_emith(ptr @.str9349) %t2 = load ptr, ptr %t1 call void @fn_emith(ptr %t2) - call void @fn_emith(ptr @.str9345) - call void @fn_emith(ptr @.str9346) + call void @fn_emith(ptr @.str9350) + call void @fn_emith(ptr @.str9351) %t3 = load ptr, ptr %t1 call void @fn_emith(ptr %t3) - call void @fn_emith(ptr @.str9347) - call void @fn_emith(ptr @.str9348) - call void @fn_emit(ptr @.str9349) - call void @fn_emit(ptr @.str9350) - call void @fn_emit(ptr @.str9351) - %t4 = load ptr, ptr %t1 - call void @fn_emit(ptr %t4) - call void @fn_emit(ptr @.str9352) - call void @fn_emit(ptr @.str9353) + call void @fn_emith(ptr @.str9352) + call void @fn_emith(ptr @.str9353) call void @fn_emit(ptr @.str9354) call void @fn_emit(ptr @.str9355) - %t5 = load ptr, ptr %t1 - call void @fn_emit(ptr %t5) call void @fn_emit(ptr @.str9356) + %t4 = load ptr, ptr %t1 + call void @fn_emit(ptr %t4) call void @fn_emit(ptr @.str9357) call void @fn_emit(ptr @.str9358) - %t6 = load ptr, ptr %t1 - call void @fn_emit(ptr %t6) call void @fn_emit(ptr @.str9359) call void @fn_emit(ptr @.str9360) + %t5 = load ptr, ptr %t1 + call void @fn_emit(ptr %t5) call void @fn_emit(ptr @.str9361) call void @fn_emit(ptr @.str9362) + call void @fn_emit(ptr @.str9363) + %t6 = load ptr, ptr %t1 + call void @fn_emit(ptr %t6) + call void @fn_emit(ptr @.str9364) + call void @fn_emit(ptr @.str9365) + call void @fn_emit(ptr @.str9366) + call void @fn_emit(ptr @.str9367) br label %ret ret: ret void @@ -97688,141 +97844,141 @@ entry: store ptr %t7, ptr %t8 %t9 = call ptr @fn_nreg() store ptr %t9, ptr %t10 - %t11 = call ptr @fn_lbl(ptr @.str9363) + %t11 = call ptr @fn_lbl(ptr @.str9368) store ptr %t11, ptr %t12 - %t13 = call ptr @fn_lbl(ptr @.str9364) + %t13 = call ptr @fn_lbl(ptr @.str9369) store ptr %t13, ptr %t14 - %t15 = call ptr @fn_lbl(ptr @.str9365) + %t15 = call ptr @fn_lbl(ptr @.str9370) store ptr %t15, ptr %t16 - %t17 = call ptr @fn_lbl(ptr @.str9366) + %t17 = call ptr @fn_lbl(ptr @.str9371) store ptr %t17, ptr %t18 - %t19 = call ptr @fn_lbl(ptr @.str9367) + %t19 = call ptr @fn_lbl(ptr @.str9372) store ptr %t19, ptr %t20 - %t21 = call ptr @fn_lbl(ptr @.str9368) + %t21 = call ptr @fn_lbl(ptr @.str9373) store ptr %t21, ptr %t22 - call void @fn_emit(ptr @.str9369) + call void @fn_emit(ptr @.str9374) %t23 = load ptr, ptr %t12 call void @fn_emit(ptr %t23) - call void @fn_emit(ptr @.str9370) + call void @fn_emit(ptr @.str9375) %t24 = load ptr, ptr %t12 call void @fn_emit(ptr %t24) - call void @fn_emit(ptr @.str9371) + call void @fn_emit(ptr @.str9376) %t25 = load ptr, ptr %t14 call void @fn_emit(ptr %t25) - call void @fn_emit(ptr @.str9372) + call void @fn_emit(ptr @.str9377) %t26 = load ptr, ptr %t14 call void @fn_emit(ptr %t26) - call void @fn_emit(ptr @.str9373) - call void @fn_emit(ptr @.str9374) + call void @fn_emit(ptr @.str9378) + call void @fn_emit(ptr @.str9379) %t27 = load ptr, ptr %t8 call void @fn_emit(ptr %t27) - call void @fn_emit(ptr @.str9375) + call void @fn_emit(ptr @.str9380) %t28 = load ptr, ptr %t12 call void @fn_emit(ptr %t28) - call void @fn_emit(ptr @.str9376) + call void @fn_emit(ptr @.str9381) %t29 = load ptr, ptr %t10 call void @fn_emit(ptr %t29) - call void @fn_emit(ptr @.str9377) + call void @fn_emit(ptr @.str9382) %t30 = load ptr, ptr %t20 call void @fn_emit(ptr %t30) - call void @fn_emit(ptr @.str9378) - %t31 = call ptr @fn_emit_bind(ptr @.str9379) + call void @fn_emit(ptr @.str9383) + %t31 = call ptr @fn_emit_bind(ptr @.str9384) store ptr %t31, ptr %t32 %t33 = load ptr, ptr %t8 - %t34 = call ptr @lp_str_concat(ptr @.str9380, ptr %t33) - %t35 = call ptr @lp_str_concat(ptr %t34, ptr @.str9381) + %t34 = call ptr @lp_str_concat(ptr @.str9385, ptr %t33) + %t35 = call ptr @lp_str_concat(ptr %t34, ptr @.str9386) %t36 = load ptr, ptr %t32 %t37 = call ptr @lp_str_concat(ptr %t35, ptr %t36) %t38 = call ptr @fn_emit_bind(ptr %t37) store ptr %t38, ptr %t39 - call void @fn_emit(ptr @.str9382) + call void @fn_emit(ptr @.str9387) %t40 = load ptr, ptr %t39 call void @fn_emit(ptr %t40) - call void @fn_emit(ptr @.str9383) + call void @fn_emit(ptr @.str9388) %t41 = load ptr, ptr %t16 call void @fn_emit(ptr %t41) - call void @fn_emit(ptr @.str9384) + call void @fn_emit(ptr @.str9389) %t42 = load ptr, ptr %t22 call void @fn_emit(ptr %t42) - call void @fn_emit(ptr @.str9385) + call void @fn_emit(ptr @.str9390) %t43 = load ptr, ptr %t16 call void @fn_emit(ptr %t43) - call void @fn_emit(ptr @.str9386) + call void @fn_emit(ptr @.str9391) %t44 = call ptr @fn_nreg() store ptr %t44, ptr %t45 - call void @fn_emit(ptr @.str9387) + call void @fn_emit(ptr @.str9392) %t46 = load ptr, ptr %t45 call void @fn_emit(ptr %t46) - call void @fn_emit(ptr @.str9388) + call void @fn_emit(ptr @.str9393) %t47 = load ptr, ptr %t2 call void @fn_emit(ptr %t47) - call void @fn_emit(ptr @.str9389) + call void @fn_emit(ptr @.str9394) %t48 = load ptr, ptr %t8 call void @fn_emit(ptr %t48) - call void @fn_emit(ptr @.str9390) + call void @fn_emit(ptr @.str9395) %t49 = load ptr, ptr %t45 - %t50 = call ptr @lp_str_concat(ptr @.str9391, ptr %t49) + %t50 = call ptr @lp_str_concat(ptr @.str9396, ptr %t49) %t51 = call ptr @fn_emit_bind(ptr %t50) store ptr %t51, ptr %t52 %t53 = load ptr, ptr %t52 - %t54 = call ptr @lp_str_concat(ptr @.str9392, ptr %t53) - %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str9393) + %t54 = call ptr @lp_str_concat(ptr @.str9397, ptr %t53) + %t55 = call ptr @lp_str_concat(ptr %t54, ptr @.str9398) %t56 = load ptr, ptr %t6 %t57 = call ptr @lp_str_concat(ptr %t55, ptr %t56) %t58 = call ptr @fn_emit_bind(ptr %t57) store ptr %t58, ptr %t59 - call void @fn_emit(ptr @.str9394) + call void @fn_emit(ptr @.str9399) %t60 = load ptr, ptr %t59 call void @fn_emit(ptr %t60) - call void @fn_emit(ptr @.str9395) + call void @fn_emit(ptr @.str9400) %t61 = load ptr, ptr %t18 call void @fn_emit(ptr %t61) - call void @fn_emit(ptr @.str9396) + call void @fn_emit(ptr @.str9401) %t62 = load ptr, ptr %t20 call void @fn_emit(ptr %t62) - call void @fn_emit(ptr @.str9397) + call void @fn_emit(ptr @.str9402) %t63 = load ptr, ptr %t18 call void @fn_emit(ptr %t63) - call void @fn_emit(ptr @.str9398) + call void @fn_emit(ptr @.str9403) %t64 = call ptr @fn_nreg() store ptr %t64, ptr %t65 - call void @fn_emit(ptr @.str9399) + call void @fn_emit(ptr @.str9404) %t66 = load ptr, ptr %t65 call void @fn_emit(ptr %t66) - call void @fn_emit(ptr @.str9400) + call void @fn_emit(ptr @.str9405) %t67 = load ptr, ptr %t2 call void @fn_emit(ptr %t67) - call void @fn_emit(ptr @.str9401) + call void @fn_emit(ptr @.str9406) %t68 = load ptr, ptr %t8 call void @fn_emit(ptr %t68) - call void @fn_emit(ptr @.str9402) + call void @fn_emit(ptr @.str9407) %t69 = load ptr, ptr %t65 - %t70 = call ptr @lp_str_concat(ptr @.str9403, ptr %t69) + %t70 = call ptr @lp_str_concat(ptr @.str9408, ptr %t69) %t71 = call ptr @fn_emit_bind(ptr %t70) store ptr %t71, ptr %t72 - call void @fn_emit(ptr @.str9404) + call void @fn_emit(ptr @.str9409) %t73 = load ptr, ptr %t72 call void @fn_emit(ptr %t73) - call void @fn_emit(ptr @.str9405) - call void @fn_emit(ptr @.str9406) + call void @fn_emit(ptr @.str9410) + call void @fn_emit(ptr @.str9411) %t74 = load ptr, ptr %t20 call void @fn_emit(ptr %t74) - call void @fn_emit(ptr @.str9407) + call void @fn_emit(ptr @.str9412) %t75 = load ptr, ptr %t20 call void @fn_emit(ptr %t75) - call void @fn_emit(ptr @.str9408) + call void @fn_emit(ptr @.str9413) %t76 = load ptr, ptr %t10 call void @fn_emit(ptr %t76) - call void @fn_emit(ptr @.str9409) + call void @fn_emit(ptr @.str9414) %t77 = load ptr, ptr %t8 call void @fn_emit(ptr %t77) - call void @fn_emit(ptr @.str9410) + call void @fn_emit(ptr @.str9415) %t78 = load ptr, ptr %t14 call void @fn_emit(ptr %t78) - call void @fn_emit(ptr @.str9411) + call void @fn_emit(ptr @.str9416) %t79 = load ptr, ptr %t22 call void @fn_emit(ptr %t79) - call void @fn_emit(ptr @.str9412) + call void @fn_emit(ptr @.str9417) br label %ret ret: ret void @@ -97987,7 +98143,7 @@ wend12: %t93 = icmp ne i32 %t92, 0 br i1 %t93, label %then20, label %ifend22 then20: - %t94 = call ptr @fn_emit_bind(ptr @.str9413) + %t94 = call ptr @fn_emit_bind(ptr @.str9418) store ptr %t94, ptr %t95 store i32 0, ptr %t1 br label %wcond23 @@ -98049,8 +98205,8 @@ scend29: br i1 %t137, label %then30, label %ifend32 then30: %t138 = load ptr, ptr %t95 - %t139 = call ptr @lp_str_concat(ptr @.str9414, ptr %t138) - %t140 = call ptr @lp_str_concat(ptr %t139, ptr @.str9415) + %t139 = call ptr @lp_str_concat(ptr @.str9419, ptr %t138) + %t140 = call ptr @lp_str_concat(ptr %t139, ptr @.str9420) %t141 = load ptr, ptr %t109 %t142 = getelementptr inbounds %Cmp_Node, ptr %t141, i32 0, i32 6 %t143 = load ptr, ptr %t142 @@ -98060,32 +98216,32 @@ then30: %t147 = call ptr @lp_str_concat(ptr %t140, ptr %t146) %t148 = call ptr @fn_emit_bind(ptr %t147) store ptr %t148, ptr %t149 - %t150 = call ptr @fn_lbl(ptr @.str9416) + %t150 = call ptr @fn_lbl(ptr @.str9421) store ptr %t150, ptr %t151 - %t152 = call ptr @fn_lbl(ptr @.str9417) + %t152 = call ptr @fn_lbl(ptr @.str9422) store ptr %t152, ptr %t153 - call void @fn_emit(ptr @.str9418) + call void @fn_emit(ptr @.str9423) %t154 = load ptr, ptr %t149 call void @fn_emit(ptr %t154) - call void @fn_emit(ptr @.str9419) + call void @fn_emit(ptr @.str9424) %t155 = load ptr, ptr %t151 call void @fn_emit(ptr %t155) - call void @fn_emit(ptr @.str9420) + call void @fn_emit(ptr @.str9425) %t156 = load ptr, ptr %t153 call void @fn_emit(ptr %t156) - call void @fn_emit(ptr @.str9421) + call void @fn_emit(ptr @.str9426) %t157 = load ptr, ptr %t151 call void @fn_emit(ptr %t157) - call void @fn_emit(ptr @.str9422) + call void @fn_emit(ptr @.str9427) %t158 = load ptr, ptr %t109 call void @fn_emit_call_one(ptr %t158) - call void @fn_emit(ptr @.str9423) + call void @fn_emit(ptr @.str9428) %t159 = load ptr, ptr %t153 call void @fn_emit(ptr %t159) - call void @fn_emit(ptr @.str9424) + call void @fn_emit(ptr @.str9429) %t160 = load ptr, ptr %t153 call void @fn_emit(ptr %t160) - call void @fn_emit(ptr @.str9425) + call void @fn_emit(ptr @.str9430) br label %ifend32 ifend32: %t161 = load i32, ptr %t1 @@ -98100,7 +98256,7 @@ ifend22: %t164 = load ptr, ptr %t0 call void @fn_emit_dyn_systems_for_phase(ptr %t164) %t165 = load ptr, ptr %t0 - %t166 = call i32 @lp_str_eq(ptr %t165, ptr @.str9426) + %t166 = call i32 @lp_str_eq(ptr %t165, ptr @.str9431) %t167 = icmp ne i32 %t166, 0 br i1 %t167, label %then33, label %ifend35 then33: @@ -98163,7 +98319,7 @@ wend2: then6: br label %ret ifend8: - %t26 = call ptr @fn_emit_bind(ptr @.str9427) + %t26 = call ptr @fn_emit_bind(ptr @.str9432) store ptr %t26, ptr %t27 store i32 0, ptr %t1 br label %wcond9 @@ -98193,8 +98349,8 @@ wbody10: br i1 %t47, label %then12, label %ifend14 then12: %t48 = load ptr, ptr %t27 - %t49 = call ptr @lp_str_concat(ptr @.str9428, ptr %t48) - %t50 = call ptr @lp_str_concat(ptr %t49, ptr @.str9429) + %t49 = call ptr @lp_str_concat(ptr @.str9433, ptr %t48) + %t50 = call ptr @lp_str_concat(ptr %t49, ptr @.str9434) %t51 = load ptr, ptr %t41 %t52 = getelementptr inbounds %Cmp_Node, ptr %t51, i32 0, i32 2 %t53 = load i32, ptr %t52 @@ -98202,30 +98358,30 @@ then12: %t55 = call ptr @lp_str_concat(ptr %t50, ptr %t54) %t56 = call ptr @fn_emit_bind(ptr %t55) store ptr %t56, ptr %t57 - %t58 = call ptr @fn_lbl(ptr @.str9430) + %t58 = call ptr @fn_lbl(ptr @.str9435) store ptr %t58, ptr %t59 - %t60 = call ptr @fn_lbl(ptr @.str9431) + %t60 = call ptr @fn_lbl(ptr @.str9436) store ptr %t60, ptr %t61 - call void @fn_emit(ptr @.str9432) + call void @fn_emit(ptr @.str9437) %t62 = load ptr, ptr %t57 call void @fn_emit(ptr %t62) - call void @fn_emit(ptr @.str9433) + call void @fn_emit(ptr @.str9438) %t63 = load ptr, ptr %t59 call void @fn_emit(ptr %t63) - call void @fn_emit(ptr @.str9434) + call void @fn_emit(ptr @.str9439) %t64 = load ptr, ptr %t61 call void @fn_emit(ptr %t64) - call void @fn_emit(ptr @.str9435) + call void @fn_emit(ptr @.str9440) %t65 = load ptr, ptr %t59 call void @fn_emit(ptr %t65) - call void @fn_emit(ptr @.str9436) - call void @fn_emit(ptr @.str9437) + call void @fn_emit(ptr @.str9441) + call void @fn_emit(ptr @.str9442) %t66 = load ptr, ptr %t61 call void @fn_emit(ptr %t66) - call void @fn_emit(ptr @.str9438) + call void @fn_emit(ptr @.str9443) %t67 = load ptr, ptr %t61 call void @fn_emit(ptr %t67) - call void @fn_emit(ptr @.str9439) + call void @fn_emit(ptr @.str9444) br label %ifend14 ifend14: %t68 = load i32, ptr %t1 @@ -98260,7 +98416,7 @@ entry: call void @fn_loc_reset() store i32 0, ptr @g_nloop store i32 0, ptr @g_nself - store ptr @.str9440, ptr @g_ret_ty + store ptr @.str9445, ptr @g_ret_ty %t4 = call ptr @fn_buf_new() store ptr %t4, ptr %t5 %t6 = call ptr @fn_buf_new() @@ -98278,7 +98434,7 @@ entry: br i1 %t14, label %sc0, label %scend1 sc0: %t16 = load ptr, ptr %t1 - %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str9441) + %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str9446) %t18 = icmp ne i32 %t17, 0 %t19 = zext i1 %t18 to i32 store i32 %t19, ptr %t10 @@ -98288,22 +98444,22 @@ scend1: %t21 = icmp ne i32 %t20, 0 br i1 %t21, label %then2, label %ifend4 then2: - %t22 = call ptr @fn_find_fn(ptr @.str9442) + %t22 = call ptr @fn_find_fn(ptr @.str9447) %t23 = icmp ne ptr %t22, null %t24 = zext i1 %t23 to i32 %t25 = icmp ne i32 %t24, 0 br i1 %t25, label %then5, label %ifend7 then5: - call void @fn_emit(ptr @.str9443) + call void @fn_emit(ptr @.str9448) br label %ifend7 ifend7: - call void @fn_emit(ptr @.str9444) + call void @fn_emit(ptr @.str9449) %t26 = load ptr, ptr %t3 - %t27 = call ptr @lp_str_concat(ptr @.str9445, ptr %t26) + %t27 = call ptr @lp_str_concat(ptr @.str9450, ptr %t26) %t28 = call i32 @fn_ui_index_of(ptr %t27) %t29 = call ptr @fn_itoa(i32 %t28) call void @fn_emit(ptr %t29) - call void @fn_emit(ptr @.str9446) + call void @fn_emit(ptr @.str9451) br label %ifend4 ifend4: %t31 = load ptr, ptr %t3 @@ -98315,7 +98471,7 @@ ifend4: br i1 %t34, label %sc8, label %scend9 sc8: %t36 = load ptr, ptr %t1 - %t37 = call i32 @lp_str_eq(ptr %t36, ptr @.str9447) + %t37 = call i32 @lp_str_eq(ptr %t36, ptr @.str9452) %t38 = icmp ne i32 %t37, 0 %t39 = zext i1 %t38 to i32 store i32 %t39, ptr %t30 @@ -98325,7 +98481,7 @@ scend9: %t41 = icmp ne i32 %t40, 0 br i1 %t41, label %then10, label %ifend12 then10: - call void @fn_emit(ptr @.str9448) + call void @fn_emit(ptr @.str9453) br label %ifend12 ifend12: %t42 = load ptr, ptr %t2 @@ -98339,8 +98495,8 @@ then13: br label %ifend15 ifend15: %t47 = load ptr, ptr %t0 - %t48 = call ptr @lp_str_concat(ptr @.str9449, ptr %t47) - %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str9450) + %t48 = call ptr @lp_str_concat(ptr @.str9454, ptr %t47) + %t49 = call ptr @lp_str_concat(ptr %t48, ptr @.str9455) %t50 = load ptr, ptr %t1 %t51 = call ptr @lp_str_concat(ptr %t49, ptr %t50) store ptr %t51, ptr %t52 @@ -98365,10 +98521,10 @@ scend17: %t66 = icmp ne i32 %t65, 0 br i1 %t66, label %then18, label %ifend20 then18: - call void @fn_emit(ptr @.str9451) + call void @fn_emit(ptr @.str9456) %t67 = load ptr, ptr %t52 call void @fn_emit(ptr %t67) - call void @fn_emit(ptr @.str9452) + call void @fn_emit(ptr @.str9457) br label %ifend20 ifend20: %t68 = load i32, ptr @g_g_term @@ -98377,26 +98533,26 @@ ifend20: %t71 = icmp ne i32 %t70, 0 br i1 %t71, label %then21, label %ifend23 then21: - call void @fn_emit(ptr @.str9453) + call void @fn_emit(ptr @.str9458) br label %ifend23 ifend23: - call void @fn_emit(ptr @.str9454) + call void @fn_emit(ptr @.str9459) %t72 = load ptr, ptr %t8 store ptr %t72, ptr @g_code - call void @fn_emit(ptr @.str9455) + call void @fn_emit(ptr @.str9460) %t73 = load ptr, ptr %t1 call void @fn_emit(ptr %t73) - call void @fn_emit(ptr @.str9456) + call void @fn_emit(ptr @.str9461) %t74 = load ptr, ptr %t0 call void @fn_emit(ptr %t74) - call void @fn_emit(ptr @.str9457) + call void @fn_emit(ptr @.str9462) %t75 = load ptr, ptr @g_falloc %t76 = call ptr @fn_buf_str(ptr %t75) call void @fn_emit(ptr %t76) %t77 = load ptr, ptr %t5 %t78 = call ptr @fn_buf_str(ptr %t77) call void @fn_emit(ptr %t78) - call void @fn_emit(ptr @.str9458) + call void @fn_emit(ptr @.str9463) br label %ret ret: ret void @@ -98436,7 +98592,7 @@ wbody1: %t22 = load ptr, ptr %t14 %t23 = getelementptr inbounds %Cmp_Node, ptr %t22, i32 0, i32 3 %t24 = load ptr, ptr %t23 - call void @fn_emit_scene_fn(ptr %t18, ptr @.str9459, ptr %t21, ptr %t24) + call void @fn_emit_scene_fn(ptr %t18, ptr @.str9464, ptr %t21, ptr %t24) %t25 = load ptr, ptr %t14 %t26 = getelementptr inbounds %Cmp_Node, ptr %t25, i32 0, i32 1 %t27 = load ptr, ptr %t26 @@ -98446,7 +98602,7 @@ wbody1: %t31 = load ptr, ptr %t14 %t32 = getelementptr inbounds %Cmp_Node, ptr %t31, i32 0, i32 3 %t33 = load ptr, ptr %t32 - call void @fn_emit_scene_fn(ptr %t27, ptr @.str9460, ptr %t30, ptr %t33) + call void @fn_emit_scene_fn(ptr %t27, ptr @.str9465, ptr %t30, ptr %t33) %t34 = load i32, ptr %t0 %t35 = add i32 %t34, 1 store i32 %t35, ptr %t0 @@ -98474,8 +98630,8 @@ entry: %t0 = alloca i32 %t14 = alloca ptr %t17 = alloca ptr - call void @fn_emit(ptr @.str9461) - call void @fn_emit(ptr @.str9462) + call void @fn_emit(ptr @.str9466) + call void @fn_emit(ptr @.str9467) store i32 0, ptr %t0 br label %wcond0 wcond0: @@ -98498,45 +98654,45 @@ wbody1: %t15 = load i32, ptr %t0 %t16 = call ptr @fn_itoa(i32 %t15) store ptr %t16, ptr %t17 - call void @fn_emit(ptr @.str9463) + call void @fn_emit(ptr @.str9468) %t18 = load ptr, ptr %t17 call void @fn_emit(ptr %t18) - call void @fn_emit(ptr @.str9464) + call void @fn_emit(ptr @.str9469) %t19 = load ptr, ptr %t14 %t20 = getelementptr inbounds %Cmp_Node, ptr %t19, i32 0, i32 2 %t21 = load i32, ptr %t20 %t22 = call ptr @fn_itoa(i32 %t21) call void @fn_emit(ptr %t22) - call void @fn_emit(ptr @.str9465) - call void @fn_emit(ptr @.str9466) + call void @fn_emit(ptr @.str9470) + call void @fn_emit(ptr @.str9471) %t23 = load ptr, ptr %t17 call void @fn_emit(ptr %t23) - call void @fn_emit(ptr @.str9467) + call void @fn_emit(ptr @.str9472) %t24 = load ptr, ptr %t17 call void @fn_emit(ptr %t24) - call void @fn_emit(ptr @.str9468) + call void @fn_emit(ptr @.str9473) %t25 = load ptr, ptr %t17 call void @fn_emit(ptr %t25) - call void @fn_emit(ptr @.str9469) - call void @fn_emit(ptr @.str9470) + call void @fn_emit(ptr @.str9474) + call void @fn_emit(ptr @.str9475) %t26 = load ptr, ptr %t17 call void @fn_emit(ptr %t26) - call void @fn_emit(ptr @.str9471) + call void @fn_emit(ptr @.str9476) %t27 = load ptr, ptr %t14 %t28 = getelementptr inbounds %Cmp_Node, ptr %t27, i32 0, i32 1 %t29 = load ptr, ptr %t28 call void @fn_emit(ptr %t29) - call void @fn_emit(ptr @.str9472) - call void @fn_emit(ptr @.str9473) + call void @fn_emit(ptr @.str9477) + call void @fn_emit(ptr @.str9478) %t30 = load ptr, ptr %t17 call void @fn_emit(ptr %t30) - call void @fn_emit(ptr @.str9474) + call void @fn_emit(ptr @.str9479) %t31 = load i32, ptr %t0 %t32 = add i32 %t31, 1 store i32 %t32, ptr %t0 br label %wcond0 wend2: - call void @fn_emit(ptr @.str9475) + call void @fn_emit(ptr @.str9480) br label %ret ret: ret void @@ -98580,7 +98736,7 @@ wbody1: call void @fn_loc_reset() store i32 0, ptr @g_nloop store i32 0, ptr @g_nself - store ptr @.str9476, ptr @g_ret_ty + store ptr @.str9481, ptr @g_ret_ty %t20 = call ptr @fn_buf_new() store ptr %t20, ptr %t21 %t22 = call ptr @fn_buf_new() @@ -98597,21 +98753,21 @@ wbody1: %t31 = icmp ne i32 %t30, 0 br i1 %t31, label %then3, label %ifend5 then3: - %t32 = call ptr @fn_emit_alloca(ptr @.str9477) + %t32 = call ptr @fn_emit_alloca(ptr @.str9482) store ptr %t32, ptr %t33 - call void @fn_emit(ptr @.str9478) + call void @fn_emit(ptr @.str9483) %t34 = load ptr, ptr %t33 call void @fn_emit(ptr %t34) - call void @fn_emit(ptr @.str9479) + call void @fn_emit(ptr @.str9484) %t35 = load ptr, ptr %t14 %t36 = getelementptr inbounds %Cmp_Node, ptr %t35, i32 0, i32 3 %t37 = load ptr, ptr %t36 %t38 = load ptr, ptr %t33 - call void @fn_loc_push(ptr %t37, ptr %t38, ptr @.str9480) + call void @fn_loc_push(ptr %t37, ptr %t38, ptr @.str9485) br label %ifend5 ifend5: %t39 = load ptr, ptr %t19 - call void @fn_emit_bind_props(ptr %t39, ptr @.str9481) + call void @fn_emit_bind_props(ptr %t39, ptr @.str9486) %t40 = load ptr, ptr %t14 %t41 = getelementptr inbounds %Cmp_Node, ptr %t40, i32 0, i32 4 %t42 = load ptr, ptr %t41 @@ -98622,25 +98778,25 @@ ifend5: %t46 = icmp ne i32 %t45, 0 br i1 %t46, label %then6, label %ifend8 then6: - call void @fn_emit(ptr @.str9482) + call void @fn_emit(ptr @.str9487) br label %ifend8 ifend8: - call void @fn_emit(ptr @.str9483) + call void @fn_emit(ptr @.str9488) %t47 = load ptr, ptr %t24 store ptr %t47, ptr @g_code - call void @fn_emit(ptr @.str9484) + call void @fn_emit(ptr @.str9489) %t48 = load ptr, ptr %t14 %t49 = getelementptr inbounds %Cmp_Node, ptr %t48, i32 0, i32 1 %t50 = load ptr, ptr %t49 call void @fn_emit(ptr %t50) - call void @fn_emit(ptr @.str9485) + call void @fn_emit(ptr @.str9490) %t51 = load ptr, ptr @g_falloc %t52 = call ptr @fn_buf_str(ptr %t51) call void @fn_emit(ptr %t52) %t53 = load ptr, ptr %t21 %t54 = call ptr @fn_buf_str(ptr %t53) call void @fn_emit(ptr %t54) - call void @fn_emit(ptr @.str9486) + call void @fn_emit(ptr @.str9491) %t55 = load i32, ptr %t0 %t56 = add i32 %t55, 1 store i32 %t56, ptr %t0 @@ -98659,7 +98815,7 @@ entry: %t25 = alloca ptr %t28 = alloca ptr %t41 = alloca ptr - call void @fn_emit(ptr @.str9487) + call void @fn_emit(ptr @.str9492) %t0 = load ptr, ptr @g_g_ondespawn %t1 = getelementptr inbounds %LSlice, ptr %t0, i32 0, i32 1 %t2 = load i32, ptr %t1 @@ -98670,11 +98826,11 @@ entry: then0: %t6 = call ptr @fn_itoa(i32 1024) store ptr %t6, ptr %t7 - call void @fn_emit(ptr @.str9488) + call void @fn_emit(ptr @.str9493) %t8 = load ptr, ptr %t7 call void @fn_emit(ptr %t8) - call void @fn_emit(ptr @.str9489) - call void @fn_emit(ptr @.str9490) + call void @fn_emit(ptr @.str9494) + call void @fn_emit(ptr @.str9495) store i32 0, ptr %t9 br label %wcond3 wcond3: @@ -98699,35 +98855,35 @@ wbody4: %t26 = load i32, ptr %t9 %t27 = call ptr @fn_itoa(i32 %t26) store ptr %t27, ptr %t28 - call void @fn_emit(ptr @.str9491) + call void @fn_emit(ptr @.str9496) %t29 = load ptr, ptr %t28 call void @fn_emit(ptr %t29) - call void @fn_emit(ptr @.str9492) + call void @fn_emit(ptr @.str9497) %t30 = load ptr, ptr %t25 %t31 = call i32 @fn_find_arch_id(ptr %t30) %t32 = call ptr @fn_itoa(i32 %t31) call void @fn_emit(ptr %t32) - call void @fn_emit(ptr @.str9493) - call void @fn_emit(ptr @.str9494) + call void @fn_emit(ptr @.str9498) + call void @fn_emit(ptr @.str9499) %t33 = load ptr, ptr %t28 call void @fn_emit(ptr %t33) - call void @fn_emit(ptr @.str9495) + call void @fn_emit(ptr @.str9500) %t34 = load ptr, ptr %t28 call void @fn_emit(ptr %t34) - call void @fn_emit(ptr @.str9496) + call void @fn_emit(ptr @.str9501) %t35 = load ptr, ptr %t28 call void @fn_emit(ptr %t35) - call void @fn_emit(ptr @.str9497) - call void @fn_emit(ptr @.str9498) + call void @fn_emit(ptr @.str9502) + call void @fn_emit(ptr @.str9503) %t36 = load ptr, ptr %t28 call void @fn_emit(ptr %t36) - call void @fn_emit(ptr @.str9499) + call void @fn_emit(ptr @.str9504) %t37 = load ptr, ptr %t25 call void @fn_emit(ptr %t37) - call void @fn_emit(ptr @.str9500) + call void @fn_emit(ptr @.str9505) %t38 = load ptr, ptr %t25 - %t39 = call ptr @lp_str_concat(ptr @.str9501, ptr %t38) - %t40 = call ptr @lp_str_concat(ptr %t39, ptr @.str9502) + %t39 = call ptr @lp_str_concat(ptr @.str9506, ptr %t38) + %t40 = call ptr @lp_str_concat(ptr %t39, ptr @.str9507) store ptr %t40, ptr %t41 %t42 = load ptr, ptr %t41 %t43 = call ptr @fn_find_event(ptr %t42) @@ -98736,20 +98892,20 @@ wbody4: %t46 = icmp ne i32 %t45, 0 br i1 %t46, label %then6, label %ifend8 then6: - call void @fn_emit(ptr @.str9503) + call void @fn_emit(ptr @.str9508) %t47 = load ptr, ptr %t41 call void @fn_emit(ptr %t47) - call void @fn_emit(ptr @.str9504) + call void @fn_emit(ptr @.str9509) br label %ifend8 ifend8: - call void @fn_emit(ptr @.str9505) + call void @fn_emit(ptr @.str9510) %t48 = load ptr, ptr %t28 call void @fn_emit(ptr %t48) - call void @fn_emit(ptr @.str9506) - call void @fn_emit(ptr @.str9507) + call void @fn_emit(ptr @.str9511) + call void @fn_emit(ptr @.str9512) %t49 = load ptr, ptr %t28 call void @fn_emit(ptr %t49) - call void @fn_emit(ptr @.str9508) + call void @fn_emit(ptr @.str9513) %t50 = load i32, ptr %t9 %t51 = add i32 %t50, 1 store i32 %t51, ptr %t9 @@ -98765,11 +98921,11 @@ ifend2: %t57 = icmp ne i32 %t56, 0 br i1 %t57, label %then9, label %ifend11 then9: - call void @fn_emit(ptr @.str9509) + call void @fn_emit(ptr @.str9514) br label %ifend11 ifend11: - call void @fn_emit(ptr @.str9510) - call void @fn_emit(ptr @.str9511) + call void @fn_emit(ptr @.str9515) + call void @fn_emit(ptr @.str9516) br label %ret ret: ret void @@ -98794,21 +98950,21 @@ then0: ifend2: %t6 = call ptr @fn_itoa(i32 1024) store ptr %t6, ptr %t7 - call void @fn_emit(ptr @.str9512) - call void @fn_emit(ptr @.str9513) - call void @fn_emit(ptr @.str9514) - call void @fn_emit(ptr @.str9515) - call void @fn_emit(ptr @.str9516) - %t8 = load ptr, ptr %t7 - call void @fn_emit(ptr %t8) call void @fn_emit(ptr @.str9517) call void @fn_emit(ptr @.str9518) call void @fn_emit(ptr @.str9519) call void @fn_emit(ptr @.str9520) + call void @fn_emit(ptr @.str9521) + %t8 = load ptr, ptr %t7 + call void @fn_emit(ptr %t8) + call void @fn_emit(ptr @.str9522) + call void @fn_emit(ptr @.str9523) + call void @fn_emit(ptr @.str9524) + call void @fn_emit(ptr @.str9525) %t9 = load ptr, ptr %t7 call void @fn_emit(ptr %t9) - call void @fn_emit(ptr @.str9521) - call void @fn_emit(ptr @.str9522) + call void @fn_emit(ptr @.str9526) + call void @fn_emit(ptr @.str9527) store i32 0, ptr %t10 br label %wcond3 wcond3: @@ -98833,35 +98989,35 @@ wbody4: %t27 = load i32, ptr %t10 %t28 = call ptr @fn_itoa(i32 %t27) store ptr %t28, ptr %t29 - call void @fn_emit(ptr @.str9523) + call void @fn_emit(ptr @.str9528) %t30 = load ptr, ptr %t29 call void @fn_emit(ptr %t30) - call void @fn_emit(ptr @.str9524) + call void @fn_emit(ptr @.str9529) %t31 = load ptr, ptr %t26 %t32 = call i32 @fn_find_arch_id(ptr %t31) %t33 = call ptr @fn_itoa(i32 %t32) call void @fn_emit(ptr %t33) - call void @fn_emit(ptr @.str9525) - call void @fn_emit(ptr @.str9526) + call void @fn_emit(ptr @.str9530) + call void @fn_emit(ptr @.str9531) %t34 = load ptr, ptr %t29 call void @fn_emit(ptr %t34) - call void @fn_emit(ptr @.str9527) + call void @fn_emit(ptr @.str9532) %t35 = load ptr, ptr %t29 call void @fn_emit(ptr %t35) - call void @fn_emit(ptr @.str9528) + call void @fn_emit(ptr @.str9533) %t36 = load ptr, ptr %t29 call void @fn_emit(ptr %t36) - call void @fn_emit(ptr @.str9529) - call void @fn_emit(ptr @.str9530) + call void @fn_emit(ptr @.str9534) + call void @fn_emit(ptr @.str9535) %t37 = load ptr, ptr %t29 call void @fn_emit(ptr %t37) - call void @fn_emit(ptr @.str9531) + call void @fn_emit(ptr @.str9536) %t38 = load ptr, ptr %t26 call void @fn_emit(ptr %t38) - call void @fn_emit(ptr @.str9532) + call void @fn_emit(ptr @.str9537) %t39 = load ptr, ptr %t26 - %t40 = call ptr @lp_str_concat(ptr @.str9533, ptr %t39) - %t41 = call ptr @lp_str_concat(ptr %t40, ptr @.str9534) + %t40 = call ptr @lp_str_concat(ptr @.str9538, ptr %t39) + %t41 = call ptr @lp_str_concat(ptr %t40, ptr @.str9539) store ptr %t41, ptr %t42 %t43 = load ptr, ptr %t42 %t44 = call ptr @fn_find_event(ptr %t43) @@ -98870,28 +99026,28 @@ wbody4: %t47 = icmp ne i32 %t46, 0 br i1 %t47, label %then6, label %ifend8 then6: - call void @fn_emit(ptr @.str9535) + call void @fn_emit(ptr @.str9540) %t48 = load ptr, ptr %t42 call void @fn_emit(ptr %t48) - call void @fn_emit(ptr @.str9536) + call void @fn_emit(ptr @.str9541) br label %ifend8 ifend8: - call void @fn_emit(ptr @.str9537) + call void @fn_emit(ptr @.str9542) %t49 = load ptr, ptr %t29 call void @fn_emit(ptr %t49) - call void @fn_emit(ptr @.str9538) - call void @fn_emit(ptr @.str9539) + call void @fn_emit(ptr @.str9543) + call void @fn_emit(ptr @.str9544) %t50 = load ptr, ptr %t29 call void @fn_emit(ptr %t50) - call void @fn_emit(ptr @.str9540) + call void @fn_emit(ptr @.str9545) %t51 = load i32, ptr %t10 %t52 = add i32 %t51, 1 store i32 %t52, ptr %t10 br label %wcond3 wend5: - call void @fn_emit(ptr @.str9541) - call void @fn_emit(ptr @.str9542) - call void @fn_emit(ptr @.str9543) + call void @fn_emit(ptr @.str9546) + call void @fn_emit(ptr @.str9547) + call void @fn_emit(ptr @.str9548) br label %ret ret: ret void @@ -98935,7 +99091,7 @@ entry: %t335 = alloca i32 %t351 = alloca ptr %t354 = alloca ptr - call void @fn_emith(ptr @.str9544) + call void @fn_emith(ptr @.str9549) store i32 0, ptr %t0 br label %wcond0 wcond0: @@ -98961,10 +99117,10 @@ wbody1: store ptr %t17, ptr %t18 %t19 = call ptr @fn_itoa(i32 16) store ptr %t19, ptr %t20 - call void @fn_emith(ptr @.str9545) + call void @fn_emith(ptr @.str9550) %t21 = load ptr, ptr %t18 call void @fn_emith(ptr %t21) - call void @fn_emith(ptr @.str9546) + call void @fn_emith(ptr @.str9551) store i32 0, ptr %t22 br label %wcond3 wcond3: @@ -98985,7 +99141,7 @@ wbody4: %t35 = icmp ne i32 %t34, 0 br i1 %t35, label %then6, label %ifend8 then6: - call void @fn_emith(ptr @.str9547) + call void @fn_emith(ptr @.str9552) br label %ifend8 ifend8: %t36 = load ptr, ptr %t14 @@ -99023,118 +99179,118 @@ then9: %t62 = icmp ne i32 %t61, 0 br i1 %t62, label %then12, label %ifend14 then12: - call void @fn_emith(ptr @.str9548) + call void @fn_emith(ptr @.str9553) br label %ifend14 ifend14: - call void @fn_emith(ptr @.str9549) + call void @fn_emith(ptr @.str9554) br label %ifend11 ifend11: - call void @fn_emith(ptr @.str9550) - call void @fn_emith(ptr @.str9551) - %t63 = load ptr, ptr %t18 - call void @fn_emith(ptr %t63) - call void @fn_emith(ptr @.str9552) - %t64 = load ptr, ptr %t20 - call void @fn_emith(ptr %t64) - call void @fn_emith(ptr @.str9553) - call void @fn_emith(ptr @.str9554) - %t65 = load ptr, ptr %t18 - call void @fn_emith(ptr %t65) call void @fn_emith(ptr @.str9555) call void @fn_emith(ptr @.str9556) + %t63 = load ptr, ptr %t18 + call void @fn_emith(ptr %t63) + call void @fn_emith(ptr @.str9557) + %t64 = load ptr, ptr %t20 + call void @fn_emith(ptr %t64) + call void @fn_emith(ptr @.str9558) + call void @fn_emith(ptr @.str9559) + %t65 = load ptr, ptr %t18 + call void @fn_emith(ptr %t65) + call void @fn_emith(ptr @.str9560) + call void @fn_emith(ptr @.str9561) %t66 = load ptr, ptr %t18 call void @fn_emith(ptr %t66) - call void @fn_emith(ptr @.str9557) + call void @fn_emith(ptr @.str9562) %t67 = load ptr, ptr %t20 call void @fn_emith(ptr %t67) - call void @fn_emith(ptr @.str9558) - call void @fn_emit(ptr @.str9559) + call void @fn_emith(ptr @.str9563) + call void @fn_emit(ptr @.str9564) %t68 = load ptr, ptr %t18 call void @fn_emit(ptr %t68) - call void @fn_emit(ptr @.str9560) - call void @fn_emit(ptr @.str9561) - %t69 = load ptr, ptr %t18 - call void @fn_emit(ptr %t69) - call void @fn_emit(ptr @.str9562) - call void @fn_emit(ptr @.str9563) - %t70 = load ptr, ptr %t20 - call void @fn_emit(ptr %t70) - call void @fn_emit(ptr @.str9564) call void @fn_emit(ptr @.str9565) call void @fn_emit(ptr @.str9566) - %t71 = load ptr, ptr %t20 - call void @fn_emit(ptr %t71) + %t69 = load ptr, ptr %t18 + call void @fn_emit(ptr %t69) call void @fn_emit(ptr @.str9567) - %t72 = load ptr, ptr %t18 - call void @fn_emit(ptr %t72) call void @fn_emit(ptr @.str9568) + %t70 = load ptr, ptr %t20 + call void @fn_emit(ptr %t70) call void @fn_emit(ptr @.str9569) call void @fn_emit(ptr @.str9570) - %t73 = load ptr, ptr %t20 - call void @fn_emit(ptr %t73) call void @fn_emit(ptr @.str9571) - %t74 = load ptr, ptr %t18 - call void @fn_emit(ptr %t74) + %t71 = load ptr, ptr %t20 + call void @fn_emit(ptr %t71) call void @fn_emit(ptr @.str9572) + %t72 = load ptr, ptr %t18 + call void @fn_emit(ptr %t72) call void @fn_emit(ptr @.str9573) call void @fn_emit(ptr @.str9574) - %t75 = load ptr, ptr %t18 - call void @fn_emit(ptr %t75) call void @fn_emit(ptr @.str9575) + %t73 = load ptr, ptr %t20 + call void @fn_emit(ptr %t73) call void @fn_emit(ptr @.str9576) + %t74 = load ptr, ptr %t18 + call void @fn_emit(ptr %t74) call void @fn_emit(ptr @.str9577) - %t76 = load ptr, ptr %t18 - call void @fn_emit(ptr %t76) call void @fn_emit(ptr @.str9578) call void @fn_emit(ptr @.str9579) - %t77 = load ptr, ptr %t18 - call void @fn_emit(ptr %t77) + %t75 = load ptr, ptr %t18 + call void @fn_emit(ptr %t75) call void @fn_emit(ptr @.str9580) call void @fn_emit(ptr @.str9581) - %t78 = load ptr, ptr %t20 - call void @fn_emit(ptr %t78) call void @fn_emit(ptr @.str9582) + %t76 = load ptr, ptr %t18 + call void @fn_emit(ptr %t76) call void @fn_emit(ptr @.str9583) call void @fn_emit(ptr @.str9584) - %t79 = load ptr, ptr %t20 - call void @fn_emit(ptr %t79) + %t77 = load ptr, ptr %t18 + call void @fn_emit(ptr %t77) call void @fn_emit(ptr @.str9585) - %t80 = load ptr, ptr %t18 - call void @fn_emit(ptr %t80) call void @fn_emit(ptr @.str9586) + %t78 = load ptr, ptr %t20 + call void @fn_emit(ptr %t78) call void @fn_emit(ptr @.str9587) call void @fn_emit(ptr @.str9588) - %t81 = load ptr, ptr %t20 - call void @fn_emit(ptr %t81) call void @fn_emit(ptr @.str9589) - %t82 = load ptr, ptr %t18 - call void @fn_emit(ptr %t82) + %t79 = load ptr, ptr %t20 + call void @fn_emit(ptr %t79) call void @fn_emit(ptr @.str9590) + %t80 = load ptr, ptr %t18 + call void @fn_emit(ptr %t80) call void @fn_emit(ptr @.str9591) call void @fn_emit(ptr @.str9592) - %t83 = load ptr, ptr %t18 - call void @fn_emit(ptr %t83) call void @fn_emit(ptr @.str9593) + %t81 = load ptr, ptr %t20 + call void @fn_emit(ptr %t81) call void @fn_emit(ptr @.str9594) + %t82 = load ptr, ptr %t18 + call void @fn_emit(ptr %t82) call void @fn_emit(ptr @.str9595) - %t84 = load ptr, ptr %t18 - call void @fn_emit(ptr %t84) call void @fn_emit(ptr @.str9596) call void @fn_emit(ptr @.str9597) - %t85 = load ptr, ptr %t18 - call void @fn_emit(ptr %t85) + %t83 = load ptr, ptr %t18 + call void @fn_emit(ptr %t83) call void @fn_emit(ptr @.str9598) call void @fn_emit(ptr @.str9599) call void @fn_emit(ptr @.str9600) + %t84 = load ptr, ptr %t18 + call void @fn_emit(ptr %t84) call void @fn_emit(ptr @.str9601) - %t86 = load ptr, ptr %t20 - call void @fn_emit(ptr %t86) call void @fn_emit(ptr @.str9602) - %t87 = load ptr, ptr %t18 - call void @fn_emit(ptr %t87) + %t85 = load ptr, ptr %t18 + call void @fn_emit(ptr %t85) call void @fn_emit(ptr @.str9603) call void @fn_emit(ptr @.str9604) call void @fn_emit(ptr @.str9605) + call void @fn_emit(ptr @.str9606) + %t86 = load ptr, ptr %t20 + call void @fn_emit(ptr %t86) + call void @fn_emit(ptr @.str9607) + %t87 = load ptr, ptr %t18 + call void @fn_emit(ptr %t87) + call void @fn_emit(ptr @.str9608) + call void @fn_emit(ptr @.str9609) + call void @fn_emit(ptr @.str9610) store i32 0, ptr @g_ll_t store i32 0, ptr @g_ll_lbl store i32 0, ptr @g_g_term @@ -99142,7 +99298,7 @@ ifend11: store i32 0, ptr @g_nloop store i32 0, ptr @g_nself store ptr null, ptr @g_g_cur_scene - store ptr @.str9606, ptr @g_ret_ty + store ptr @.str9611, ptr @g_ret_ty %t88 = call ptr @fn_buf_new() store ptr %t88, ptr %t89 %t90 = call ptr @fn_buf_new() @@ -99151,13 +99307,13 @@ ifend11: store ptr %t91, ptr %t92 %t93 = load ptr, ptr %t89 store ptr %t93, ptr @g_code - call void @fn_emit(ptr @.str9607) - call void @fn_emit(ptr @.str9608) + call void @fn_emit(ptr @.str9612) + call void @fn_emit(ptr @.str9613) %t94 = call ptr @fn_itoa(i32 32) call void @fn_emit(ptr %t94) - call void @fn_emit(ptr @.str9609) - call void @fn_emit(ptr @.str9610) - call void @fn_emit(ptr @.str9611) + call void @fn_emit(ptr @.str9614) + call void @fn_emit(ptr @.str9615) + call void @fn_emit(ptr @.str9616) %t95 = load ptr, ptr %t14 %t96 = getelementptr inbounds %Cmp_Node, ptr %t95, i32 0, i32 2 %t97 = load i32, ptr %t96 @@ -99166,16 +99322,16 @@ ifend11: %t100 = icmp ne i32 %t99, 0 br i1 %t100, label %then15, label %else16 then15: - call void @fn_emit(ptr @.str9612) + call void @fn_emit(ptr @.str9617) br label %ifend17 else16: - call void @fn_emit(ptr @.str9613) + call void @fn_emit(ptr @.str9618) br label %ifend17 ifend17: - call void @fn_emit(ptr @.str9614) - call void @fn_emit(ptr @.str9615) + call void @fn_emit(ptr @.str9619) + call void @fn_emit(ptr @.str9620) %t101 = load ptr, ptr %t18 - %t102 = call ptr @lp_str_concat(ptr @.str9616, ptr %t101) + %t102 = call ptr @lp_str_concat(ptr @.str9621, ptr %t101) %t103 = call ptr @fn_emit_alloca(ptr %t102) store ptr %t103, ptr %t104 store i32 0, ptr %t105 @@ -99208,45 +99364,45 @@ wbody19: store ptr %t127, ptr %t128 %t129 = call ptr @fn_nreg() store ptr %t129, ptr %t130 - call void @fn_emit(ptr @.str9617) + call void @fn_emit(ptr @.str9622) %t131 = load ptr, ptr %t130 call void @fn_emit(ptr %t131) - call void @fn_emit(ptr @.str9618) + call void @fn_emit(ptr @.str9623) %t132 = load ptr, ptr %t18 call void @fn_emit(ptr %t132) - call void @fn_emit(ptr @.str9619) + call void @fn_emit(ptr @.str9624) %t133 = load ptr, ptr %t104 call void @fn_emit(ptr %t133) - call void @fn_emit(ptr @.str9620) + call void @fn_emit(ptr @.str9625) %t134 = load i32, ptr %t105 %t135 = call ptr @fn_itoa(i32 %t134) call void @fn_emit(ptr %t135) - call void @fn_emit(ptr @.str9621) - call void @fn_emit(ptr @.str9622) + call void @fn_emit(ptr @.str9626) + call void @fn_emit(ptr @.str9627) %t136 = load ptr, ptr %t128 call void @fn_emit(ptr %t136) - call void @fn_emit(ptr @.str9623) + call void @fn_emit(ptr @.str9628) %t137 = load i32, ptr %t105 %t138 = call ptr @fn_itoa(i32 %t137) call void @fn_emit(ptr %t138) - call void @fn_emit(ptr @.str9624) + call void @fn_emit(ptr @.str9629) %t139 = load ptr, ptr %t130 call void @fn_emit(ptr %t139) - call void @fn_emit(ptr @.str9625) + call void @fn_emit(ptr @.str9630) %t140 = load ptr, ptr %t128 %t141 = call ptr @fn_emit_alloca(ptr %t140) store ptr %t141, ptr %t142 - call void @fn_emit(ptr @.str9626) + call void @fn_emit(ptr @.str9631) %t143 = load ptr, ptr %t128 call void @fn_emit(ptr %t143) - call void @fn_emit(ptr @.str9627) + call void @fn_emit(ptr @.str9632) %t144 = load i32, ptr %t105 %t145 = call ptr @fn_itoa(i32 %t144) call void @fn_emit(ptr %t145) - call void @fn_emit(ptr @.str9628) + call void @fn_emit(ptr @.str9633) %t146 = load ptr, ptr %t142 call void @fn_emit(ptr %t146) - call void @fn_emit(ptr @.str9629) + call void @fn_emit(ptr @.str9634) %t147 = load ptr, ptr %t123 %t148 = getelementptr inbounds %Cmp_Node, ptr %t147, i32 0, i32 1 %t149 = load ptr, ptr %t148 @@ -99271,16 +99427,16 @@ wend20: then21: %t163 = call ptr @fn_nreg() store ptr %t163, ptr %t156 - call void @fn_emit(ptr @.str9630) + call void @fn_emit(ptr @.str9635) %t164 = load ptr, ptr %t156 call void @fn_emit(ptr %t164) - call void @fn_emit(ptr @.str9631) + call void @fn_emit(ptr @.str9636) %t165 = load ptr, ptr %t18 call void @fn_emit(ptr %t165) - call void @fn_emit(ptr @.str9632) + call void @fn_emit(ptr @.str9637) %t166 = load ptr, ptr %t104 call void @fn_emit(ptr %t166) - call void @fn_emit(ptr @.str9633) + call void @fn_emit(ptr @.str9638) %t167 = load ptr, ptr %t14 %t168 = getelementptr inbounds %Cmp_Node, ptr %t167, i32 0, i32 7 %t169 = load ptr, ptr %t168 @@ -99288,11 +99444,11 @@ then21: %t171 = load i32, ptr %t170 %t172 = call ptr @fn_itoa(i32 %t171) call void @fn_emit(ptr %t172) - call void @fn_emit(ptr @.str9634) - call void @fn_emit(ptr @.str9635) + call void @fn_emit(ptr @.str9639) + call void @fn_emit(ptr @.str9640) %t173 = load ptr, ptr %t156 call void @fn_emit(ptr %t173) - call void @fn_emit(ptr @.str9636) + call void @fn_emit(ptr @.str9641) %t174 = load ptr, ptr %t156 store ptr %t174, ptr @g_g_cancel_addr br label %ifend23 @@ -99349,132 +99505,132 @@ wend26: %t210 = icmp ne i32 %t209, 0 br i1 %t210, label %then30, label %ifend32 then30: - %t211 = call ptr @fn_emit_alloca(ptr @.str9637) + %t211 = call ptr @fn_emit_alloca(ptr @.str9642) store ptr %t211, ptr %t212 - call void @fn_emit(ptr @.str9638) + call void @fn_emit(ptr @.str9643) %t213 = load ptr, ptr %t212 call void @fn_emit(ptr %t213) - call void @fn_emit(ptr @.str9639) - %t214 = call ptr @fn_lbl(ptr @.str9640) + call void @fn_emit(ptr @.str9644) + %t214 = call ptr @fn_lbl(ptr @.str9645) store ptr %t214, ptr %t215 - %t216 = call ptr @fn_lbl(ptr @.str9641) + %t216 = call ptr @fn_lbl(ptr @.str9646) store ptr %t216, ptr %t217 - %t218 = call ptr @fn_lbl(ptr @.str9642) + %t218 = call ptr @fn_lbl(ptr @.str9647) store ptr %t218, ptr %t219 - call void @fn_emit(ptr @.str9643) + call void @fn_emit(ptr @.str9648) %t220 = load ptr, ptr %t215 call void @fn_emit(ptr %t220) - call void @fn_emit(ptr @.str9644) + call void @fn_emit(ptr @.str9649) %t221 = load ptr, ptr %t215 call void @fn_emit(ptr %t221) - call void @fn_emit(ptr @.str9645) + call void @fn_emit(ptr @.str9650) %t222 = load ptr, ptr %t212 - %t223 = call ptr @lp_str_concat(ptr @.str9646, ptr %t222) + %t223 = call ptr @lp_str_concat(ptr @.str9651, ptr %t222) %t224 = call ptr @fn_emit_bind(ptr %t223) store ptr %t224, ptr %t225 %t226 = load ptr, ptr %t18 - %t227 = call ptr @lp_str_concat(ptr @.str9647, ptr %t226) + %t227 = call ptr @lp_str_concat(ptr @.str9652, ptr %t226) %t228 = call ptr @fn_emit_bind(ptr %t227) store ptr %t228, ptr %t229 %t230 = load ptr, ptr %t225 - %t231 = call ptr @lp_str_concat(ptr @.str9648, ptr %t230) - %t232 = call ptr @lp_str_concat(ptr %t231, ptr @.str9649) + %t231 = call ptr @lp_str_concat(ptr @.str9653, ptr %t230) + %t232 = call ptr @lp_str_concat(ptr %t231, ptr @.str9654) %t233 = load ptr, ptr %t229 %t234 = call ptr @lp_str_concat(ptr %t232, ptr %t233) %t235 = call ptr @fn_emit_bind(ptr %t234) store ptr %t235, ptr %t236 - call void @fn_emit(ptr @.str9650) + call void @fn_emit(ptr @.str9655) %t237 = load ptr, ptr %t236 call void @fn_emit(ptr %t237) - call void @fn_emit(ptr @.str9651) + call void @fn_emit(ptr @.str9656) %t238 = load ptr, ptr %t217 call void @fn_emit(ptr %t238) - call void @fn_emit(ptr @.str9652) + call void @fn_emit(ptr @.str9657) %t239 = load ptr, ptr %t219 call void @fn_emit(ptr %t239) - call void @fn_emit(ptr @.str9653) + call void @fn_emit(ptr @.str9658) %t240 = load ptr, ptr %t217 call void @fn_emit(ptr %t240) - call void @fn_emit(ptr @.str9654) + call void @fn_emit(ptr @.str9659) %t241 = call ptr @fn_nreg() store ptr %t241, ptr %t242 - call void @fn_emit(ptr @.str9655) + call void @fn_emit(ptr @.str9660) %t243 = load ptr, ptr %t242 call void @fn_emit(ptr %t243) - call void @fn_emit(ptr @.str9656) + call void @fn_emit(ptr @.str9661) %t244 = load ptr, ptr %t20 call void @fn_emit(ptr %t244) - call void @fn_emit(ptr @.str9657) + call void @fn_emit(ptr @.str9662) %t245 = load ptr, ptr %t18 call void @fn_emit(ptr %t245) - call void @fn_emit(ptr @.str9658) + call void @fn_emit(ptr @.str9663) %t246 = load ptr, ptr %t225 call void @fn_emit(ptr %t246) - call void @fn_emit(ptr @.str9659) + call void @fn_emit(ptr @.str9664) %t247 = load ptr, ptr %t242 - %t248 = call ptr @lp_str_concat(ptr @.str9660, ptr %t247) + %t248 = call ptr @lp_str_concat(ptr @.str9665, ptr %t247) %t249 = call ptr @fn_emit_bind(ptr %t248) store ptr %t249, ptr %t250 %t251 = load ptr, ptr %t250 - %t252 = call ptr @lp_str_concat(ptr @.str9661, ptr %t251) - %t253 = call ptr @lp_str_concat(ptr %t252, ptr @.str9662) + %t252 = call ptr @lp_str_concat(ptr @.str9666, ptr %t251) + %t253 = call ptr @lp_str_concat(ptr %t252, ptr @.str9667) %t254 = call ptr @fn_emit_bind(ptr %t253) store ptr %t254, ptr %t255 - %t256 = call ptr @fn_lbl(ptr @.str9663) + %t256 = call ptr @fn_lbl(ptr @.str9668) store ptr %t256, ptr %t257 - %t258 = call ptr @fn_lbl(ptr @.str9664) + %t258 = call ptr @fn_lbl(ptr @.str9669) store ptr %t258, ptr %t259 - call void @fn_emit(ptr @.str9665) + call void @fn_emit(ptr @.str9670) %t260 = load ptr, ptr %t255 call void @fn_emit(ptr %t260) - call void @fn_emit(ptr @.str9666) + call void @fn_emit(ptr @.str9671) %t261 = load ptr, ptr %t259 call void @fn_emit(ptr %t261) - call void @fn_emit(ptr @.str9667) + call void @fn_emit(ptr @.str9672) %t262 = load ptr, ptr %t257 call void @fn_emit(ptr %t262) - call void @fn_emit(ptr @.str9668) + call void @fn_emit(ptr @.str9673) %t263 = load ptr, ptr %t257 call void @fn_emit(ptr %t263) - call void @fn_emit(ptr @.str9669) - call void @fn_emit(ptr @.str9670) + call void @fn_emit(ptr @.str9674) + call void @fn_emit(ptr @.str9675) %t264 = load ptr, ptr %t250 call void @fn_emit(ptr %t264) - call void @fn_emit(ptr @.str9671) + call void @fn_emit(ptr @.str9676) %t265 = load ptr, ptr %t104 call void @fn_emit(ptr %t265) - call void @fn_emit(ptr @.str9672) - call void @fn_emit(ptr @.str9673) + call void @fn_emit(ptr @.str9677) + call void @fn_emit(ptr @.str9678) %t266 = load ptr, ptr %t259 call void @fn_emit(ptr %t266) - call void @fn_emit(ptr @.str9674) + call void @fn_emit(ptr @.str9679) %t267 = load ptr, ptr %t259 call void @fn_emit(ptr %t267) - call void @fn_emit(ptr @.str9675) + call void @fn_emit(ptr @.str9680) %t268 = load ptr, ptr %t225 - %t269 = call ptr @lp_str_concat(ptr @.str9676, ptr %t268) - %t270 = call ptr @lp_str_concat(ptr %t269, ptr @.str9677) + %t269 = call ptr @lp_str_concat(ptr @.str9681, ptr %t268) + %t270 = call ptr @lp_str_concat(ptr %t269, ptr @.str9682) %t271 = call ptr @fn_emit_bind(ptr %t270) store ptr %t271, ptr %t272 - call void @fn_emit(ptr @.str9678) + call void @fn_emit(ptr @.str9683) %t273 = load ptr, ptr %t272 call void @fn_emit(ptr %t273) - call void @fn_emit(ptr @.str9679) + call void @fn_emit(ptr @.str9684) %t274 = load ptr, ptr %t212 call void @fn_emit(ptr %t274) - call void @fn_emit(ptr @.str9680) - call void @fn_emit(ptr @.str9681) - %t275 = load ptr, ptr %t215 - call void @fn_emit(ptr %t275) - call void @fn_emit(ptr @.str9682) - %t276 = load ptr, ptr %t219 - call void @fn_emit(ptr %t276) - call void @fn_emit(ptr @.str9683) - call void @fn_emit(ptr @.str9684) - br label %ifend32 -ifend32: call void @fn_emit(ptr @.str9685) call void @fn_emit(ptr @.str9686) + %t275 = load ptr, ptr %t215 + call void @fn_emit(ptr %t275) + call void @fn_emit(ptr @.str9687) + %t276 = load ptr, ptr %t219 + call void @fn_emit(ptr %t276) + call void @fn_emit(ptr @.str9688) + call void @fn_emit(ptr @.str9689) + br label %ifend32 +ifend32: + call void @fn_emit(ptr @.str9690) + call void @fn_emit(ptr @.str9691) %t277 = load ptr, ptr %t14 %t278 = getelementptr inbounds %Cmp_Node, ptr %t277, i32 0, i32 2 %t279 = load i32, ptr %t278 @@ -99484,22 +99640,22 @@ ifend32: br i1 %t282, label %then33, label %else34 then33: %t283 = load ptr, ptr %t156 - %t284 = call ptr @lp_str_concat(ptr @.str9687, ptr %t283) + %t284 = call ptr @lp_str_concat(ptr @.str9692, ptr %t283) %t285 = call ptr @fn_emit_bind(ptr %t284) store ptr %t285, ptr %t286 - call void @fn_emit(ptr @.str9688) + call void @fn_emit(ptr @.str9693) %t287 = load ptr, ptr %t286 call void @fn_emit(ptr %t287) - call void @fn_emit(ptr @.str9689) + call void @fn_emit(ptr @.str9694) br label %ifend35 else34: - call void @fn_emit(ptr @.str9690) + call void @fn_emit(ptr @.str9695) br label %ifend35 ifend35: store ptr null, ptr @g_g_cancel_addr %t288 = load ptr, ptr %t92 store ptr %t288, ptr @g_code - store ptr @.str9691, ptr %t289 + store ptr @.str9696, ptr %t289 %t290 = load ptr, ptr %t14 %t291 = getelementptr inbounds %Cmp_Node, ptr %t290, i32 0, i32 2 %t292 = load i32, ptr %t291 @@ -99508,16 +99664,16 @@ ifend35: %t295 = icmp ne i32 %t294, 0 br i1 %t295, label %then36, label %ifend38 then36: - store ptr @.str9692, ptr %t289 + store ptr @.str9697, ptr %t289 br label %ifend38 ifend38: - call void @fn_emit(ptr @.str9693) + call void @fn_emit(ptr @.str9698) %t296 = load ptr, ptr %t289 call void @fn_emit(ptr %t296) - call void @fn_emit(ptr @.str9694) + call void @fn_emit(ptr @.str9699) %t297 = load ptr, ptr %t18 call void @fn_emit(ptr %t297) - call void @fn_emit(ptr @.str9695) + call void @fn_emit(ptr @.str9700) store i32 0, ptr %t298 br label %wcond39 wcond39: @@ -99538,7 +99694,7 @@ wbody40: %t311 = icmp ne i32 %t310, 0 br i1 %t311, label %then42, label %ifend44 then42: - call void @fn_emit(ptr @.str9696) + call void @fn_emit(ptr @.str9701) br label %ifend44 ifend44: %t312 = load ptr, ptr %t14 @@ -99553,7 +99709,7 @@ ifend44: %t321 = load ptr, ptr %t320 %t322 = call ptr @fn_llty(ptr %t321) call void @fn_emit(ptr %t322) - call void @fn_emit(ptr @.str9697) + call void @fn_emit(ptr @.str9702) %t323 = load i32, ptr %t298 %t324 = call ptr @fn_itoa(i32 %t323) call void @fn_emit(ptr %t324) @@ -99562,14 +99718,14 @@ ifend44: store i32 %t326, ptr %t298 br label %wcond39 wend41: - call void @fn_emit(ptr @.str9698) + call void @fn_emit(ptr @.str9703) %t327 = load ptr, ptr @g_falloc %t328 = call ptr @fn_buf_str(ptr %t327) call void @fn_emit(ptr %t328) %t329 = load ptr, ptr %t89 %t330 = call ptr @fn_buf_str(ptr %t329) call void @fn_emit(ptr %t330) - call void @fn_emit(ptr @.str9699) + call void @fn_emit(ptr @.str9704) %t331 = load i32, ptr %t0 %t332 = add i32 %t331, 1 store i32 %t332, ptr %t0 @@ -99577,7 +99733,7 @@ wend41: wend2: %t333 = call ptr @fn_itoa(i32 16) store ptr %t333, ptr %t334 - call void @fn_emit(ptr @.str9700) + call void @fn_emit(ptr @.str9705) store i32 0, ptr %t335 br label %wcond45 wcond45: @@ -99602,127 +99758,127 @@ wbody46: %t352 = load i32, ptr %t335 %t353 = call ptr @fn_itoa(i32 %t352) store ptr %t353, ptr %t354 - call void @fn_emit(ptr @.str9701) + call void @fn_emit(ptr @.str9706) %t355 = load ptr, ptr %t354 call void @fn_emit(ptr %t355) - call void @fn_emit(ptr @.str9702) - call void @fn_emit(ptr @.str9703) - %t356 = load ptr, ptr %t354 - call void @fn_emit(ptr %t356) - call void @fn_emit(ptr @.str9704) - call void @fn_emit(ptr @.str9705) - %t357 = load ptr, ptr %t354 - call void @fn_emit(ptr %t357) - call void @fn_emit(ptr @.str9706) - %t358 = load ptr, ptr %t351 - call void @fn_emit(ptr %t358) call void @fn_emit(ptr @.str9707) call void @fn_emit(ptr @.str9708) + %t356 = load ptr, ptr %t354 + call void @fn_emit(ptr %t356) + call void @fn_emit(ptr @.str9709) + call void @fn_emit(ptr @.str9710) + %t357 = load ptr, ptr %t354 + call void @fn_emit(ptr %t357) + call void @fn_emit(ptr @.str9711) + %t358 = load ptr, ptr %t351 + call void @fn_emit(ptr %t358) + call void @fn_emit(ptr @.str9712) + call void @fn_emit(ptr @.str9713) %t359 = load ptr, ptr %t354 call void @fn_emit(ptr %t359) - call void @fn_emit(ptr @.str9709) + call void @fn_emit(ptr @.str9714) %t360 = load ptr, ptr %t354 call void @fn_emit(ptr %t360) - call void @fn_emit(ptr @.str9710) + call void @fn_emit(ptr @.str9715) %t361 = load ptr, ptr %t354 call void @fn_emit(ptr %t361) - call void @fn_emit(ptr @.str9711) - call void @fn_emit(ptr @.str9712) + call void @fn_emit(ptr @.str9716) + call void @fn_emit(ptr @.str9717) %t362 = load ptr, ptr %t354 call void @fn_emit(ptr %t362) - call void @fn_emit(ptr @.str9713) + call void @fn_emit(ptr @.str9718) %t363 = load ptr, ptr %t354 call void @fn_emit(ptr %t363) - call void @fn_emit(ptr @.str9714) + call void @fn_emit(ptr @.str9719) %t364 = load ptr, ptr %t354 call void @fn_emit(ptr %t364) - call void @fn_emit(ptr @.str9715) - call void @fn_emit(ptr @.str9716) + call void @fn_emit(ptr @.str9720) + call void @fn_emit(ptr @.str9721) %t365 = load ptr, ptr %t354 call void @fn_emit(ptr %t365) - call void @fn_emit(ptr @.str9717) - call void @fn_emit(ptr @.str9718) - %t366 = load ptr, ptr %t354 - call void @fn_emit(ptr %t366) - call void @fn_emit(ptr @.str9719) - %t367 = load ptr, ptr %t334 - call void @fn_emit(ptr %t367) - call void @fn_emit(ptr @.str9720) - %t368 = load ptr, ptr %t351 - call void @fn_emit(ptr %t368) - call void @fn_emit(ptr @.str9721) - %t369 = load ptr, ptr %t354 - call void @fn_emit(ptr %t369) call void @fn_emit(ptr @.str9722) call void @fn_emit(ptr @.str9723) + %t366 = load ptr, ptr %t354 + call void @fn_emit(ptr %t366) + call void @fn_emit(ptr @.str9724) + %t367 = load ptr, ptr %t334 + call void @fn_emit(ptr %t367) + call void @fn_emit(ptr @.str9725) + %t368 = load ptr, ptr %t351 + call void @fn_emit(ptr %t368) + call void @fn_emit(ptr @.str9726) + %t369 = load ptr, ptr %t354 + call void @fn_emit(ptr %t369) + call void @fn_emit(ptr @.str9727) + call void @fn_emit(ptr @.str9728) %t370 = load ptr, ptr %t354 call void @fn_emit(ptr %t370) - call void @fn_emit(ptr @.str9724) + call void @fn_emit(ptr @.str9729) %t371 = load ptr, ptr %t354 call void @fn_emit(ptr %t371) - call void @fn_emit(ptr @.str9725) - call void @fn_emit(ptr @.str9726) + call void @fn_emit(ptr @.str9730) + call void @fn_emit(ptr @.str9731) %t372 = load ptr, ptr %t354 call void @fn_emit(ptr %t372) - call void @fn_emit(ptr @.str9727) + call void @fn_emit(ptr @.str9732) %t373 = load ptr, ptr %t354 call void @fn_emit(ptr %t373) - call void @fn_emit(ptr @.str9728) - call void @fn_emit(ptr @.str9729) + call void @fn_emit(ptr @.str9733) + call void @fn_emit(ptr @.str9734) %t374 = load ptr, ptr %t354 call void @fn_emit(ptr %t374) - call void @fn_emit(ptr @.str9730) + call void @fn_emit(ptr @.str9735) %t375 = load ptr, ptr %t354 call void @fn_emit(ptr %t375) - call void @fn_emit(ptr @.str9731) + call void @fn_emit(ptr @.str9736) %t376 = load ptr, ptr %t354 call void @fn_emit(ptr %t376) - call void @fn_emit(ptr @.str9732) - call void @fn_emit(ptr @.str9733) + call void @fn_emit(ptr @.str9737) + call void @fn_emit(ptr @.str9738) %t377 = load ptr, ptr %t354 call void @fn_emit(ptr %t377) - call void @fn_emit(ptr @.str9734) - call void @fn_emit(ptr @.str9735) - %t378 = load ptr, ptr %t354 - call void @fn_emit(ptr %t378) - call void @fn_emit(ptr @.str9736) - %t379 = load ptr, ptr %t334 - call void @fn_emit(ptr %t379) - call void @fn_emit(ptr @.str9737) - %t380 = load ptr, ptr %t351 - call void @fn_emit(ptr %t380) - call void @fn_emit(ptr @.str9738) - %t381 = load ptr, ptr %t354 - call void @fn_emit(ptr %t381) call void @fn_emit(ptr @.str9739) call void @fn_emit(ptr @.str9740) - %t382 = load ptr, ptr %t354 - call void @fn_emit(ptr %t382) + %t378 = load ptr, ptr %t354 + call void @fn_emit(ptr %t378) call void @fn_emit(ptr @.str9741) - %t383 = load ptr, ptr %t354 - call void @fn_emit(ptr %t383) + %t379 = load ptr, ptr %t334 + call void @fn_emit(ptr %t379) call void @fn_emit(ptr @.str9742) + %t380 = load ptr, ptr %t351 + call void @fn_emit(ptr %t380) call void @fn_emit(ptr @.str9743) - %t384 = load ptr, ptr %t354 - call void @fn_emit(ptr %t384) + %t381 = load ptr, ptr %t354 + call void @fn_emit(ptr %t381) call void @fn_emit(ptr @.str9744) call void @fn_emit(ptr @.str9745) - %t385 = load ptr, ptr %t354 - call void @fn_emit(ptr %t385) + %t382 = load ptr, ptr %t354 + call void @fn_emit(ptr %t382) call void @fn_emit(ptr @.str9746) - %t386 = load ptr, ptr %t354 - call void @fn_emit(ptr %t386) + %t383 = load ptr, ptr %t354 + call void @fn_emit(ptr %t383) call void @fn_emit(ptr @.str9747) - %t387 = load ptr, ptr %t354 - call void @fn_emit(ptr %t387) call void @fn_emit(ptr @.str9748) - %t388 = load ptr, ptr %t354 - call void @fn_emit(ptr %t388) + %t384 = load ptr, ptr %t354 + call void @fn_emit(ptr %t384) call void @fn_emit(ptr @.str9749) call void @fn_emit(ptr @.str9750) + %t385 = load ptr, ptr %t354 + call void @fn_emit(ptr %t385) + call void @fn_emit(ptr @.str9751) + %t386 = load ptr, ptr %t354 + call void @fn_emit(ptr %t386) + call void @fn_emit(ptr @.str9752) + %t387 = load ptr, ptr %t354 + call void @fn_emit(ptr %t387) + call void @fn_emit(ptr @.str9753) + %t388 = load ptr, ptr %t354 + call void @fn_emit(ptr %t388) + call void @fn_emit(ptr @.str9754) + call void @fn_emit(ptr @.str9755) %t389 = load ptr, ptr %t354 call void @fn_emit(ptr %t389) - call void @fn_emit(ptr @.str9751) + call void @fn_emit(ptr @.str9756) %t390 = load i32, ptr %t335 %t391 = add i32 %t390, 1 %t392 = load ptr, ptr @g_g_events @@ -99733,15 +99889,15 @@ wbody46: %t397 = icmp ne i32 %t396, 0 br i1 %t397, label %then48, label %else49 then48: - call void @fn_emit(ptr @.str9752) + call void @fn_emit(ptr @.str9757) %t398 = load i32, ptr %t335 %t399 = add i32 %t398, 1 %t400 = call ptr @fn_itoa(i32 %t399) call void @fn_emit(ptr %t400) - call void @fn_emit(ptr @.str9753) + call void @fn_emit(ptr @.str9758) br label %ifend50 else49: - call void @fn_emit(ptr @.str9754) + call void @fn_emit(ptr @.str9759) br label %ifend50 ifend50: %t401 = load i32, ptr %t335 @@ -99749,7 +99905,7 @@ ifend50: store i32 %t402, ptr %t335 br label %wcond45 wend47: - call void @fn_emit(ptr @.str9755) + call void @fn_emit(ptr @.str9760) br label %ret ret: ret void @@ -99834,12 +99990,12 @@ wend2: %t26 = load i32, ptr %t2 %t27 = call ptr @fn_itoa(i32 %t26) store ptr %t27, ptr %t28 - call void @fn_emith(ptr @.str9756) - call void @fn_emith(ptr @.str9757) - call void @fn_emith(ptr @.str9758) - call void @fn_emith(ptr @.str9759) - call void @fn_emith(ptr @.str9760) - call void @fn_emit(ptr @.str9761) + call void @fn_emith(ptr @.str9761) + call void @fn_emith(ptr @.str9762) + call void @fn_emith(ptr @.str9763) + call void @fn_emith(ptr @.str9764) + call void @fn_emith(ptr @.str9765) + call void @fn_emit(ptr @.str9766) store i32 0, ptr %t29 store i32 0, ptr %t30 br label %wcond6 @@ -99879,41 +100035,41 @@ then9: %t59 = load i32, ptr %t29 %t60 = call ptr @fn_itoa(i32 %t59) store ptr %t60, ptr %t61 - call void @fn_emit(ptr @.str9762) + call void @fn_emit(ptr @.str9767) %t62 = load ptr, ptr %t61 call void @fn_emit(ptr %t62) - call void @fn_emit(ptr @.str9763) + call void @fn_emit(ptr @.str9768) %t63 = load ptr, ptr %t58 call void @fn_emit(ptr %t63) - call void @fn_emit(ptr @.str9764) - call void @fn_emit(ptr @.str9765) + call void @fn_emit(ptr @.str9769) + call void @fn_emit(ptr @.str9770) %t64 = load ptr, ptr %t61 call void @fn_emit(ptr %t64) - call void @fn_emit(ptr @.str9766) + call void @fn_emit(ptr @.str9771) %t65 = load ptr, ptr %t61 call void @fn_emit(ptr %t65) - call void @fn_emit(ptr @.str9767) - call void @fn_emit(ptr @.str9768) + call void @fn_emit(ptr @.str9772) + call void @fn_emit(ptr @.str9773) %t66 = load ptr, ptr %t61 call void @fn_emit(ptr %t66) - call void @fn_emit(ptr @.str9769) + call void @fn_emit(ptr @.str9774) %t67 = load ptr, ptr %t61 call void @fn_emit(ptr %t67) - call void @fn_emit(ptr @.str9770) + call void @fn_emit(ptr @.str9775) %t68 = load ptr, ptr %t61 call void @fn_emit(ptr %t68) - call void @fn_emit(ptr @.str9771) - call void @fn_emit(ptr @.str9772) + call void @fn_emit(ptr @.str9776) + call void @fn_emit(ptr @.str9777) %t69 = load ptr, ptr %t61 call void @fn_emit(ptr %t69) - call void @fn_emit(ptr @.str9773) + call void @fn_emit(ptr @.str9778) %t70 = load ptr, ptr %t61 call void @fn_emit(ptr %t70) - call void @fn_emit(ptr @.str9774) - call void @fn_emit(ptr @.str9775) + call void @fn_emit(ptr @.str9779) + call void @fn_emit(ptr @.str9780) %t71 = load ptr, ptr %t61 call void @fn_emit(ptr %t71) - call void @fn_emit(ptr @.str9776) + call void @fn_emit(ptr @.str9781) %t72 = load i32, ptr %t29 %t73 = add i32 %t72, 1 store i32 %t73, ptr %t29 @@ -99924,16 +100080,16 @@ ifend11: store i32 %t75, ptr %t30 br label %wcond6 wend8: - call void @fn_emit(ptr @.str9777) - call void @fn_emit(ptr @.str9778) - call void @fn_emit(ptr @.str9779) - call void @fn_emit(ptr @.str9780) - %t76 = load ptr, ptr %t28 - call void @fn_emit(ptr %t76) - call void @fn_emit(ptr @.str9781) call void @fn_emit(ptr @.str9782) call void @fn_emit(ptr @.str9783) call void @fn_emit(ptr @.str9784) + call void @fn_emit(ptr @.str9785) + %t76 = load ptr, ptr %t28 + call void @fn_emit(ptr %t76) + call void @fn_emit(ptr @.str9786) + call void @fn_emit(ptr @.str9787) + call void @fn_emit(ptr @.str9788) + call void @fn_emit(ptr @.str9789) store i32 0, ptr %t29 store i32 0, ptr %t30 br label %wcond12 @@ -99970,27 +100126,27 @@ then15: %t102 = load i32, ptr %t29 %t103 = call ptr @fn_itoa(i32 %t102) store ptr %t103, ptr %t104 - call void @fn_emit(ptr @.str9785) + call void @fn_emit(ptr @.str9790) %t105 = load ptr, ptr %t104 call void @fn_emit(ptr %t105) - call void @fn_emit(ptr @.str9786) + call void @fn_emit(ptr @.str9791) %t106 = load ptr, ptr %t104 call void @fn_emit(ptr %t106) - call void @fn_emit(ptr @.str9787) - call void @fn_emit(ptr @.str9788) + call void @fn_emit(ptr @.str9792) + call void @fn_emit(ptr @.str9793) %t107 = load ptr, ptr %t104 call void @fn_emit(ptr %t107) - call void @fn_emit(ptr @.str9789) + call void @fn_emit(ptr @.str9794) %t108 = load ptr, ptr %t104 call void @fn_emit(ptr %t108) - call void @fn_emit(ptr @.str9790) + call void @fn_emit(ptr @.str9795) %t109 = load ptr, ptr %t104 call void @fn_emit(ptr %t109) - call void @fn_emit(ptr @.str9791) - call void @fn_emit(ptr @.str9792) + call void @fn_emit(ptr @.str9796) + call void @fn_emit(ptr @.str9797) %t110 = load ptr, ptr %t104 call void @fn_emit(ptr %t110) - call void @fn_emit(ptr @.str9793) + call void @fn_emit(ptr @.str9798) store i32 0, ptr %t111 br label %wcond18 wcond18: @@ -100018,57 +100174,57 @@ wbody19: %t131 = call ptr @fn_emit_str_const(ptr %t130) store ptr %t131, ptr %t132 %t133 = load ptr, ptr %t104 - %t134 = call ptr @lp_str_concat(ptr %t133, ptr @.str9794) + %t134 = call ptr @lp_str_concat(ptr %t133, ptr @.str9799) %t135 = load i32, ptr %t111 %t136 = call ptr @fn_itoa(i32 %t135) %t137 = call ptr @lp_str_concat(ptr %t134, ptr %t136) store ptr %t137, ptr %t138 - call void @fn_emit(ptr @.str9795) + call void @fn_emit(ptr @.str9800) %t139 = load ptr, ptr %t138 call void @fn_emit(ptr %t139) - call void @fn_emit(ptr @.str9796) + call void @fn_emit(ptr @.str9801) %t140 = load ptr, ptr %t132 call void @fn_emit(ptr %t140) - call void @fn_emit(ptr @.str9797) - call void @fn_emit(ptr @.str9798) + call void @fn_emit(ptr @.str9802) + call void @fn_emit(ptr @.str9803) %t141 = load ptr, ptr %t138 call void @fn_emit(ptr %t141) - call void @fn_emit(ptr @.str9799) + call void @fn_emit(ptr @.str9804) %t142 = load ptr, ptr %t138 call void @fn_emit(ptr %t142) - call void @fn_emit(ptr @.str9800) - call void @fn_emit(ptr @.str9801) + call void @fn_emit(ptr @.str9805) + call void @fn_emit(ptr @.str9806) %t143 = load ptr, ptr %t138 call void @fn_emit(ptr %t143) - call void @fn_emit(ptr @.str9802) + call void @fn_emit(ptr @.str9807) %t144 = load ptr, ptr %t138 call void @fn_emit(ptr %t144) - call void @fn_emit(ptr @.str9803) + call void @fn_emit(ptr @.str9808) %t145 = load ptr, ptr %t138 call void @fn_emit(ptr %t145) - call void @fn_emit(ptr @.str9804) - call void @fn_emit(ptr @.str9805) + call void @fn_emit(ptr @.str9809) + call void @fn_emit(ptr @.str9810) %t146 = load ptr, ptr %t138 call void @fn_emit(ptr %t146) - call void @fn_emit(ptr @.str9806) + call void @fn_emit(ptr @.str9811) %t147 = load i32, ptr %t111 %t148 = call ptr @fn_itoa(i32 %t147) call void @fn_emit(ptr %t148) - call void @fn_emit(ptr @.str9807) - call void @fn_emit(ptr @.str9808) + call void @fn_emit(ptr @.str9812) + call void @fn_emit(ptr @.str9813) %t149 = load ptr, ptr %t138 call void @fn_emit(ptr %t149) - call void @fn_emit(ptr @.str9809) + call void @fn_emit(ptr @.str9814) %t150 = load i32, ptr %t111 %t151 = add i32 %t150, 1 store i32 %t151, ptr %t111 br label %wcond18 wend20: - call void @fn_emit(ptr @.str9810) - call void @fn_emit(ptr @.str9811) + call void @fn_emit(ptr @.str9815) + call void @fn_emit(ptr @.str9816) %t152 = load ptr, ptr %t104 call void @fn_emit(ptr %t152) - call void @fn_emit(ptr @.str9812) + call void @fn_emit(ptr @.str9817) %t153 = load i32, ptr %t29 %t154 = add i32 %t153, 1 store i32 %t154, ptr %t29 @@ -100079,8 +100235,8 @@ ifend17: store i32 %t156, ptr %t30 br label %wcond12 wend14: - call void @fn_emit(ptr @.str9813) - call void @fn_emit(ptr @.str9814) + call void @fn_emit(ptr @.str9818) + call void @fn_emit(ptr @.str9819) store i32 0, ptr %t29 store i32 0, ptr %t30 br label %wcond21 @@ -100121,40 +100277,40 @@ then24: %t186 = load i32, ptr %t29 %t187 = call ptr @fn_itoa(i32 %t186) store ptr %t187, ptr %t188 - call void @fn_emit(ptr @.str9815) + call void @fn_emit(ptr @.str9820) %t189 = load ptr, ptr %t188 call void @fn_emit(ptr %t189) - call void @fn_emit(ptr @.str9816) + call void @fn_emit(ptr @.str9821) %t190 = load ptr, ptr %t188 call void @fn_emit(ptr %t190) - call void @fn_emit(ptr @.str9817) - call void @fn_emit(ptr @.str9818) + call void @fn_emit(ptr @.str9822) + call void @fn_emit(ptr @.str9823) %t191 = load ptr, ptr %t188 call void @fn_emit(ptr %t191) - call void @fn_emit(ptr @.str9819) + call void @fn_emit(ptr @.str9824) %t192 = load ptr, ptr %t188 call void @fn_emit(ptr %t192) - call void @fn_emit(ptr @.str9820) + call void @fn_emit(ptr @.str9825) %t193 = load ptr, ptr %t188 call void @fn_emit(ptr %t193) - call void @fn_emit(ptr @.str9821) - call void @fn_emit(ptr @.str9822) + call void @fn_emit(ptr @.str9826) + call void @fn_emit(ptr @.str9827) %t194 = load ptr, ptr %t188 call void @fn_emit(ptr %t194) - call void @fn_emit(ptr @.str9823) - call void @fn_emit(ptr @.str9824) + call void @fn_emit(ptr @.str9828) + call void @fn_emit(ptr @.str9829) %t195 = load ptr, ptr %t188 call void @fn_emit(ptr %t195) - call void @fn_emit(ptr @.str9825) + call void @fn_emit(ptr @.str9830) %t196 = load ptr, ptr %t1 call void @fn_emit(ptr %t196) - call void @fn_emit(ptr @.str9826) + call void @fn_emit(ptr @.str9831) %t197 = load ptr, ptr %t185 call void @fn_emit(ptr %t197) - call void @fn_emit(ptr @.str9827) + call void @fn_emit(ptr @.str9832) %t198 = load ptr, ptr %t185 call void @fn_emit(ptr %t198) - call void @fn_emit(ptr @.str9828) + call void @fn_emit(ptr @.str9833) store i32 0, ptr %t199 br label %wcond27 wcond27: @@ -100182,130 +100338,130 @@ wbody28: %t219 = call ptr @fn_llty(ptr %t218) store ptr %t219, ptr %t220 %t221 = load ptr, ptr %t188 - %t222 = call ptr @lp_str_concat(ptr %t221, ptr @.str9829) + %t222 = call ptr @lp_str_concat(ptr %t221, ptr @.str9834) %t223 = load i32, ptr %t199 %t224 = call ptr @fn_itoa(i32 %t223) %t225 = call ptr @lp_str_concat(ptr %t222, ptr %t224) store ptr %t225, ptr %t226 - call void @fn_emit(ptr @.str9830) + call void @fn_emit(ptr @.str9835) %t227 = load ptr, ptr %t226 call void @fn_emit(ptr %t227) - call void @fn_emit(ptr @.str9831) + call void @fn_emit(ptr @.str9836) %t228 = load i32, ptr %t199 %t229 = call ptr @fn_itoa(i32 %t228) call void @fn_emit(ptr %t229) - call void @fn_emit(ptr @.str9832) - call void @fn_emit(ptr @.str9833) + call void @fn_emit(ptr @.str9837) + call void @fn_emit(ptr @.str9838) %t230 = load ptr, ptr %t226 call void @fn_emit(ptr %t230) - call void @fn_emit(ptr @.str9834) + call void @fn_emit(ptr @.str9839) %t231 = load ptr, ptr %t226 call void @fn_emit(ptr %t231) - call void @fn_emit(ptr @.str9835) + call void @fn_emit(ptr @.str9840) %t232 = load ptr, ptr %t226 call void @fn_emit(ptr %t232) - call void @fn_emit(ptr @.str9836) - call void @fn_emit(ptr @.str9837) + call void @fn_emit(ptr @.str9841) + call void @fn_emit(ptr @.str9842) %t233 = load ptr, ptr %t226 call void @fn_emit(ptr %t233) - call void @fn_emit(ptr @.str9838) - call void @fn_emit(ptr @.str9839) + call void @fn_emit(ptr @.str9843) + call void @fn_emit(ptr @.str9844) %t234 = load ptr, ptr %t226 call void @fn_emit(ptr %t234) - call void @fn_emit(ptr @.str9840) + call void @fn_emit(ptr @.str9845) %t235 = load ptr, ptr %t185 call void @fn_emit(ptr %t235) - call void @fn_emit(ptr @.str9841) + call void @fn_emit(ptr @.str9846) %t236 = load ptr, ptr %t188 call void @fn_emit(ptr %t236) - call void @fn_emit(ptr @.str9842) + call void @fn_emit(ptr @.str9847) %t237 = load i32, ptr %t199 %t238 = call ptr @fn_itoa(i32 %t237) call void @fn_emit(ptr %t238) - call void @fn_emit(ptr @.str9843) + call void @fn_emit(ptr @.str9848) %t239 = load ptr, ptr %t220 - %t240 = call i32 @lp_str_eq(ptr %t239, ptr @.str9844) + %t240 = call i32 @lp_str_eq(ptr %t239, ptr @.str9849) %t241 = icmp ne i32 %t240, 0 br i1 %t241, label %then30, label %else31 then30: - call void @fn_emit(ptr @.str9845) + call void @fn_emit(ptr @.str9850) %t242 = load ptr, ptr %t226 call void @fn_emit(ptr %t242) - call void @fn_emit(ptr @.str9846) + call void @fn_emit(ptr @.str9851) %t243 = load ptr, ptr %t226 call void @fn_emit(ptr %t243) - call void @fn_emit(ptr @.str9847) - call void @fn_emit(ptr @.str9848) + call void @fn_emit(ptr @.str9852) + call void @fn_emit(ptr @.str9853) %t244 = load ptr, ptr %t226 call void @fn_emit(ptr %t244) - call void @fn_emit(ptr @.str9849) + call void @fn_emit(ptr @.str9854) %t245 = load ptr, ptr %t226 call void @fn_emit(ptr %t245) - call void @fn_emit(ptr @.str9850) + call void @fn_emit(ptr @.str9855) %t246 = load ptr, ptr %t226 call void @fn_emit(ptr %t246) - call void @fn_emit(ptr @.str9851) + call void @fn_emit(ptr @.str9856) br label %ifend32 else31: %t247 = load ptr, ptr %t220 - %t248 = call i32 @lp_str_eq(ptr %t247, ptr @.str9852) + %t248 = call i32 @lp_str_eq(ptr %t247, ptr @.str9857) %t249 = icmp ne i32 %t248, 0 br i1 %t249, label %then33, label %else34 then33: - call void @fn_emit(ptr @.str9853) + call void @fn_emit(ptr @.str9858) %t250 = load ptr, ptr %t226 call void @fn_emit(ptr %t250) - call void @fn_emit(ptr @.str9854) + call void @fn_emit(ptr @.str9859) %t251 = load ptr, ptr %t226 call void @fn_emit(ptr %t251) - call void @fn_emit(ptr @.str9855) - call void @fn_emit(ptr @.str9856) + call void @fn_emit(ptr @.str9860) + call void @fn_emit(ptr @.str9861) %t252 = load ptr, ptr %t226 call void @fn_emit(ptr %t252) - call void @fn_emit(ptr @.str9857) + call void @fn_emit(ptr @.str9862) %t253 = load ptr, ptr %t226 call void @fn_emit(ptr %t253) - call void @fn_emit(ptr @.str9858) + call void @fn_emit(ptr @.str9863) %t254 = load ptr, ptr %t226 call void @fn_emit(ptr %t254) - call void @fn_emit(ptr @.str9859) + call void @fn_emit(ptr @.str9864) br label %ifend35 else34: - call void @fn_emit(ptr @.str9860) + call void @fn_emit(ptr @.str9865) %t255 = load ptr, ptr %t226 call void @fn_emit(ptr %t255) - call void @fn_emit(ptr @.str9861) + call void @fn_emit(ptr @.str9866) %t256 = load ptr, ptr %t226 call void @fn_emit(ptr %t256) - call void @fn_emit(ptr @.str9862) - call void @fn_emit(ptr @.str9863) + call void @fn_emit(ptr @.str9867) + call void @fn_emit(ptr @.str9868) %t257 = load ptr, ptr %t226 call void @fn_emit(ptr %t257) - call void @fn_emit(ptr @.str9864) + call void @fn_emit(ptr @.str9869) %t258 = load ptr, ptr %t226 call void @fn_emit(ptr %t258) - call void @fn_emit(ptr @.str9865) + call void @fn_emit(ptr @.str9870) %t259 = load ptr, ptr %t226 call void @fn_emit(ptr %t259) - call void @fn_emit(ptr @.str9866) + call void @fn_emit(ptr @.str9871) br label %ifend35 ifend35: br label %ifend32 ifend32: - call void @fn_emit(ptr @.str9867) + call void @fn_emit(ptr @.str9872) %t260 = load ptr, ptr %t226 call void @fn_emit(ptr %t260) - call void @fn_emit(ptr @.str9868) + call void @fn_emit(ptr @.str9873) %t261 = load i32, ptr %t199 %t262 = add i32 %t261, 1 store i32 %t262, ptr %t199 br label %wcond27 wend29: - call void @fn_emit(ptr @.str9869) - call void @fn_emit(ptr @.str9870) + call void @fn_emit(ptr @.str9874) + call void @fn_emit(ptr @.str9875) %t263 = load ptr, ptr %t188 call void @fn_emit(ptr %t263) - call void @fn_emit(ptr @.str9871) + call void @fn_emit(ptr @.str9876) %t264 = load i32, ptr %t29 %t265 = add i32 %t264, 1 store i32 %t265, ptr %t29 @@ -100316,16 +100472,16 @@ ifend26: store i32 %t267, ptr %t30 br label %wcond21 wend23: - call void @fn_emit(ptr @.str9872) + call void @fn_emit(ptr @.str9877) %t268 = load ptr, ptr %t28 call void @fn_emit(ptr %t268) - call void @fn_emit(ptr @.str9873) - call void @fn_emit(ptr @.str9874) - call void @fn_emit(ptr @.str9875) - call void @fn_emit(ptr @.str9876) - call void @fn_emit(ptr @.str9877) call void @fn_emit(ptr @.str9878) call void @fn_emit(ptr @.str9879) + call void @fn_emit(ptr @.str9880) + call void @fn_emit(ptr @.str9881) + call void @fn_emit(ptr @.str9882) + call void @fn_emit(ptr @.str9883) + call void @fn_emit(ptr @.str9884) store i32 0, ptr %t29 store i32 0, ptr %t30 br label %wcond36 @@ -100366,40 +100522,40 @@ then39: %t298 = load i32, ptr %t29 %t299 = call ptr @fn_itoa(i32 %t298) store ptr %t299, ptr %t300 - call void @fn_emit(ptr @.str9880) + call void @fn_emit(ptr @.str9885) %t301 = load ptr, ptr %t300 call void @fn_emit(ptr %t301) - call void @fn_emit(ptr @.str9881) + call void @fn_emit(ptr @.str9886) %t302 = load ptr, ptr %t300 call void @fn_emit(ptr %t302) - call void @fn_emit(ptr @.str9882) - call void @fn_emit(ptr @.str9883) + call void @fn_emit(ptr @.str9887) + call void @fn_emit(ptr @.str9888) %t303 = load ptr, ptr %t300 call void @fn_emit(ptr %t303) - call void @fn_emit(ptr @.str9884) + call void @fn_emit(ptr @.str9889) %t304 = load ptr, ptr %t300 call void @fn_emit(ptr %t304) - call void @fn_emit(ptr @.str9885) + call void @fn_emit(ptr @.str9890) %t305 = load ptr, ptr %t300 call void @fn_emit(ptr %t305) - call void @fn_emit(ptr @.str9886) - call void @fn_emit(ptr @.str9887) + call void @fn_emit(ptr @.str9891) + call void @fn_emit(ptr @.str9892) %t306 = load ptr, ptr %t300 call void @fn_emit(ptr %t306) - call void @fn_emit(ptr @.str9888) - call void @fn_emit(ptr @.str9889) + call void @fn_emit(ptr @.str9893) + call void @fn_emit(ptr @.str9894) %t307 = load ptr, ptr %t300 call void @fn_emit(ptr %t307) - call void @fn_emit(ptr @.str9890) + call void @fn_emit(ptr @.str9895) %t308 = load ptr, ptr %t1 call void @fn_emit(ptr %t308) - call void @fn_emit(ptr @.str9891) + call void @fn_emit(ptr @.str9896) %t309 = load ptr, ptr %t297 call void @fn_emit(ptr %t309) - call void @fn_emit(ptr @.str9892) + call void @fn_emit(ptr @.str9897) %t310 = load ptr, ptr %t297 call void @fn_emit(ptr %t310) - call void @fn_emit(ptr @.str9893) + call void @fn_emit(ptr @.str9898) store i32 0, ptr %t311 br label %wcond42 wcond42: @@ -100427,112 +100583,112 @@ wbody43: %t331 = call ptr @fn_llty(ptr %t330) store ptr %t331, ptr %t332 %t333 = load ptr, ptr %t300 - %t334 = call ptr @lp_str_concat(ptr %t333, ptr @.str9894) + %t334 = call ptr @lp_str_concat(ptr %t333, ptr @.str9899) %t335 = load i32, ptr %t311 %t336 = call ptr @fn_itoa(i32 %t335) %t337 = call ptr @lp_str_concat(ptr %t334, ptr %t336) store ptr %t337, ptr %t338 - call void @fn_emit(ptr @.str9895) + call void @fn_emit(ptr @.str9900) %t339 = load ptr, ptr %t338 call void @fn_emit(ptr %t339) - call void @fn_emit(ptr @.str9896) + call void @fn_emit(ptr @.str9901) %t340 = load i32, ptr %t311 %t341 = call ptr @fn_itoa(i32 %t340) call void @fn_emit(ptr %t341) - call void @fn_emit(ptr @.str9897) - call void @fn_emit(ptr @.str9898) + call void @fn_emit(ptr @.str9902) + call void @fn_emit(ptr @.str9903) %t342 = load ptr, ptr %t338 call void @fn_emit(ptr %t342) - call void @fn_emit(ptr @.str9899) + call void @fn_emit(ptr @.str9904) %t343 = load ptr, ptr %t338 call void @fn_emit(ptr %t343) - call void @fn_emit(ptr @.str9900) + call void @fn_emit(ptr @.str9905) %t344 = load ptr, ptr %t338 call void @fn_emit(ptr %t344) - call void @fn_emit(ptr @.str9901) - call void @fn_emit(ptr @.str9902) + call void @fn_emit(ptr @.str9906) + call void @fn_emit(ptr @.str9907) %t345 = load ptr, ptr %t338 call void @fn_emit(ptr %t345) - call void @fn_emit(ptr @.str9903) - call void @fn_emit(ptr @.str9904) + call void @fn_emit(ptr @.str9908) + call void @fn_emit(ptr @.str9909) %t346 = load ptr, ptr %t338 call void @fn_emit(ptr %t346) - call void @fn_emit(ptr @.str9905) + call void @fn_emit(ptr @.str9910) %t347 = load ptr, ptr %t297 call void @fn_emit(ptr %t347) - call void @fn_emit(ptr @.str9906) + call void @fn_emit(ptr @.str9911) %t348 = load ptr, ptr %t300 call void @fn_emit(ptr %t348) - call void @fn_emit(ptr @.str9907) + call void @fn_emit(ptr @.str9912) %t349 = load i32, ptr %t311 %t350 = call ptr @fn_itoa(i32 %t349) call void @fn_emit(ptr %t350) - call void @fn_emit(ptr @.str9908) + call void @fn_emit(ptr @.str9913) %t351 = load ptr, ptr %t332 - %t352 = call i32 @lp_str_eq(ptr %t351, ptr @.str9909) + %t352 = call i32 @lp_str_eq(ptr %t351, ptr @.str9914) %t353 = icmp ne i32 %t352, 0 br i1 %t353, label %then45, label %else46 then45: - call void @fn_emit(ptr @.str9910) + call void @fn_emit(ptr @.str9915) %t354 = load ptr, ptr %t338 call void @fn_emit(ptr %t354) - call void @fn_emit(ptr @.str9911) - call void @fn_emit(ptr @.str9912) + call void @fn_emit(ptr @.str9916) + call void @fn_emit(ptr @.str9917) %t355 = load ptr, ptr %t338 call void @fn_emit(ptr %t355) - call void @fn_emit(ptr @.str9913) + call void @fn_emit(ptr @.str9918) %t356 = load ptr, ptr %t338 call void @fn_emit(ptr %t356) - call void @fn_emit(ptr @.str9914) + call void @fn_emit(ptr @.str9919) br label %ifend47 else46: %t357 = load ptr, ptr %t332 - %t358 = call i32 @lp_str_eq(ptr %t357, ptr @.str9915) + %t358 = call i32 @lp_str_eq(ptr %t357, ptr @.str9920) %t359 = icmp ne i32 %t358, 0 br i1 %t359, label %then48, label %else49 then48: - call void @fn_emit(ptr @.str9916) + call void @fn_emit(ptr @.str9921) %t360 = load ptr, ptr %t338 call void @fn_emit(ptr %t360) - call void @fn_emit(ptr @.str9917) - call void @fn_emit(ptr @.str9918) - %t361 = load ptr, ptr %t338 - call void @fn_emit(ptr %t361) - call void @fn_emit(ptr @.str9919) - %t362 = load ptr, ptr %t338 - call void @fn_emit(ptr %t362) - call void @fn_emit(ptr @.str9920) - br label %ifend50 -else49: - call void @fn_emit(ptr @.str9921) - %t363 = load ptr, ptr %t338 - call void @fn_emit(ptr %t363) call void @fn_emit(ptr @.str9922) call void @fn_emit(ptr @.str9923) + %t361 = load ptr, ptr %t338 + call void @fn_emit(ptr %t361) + call void @fn_emit(ptr @.str9924) + %t362 = load ptr, ptr %t338 + call void @fn_emit(ptr %t362) + call void @fn_emit(ptr @.str9925) + br label %ifend50 +else49: + call void @fn_emit(ptr @.str9926) + %t363 = load ptr, ptr %t338 + call void @fn_emit(ptr %t363) + call void @fn_emit(ptr @.str9927) + call void @fn_emit(ptr @.str9928) %t364 = load ptr, ptr %t338 call void @fn_emit(ptr %t364) - call void @fn_emit(ptr @.str9924) + call void @fn_emit(ptr @.str9929) %t365 = load ptr, ptr %t338 call void @fn_emit(ptr %t365) - call void @fn_emit(ptr @.str9925) + call void @fn_emit(ptr @.str9930) br label %ifend50 ifend50: br label %ifend47 ifend47: - call void @fn_emit(ptr @.str9926) + call void @fn_emit(ptr @.str9931) %t366 = load ptr, ptr %t338 call void @fn_emit(ptr %t366) - call void @fn_emit(ptr @.str9927) + call void @fn_emit(ptr @.str9932) %t367 = load i32, ptr %t311 %t368 = add i32 %t367, 1 store i32 %t368, ptr %t311 br label %wcond42 wend44: - call void @fn_emit(ptr @.str9928) - call void @fn_emit(ptr @.str9929) + call void @fn_emit(ptr @.str9933) + call void @fn_emit(ptr @.str9934) %t369 = load ptr, ptr %t300 call void @fn_emit(ptr %t369) - call void @fn_emit(ptr @.str9930) + call void @fn_emit(ptr @.str9935) %t370 = load i32, ptr %t29 %t371 = add i32 %t370, 1 store i32 %t371, ptr %t29 @@ -100543,16 +100699,16 @@ ifend41: store i32 %t373, ptr %t30 br label %wcond36 wend38: - call void @fn_emit(ptr @.str9931) + call void @fn_emit(ptr @.str9936) %t374 = load ptr, ptr %t28 call void @fn_emit(ptr %t374) - call void @fn_emit(ptr @.str9932) - call void @fn_emit(ptr @.str9933) - call void @fn_emit(ptr @.str9934) - call void @fn_emit(ptr @.str9935) - call void @fn_emit(ptr @.str9936) call void @fn_emit(ptr @.str9937) call void @fn_emit(ptr @.str9938) + call void @fn_emit(ptr @.str9939) + call void @fn_emit(ptr @.str9940) + call void @fn_emit(ptr @.str9941) + call void @fn_emit(ptr @.str9942) + call void @fn_emit(ptr @.str9943) store i32 0, ptr %t29 store i32 0, ptr %t30 br label %wcond51 @@ -100591,58 +100747,58 @@ then54: %t402 = load i32, ptr %t29 %t403 = call ptr @fn_itoa(i32 %t402) store ptr %t403, ptr %t404 - call void @fn_emit(ptr @.str9939) + call void @fn_emit(ptr @.str9944) %t405 = load ptr, ptr %t404 call void @fn_emit(ptr %t405) - call void @fn_emit(ptr @.str9940) + call void @fn_emit(ptr @.str9945) %t406 = load ptr, ptr %t404 call void @fn_emit(ptr %t406) - call void @fn_emit(ptr @.str9941) - call void @fn_emit(ptr @.str9942) + call void @fn_emit(ptr @.str9946) + call void @fn_emit(ptr @.str9947) %t407 = load ptr, ptr %t404 call void @fn_emit(ptr %t407) - call void @fn_emit(ptr @.str9943) + call void @fn_emit(ptr @.str9948) %t408 = load ptr, ptr %t404 call void @fn_emit(ptr %t408) - call void @fn_emit(ptr @.str9944) + call void @fn_emit(ptr @.str9949) %t409 = load ptr, ptr %t404 call void @fn_emit(ptr %t409) - call void @fn_emit(ptr @.str9945) - call void @fn_emit(ptr @.str9946) + call void @fn_emit(ptr @.str9950) + call void @fn_emit(ptr @.str9951) %t410 = load ptr, ptr %t404 call void @fn_emit(ptr %t410) - call void @fn_emit(ptr @.str9947) - call void @fn_emit(ptr @.str9948) + call void @fn_emit(ptr @.str9952) + call void @fn_emit(ptr @.str9953) %t411 = load ptr, ptr %t404 call void @fn_emit(ptr %t411) - call void @fn_emit(ptr @.str9949) + call void @fn_emit(ptr @.str9954) %t412 = load ptr, ptr %t1 call void @fn_emit(ptr %t412) - call void @fn_emit(ptr @.str9950) + call void @fn_emit(ptr @.str9955) %t413 = load ptr, ptr %t401 call void @fn_emit(ptr %t413) - call void @fn_emit(ptr @.str9951) - call void @fn_emit(ptr @.str9952) + call void @fn_emit(ptr @.str9956) + call void @fn_emit(ptr @.str9957) %t414 = load ptr, ptr %t404 call void @fn_emit(ptr %t414) - call void @fn_emit(ptr @.str9953) + call void @fn_emit(ptr @.str9958) %t415 = load ptr, ptr %t404 call void @fn_emit(ptr %t415) - call void @fn_emit(ptr @.str9954) - call void @fn_emit(ptr @.str9955) + call void @fn_emit(ptr @.str9959) + call void @fn_emit(ptr @.str9960) %t416 = load ptr, ptr %t404 call void @fn_emit(ptr %t416) - call void @fn_emit(ptr @.str9956) + call void @fn_emit(ptr @.str9961) %t417 = load ptr, ptr %t404 call void @fn_emit(ptr %t417) - call void @fn_emit(ptr @.str9957) + call void @fn_emit(ptr @.str9962) %t418 = load ptr, ptr %t404 call void @fn_emit(ptr %t418) - call void @fn_emit(ptr @.str9958) - call void @fn_emit(ptr @.str9959) + call void @fn_emit(ptr @.str9963) + call void @fn_emit(ptr @.str9964) %t419 = load ptr, ptr %t404 call void @fn_emit(ptr %t419) - call void @fn_emit(ptr @.str9960) + call void @fn_emit(ptr @.str9965) %t420 = load i32, ptr %t29 %t421 = add i32 %t420, 1 store i32 %t421, ptr %t29 @@ -100653,54 +100809,54 @@ ifend56: store i32 %t423, ptr %t30 br label %wcond51 wend53: - call void @fn_emit(ptr @.str9961) + call void @fn_emit(ptr @.str9966) %t424 = load ptr, ptr %t28 call void @fn_emit(ptr %t424) - call void @fn_emit(ptr @.str9962) - call void @fn_emit(ptr @.str9963) - call void @fn_emit(ptr @.str9964) - call void @fn_emit(ptr @.str9965) - call void @fn_emit(ptr @.str9966) call void @fn_emit(ptr @.str9967) call void @fn_emit(ptr @.str9968) - %t425 = load ptr, ptr %t1 - call void @fn_emit(ptr %t425) call void @fn_emit(ptr @.str9969) call void @fn_emit(ptr @.str9970) call void @fn_emit(ptr @.str9971) call void @fn_emit(ptr @.str9972) - %t426 = load ptr, ptr %t1 - call void @fn_emit(ptr %t426) call void @fn_emit(ptr @.str9973) - %t427 = load ptr, ptr %t1 - call void @fn_emit(ptr %t427) + %t425 = load ptr, ptr %t1 + call void @fn_emit(ptr %t425) call void @fn_emit(ptr @.str9974) call void @fn_emit(ptr @.str9975) call void @fn_emit(ptr @.str9976) call void @fn_emit(ptr @.str9977) + %t426 = load ptr, ptr %t1 + call void @fn_emit(ptr %t426) call void @fn_emit(ptr @.str9978) - %t428 = load ptr, ptr %t28 - call void @fn_emit(ptr %t428) + %t427 = load ptr, ptr %t1 + call void @fn_emit(ptr %t427) call void @fn_emit(ptr @.str9979) call void @fn_emit(ptr @.str9980) call void @fn_emit(ptr @.str9981) call void @fn_emit(ptr @.str9982) - %t429 = load ptr, ptr %t28 - call void @fn_emit(ptr %t429) call void @fn_emit(ptr @.str9983) + %t428 = load ptr, ptr %t28 + call void @fn_emit(ptr %t428) call void @fn_emit(ptr @.str9984) call void @fn_emit(ptr @.str9985) - %t430 = load ptr, ptr %t28 - call void @fn_emit(ptr %t430) call void @fn_emit(ptr @.str9986) call void @fn_emit(ptr @.str9987) + %t429 = load ptr, ptr %t28 + call void @fn_emit(ptr %t429) call void @fn_emit(ptr @.str9988) call void @fn_emit(ptr @.str9989) - %t431 = load ptr, ptr %t1 - call void @fn_emit(ptr %t431) call void @fn_emit(ptr @.str9990) + %t430 = load ptr, ptr %t28 + call void @fn_emit(ptr %t430) call void @fn_emit(ptr @.str9991) call void @fn_emit(ptr @.str9992) + call void @fn_emit(ptr @.str9993) + call void @fn_emit(ptr @.str9994) + %t431 = load ptr, ptr %t1 + call void @fn_emit(ptr %t431) + call void @fn_emit(ptr @.str9995) + call void @fn_emit(ptr @.str9996) + call void @fn_emit(ptr @.str9997) store i32 0, ptr %t29 store i32 0, ptr %t30 br label %wcond57 @@ -100740,34 +100896,34 @@ then60: %t460 = load i32, ptr %t29 %t461 = call ptr @fn_itoa(i32 %t460) store ptr %t461, ptr %t462 - call void @fn_emit(ptr @.str9993) + call void @fn_emit(ptr @.str9998) %t463 = load ptr, ptr %t462 call void @fn_emit(ptr %t463) - call void @fn_emit(ptr @.str9994) + call void @fn_emit(ptr @.str9999) %t464 = load ptr, ptr %t459 call void @fn_emit(ptr %t464) - call void @fn_emit(ptr @.str9995) - call void @fn_emit(ptr @.str9996) + call void @fn_emit(ptr @.str10000) + call void @fn_emit(ptr @.str10001) %t465 = load ptr, ptr %t462 call void @fn_emit(ptr %t465) - call void @fn_emit(ptr @.str9997) + call void @fn_emit(ptr @.str10002) %t466 = load ptr, ptr %t462 call void @fn_emit(ptr %t466) - call void @fn_emit(ptr @.str9998) - call void @fn_emit(ptr @.str9999) + call void @fn_emit(ptr @.str10003) + call void @fn_emit(ptr @.str10004) %t467 = load ptr, ptr %t462 call void @fn_emit(ptr %t467) - call void @fn_emit(ptr @.str10000) + call void @fn_emit(ptr @.str10005) %t468 = load ptr, ptr %t462 call void @fn_emit(ptr %t468) - call void @fn_emit(ptr @.str10001) + call void @fn_emit(ptr @.str10006) %t469 = load ptr, ptr %t462 call void @fn_emit(ptr %t469) - call void @fn_emit(ptr @.str10002) - call void @fn_emit(ptr @.str10003) + call void @fn_emit(ptr @.str10007) + call void @fn_emit(ptr @.str10008) %t470 = load ptr, ptr %t462 call void @fn_emit(ptr %t470) - call void @fn_emit(ptr @.str10004) + call void @fn_emit(ptr @.str10009) %t471 = load ptr, ptr @g_prog %t472 = getelementptr inbounds %LSlice, ptr %t471, i32 0, i32 0 %t473 = load ptr, ptr %t472 @@ -100779,11 +100935,11 @@ then60: %t479 = call i32 @fn_find_arch_id(ptr %t478) %t480 = call ptr @fn_itoa(i32 %t479) call void @fn_emit(ptr %t480) - call void @fn_emit(ptr @.str10005) - call void @fn_emit(ptr @.str10006) + call void @fn_emit(ptr @.str10010) + call void @fn_emit(ptr @.str10011) %t481 = load ptr, ptr %t462 call void @fn_emit(ptr %t481) - call void @fn_emit(ptr @.str10007) + call void @fn_emit(ptr @.str10012) %t482 = load i32, ptr %t29 %t483 = add i32 %t482, 1 store i32 %t483, ptr %t29 @@ -100794,7 +100950,7 @@ ifend62: store i32 %t485, ptr %t30 br label %wcond57 wend59: - call void @fn_emit(ptr @.str10008) + call void @fn_emit(ptr @.str10013) store i32 0, ptr %t30 br label %wcond63 wcond63: @@ -100835,7 +100991,7 @@ then66: call void @fn_loc_reset() store i32 0, ptr @g_nloop store i32 0, ptr @g_nself - store ptr @.str10009, ptr @g_ret_ty + store ptr @.str10014, ptr @g_ret_ty %t513 = call ptr @fn_buf_new() store ptr %t513, ptr %t514 %t515 = call ptr @fn_buf_new() @@ -100853,23 +101009,23 @@ then66: %t524 = load ptr, ptr %t520 %t525 = call ptr @fn_emit_spawn(ptr %t524) store ptr %t525, ptr %t526 - call void @fn_emit(ptr @.str10010) + call void @fn_emit(ptr @.str10015) %t527 = load ptr, ptr %t526 call void @fn_emit(ptr %t527) - call void @fn_emit(ptr @.str10011) + call void @fn_emit(ptr @.str10016) %t528 = load ptr, ptr %t517 store ptr %t528, ptr @g_code - call void @fn_emit(ptr @.str10012) + call void @fn_emit(ptr @.str10017) %t529 = load ptr, ptr %t512 call void @fn_emit(ptr %t529) - call void @fn_emit(ptr @.str10013) + call void @fn_emit(ptr @.str10018) %t530 = load ptr, ptr @g_falloc %t531 = call ptr @fn_buf_str(ptr %t530) call void @fn_emit(ptr %t531) %t532 = load ptr, ptr %t514 %t533 = call ptr @fn_buf_str(ptr %t532) call void @fn_emit(ptr %t533) - call void @fn_emit(ptr @.str10014) + call void @fn_emit(ptr @.str10019) br label %ifend68 ifend68: %t534 = load i32, ptr %t30 @@ -100877,7 +101033,7 @@ ifend68: store i32 %t535, ptr %t30 br label %wcond63 wend65: - call void @fn_emit(ptr @.str10015) + call void @fn_emit(ptr @.str10020) store i32 0, ptr %t29 store i32 0, ptr %t30 br label %wcond69 @@ -100916,42 +101072,42 @@ then72: %t563 = load i32, ptr %t29 %t564 = call ptr @fn_itoa(i32 %t563) store ptr %t564, ptr %t565 - call void @fn_emit(ptr @.str10016) + call void @fn_emit(ptr @.str10021) %t566 = load ptr, ptr %t565 call void @fn_emit(ptr %t566) - call void @fn_emit(ptr @.str10017) + call void @fn_emit(ptr @.str10022) %t567 = load ptr, ptr %t562 %t568 = call i32 @fn_find_arch_id(ptr %t567) %t569 = call ptr @fn_itoa(i32 %t568) call void @fn_emit(ptr %t569) - call void @fn_emit(ptr @.str10018) - call void @fn_emit(ptr @.str10019) + call void @fn_emit(ptr @.str10023) + call void @fn_emit(ptr @.str10024) %t570 = load ptr, ptr %t565 call void @fn_emit(ptr %t570) - call void @fn_emit(ptr @.str10020) + call void @fn_emit(ptr @.str10025) %t571 = load ptr, ptr %t565 call void @fn_emit(ptr %t571) - call void @fn_emit(ptr @.str10021) + call void @fn_emit(ptr @.str10026) %t572 = load ptr, ptr %t565 call void @fn_emit(ptr %t572) - call void @fn_emit(ptr @.str10022) - call void @fn_emit(ptr @.str10023) - %t573 = load ptr, ptr %t565 - call void @fn_emit(ptr %t573) - call void @fn_emit(ptr @.str10024) - %t574 = load ptr, ptr %t565 - call void @fn_emit(ptr %t574) - call void @fn_emit(ptr @.str10025) - %t575 = load ptr, ptr %t562 - call void @fn_emit(ptr %t575) - call void @fn_emit(ptr @.str10026) - %t576 = load ptr, ptr %t565 - call void @fn_emit(ptr %t576) call void @fn_emit(ptr @.str10027) call void @fn_emit(ptr @.str10028) + %t573 = load ptr, ptr %t565 + call void @fn_emit(ptr %t573) + call void @fn_emit(ptr @.str10029) + %t574 = load ptr, ptr %t565 + call void @fn_emit(ptr %t574) + call void @fn_emit(ptr @.str10030) + %t575 = load ptr, ptr %t562 + call void @fn_emit(ptr %t575) + call void @fn_emit(ptr @.str10031) + %t576 = load ptr, ptr %t565 + call void @fn_emit(ptr %t576) + call void @fn_emit(ptr @.str10032) + call void @fn_emit(ptr @.str10033) %t577 = load ptr, ptr %t565 call void @fn_emit(ptr %t577) - call void @fn_emit(ptr @.str10029) + call void @fn_emit(ptr @.str10034) %t578 = load i32, ptr %t29 %t579 = add i32 %t578, 1 store i32 %t579, ptr %t29 @@ -100962,20 +101118,20 @@ ifend74: store i32 %t581, ptr %t30 br label %wcond69 wend71: - call void @fn_emit(ptr @.str10030) - call void @fn_emit(ptr @.str10031) - call void @fn_emit(ptr @.str10032) - call void @fn_emit(ptr @.str10033) - call void @fn_emit(ptr @.str10034) call void @fn_emit(ptr @.str10035) - %t582 = load ptr, ptr %t1 - call void @fn_emit(ptr %t582) call void @fn_emit(ptr @.str10036) call void @fn_emit(ptr @.str10037) call void @fn_emit(ptr @.str10038) call void @fn_emit(ptr @.str10039) call void @fn_emit(ptr @.str10040) + %t582 = load ptr, ptr %t1 + call void @fn_emit(ptr %t582) call void @fn_emit(ptr @.str10041) + call void @fn_emit(ptr @.str10042) + call void @fn_emit(ptr @.str10043) + call void @fn_emit(ptr @.str10044) + call void @fn_emit(ptr @.str10045) + call void @fn_emit(ptr @.str10046) call void @fn_emit_world_reflect_enum() br label %ret ret: @@ -101004,9 +101160,9 @@ entry: %t238 = alloca i32 %t259 = alloca ptr %t265 = alloca ptr - %t0 = call ptr @fn_emit_str_const(ptr @.str10042) + %t0 = call ptr @fn_emit_str_const(ptr @.str10047) store ptr %t0, ptr %t1 - %t2 = call ptr @fn_emit_str_const(ptr @.str10043) + %t2 = call ptr @fn_emit_str_const(ptr @.str10048) store ptr %t2, ptr %t3 store i32 0, ptr %t4 store i32 0, ptr %t5 @@ -101047,12 +101203,12 @@ wend2: %t28 = load i32, ptr %t4 %t29 = call ptr @fn_itoa(i32 %t28) store ptr %t29, ptr %t30 - call void @fn_emit(ptr @.str10044) - call void @fn_emit(ptr @.str10045) + call void @fn_emit(ptr @.str10049) + call void @fn_emit(ptr @.str10050) %t31 = load ptr, ptr %t30 call void @fn_emit(ptr %t31) - call void @fn_emit(ptr @.str10046) - call void @fn_emit(ptr @.str10047) + call void @fn_emit(ptr @.str10051) + call void @fn_emit(ptr @.str10052) store i32 0, ptr %t32 store i32 0, ptr %t5 br label %wcond6 @@ -101092,34 +101248,34 @@ then9: %t61 = load i32, ptr %t32 %t62 = call ptr @fn_itoa(i32 %t61) store ptr %t62, ptr %t63 - call void @fn_emit(ptr @.str10048) + call void @fn_emit(ptr @.str10053) %t64 = load ptr, ptr %t63 call void @fn_emit(ptr %t64) - call void @fn_emit(ptr @.str10049) + call void @fn_emit(ptr @.str10054) %t65 = load ptr, ptr %t63 call void @fn_emit(ptr %t65) - call void @fn_emit(ptr @.str10050) - call void @fn_emit(ptr @.str10051) + call void @fn_emit(ptr @.str10055) + call void @fn_emit(ptr @.str10056) %t66 = load ptr, ptr %t63 call void @fn_emit(ptr %t66) - call void @fn_emit(ptr @.str10052) + call void @fn_emit(ptr @.str10057) %t67 = load ptr, ptr %t63 call void @fn_emit(ptr %t67) - call void @fn_emit(ptr @.str10053) + call void @fn_emit(ptr @.str10058) %t68 = load ptr, ptr %t63 call void @fn_emit(ptr %t68) - call void @fn_emit(ptr @.str10054) - call void @fn_emit(ptr @.str10055) + call void @fn_emit(ptr @.str10059) + call void @fn_emit(ptr @.str10060) %t69 = load ptr, ptr %t63 call void @fn_emit(ptr %t69) - call void @fn_emit(ptr @.str10056) + call void @fn_emit(ptr @.str10061) %t70 = load ptr, ptr %t60 call void @fn_emit(ptr %t70) - call void @fn_emit(ptr @.str10057) - call void @fn_emit(ptr @.str10058) + call void @fn_emit(ptr @.str10062) + call void @fn_emit(ptr @.str10063) %t71 = load ptr, ptr %t63 call void @fn_emit(ptr %t71) - call void @fn_emit(ptr @.str10059) + call void @fn_emit(ptr @.str10064) %t72 = load i32, ptr %t32 %t73 = add i32 %t72, 1 store i32 %t73, ptr %t32 @@ -101130,17 +101286,17 @@ ifend11: store i32 %t75, ptr %t5 br label %wcond6 wend8: - call void @fn_emit(ptr @.str10060) + call void @fn_emit(ptr @.str10065) %t76 = load ptr, ptr %t30 call void @fn_emit(ptr %t76) - call void @fn_emit(ptr @.str10061) - call void @fn_emit(ptr @.str10062) - call void @fn_emit(ptr @.str10063) - call void @fn_emit(ptr @.str10064) + call void @fn_emit(ptr @.str10066) + call void @fn_emit(ptr @.str10067) + call void @fn_emit(ptr @.str10068) + call void @fn_emit(ptr @.str10069) %t77 = load ptr, ptr %t1 call void @fn_emit(ptr %t77) - call void @fn_emit(ptr @.str10065) - call void @fn_emit(ptr @.str10066) + call void @fn_emit(ptr @.str10070) + call void @fn_emit(ptr @.str10071) store i32 0, ptr %t32 store i32 0, ptr %t5 br label %wcond12 @@ -101177,27 +101333,27 @@ then15: %t103 = load i32, ptr %t32 %t104 = call ptr @fn_itoa(i32 %t103) store ptr %t104, ptr %t105 - call void @fn_emit(ptr @.str10067) + call void @fn_emit(ptr @.str10072) %t106 = load ptr, ptr %t105 call void @fn_emit(ptr %t106) - call void @fn_emit(ptr @.str10068) + call void @fn_emit(ptr @.str10073) %t107 = load ptr, ptr %t105 call void @fn_emit(ptr %t107) - call void @fn_emit(ptr @.str10069) - call void @fn_emit(ptr @.str10070) + call void @fn_emit(ptr @.str10074) + call void @fn_emit(ptr @.str10075) %t108 = load ptr, ptr %t105 call void @fn_emit(ptr %t108) - call void @fn_emit(ptr @.str10071) + call void @fn_emit(ptr @.str10076) %t109 = load ptr, ptr %t105 call void @fn_emit(ptr %t109) - call void @fn_emit(ptr @.str10072) + call void @fn_emit(ptr @.str10077) %t110 = load ptr, ptr %t105 call void @fn_emit(ptr %t110) - call void @fn_emit(ptr @.str10073) - call void @fn_emit(ptr @.str10074) + call void @fn_emit(ptr @.str10078) + call void @fn_emit(ptr @.str10079) %t111 = load ptr, ptr %t105 call void @fn_emit(ptr %t111) - call void @fn_emit(ptr @.str10075) + call void @fn_emit(ptr @.str10080) %t112 = load ptr, ptr %t102 %t113 = getelementptr inbounds %Cmp_Node, ptr %t112, i32 0, i32 7 %t114 = load ptr, ptr %t113 @@ -101205,11 +101361,11 @@ then15: %t116 = load i32, ptr %t115 %t117 = call ptr @fn_itoa(i32 %t116) call void @fn_emit(ptr %t117) - call void @fn_emit(ptr @.str10076) - call void @fn_emit(ptr @.str10077) + call void @fn_emit(ptr @.str10081) + call void @fn_emit(ptr @.str10082) %t118 = load ptr, ptr %t105 call void @fn_emit(ptr %t118) - call void @fn_emit(ptr @.str10078) + call void @fn_emit(ptr @.str10083) %t119 = load i32, ptr %t32 %t120 = add i32 %t119, 1 store i32 %t120, ptr %t32 @@ -101220,14 +101376,14 @@ ifend17: store i32 %t122, ptr %t5 br label %wcond12 wend14: - call void @fn_emit(ptr @.str10079) + call void @fn_emit(ptr @.str10084) %t123 = load ptr, ptr %t30 call void @fn_emit(ptr %t123) - call void @fn_emit(ptr @.str10080) - call void @fn_emit(ptr @.str10081) - call void @fn_emit(ptr @.str10082) - call void @fn_emit(ptr @.str10083) - call void @fn_emit(ptr @.str10084) + call void @fn_emit(ptr @.str10085) + call void @fn_emit(ptr @.str10086) + call void @fn_emit(ptr @.str10087) + call void @fn_emit(ptr @.str10088) + call void @fn_emit(ptr @.str10089) store i32 0, ptr %t32 store i32 0, ptr %t5 br label %wcond18 @@ -101264,27 +101420,27 @@ then21: %t149 = load i32, ptr %t32 %t150 = call ptr @fn_itoa(i32 %t149) store ptr %t150, ptr %t151 - call void @fn_emit(ptr @.str10085) + call void @fn_emit(ptr @.str10090) %t152 = load ptr, ptr %t151 call void @fn_emit(ptr %t152) - call void @fn_emit(ptr @.str10086) + call void @fn_emit(ptr @.str10091) %t153 = load ptr, ptr %t151 call void @fn_emit(ptr %t153) - call void @fn_emit(ptr @.str10087) - call void @fn_emit(ptr @.str10088) + call void @fn_emit(ptr @.str10092) + call void @fn_emit(ptr @.str10093) %t154 = load ptr, ptr %t151 call void @fn_emit(ptr %t154) - call void @fn_emit(ptr @.str10089) + call void @fn_emit(ptr @.str10094) %t155 = load ptr, ptr %t151 call void @fn_emit(ptr %t155) - call void @fn_emit(ptr @.str10090) + call void @fn_emit(ptr @.str10095) %t156 = load ptr, ptr %t151 call void @fn_emit(ptr %t156) - call void @fn_emit(ptr @.str10091) - call void @fn_emit(ptr @.str10092) + call void @fn_emit(ptr @.str10096) + call void @fn_emit(ptr @.str10097) %t157 = load ptr, ptr %t151 call void @fn_emit(ptr %t157) - call void @fn_emit(ptr @.str10093) + call void @fn_emit(ptr @.str10098) store i32 0, ptr %t158 br label %wcond24 wcond24: @@ -101312,53 +101468,53 @@ wbody25: %t178 = call ptr @fn_emit_str_const(ptr %t177) store ptr %t178, ptr %t179 %t180 = load ptr, ptr %t151 - %t181 = call ptr @lp_str_concat(ptr %t180, ptr @.str10094) + %t181 = call ptr @lp_str_concat(ptr %t180, ptr @.str10099) %t182 = load i32, ptr %t158 %t183 = call ptr @fn_itoa(i32 %t182) %t184 = call ptr @lp_str_concat(ptr %t181, ptr %t183) store ptr %t184, ptr %t185 - call void @fn_emit(ptr @.str10095) + call void @fn_emit(ptr @.str10100) %t186 = load ptr, ptr %t185 call void @fn_emit(ptr %t186) - call void @fn_emit(ptr @.str10096) + call void @fn_emit(ptr @.str10101) %t187 = load i32, ptr %t158 %t188 = call ptr @fn_itoa(i32 %t187) call void @fn_emit(ptr %t188) - call void @fn_emit(ptr @.str10097) - call void @fn_emit(ptr @.str10098) + call void @fn_emit(ptr @.str10102) + call void @fn_emit(ptr @.str10103) %t189 = load ptr, ptr %t185 call void @fn_emit(ptr %t189) - call void @fn_emit(ptr @.str10099) + call void @fn_emit(ptr @.str10104) %t190 = load ptr, ptr %t185 call void @fn_emit(ptr %t190) - call void @fn_emit(ptr @.str10100) + call void @fn_emit(ptr @.str10105) %t191 = load ptr, ptr %t185 call void @fn_emit(ptr %t191) - call void @fn_emit(ptr @.str10101) - call void @fn_emit(ptr @.str10102) + call void @fn_emit(ptr @.str10106) + call void @fn_emit(ptr @.str10107) %t192 = load ptr, ptr %t185 call void @fn_emit(ptr %t192) - call void @fn_emit(ptr @.str10103) + call void @fn_emit(ptr @.str10108) %t193 = load ptr, ptr %t179 call void @fn_emit(ptr %t193) - call void @fn_emit(ptr @.str10104) - call void @fn_emit(ptr @.str10105) + call void @fn_emit(ptr @.str10109) + call void @fn_emit(ptr @.str10110) %t194 = load ptr, ptr %t185 call void @fn_emit(ptr %t194) - call void @fn_emit(ptr @.str10106) + call void @fn_emit(ptr @.str10111) %t195 = load i32, ptr %t158 %t196 = add i32 %t195, 1 store i32 %t196, ptr %t158 br label %wcond24 wend26: - call void @fn_emit(ptr @.str10107) + call void @fn_emit(ptr @.str10112) %t197 = load ptr, ptr %t1 call void @fn_emit(ptr %t197) - call void @fn_emit(ptr @.str10108) - call void @fn_emit(ptr @.str10109) + call void @fn_emit(ptr @.str10113) + call void @fn_emit(ptr @.str10114) %t198 = load ptr, ptr %t151 call void @fn_emit(ptr %t198) - call void @fn_emit(ptr @.str10110) + call void @fn_emit(ptr @.str10115) %t199 = load i32, ptr %t32 %t200 = add i32 %t199, 1 store i32 %t200, ptr %t32 @@ -101369,11 +101525,11 @@ ifend23: store i32 %t202, ptr %t5 br label %wcond18 wend20: - call void @fn_emit(ptr @.str10111) + call void @fn_emit(ptr @.str10116) %t203 = load ptr, ptr %t1 call void @fn_emit(ptr %t203) - call void @fn_emit(ptr @.str10112) - call void @fn_emit(ptr @.str10113) + call void @fn_emit(ptr @.str10117) + call void @fn_emit(ptr @.str10118) store i32 0, ptr %t32 store i32 0, ptr %t5 br label %wcond27 @@ -101410,27 +101566,27 @@ then30: %t229 = load i32, ptr %t32 %t230 = call ptr @fn_itoa(i32 %t229) store ptr %t230, ptr %t231 - call void @fn_emit(ptr @.str10114) + call void @fn_emit(ptr @.str10119) %t232 = load ptr, ptr %t231 call void @fn_emit(ptr %t232) - call void @fn_emit(ptr @.str10115) + call void @fn_emit(ptr @.str10120) %t233 = load ptr, ptr %t231 call void @fn_emit(ptr %t233) - call void @fn_emit(ptr @.str10116) - call void @fn_emit(ptr @.str10117) + call void @fn_emit(ptr @.str10121) + call void @fn_emit(ptr @.str10122) %t234 = load ptr, ptr %t231 call void @fn_emit(ptr %t234) - call void @fn_emit(ptr @.str10118) + call void @fn_emit(ptr @.str10123) %t235 = load ptr, ptr %t231 call void @fn_emit(ptr %t235) - call void @fn_emit(ptr @.str10119) + call void @fn_emit(ptr @.str10124) %t236 = load ptr, ptr %t231 call void @fn_emit(ptr %t236) - call void @fn_emit(ptr @.str10120) - call void @fn_emit(ptr @.str10121) + call void @fn_emit(ptr @.str10125) + call void @fn_emit(ptr @.str10126) %t237 = load ptr, ptr %t231 call void @fn_emit(ptr %t237) - call void @fn_emit(ptr @.str10122) + call void @fn_emit(ptr @.str10127) store i32 0, ptr %t238 br label %wcond33 wcond33: @@ -101458,53 +101614,53 @@ wbody34: %t258 = call ptr @fn_emit_str_const(ptr %t257) store ptr %t258, ptr %t259 %t260 = load ptr, ptr %t231 - %t261 = call ptr @lp_str_concat(ptr %t260, ptr @.str10123) + %t261 = call ptr @lp_str_concat(ptr %t260, ptr @.str10128) %t262 = load i32, ptr %t238 %t263 = call ptr @fn_itoa(i32 %t262) %t264 = call ptr @lp_str_concat(ptr %t261, ptr %t263) store ptr %t264, ptr %t265 - call void @fn_emit(ptr @.str10124) + call void @fn_emit(ptr @.str10129) %t266 = load ptr, ptr %t265 call void @fn_emit(ptr %t266) - call void @fn_emit(ptr @.str10125) + call void @fn_emit(ptr @.str10130) %t267 = load i32, ptr %t238 %t268 = call ptr @fn_itoa(i32 %t267) call void @fn_emit(ptr %t268) - call void @fn_emit(ptr @.str10126) - call void @fn_emit(ptr @.str10127) + call void @fn_emit(ptr @.str10131) + call void @fn_emit(ptr @.str10132) %t269 = load ptr, ptr %t265 call void @fn_emit(ptr %t269) - call void @fn_emit(ptr @.str10128) + call void @fn_emit(ptr @.str10133) %t270 = load ptr, ptr %t265 call void @fn_emit(ptr %t270) - call void @fn_emit(ptr @.str10129) + call void @fn_emit(ptr @.str10134) %t271 = load ptr, ptr %t265 call void @fn_emit(ptr %t271) - call void @fn_emit(ptr @.str10130) - call void @fn_emit(ptr @.str10131) + call void @fn_emit(ptr @.str10135) + call void @fn_emit(ptr @.str10136) %t272 = load ptr, ptr %t265 call void @fn_emit(ptr %t272) - call void @fn_emit(ptr @.str10132) + call void @fn_emit(ptr @.str10137) %t273 = load ptr, ptr %t259 call void @fn_emit(ptr %t273) - call void @fn_emit(ptr @.str10133) - call void @fn_emit(ptr @.str10134) + call void @fn_emit(ptr @.str10138) + call void @fn_emit(ptr @.str10139) %t274 = load ptr, ptr %t265 call void @fn_emit(ptr %t274) - call void @fn_emit(ptr @.str10135) + call void @fn_emit(ptr @.str10140) %t275 = load i32, ptr %t238 %t276 = add i32 %t275, 1 store i32 %t276, ptr %t238 br label %wcond33 wend35: - call void @fn_emit(ptr @.str10136) + call void @fn_emit(ptr @.str10141) %t277 = load ptr, ptr %t3 call void @fn_emit(ptr %t277) - call void @fn_emit(ptr @.str10137) - call void @fn_emit(ptr @.str10138) + call void @fn_emit(ptr @.str10142) + call void @fn_emit(ptr @.str10143) %t278 = load ptr, ptr %t231 call void @fn_emit(ptr %t278) - call void @fn_emit(ptr @.str10139) + call void @fn_emit(ptr @.str10144) %t279 = load i32, ptr %t32 %t280 = add i32 %t279, 1 store i32 %t280, ptr %t32 @@ -101515,10 +101671,10 @@ ifend32: store i32 %t282, ptr %t5 br label %wcond27 wend29: - call void @fn_emit(ptr @.str10140) + call void @fn_emit(ptr @.str10145) %t283 = load ptr, ptr %t3 call void @fn_emit(ptr %t283) - call void @fn_emit(ptr @.str10141) + call void @fn_emit(ptr @.str10146) br label %ret ret: ret void @@ -101526,20 +101682,20 @@ ret: define void @fn_emit_tick_helpers() { entry: - call void @fn_emit(ptr @.str10142) - store i32 0, ptr @g_ll_t - store i32 0, ptr @g_ll_lbl - call void @fn_emit_calls_for_phase(ptr @.str10143) - call void @fn_emit_calls_for_phase(ptr @.str10144) - call void @fn_emit_calls_for_phase(ptr @.str10145) - call void @fn_emit_calls_for_phase(ptr @.str10146) call void @fn_emit(ptr @.str10147) - call void @fn_emit(ptr @.str10148) store i32 0, ptr @g_ll_t store i32 0, ptr @g_ll_lbl + call void @fn_emit_calls_for_phase(ptr @.str10148) call void @fn_emit_calls_for_phase(ptr @.str10149) call void @fn_emit_calls_for_phase(ptr @.str10150) - call void @fn_emit(ptr @.str10151) + call void @fn_emit_calls_for_phase(ptr @.str10151) + call void @fn_emit(ptr @.str10152) + call void @fn_emit(ptr @.str10153) + store i32 0, ptr @g_ll_t + store i32 0, ptr @g_ll_lbl + call void @fn_emit_calls_for_phase(ptr @.str10154) + call void @fn_emit_calls_for_phase(ptr @.str10155) + call void @fn_emit(ptr @.str10156) br label %ret ret: ret void @@ -101629,20 +101785,20 @@ entry: %t137 = alloca ptr %t142 = alloca ptr call void @fn_emit_game_defs() - call void @fn_emit(ptr @.str10152) - call void @fn_emit(ptr @.str10153) - call void @fn_emit(ptr @.str10154) - %t0 = call ptr @fn_find_fn(ptr @.str10155) + call void @fn_emit(ptr @.str10157) + call void @fn_emit(ptr @.str10158) + call void @fn_emit(ptr @.str10159) + %t0 = call ptr @fn_find_fn(ptr @.str10160) %t1 = icmp ne ptr %t0, null %t2 = zext i1 %t1 to i32 %t3 = icmp ne i32 %t2, 0 br i1 %t3, label %then0, label %ifend2 then0: - call void @fn_emit(ptr @.str10156) + call void @fn_emit(ptr @.str10161) br label %ifend2 ifend2: - call void @fn_emit(ptr @.str10157) - call void @fn_emit_calls_for_phase(ptr @.str10158) + call void @fn_emit(ptr @.str10162) + call void @fn_emit_calls_for_phase(ptr @.str10163) %t4 = load ptr, ptr @g_g_scenes %t5 = getelementptr inbounds %LSlice, ptr %t4, i32 0, i32 1 %t6 = load i32, ptr %t5 @@ -101651,11 +101807,11 @@ ifend2: %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then3, label %ifend5 then3: - call void @fn_emit(ptr @.str10159) + call void @fn_emit(ptr @.str10164) %t10 = load i32, ptr @g_g_start_scene %t11 = call ptr @fn_itoa(i32 %t10) call void @fn_emit(ptr %t11) - call void @fn_emit(ptr @.str10160) + call void @fn_emit(ptr @.str10165) store i32 0, ptr %t12 br label %wcond6 wcond6: @@ -101682,7 +101838,7 @@ wbody7: %t31 = icmp ne i32 %t30, 0 br i1 %t31, label %then9, label %ifend11 then9: - call void @fn_emit(ptr @.str10161) + call void @fn_emit(ptr @.str10166) %t32 = load ptr, ptr @g_g_scenes %t33 = getelementptr inbounds %LSlice, ptr %t32, i32 0, i32 0 %t34 = load ptr, ptr %t33 @@ -101692,7 +101848,7 @@ then9: %t38 = getelementptr inbounds %Cmp_Node, ptr %t37, i32 0, i32 1 %t39 = load ptr, ptr %t38 call void @fn_emit(ptr %t39) - call void @fn_emit(ptr @.str10162) + call void @fn_emit(ptr @.str10167) br label %ifend11 ifend11: %t40 = load i32, ptr %t12 @@ -101702,64 +101858,64 @@ ifend11: wend8: br label %ifend5 ifend5: - %t42 = call ptr @fn_find_event(ptr @.str10163) + %t42 = call ptr @fn_find_event(ptr @.str10168) %t43 = icmp ne ptr %t42, null %t44 = zext i1 %t43 to i32 %t45 = icmp ne i32 %t44, 0 br i1 %t45, label %then12, label %ifend14 then12: - call void @fn_emit(ptr @.str10164) + call void @fn_emit(ptr @.str10169) br label %ifend14 ifend14: - call void @fn_emit(ptr @.str10165) - call void @fn_emit(ptr @.str10166) - %t46 = call ptr @fn_emit_bind(ptr @.str10167) + call void @fn_emit(ptr @.str10170) + call void @fn_emit(ptr @.str10171) + %t46 = call ptr @fn_emit_bind(ptr @.str10172) store ptr %t46, ptr %t47 %t48 = load ptr, ptr %t47 - %t49 = call ptr @lp_str_concat(ptr @.str10168, ptr %t48) - %t50 = call ptr @lp_str_concat(ptr %t49, ptr @.str10169) + %t49 = call ptr @lp_str_concat(ptr @.str10173, ptr %t48) + %t50 = call ptr @lp_str_concat(ptr %t49, ptr @.str10174) %t51 = call ptr @fn_emit_bind(ptr %t50) store ptr %t51, ptr %t52 - %t53 = call ptr @fn_find_fn(ptr @.str10170) + %t53 = call ptr @fn_find_fn(ptr @.str10175) %t54 = icmp ne ptr %t53, null %t55 = zext i1 %t54 to i32 %t56 = icmp ne i32 %t55, 0 br i1 %t56, label %then15, label %else16 then15: - %t57 = call ptr @fn_emit_bind(ptr @.str10171) + %t57 = call ptr @fn_emit_bind(ptr @.str10176) store ptr %t57, ptr %t58 %t59 = load ptr, ptr %t58 - %t60 = call ptr @lp_str_concat(ptr @.str10172, ptr %t59) - %t61 = call ptr @lp_str_concat(ptr %t60, ptr @.str10173) + %t60 = call ptr @lp_str_concat(ptr @.str10177, ptr %t59) + %t61 = call ptr @lp_str_concat(ptr %t60, ptr @.str10178) %t62 = call ptr @fn_emit_bind(ptr %t61) store ptr %t62, ptr %t63 %t64 = load ptr, ptr %t52 - %t65 = call ptr @lp_str_concat(ptr @.str10174, ptr %t64) - %t66 = call ptr @lp_str_concat(ptr %t65, ptr @.str10175) + %t65 = call ptr @lp_str_concat(ptr @.str10179, ptr %t64) + %t66 = call ptr @lp_str_concat(ptr %t65, ptr @.str10180) %t67 = load ptr, ptr %t63 %t68 = call ptr @lp_str_concat(ptr %t66, ptr %t67) %t69 = call ptr @fn_emit_bind(ptr %t68) store ptr %t69, ptr %t70 - call void @fn_emit(ptr @.str10176) + call void @fn_emit(ptr @.str10181) %t71 = load ptr, ptr %t70 call void @fn_emit(ptr %t71) - call void @fn_emit(ptr @.str10177) + call void @fn_emit(ptr @.str10182) br label %ifend17 else16: - call void @fn_emit(ptr @.str10178) + call void @fn_emit(ptr @.str10183) %t72 = load ptr, ptr %t52 call void @fn_emit(ptr %t72) - call void @fn_emit(ptr @.str10179) + call void @fn_emit(ptr @.str10184) br label %ifend17 ifend17: - call void @fn_emit(ptr @.str10180) + call void @fn_emit(ptr @.str10185) %t74 = load i32, ptr @g_g_uses_input %t75 = icmp ne i32 %t74, 0 %t76 = zext i1 %t75 to i32 store i32 %t76, ptr %t73 br i1 %t75, label %sc18, label %scend19 sc18: - %t77 = call ptr @fn_find_fn(ptr @.str10181) + %t77 = call ptr @fn_find_fn(ptr @.str10186) %t78 = icmp ne ptr %t77, null %t79 = zext i1 %t78 to i32 %t80 = icmp ne i32 %t79, 0 @@ -101771,26 +101927,26 @@ scend19: %t83 = icmp ne i32 %t82, 0 br i1 %t83, label %then20, label %else21 then20: - %t84 = call ptr @fn_emit_bind(ptr @.str10182) + %t84 = call ptr @fn_emit_bind(ptr @.str10187) store ptr %t84, ptr %t85 - call void @fn_emit(ptr @.str10183) + call void @fn_emit(ptr @.str10188) %t86 = load ptr, ptr %t85 call void @fn_emit(ptr %t86) - call void @fn_emit(ptr @.str10184) + call void @fn_emit(ptr @.str10189) br label %ifend22 else21: - %t87 = call ptr @fn_find_fn(ptr @.str10185) + %t87 = call ptr @fn_find_fn(ptr @.str10190) %t88 = icmp ne ptr %t87, null %t89 = zext i1 %t88 to i32 %t90 = icmp ne i32 %t89, 0 br i1 %t90, label %then23, label %ifend25 then23: - %t91 = call ptr @fn_emit_bind(ptr @.str10186) + %t91 = call ptr @fn_emit_bind(ptr @.str10191) store ptr %t91, ptr %t92 - call void @fn_emit(ptr @.str10187) + call void @fn_emit(ptr @.str10192) %t93 = load ptr, ptr %t92 call void @fn_emit(ptr %t93) - call void @fn_emit(ptr @.str10188) + call void @fn_emit(ptr @.str10193) br label %ifend25 ifend25: br label %ifend22 @@ -101801,7 +101957,7 @@ ifend22: store i32 %t97, ptr %t94 br i1 %t96, label %sc26, label %scend27 sc26: - %t98 = call ptr @fn_find_fn(ptr @.str10189) + %t98 = call ptr @fn_find_fn(ptr @.str10194) %t99 = icmp ne ptr %t98, null %t100 = zext i1 %t99 to i32 %t101 = icmp ne i32 %t100, 0 @@ -101813,25 +101969,25 @@ scend27: %t104 = icmp ne i32 %t103, 0 br i1 %t104, label %then28, label %ifend30 then28: - %t105 = call ptr @fn_emit_bind(ptr @.str10190) + %t105 = call ptr @fn_emit_bind(ptr @.str10195) store ptr %t105, ptr %t106 - call void @fn_emit(ptr @.str10191) + call void @fn_emit(ptr @.str10196) %t107 = load ptr, ptr %t106 call void @fn_emit(ptr %t107) - call void @fn_emit(ptr @.str10192) + call void @fn_emit(ptr @.str10197) br label %ifend30 ifend30: - call void @fn_emit_calls_for_phase(ptr @.str10193) - call void @fn_emit_calls_for_phase(ptr @.str10194) - call void @fn_emit_calls_for_phase(ptr @.str10195) - call void @fn_emit_calls_for_phase(ptr @.str10196) + call void @fn_emit_calls_for_phase(ptr @.str10198) + call void @fn_emit_calls_for_phase(ptr @.str10199) + call void @fn_emit_calls_for_phase(ptr @.str10200) + call void @fn_emit_calls_for_phase(ptr @.str10201) %t109 = load i32, ptr @g_g_has_clear_color %t110 = icmp ne i32 %t109, 0 %t111 = zext i1 %t110 to i32 store i32 %t111, ptr %t108 br i1 %t110, label %sc31, label %scend32 sc31: - %t112 = call ptr @fn_find_fn(ptr @.str10197) + %t112 = call ptr @fn_find_fn(ptr @.str10202) %t113 = icmp ne ptr %t112, null %t114 = zext i1 %t113 to i32 %t115 = icmp ne i32 %t114, 0 @@ -101846,23 +102002,23 @@ then33: %t119 = load ptr, ptr @g_g_clear_color %t120 = call ptr @fn_emit_expr(ptr %t119) store ptr %t120, ptr %t121 - call void @fn_emit(ptr @.str10198) + call void @fn_emit(ptr @.str10203) %t122 = load ptr, ptr %t121 %t123 = getelementptr inbounds %Cmp_Val, ptr %t122, i32 0, i32 0 %t124 = load ptr, ptr %t123 call void @fn_emit(ptr %t124) - call void @fn_emit(ptr @.str10199) + call void @fn_emit(ptr @.str10204) br label %ifend35 ifend35: - call void @fn_emit_calls_for_phase(ptr @.str10200) - call void @fn_emit_calls_for_phase(ptr @.str10201) + call void @fn_emit_calls_for_phase(ptr @.str10205) + call void @fn_emit_calls_for_phase(ptr @.str10206) %t126 = load i32, ptr @g_g_has_clear_color %t127 = icmp ne i32 %t126, 0 %t128 = zext i1 %t127 to i32 store i32 %t128, ptr %t125 br i1 %t127, label %sc36, label %scend37 sc36: - %t129 = call ptr @fn_find_fn(ptr @.str10202) + %t129 = call ptr @fn_find_fn(ptr @.str10207) %t130 = icmp ne ptr %t129, null %t131 = zext i1 %t130 to i32 %t132 = icmp ne i32 %t131, 0 @@ -101874,22 +102030,22 @@ scend37: %t135 = icmp ne i32 %t134, 0 br i1 %t135, label %then38, label %ifend40 then38: - call void @fn_emit(ptr @.str10203) + call void @fn_emit(ptr @.str10208) br label %ifend40 ifend40: - %t136 = call ptr @fn_emit_bind(ptr @.str10204) + %t136 = call ptr @fn_emit_bind(ptr @.str10209) store ptr %t136, ptr %t137 %t138 = load ptr, ptr %t137 - %t139 = call ptr @lp_str_concat(ptr @.str10205, ptr %t138) - %t140 = call ptr @lp_str_concat(ptr %t139, ptr @.str10206) + %t139 = call ptr @lp_str_concat(ptr @.str10210, ptr %t138) + %t140 = call ptr @lp_str_concat(ptr %t139, ptr @.str10211) %t141 = call ptr @fn_emit_bind(ptr %t140) store ptr %t141, ptr %t142 - call void @fn_emit(ptr @.str10207) + call void @fn_emit(ptr @.str10212) %t143 = load ptr, ptr %t142 call void @fn_emit(ptr %t143) - call void @fn_emit(ptr @.str10208) - call void @fn_emit(ptr @.str10209) - call void @fn_emit(ptr @.str10210) + call void @fn_emit(ptr @.str10213) + call void @fn_emit(ptr @.str10214) + call void @fn_emit(ptr @.str10215) %t144 = load ptr, ptr @g_g_ondespawn %t145 = getelementptr inbounds %LSlice, ptr %t144, i32 0, i32 1 %t146 = load i32, ptr %t145 @@ -101898,29 +102054,29 @@ ifend40: %t149 = icmp ne i32 %t148, 0 br i1 %t149, label %then41, label %ifend43 then41: - call void @fn_emit(ptr @.str10211) + call void @fn_emit(ptr @.str10216) br label %ifend43 ifend43: - call void @fn_emit_calls_for_phase(ptr @.str10212) - %t150 = call ptr @fn_find_event(ptr @.str10213) + call void @fn_emit_calls_for_phase(ptr @.str10217) + %t150 = call ptr @fn_find_event(ptr @.str10218) %t151 = icmp ne ptr %t150, null %t152 = zext i1 %t151 to i32 %t153 = icmp ne i32 %t152, 0 br i1 %t153, label %then44, label %ifend46 then44: - call void @fn_emit(ptr @.str10214) + call void @fn_emit(ptr @.str10219) br label %ifend46 ifend46: - %t154 = call ptr @fn_find_fn(ptr @.str10215) + %t154 = call ptr @fn_find_fn(ptr @.str10220) %t155 = icmp ne ptr %t154, null %t156 = zext i1 %t155 to i32 %t157 = icmp ne i32 %t156, 0 br i1 %t157, label %then47, label %ifend49 then47: - call void @fn_emit(ptr @.str10216) + call void @fn_emit(ptr @.str10221) br label %ifend49 ifend49: - call void @fn_emit(ptr @.str10217) + call void @fn_emit(ptr @.str10222) br label %ret ret: ret void @@ -102050,8 +102206,8 @@ then12: %t50 = load ptr, ptr %t1 %t51 = getelementptr inbounds %Cmp_Node, ptr %t50, i32 0, i32 1 %t52 = load ptr, ptr %t51 - %t53 = call ptr @lp_str_concat(ptr @.str10218, ptr %t52) - %t54 = call ptr @lp_str_concat(ptr %t53, ptr @.str10219) + %t53 = call ptr @lp_str_concat(ptr @.str10223, ptr %t52) + %t54 = call ptr @lp_str_concat(ptr %t53, ptr @.str10224) %t55 = load ptr, ptr %t18 %t56 = getelementptr inbounds %Cmp_Node, ptr %t55, i32 0, i32 3 %t57 = load ptr, ptr %t56 @@ -102093,7 +102249,7 @@ entry: %t3 = load ptr, ptr %t2 %t4 = call ptr @fn_machine_var(ptr %t3) store ptr %t4, ptr %t5 - store ptr @.str10220, ptr %t6 + store ptr @.str10225, ptr %t6 %t7 = load ptr, ptr %t5 %t8 = icmp ne ptr %t7, null %t9 = zext i1 %t8 to i32 @@ -102105,7 +102261,7 @@ then0: %t13 = load ptr, ptr %t12 %t14 = getelementptr inbounds %Cmp_Node, ptr %t13, i32 0, i32 1 %t15 = load ptr, ptr %t14 - %t16 = call ptr @lp_str_concat(ptr @.str10221, ptr %t15) + %t16 = call ptr @lp_str_concat(ptr @.str10226, ptr %t15) %t17 = call ptr @fn_emit_bind(ptr %t16) store ptr %t17, ptr %t6 br label %ifend2 @@ -102118,8 +102274,8 @@ else1: %t23 = load ptr, ptr %t22 %t24 = getelementptr inbounds %Cmp_Val, ptr %t23, i32 0, i32 0 %t25 = load ptr, ptr %t24 - %t26 = call ptr @lp_str_concat(ptr @.str10222, ptr %t25) - %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str10223) + %t26 = call ptr @lp_str_concat(ptr @.str10227, ptr %t25) + %t27 = call ptr @lp_str_concat(ptr %t26, ptr @.str10228) %t28 = call ptr @fn_emit_bind(ptr %t27) store ptr %t28, ptr %t6 br label %ifend2 @@ -102175,7 +102331,7 @@ ifend5: %t62 = load i32, ptr @g_nmach %t63 = add i32 %t62, 1 store i32 %t63, ptr @g_nmach - %t64 = call ptr @fn_lbl(ptr @.str10224) + %t64 = call ptr @fn_lbl(ptr @.str10229) store ptr %t64, ptr %t65 store i32 0, ptr %t66 br label %wcond8 @@ -102205,29 +102361,29 @@ wbody9: %t87 = call ptr @fn_machine_state_value(ptr %t85, ptr %t86) store ptr %t87, ptr %t88 %t89 = load ptr, ptr %t6 - %t90 = call ptr @lp_str_concat(ptr @.str10225, ptr %t89) - %t91 = call ptr @lp_str_concat(ptr %t90, ptr @.str10226) + %t90 = call ptr @lp_str_concat(ptr @.str10230, ptr %t89) + %t91 = call ptr @lp_str_concat(ptr %t90, ptr @.str10231) %t92 = load ptr, ptr %t88 %t93 = call ptr @lp_str_concat(ptr %t91, ptr %t92) %t94 = call ptr @fn_emit_bind(ptr %t93) store ptr %t94, ptr %t95 - %t96 = call ptr @fn_lbl(ptr @.str10227) + %t96 = call ptr @fn_lbl(ptr @.str10232) store ptr %t96, ptr %t97 - %t98 = call ptr @fn_lbl(ptr @.str10228) + %t98 = call ptr @fn_lbl(ptr @.str10233) store ptr %t98, ptr %t99 - call void @fn_emit(ptr @.str10229) + call void @fn_emit(ptr @.str10234) %t100 = load ptr, ptr %t95 call void @fn_emit(ptr %t100) - call void @fn_emit(ptr @.str10230) + call void @fn_emit(ptr @.str10235) %t101 = load ptr, ptr %t97 call void @fn_emit(ptr %t101) - call void @fn_emit(ptr @.str10231) + call void @fn_emit(ptr @.str10236) %t102 = load ptr, ptr %t99 call void @fn_emit(ptr %t102) - call void @fn_emit(ptr @.str10232) + call void @fn_emit(ptr @.str10237) %t103 = load ptr, ptr %t97 call void @fn_emit(ptr %t103) - call void @fn_emit(ptr @.str10233) + call void @fn_emit(ptr @.str10238) store i32 0, ptr @g_g_term %t104 = load ptr, ptr %t84 %t105 = getelementptr inbounds %Cmp_Node, ptr %t104, i32 0, i32 4 @@ -102239,15 +102395,15 @@ wbody9: %t110 = icmp ne i32 %t109, 0 br i1 %t110, label %then11, label %ifend13 then11: - call void @fn_emit(ptr @.str10234) + call void @fn_emit(ptr @.str10239) %t111 = load ptr, ptr %t65 call void @fn_emit(ptr %t111) - call void @fn_emit(ptr @.str10235) + call void @fn_emit(ptr @.str10240) br label %ifend13 ifend13: %t112 = load ptr, ptr %t99 call void @fn_emit(ptr %t112) - call void @fn_emit(ptr @.str10236) + call void @fn_emit(ptr @.str10241) store i32 0, ptr @g_g_term %t113 = load i32, ptr %t66 %t114 = add i32 %t113, 1 @@ -102260,15 +102416,15 @@ wend10: %t118 = icmp ne i32 %t117, 0 br i1 %t118, label %then14, label %ifend16 then14: - call void @fn_emit(ptr @.str10237) + call void @fn_emit(ptr @.str10242) %t119 = load ptr, ptr %t65 call void @fn_emit(ptr %t119) - call void @fn_emit(ptr @.str10238) + call void @fn_emit(ptr @.str10243) br label %ifend16 ifend16: %t120 = load ptr, ptr %t65 call void @fn_emit(ptr %t120) - call void @fn_emit(ptr @.str10239) + call void @fn_emit(ptr @.str10244) store i32 0, ptr @g_g_term %t121 = load i32, ptr @g_nmach %t122 = sub i32 %t121, 1 @@ -102372,17 +102528,17 @@ then9: %t65 = icmp ne i32 %t64, 0 br i1 %t65, label %then12, label %else13 then12: - call void @fn_emit(ptr @.str10240) + call void @fn_emit(ptr @.str10245) %t66 = load ptr, ptr %t61 call void @fn_emit(ptr %t66) - call void @fn_emit(ptr @.str10241) + call void @fn_emit(ptr @.str10246) %t67 = load ptr, ptr %t12 %t68 = getelementptr inbounds %Cmp_Node, ptr %t67, i32 0, i32 4 %t69 = load ptr, ptr %t68 %t70 = getelementptr inbounds %Cmp_Node, ptr %t69, i32 0, i32 1 %t71 = load ptr, ptr %t70 call void @fn_emit(ptr %t71) - call void @fn_emit(ptr @.str10242) + call void @fn_emit(ptr @.str10247) br label %ifend14 else13: %t72 = load ptr, ptr %t12 @@ -102390,15 +102546,15 @@ else13: %t74 = load ptr, ptr %t73 %t75 = call ptr @fn_emit_expr(ptr %t74) store ptr %t75, ptr %t76 - call void @fn_emit(ptr @.str10243) + call void @fn_emit(ptr @.str10248) %t77 = load ptr, ptr %t76 %t78 = getelementptr inbounds %Cmp_Val, ptr %t77, i32 0, i32 0 %t79 = load ptr, ptr %t78 call void @fn_emit(ptr %t79) - call void @fn_emit(ptr @.str10244) + call void @fn_emit(ptr @.str10249) %t80 = load ptr, ptr %t61 call void @fn_emit(ptr %t80) - call void @fn_emit(ptr @.str10245) + call void @fn_emit(ptr @.str10250) br label %ifend14 ifend14: br label %ret @@ -102419,7 +102575,7 @@ then15: %t90 = load ptr, ptr %t0 %t91 = getelementptr inbounds %Cmp_Node, ptr %t90, i32 0, i32 1 %t92 = load ptr, ptr %t91 - %t93 = call ptr @lp_str_concat(ptr @.str10246, ptr %t92) + %t93 = call ptr @lp_str_concat(ptr @.str10251, ptr %t92) call void @fn_perr(ptr %t93) br label %ifend17 ifend17: @@ -102429,30 +102585,30 @@ ifend17: %t97 = icmp ne i32 %t96, 0 br i1 %t97, label %then18, label %else19 then18: - call void @fn_emit(ptr @.str10247) + call void @fn_emit(ptr @.str10252) %t98 = load ptr, ptr @g_g_cur_scene %t99 = getelementptr inbounds %Cmp_Node, ptr %t98, i32 0, i32 1 %t100 = load ptr, ptr %t99 call void @fn_emit(ptr %t100) - call void @fn_emit(ptr @.str10248) + call void @fn_emit(ptr @.str10253) br label %ifend20 else19: - call void @fn_emit(ptr @.str10249) + call void @fn_emit(ptr @.str10254) br label %ifend20 ifend20: - call void @fn_emit(ptr @.str10250) + call void @fn_emit(ptr @.str10255) %t101 = load ptr, ptr %t85 %t102 = getelementptr inbounds %Cmp_Node, ptr %t101, i32 0, i32 2 %t103 = load i32, ptr %t102 %t104 = call ptr @fn_itoa(i32 %t103) call void @fn_emit(ptr %t104) - call void @fn_emit(ptr @.str10251) - call void @fn_emit(ptr @.str10252) + call void @fn_emit(ptr @.str10256) + call void @fn_emit(ptr @.str10257) %t105 = load ptr, ptr %t85 %t106 = getelementptr inbounds %Cmp_Node, ptr %t105, i32 0, i32 1 %t107 = load ptr, ptr %t106 call void @fn_emit(ptr %t107) - call void @fn_emit(ptr @.str10253) + call void @fn_emit(ptr @.str10258) br label %ret ret: ret void @@ -102471,51 +102627,51 @@ entry: store ptr %arg_p, ptr %t1 store ptr %arg_bytes, ptr %t2 %t3 = load ptr, ptr @g_g_snap_mode - %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str10254) + %t4 = call i32 @lp_str_eq(ptr %t3, ptr @.str10259) %t5 = icmp ne i32 %t4, 0 br i1 %t5, label %then0, label %ifend2 then0: %t6 = load i32, ptr @g_g_iok %t7 = call ptr @fn_itoa(i32 %t6) - %t8 = call ptr @lp_str_concat(ptr @.str10255, ptr %t7) + %t8 = call ptr @lp_str_concat(ptr @.str10260, ptr %t7) store ptr %t8, ptr %t9 %t10 = load i32, ptr @g_g_iok %t11 = add i32 %t10, 1 store i32 %t11, ptr @g_g_iok - call void @fn_emit(ptr @.str10256) + call void @fn_emit(ptr @.str10261) %t12 = load ptr, ptr %t9 call void @fn_emit(ptr %t12) - call void @fn_emit(ptr @.str10257) + call void @fn_emit(ptr @.str10262) %t13 = load ptr, ptr %t0 call void @fn_emit(ptr %t13) - call void @fn_emit(ptr @.str10258) + call void @fn_emit(ptr @.str10263) %t14 = load ptr, ptr %t1 call void @fn_emit(ptr %t14) - call void @fn_emit(ptr @.str10259) + call void @fn_emit(ptr @.str10264) %t15 = load ptr, ptr %t2 call void @fn_emit(ptr %t15) - call void @fn_emit(ptr @.str10260) + call void @fn_emit(ptr @.str10265) br label %ret ifend2: %t16 = load ptr, ptr @g_g_snap_mode - %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str10261) + %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str10266) %t18 = icmp ne i32 %t17, 0 br i1 %t18, label %then3, label %ifend5 then3: %t19 = load i32, ptr @g_g_iok %t20 = call ptr @fn_itoa(i32 %t19) - %t21 = call ptr @lp_str_concat(ptr @.str10262, ptr %t20) + %t21 = call ptr @lp_str_concat(ptr @.str10267, ptr %t20) store ptr %t21, ptr %t22 - call void @fn_emit(ptr @.str10263) + call void @fn_emit(ptr @.str10268) %t23 = load ptr, ptr %t22 call void @fn_emit(ptr %t23) - call void @fn_emit(ptr @.str10264) + call void @fn_emit(ptr @.str10269) %t24 = load ptr, ptr @g_g_off call void @fn_emit(ptr %t24) - call void @fn_emit(ptr @.str10265) + call void @fn_emit(ptr @.str10270) %t25 = load ptr, ptr %t2 call void @fn_emit(ptr %t25) - call void @fn_emit(ptr @.str10266) + call void @fn_emit(ptr @.str10271) %t26 = load ptr, ptr %t22 store ptr %t26, ptr @g_g_off %t27 = load i32, ptr @g_g_iok @@ -102525,58 +102681,58 @@ then3: ifend5: %t29 = load i32, ptr @g_g_iok %t30 = call ptr @fn_itoa(i32 %t29) - %t31 = call ptr @lp_str_concat(ptr @.str10267, ptr %t30) + %t31 = call ptr @lp_str_concat(ptr @.str10272, ptr %t30) store ptr %t31, ptr %t32 - call void @fn_emit(ptr @.str10268) + call void @fn_emit(ptr @.str10273) %t33 = load ptr, ptr %t32 call void @fn_emit(ptr %t33) - call void @fn_emit(ptr @.str10269) + call void @fn_emit(ptr @.str10274) %t34 = load ptr, ptr @g_g_off call void @fn_emit(ptr %t34) - call void @fn_emit(ptr @.str10270) + call void @fn_emit(ptr @.str10275) %t35 = load ptr, ptr @g_g_snap_mode - %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str10271) + %t36 = call i32 @lp_str_eq(ptr %t35, ptr @.str10276) %t37 = icmp ne i32 %t36, 0 br i1 %t37, label %then6, label %else7 then6: - call void @fn_emit(ptr @.str10272) + call void @fn_emit(ptr @.str10277) %t38 = load ptr, ptr %t32 call void @fn_emit(ptr %t38) - call void @fn_emit(ptr @.str10273) + call void @fn_emit(ptr @.str10278) %t39 = load ptr, ptr %t1 call void @fn_emit(ptr %t39) - call void @fn_emit(ptr @.str10274) + call void @fn_emit(ptr @.str10279) %t40 = load ptr, ptr %t2 call void @fn_emit(ptr %t40) - call void @fn_emit(ptr @.str10275) + call void @fn_emit(ptr @.str10280) br label %ifend8 else7: - call void @fn_emit(ptr @.str10276) + call void @fn_emit(ptr @.str10281) %t41 = load ptr, ptr %t1 call void @fn_emit(ptr %t41) - call void @fn_emit(ptr @.str10277) + call void @fn_emit(ptr @.str10282) %t42 = load ptr, ptr %t32 call void @fn_emit(ptr %t42) - call void @fn_emit(ptr @.str10278) + call void @fn_emit(ptr @.str10283) %t43 = load ptr, ptr %t2 call void @fn_emit(ptr %t43) - call void @fn_emit(ptr @.str10279) + call void @fn_emit(ptr @.str10284) br label %ifend8 ifend8: %t44 = load i32, ptr @g_g_iok %t45 = call ptr @fn_itoa(i32 %t44) - %t46 = call ptr @lp_str_concat(ptr @.str10280, ptr %t45) + %t46 = call ptr @lp_str_concat(ptr @.str10285, ptr %t45) store ptr %t46, ptr %t47 - call void @fn_emit(ptr @.str10281) + call void @fn_emit(ptr @.str10286) %t48 = load ptr, ptr %t47 call void @fn_emit(ptr %t48) - call void @fn_emit(ptr @.str10282) + call void @fn_emit(ptr @.str10287) %t49 = load ptr, ptr @g_g_off call void @fn_emit(ptr %t49) - call void @fn_emit(ptr @.str10283) + call void @fn_emit(ptr @.str10288) %t50 = load ptr, ptr %t2 call void @fn_emit(ptr %t50) - call void @fn_emit(ptr @.str10284) + call void @fn_emit(ptr @.str10289) %t51 = load ptr, ptr %t47 store ptr %t51, ptr @g_g_off %t52 = load i32, ptr @g_g_iok @@ -102597,29 +102753,29 @@ entry: %t74 = alloca ptr store ptr %arg_fn2, ptr %t0 store i32 0, ptr @g_g_iok - store ptr @.str10285, ptr @g_g_off + store ptr @.str10290, ptr @g_g_off %t1 = call ptr @fn_itoa(i32 1024) store ptr %t1, ptr %t2 %t3 = load ptr, ptr %t0 - call void @fn_emit_io(ptr %t3, ptr @.str10286, ptr @.str10287) + call void @fn_emit_io(ptr %t3, ptr @.str10291, ptr @.str10292) %t4 = load ptr, ptr %t0 - call void @fn_emit_io(ptr %t4, ptr @.str10288, ptr @.str10289) - call void @fn_emit(ptr @.str10290) + call void @fn_emit_io(ptr %t4, ptr @.str10293, ptr @.str10294) + call void @fn_emit(ptr @.str10295) %t5 = load ptr, ptr %t2 call void @fn_emit(ptr %t5) - call void @fn_emit(ptr @.str10291) + call void @fn_emit(ptr @.str10296) %t6 = load ptr, ptr %t0 - call void @fn_emit_io(ptr %t6, ptr @.str10292, ptr @.str10293) + call void @fn_emit_io(ptr %t6, ptr @.str10297, ptr @.str10298) %t7 = load ptr, ptr %t0 - call void @fn_emit_io(ptr %t7, ptr @.str10294, ptr @.str10295) + call void @fn_emit_io(ptr %t7, ptr @.str10299, ptr @.str10300) %t8 = load ptr, ptr %t0 - call void @fn_emit_io(ptr %t8, ptr @.str10296, ptr @.str10297) + call void @fn_emit_io(ptr %t8, ptr @.str10301, ptr @.str10302) %t9 = call i32 @fn_net_has_owned() %t10 = icmp ne i32 %t9, 0 br i1 %t10, label %then0, label %ifend2 then0: %t11 = load ptr, ptr %t0 - call void @fn_emit_io(ptr %t11, ptr @.str10298, ptr @.str10299) + call void @fn_emit_io(ptr %t11, ptr @.str10303, ptr @.str10304) br label %ifend2 ifend2: store i32 0, ptr %t12 @@ -102656,8 +102812,8 @@ then6: %t37 = load ptr, ptr %t36 %t38 = getelementptr inbounds %Cmp_Node, ptr %t37, i32 0, i32 1 %t39 = load ptr, ptr %t38 - %t40 = call ptr @lp_str_concat(ptr @.str10300, ptr %t39) - call void @fn_emit_io(ptr %t31, ptr %t40, ptr @.str10301) + %t40 = call ptr @lp_str_concat(ptr @.str10305, ptr %t39) + call void @fn_emit_io(ptr %t31, ptr %t40, ptr @.str10306) br label %ifend8 ifend8: %t41 = load i32, ptr %t12 @@ -102702,26 +102858,26 @@ then12: store ptr %t69, ptr %t70 %t71 = load i32, ptr %t43 %t72 = call ptr @fn_itoa(i32 %t71) - %t73 = call ptr @lp_str_concat(ptr @.str10302, ptr %t72) + %t73 = call ptr @lp_str_concat(ptr @.str10307, ptr %t72) store ptr %t73, ptr %t74 - call void @fn_emit(ptr @.str10303) + call void @fn_emit(ptr @.str10308) %t75 = load ptr, ptr %t74 call void @fn_emit(ptr %t75) - call void @fn_emit(ptr @.str10304) + call void @fn_emit(ptr @.str10309) %t76 = load ptr, ptr %t70 call void @fn_emit(ptr %t76) - call void @fn_emit(ptr @.str10305) + call void @fn_emit(ptr @.str10310) %t77 = load ptr, ptr %t2 call void @fn_emit(ptr %t77) - call void @fn_emit(ptr @.str10306) + call void @fn_emit(ptr @.str10311) %t78 = load ptr, ptr %t0 %t79 = load ptr, ptr %t70 - %t80 = call ptr @lp_str_concat(ptr @.str10307, ptr %t79) + %t80 = call ptr @lp_str_concat(ptr @.str10312, ptr %t79) %t81 = load ptr, ptr %t74 call void @fn_emit_io(ptr %t78, ptr %t80, ptr %t81) %t82 = load ptr, ptr %t0 %t83 = load ptr, ptr %t70 - %t84 = call ptr @lp_str_concat(ptr @.str10308, ptr %t83) + %t84 = call ptr @lp_str_concat(ptr @.str10313, ptr %t83) %t85 = load ptr, ptr %t2 call void @fn_emit_io(ptr %t82, ptr %t84, ptr %t85) %t86 = load i32, ptr %t43 @@ -102745,85 +102901,85 @@ entry: %t7 = alloca i32 %t15 = alloca ptr %t22 = alloca ptr - store ptr @.str10309, ptr @g_g_snap_mode - call void @fn_emith(ptr @.str10310) - call void @fn_emith(ptr @.str10311) - call void @fn_emith(ptr @.str10312) - %t0 = call ptr @fn_find_fn(ptr @.str10313) + store ptr @.str10314, ptr @g_g_snap_mode + call void @fn_emith(ptr @.str10315) + call void @fn_emith(ptr @.str10316) + call void @fn_emith(ptr @.str10317) + %t0 = call ptr @fn_find_fn(ptr @.str10318) %t1 = icmp ne ptr %t0, null %t2 = zext i1 %t1 to i32 store i32 %t2, ptr %t3 - %t4 = call ptr @fn_find_fn(ptr @.str10314) + %t4 = call ptr @fn_find_fn(ptr @.str10319) %t5 = icmp ne ptr %t4, null %t6 = zext i1 %t5 to i32 store i32 %t6, ptr %t7 - call void @fn_emit(ptr @.str10315) - call void @fn_emit(ptr @.str10316) - call void @fn_emit(ptr @.str10317) - call void @fn_emit(ptr @.str10318) - call void @fn_emit_snapshot_blocks(ptr @.str10319) + call void @fn_emit(ptr @.str10320) + call void @fn_emit(ptr @.str10321) + call void @fn_emit(ptr @.str10322) + call void @fn_emit(ptr @.str10323) + call void @fn_emit_snapshot_blocks(ptr @.str10324) %t8 = load i32, ptr %t3 %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then0, label %ifend2 then0: - call void @fn_emit(ptr @.str10320) + call void @fn_emit(ptr @.str10325) br label %ifend2 ifend2: - call void @fn_emit(ptr @.str10321) - call void @fn_emit(ptr @.str10322) - call void @fn_emit(ptr @.str10323) - call void @fn_emit(ptr @.str10324) - call void @fn_emit(ptr @.str10325) - call void @fn_emit_snapshot_blocks(ptr @.str10326) + call void @fn_emit(ptr @.str10326) + call void @fn_emit(ptr @.str10327) + call void @fn_emit(ptr @.str10328) + call void @fn_emit(ptr @.str10329) + call void @fn_emit(ptr @.str10330) + call void @fn_emit_snapshot_blocks(ptr @.str10331) %t10 = load i32, ptr %t7 %t11 = icmp ne i32 %t10, 0 br i1 %t11, label %then3, label %ifend5 then3: - call void @fn_emit(ptr @.str10327) + call void @fn_emit(ptr @.str10332) br label %ifend5 ifend5: - call void @fn_emit(ptr @.str10328) - call void @fn_emit(ptr @.str10329) - store ptr @.str10330, ptr @g_g_snap_mode - call void @fn_emit_snapshot_blocks(ptr @.str10331) + call void @fn_emit(ptr @.str10333) + call void @fn_emit(ptr @.str10334) + store ptr @.str10335, ptr @g_g_snap_mode + call void @fn_emit_snapshot_blocks(ptr @.str10336) %t12 = load i32, ptr @g_g_iok %t13 = call ptr @fn_itoa(i32 %t12) - %t14 = call ptr @lp_str_concat(ptr @.str10332, ptr %t13) + %t14 = call ptr @lp_str_concat(ptr @.str10337, ptr %t13) store ptr %t14, ptr %t15 - call void @fn_emit(ptr @.str10333) + call void @fn_emit(ptr @.str10338) %t16 = load ptr, ptr %t15 call void @fn_emit(ptr %t16) - call void @fn_emit(ptr @.str10334) + call void @fn_emit(ptr @.str10339) %t17 = load ptr, ptr @g_g_off call void @fn_emit(ptr %t17) - call void @fn_emit(ptr @.str10335) - call void @fn_emit(ptr @.str10336) + call void @fn_emit(ptr @.str10340) + call void @fn_emit(ptr @.str10341) %t18 = load ptr, ptr %t15 call void @fn_emit(ptr %t18) - call void @fn_emit(ptr @.str10337) - call void @fn_emit(ptr @.str10338) - store ptr @.str10339, ptr @g_g_snap_mode - call void @fn_emit_snapshot_blocks(ptr @.str10340) - call void @fn_emit(ptr @.str10341) call void @fn_emit(ptr @.str10342) - store ptr @.str10343, ptr @g_g_snap_mode - call void @fn_emit_snapshot_blocks(ptr @.str10344) + call void @fn_emit(ptr @.str10343) + store ptr @.str10344, ptr @g_g_snap_mode + call void @fn_emit_snapshot_blocks(ptr @.str10345) + call void @fn_emit(ptr @.str10346) + call void @fn_emit(ptr @.str10347) + store ptr @.str10348, ptr @g_g_snap_mode + call void @fn_emit_snapshot_blocks(ptr @.str10349) %t19 = load i32, ptr @g_g_iok %t20 = call ptr @fn_itoa(i32 %t19) - %t21 = call ptr @lp_str_concat(ptr @.str10345, ptr %t20) + %t21 = call ptr @lp_str_concat(ptr @.str10350, ptr %t20) store ptr %t21, ptr %t22 - call void @fn_emit(ptr @.str10346) + call void @fn_emit(ptr @.str10351) %t23 = load ptr, ptr %t22 call void @fn_emit(ptr %t23) - call void @fn_emit(ptr @.str10347) + call void @fn_emit(ptr @.str10352) %t24 = load ptr, ptr @g_g_off call void @fn_emit(ptr %t24) - call void @fn_emit(ptr @.str10348) - call void @fn_emit(ptr @.str10349) + call void @fn_emit(ptr @.str10353) + call void @fn_emit(ptr @.str10354) %t25 = load ptr, ptr %t22 call void @fn_emit(ptr %t25) - call void @fn_emit(ptr @.str10350) - store ptr @.str10351, ptr @g_g_snap_mode + call void @fn_emit(ptr @.str10355) + store ptr @.str10356, ptr @g_g_snap_mode br label %ret ret: ret void @@ -102836,7 +102992,7 @@ entry: store ptr %arg_ty, ptr %t0 %t1 = load ptr, ptr %t0 %t2 = call ptr @fn_llty(ptr %t1) - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str10352) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str10357) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: @@ -102857,14 +103013,14 @@ entry: store ptr %arg_ty, ptr %t0 %t1 = load ptr, ptr %t0 %t2 = call ptr @fn_llty(ptr %t1) - %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str10353) + %t3 = call i32 @lp_str_eq(ptr %t2, ptr @.str10358) %t4 = icmp ne i32 %t3, 0 br i1 %t4, label %then0, label %ifend2 then0: - store ptr @.str10354, ptr %retval + store ptr @.str10359, ptr %retval br label %ret ifend2: - store ptr @.str10355, ptr %retval + store ptr @.str10360, ptr %retval br label %ret ret: %t5 = load ptr, ptr %retval @@ -103245,7 +103401,7 @@ entry: store ptr %t1, ptr %t2 %t3 = load ptr, ptr %t2 %t4 = zext i32 23 to i64 - %t5 = call i64 @fwrite(ptr @.str10356, i64 1, i64 %t4, ptr %t3) + %t5 = call i64 @fwrite(ptr @.str10361, i64 1, i64 %t4, ptr %t3) %t6 = trunc i64 %t5 to i32 %t7 = load ptr, ptr %t2 %t8 = load ptr, ptr %t0 @@ -103257,7 +103413,7 @@ entry: %t14 = trunc i64 %t13 to i32 %t15 = load ptr, ptr %t2 %t16 = zext i32 1 to i64 - %t17 = call i64 @fwrite(ptr @.str10357, i64 1, i64 %t16, ptr %t15) + %t17 = call i64 @fwrite(ptr @.str10362, i64 1, i64 %t16, ptr %t15) %t18 = trunc i64 %t17 to i32 br label %ret ret: @@ -103396,13 +103552,13 @@ then18: %t99 = getelementptr inbounds %Cmp_Node, ptr %t98, i32 0, i32 3 %t100 = load ptr, ptr %t99 %t101 = call ptr @fn_llty(ptr %t100) - %t102 = call i32 @lp_str_eq(ptr %t101, ptr @.str10358) + %t102 = call i32 @lp_str_eq(ptr %t101, ptr @.str10363) %t103 = icmp ne i32 %t102, 0 br i1 %t103, label %then21, label %ifend23 then21: %t104 = load ptr, ptr %t59 - %t105 = call ptr @lp_str_concat(ptr @.str10359, ptr %t104) - %t106 = call ptr @lp_str_concat(ptr %t105, ptr @.str10360) + %t105 = call ptr @lp_str_concat(ptr @.str10364, ptr %t104) + %t106 = call ptr @lp_str_concat(ptr %t105, ptr @.str10365) %t107 = load ptr, ptr %t62 %t108 = getelementptr inbounds %Cmp_Node, ptr %t107, i32 0, i32 7 %t109 = load ptr, ptr %t108 @@ -103414,7 +103570,7 @@ then21: %t115 = getelementptr inbounds %Cmp_Node, ptr %t114, i32 0, i32 1 %t116 = load ptr, ptr %t115 %t117 = call ptr @lp_str_concat(ptr %t106, ptr %t116) - %t118 = call ptr @lp_str_concat(ptr %t117, ptr @.str10361) + %t118 = call ptr @lp_str_concat(ptr %t117, ptr @.str10366) call void @fn_perr(ptr %t118) br label %ifend23 ifend23: @@ -103434,11 +103590,11 @@ then24: %t125 = load ptr, ptr %t25 %t126 = getelementptr inbounds %Cmp_Node, ptr %t125, i32 0, i32 1 %t127 = load ptr, ptr %t126 - %t128 = call ptr @lp_str_concat(ptr @.str10362, ptr %t127) - %t129 = call ptr @lp_str_concat(ptr %t128, ptr @.str10363) + %t128 = call ptr @lp_str_concat(ptr @.str10367, ptr %t127) + %t129 = call ptr @lp_str_concat(ptr %t128, ptr @.str10368) %t130 = load ptr, ptr %t59 %t131 = call ptr @lp_str_concat(ptr %t129, ptr %t130) - %t132 = call ptr @lp_str_concat(ptr %t131, ptr @.str10364) + %t132 = call ptr @lp_str_concat(ptr %t131, ptr @.str10369) call void @fn_net_warn(ptr %t132) br label %ifend26 ifend26: @@ -103480,12 +103636,12 @@ entry: store i32 0, ptr @g_ll_t %t1 = call ptr @fn_itoa(i32 1024) store ptr %t1, ptr %t2 - call void @fn_emit(ptr @.str10365) + call void @fn_emit(ptr @.str10370) %t3 = load ptr, ptr %t0 %t4 = getelementptr inbounds %Cmp_Node, ptr %t3, i32 0, i32 1 %t5 = load ptr, ptr %t4 call void @fn_emit(ptr %t5) - call void @fn_emit(ptr @.str10366) + call void @fn_emit(ptr @.str10371) store i32 0, ptr %t6 store i32 0, ptr %t7 br label %wcond0 @@ -103538,19 +103694,19 @@ then3: then6: %t48 = call ptr @fn_nreg() store ptr %t48, ptr %t49 - call void @fn_emit(ptr @.str10367) + call void @fn_emit(ptr @.str10372) %t50 = load ptr, ptr %t49 call void @fn_emit(ptr %t50) - call void @fn_emit(ptr @.str10368) + call void @fn_emit(ptr @.str10373) %t51 = load ptr, ptr %t2 call void @fn_emit(ptr %t51) - call void @fn_emit(ptr @.str10369) + call void @fn_emit(ptr @.str10374) %t52 = load ptr, ptr %t40 call void @fn_emit(ptr %t52) - call void @fn_emit(ptr @.str10370) + call void @fn_emit(ptr @.str10375) %t53 = load ptr, ptr %t40 call void @fn_emit(ptr %t53) - call void @fn_emit(ptr @.str10371) + call void @fn_emit(ptr @.str10376) store i32 0, ptr %t54 br label %wcond9 wcond9: @@ -103594,40 +103750,40 @@ then12: store ptr %t87, ptr %t88 %t89 = call ptr @fn_nreg() store ptr %t89, ptr %t90 - call void @fn_emit(ptr @.str10372) + call void @fn_emit(ptr @.str10377) %t91 = load ptr, ptr %t90 call void @fn_emit(ptr %t91) - call void @fn_emit(ptr @.str10373) + call void @fn_emit(ptr @.str10378) %t92 = load ptr, ptr %t40 call void @fn_emit(ptr %t92) - call void @fn_emit(ptr @.str10374) + call void @fn_emit(ptr @.str10379) %t93 = load ptr, ptr %t49 call void @fn_emit(ptr %t93) - call void @fn_emit(ptr @.str10375) + call void @fn_emit(ptr @.str10380) %t94 = load i32, ptr %t54 %t95 = call ptr @fn_itoa(i32 %t94) call void @fn_emit(ptr %t95) - call void @fn_emit(ptr @.str10376) + call void @fn_emit(ptr @.str10381) %t96 = call ptr @fn_nreg() store ptr %t96, ptr %t97 - call void @fn_emit(ptr @.str10377) + call void @fn_emit(ptr @.str10382) %t98 = load ptr, ptr %t97 call void @fn_emit(ptr %t98) - call void @fn_emit(ptr @.str10378) + call void @fn_emit(ptr @.str10383) %t99 = load i32, ptr %t6 %t100 = call ptr @fn_itoa(i32 %t99) call void @fn_emit(ptr %t100) - call void @fn_emit(ptr @.str10379) - call void @fn_emit(ptr @.str10380) + call void @fn_emit(ptr @.str10384) + call void @fn_emit(ptr @.str10385) %t101 = load ptr, ptr %t97 call void @fn_emit(ptr %t101) - call void @fn_emit(ptr @.str10381) + call void @fn_emit(ptr @.str10386) %t102 = load ptr, ptr %t90 call void @fn_emit(ptr %t102) - call void @fn_emit(ptr @.str10382) + call void @fn_emit(ptr @.str10387) %t103 = load ptr, ptr %t88 call void @fn_emit(ptr %t103) - call void @fn_emit(ptr @.str10383) + call void @fn_emit(ptr @.str10388) %t104 = load ptr, ptr %t43 %t105 = getelementptr inbounds %Cmp_Node, ptr %t104, i32 0, i32 7 %t106 = load ptr, ptr %t105 @@ -103658,11 +103814,11 @@ ifend5: store i32 %t120, ptr %t7 br label %wcond0 wend2: - call void @fn_emit(ptr @.str10384) + call void @fn_emit(ptr @.str10389) %t121 = load i32, ptr %t6 %t122 = call ptr @fn_itoa(i32 %t121) call void @fn_emit(ptr %t122) - call void @fn_emit(ptr @.str10385) + call void @fn_emit(ptr @.str10390) br label %ret ret: ret void @@ -103685,12 +103841,12 @@ entry: store i32 0, ptr @g_ll_t %t1 = call ptr @fn_itoa(i32 1024) store ptr %t1, ptr %t2 - call void @fn_emit(ptr @.str10386) + call void @fn_emit(ptr @.str10391) %t3 = load ptr, ptr %t0 %t4 = getelementptr inbounds %Cmp_Node, ptr %t3, i32 0, i32 1 %t5 = load ptr, ptr %t4 call void @fn_emit(ptr %t5) - call void @fn_emit(ptr @.str10387) + call void @fn_emit(ptr @.str10392) store i32 0, ptr %t6 store i32 0, ptr %t7 br label %wcond0 @@ -103743,19 +103899,19 @@ then3: then6: %t48 = call ptr @fn_nreg() store ptr %t48, ptr %t49 - call void @fn_emit(ptr @.str10388) + call void @fn_emit(ptr @.str10393) %t50 = load ptr, ptr %t49 call void @fn_emit(ptr %t50) - call void @fn_emit(ptr @.str10389) + call void @fn_emit(ptr @.str10394) %t51 = load ptr, ptr %t2 call void @fn_emit(ptr %t51) - call void @fn_emit(ptr @.str10390) + call void @fn_emit(ptr @.str10395) %t52 = load ptr, ptr %t40 call void @fn_emit(ptr %t52) - call void @fn_emit(ptr @.str10391) + call void @fn_emit(ptr @.str10396) %t53 = load ptr, ptr %t40 call void @fn_emit(ptr %t53) - call void @fn_emit(ptr @.str10392) + call void @fn_emit(ptr @.str10397) store i32 0, ptr %t54 br label %wcond9 wcond9: @@ -103799,40 +103955,40 @@ then12: store ptr %t87, ptr %t88 %t89 = call ptr @fn_nreg() store ptr %t89, ptr %t90 - call void @fn_emit(ptr @.str10393) + call void @fn_emit(ptr @.str10398) %t91 = load ptr, ptr %t90 call void @fn_emit(ptr %t91) - call void @fn_emit(ptr @.str10394) + call void @fn_emit(ptr @.str10399) %t92 = load ptr, ptr %t40 call void @fn_emit(ptr %t92) - call void @fn_emit(ptr @.str10395) + call void @fn_emit(ptr @.str10400) %t93 = load ptr, ptr %t49 call void @fn_emit(ptr %t93) - call void @fn_emit(ptr @.str10396) + call void @fn_emit(ptr @.str10401) %t94 = load i32, ptr %t54 %t95 = call ptr @fn_itoa(i32 %t94) call void @fn_emit(ptr %t95) - call void @fn_emit(ptr @.str10397) + call void @fn_emit(ptr @.str10402) %t96 = call ptr @fn_nreg() store ptr %t96, ptr %t97 - call void @fn_emit(ptr @.str10398) + call void @fn_emit(ptr @.str10403) %t98 = load ptr, ptr %t97 call void @fn_emit(ptr %t98) - call void @fn_emit(ptr @.str10399) + call void @fn_emit(ptr @.str10404) %t99 = load i32, ptr %t6 %t100 = call ptr @fn_itoa(i32 %t99) call void @fn_emit(ptr %t100) - call void @fn_emit(ptr @.str10400) - call void @fn_emit(ptr @.str10401) + call void @fn_emit(ptr @.str10405) + call void @fn_emit(ptr @.str10406) %t101 = load ptr, ptr %t90 call void @fn_emit(ptr %t101) - call void @fn_emit(ptr @.str10402) + call void @fn_emit(ptr @.str10407) %t102 = load ptr, ptr %t97 call void @fn_emit(ptr %t102) - call void @fn_emit(ptr @.str10403) + call void @fn_emit(ptr @.str10408) %t103 = load ptr, ptr %t88 call void @fn_emit(ptr %t103) - call void @fn_emit(ptr @.str10404) + call void @fn_emit(ptr @.str10409) %t104 = load ptr, ptr %t43 %t105 = getelementptr inbounds %Cmp_Node, ptr %t104, i32 0, i32 7 %t106 = load ptr, ptr %t105 @@ -103863,7 +104019,7 @@ ifend5: store i32 %t120, ptr %t7 br label %wcond0 wend2: - call void @fn_emit(ptr @.str10405) + call void @fn_emit(ptr @.str10410) br label %ret ret: ret void @@ -103885,11 +104041,11 @@ entry: %t165 = alloca ptr %t0 = call ptr @fn_itoa(i32 1024) store ptr %t0, ptr %t1 - call void @fn_emit(ptr @.str10406) - call void @fn_emit(ptr @.str10407) + call void @fn_emit(ptr @.str10411) + call void @fn_emit(ptr @.str10412) %t2 = load ptr, ptr %t1 call void @fn_emit(ptr %t2) - call void @fn_emit(ptr @.str10408) + call void @fn_emit(ptr @.str10413) store i32 0, ptr %t3 store i32 0, ptr %t4 br label %wcond0 @@ -103946,42 +104102,42 @@ then5: %t45 = load i32, ptr %t3 %t46 = call ptr @fn_itoa(i32 %t45) store ptr %t46, ptr %t47 - call void @fn_emit(ptr @.str10409) + call void @fn_emit(ptr @.str10414) %t48 = load ptr, ptr %t47 call void @fn_emit(ptr %t48) - call void @fn_emit(ptr @.str10410) + call void @fn_emit(ptr @.str10415) %t49 = load ptr, ptr %t44 %t50 = call i32 @fn_find_arch_id(ptr %t49) %t51 = call ptr @fn_itoa(i32 %t50) call void @fn_emit(ptr %t51) - call void @fn_emit(ptr @.str10411) - call void @fn_emit(ptr @.str10412) + call void @fn_emit(ptr @.str10416) + call void @fn_emit(ptr @.str10417) %t52 = load ptr, ptr %t47 call void @fn_emit(ptr %t52) - call void @fn_emit(ptr @.str10413) + call void @fn_emit(ptr @.str10418) %t53 = load ptr, ptr %t47 call void @fn_emit(ptr %t53) - call void @fn_emit(ptr @.str10414) + call void @fn_emit(ptr @.str10419) %t54 = load ptr, ptr %t47 call void @fn_emit(ptr %t54) - call void @fn_emit(ptr @.str10415) - call void @fn_emit(ptr @.str10416) - %t55 = load ptr, ptr %t47 - call void @fn_emit(ptr %t55) - call void @fn_emit(ptr @.str10417) - %t56 = load ptr, ptr %t47 - call void @fn_emit(ptr %t56) - call void @fn_emit(ptr @.str10418) - %t57 = load ptr, ptr %t44 - call void @fn_emit(ptr %t57) - call void @fn_emit(ptr @.str10419) - %t58 = load ptr, ptr %t47 - call void @fn_emit(ptr %t58) call void @fn_emit(ptr @.str10420) call void @fn_emit(ptr @.str10421) + %t55 = load ptr, ptr %t47 + call void @fn_emit(ptr %t55) + call void @fn_emit(ptr @.str10422) + %t56 = load ptr, ptr %t47 + call void @fn_emit(ptr %t56) + call void @fn_emit(ptr @.str10423) + %t57 = load ptr, ptr %t44 + call void @fn_emit(ptr %t57) + call void @fn_emit(ptr @.str10424) + %t58 = load ptr, ptr %t47 + call void @fn_emit(ptr %t58) + call void @fn_emit(ptr @.str10425) + call void @fn_emit(ptr @.str10426) %t59 = load ptr, ptr %t47 call void @fn_emit(ptr %t59) - call void @fn_emit(ptr @.str10422) + call void @fn_emit(ptr @.str10427) %t60 = load i32, ptr %t3 %t61 = add i32 %t60, 1 store i32 %t61, ptr %t3 @@ -103992,12 +104148,12 @@ ifend7: store i32 %t63, ptr %t4 br label %wcond0 wend2: - call void @fn_emit(ptr @.str10423) - call void @fn_emit(ptr @.str10424) - call void @fn_emit(ptr @.str10425) + call void @fn_emit(ptr @.str10428) + call void @fn_emit(ptr @.str10429) + call void @fn_emit(ptr @.str10430) %t64 = load ptr, ptr %t1 call void @fn_emit(ptr %t64) - call void @fn_emit(ptr @.str10426) + call void @fn_emit(ptr @.str10431) store i32 0, ptr %t3 store i32 0, ptr %t4 br label %wcond8 @@ -104054,36 +104210,36 @@ then13: %t105 = load i32, ptr %t3 %t106 = call ptr @fn_itoa(i32 %t105) store ptr %t106, ptr %t107 - call void @fn_emit(ptr @.str10427) + call void @fn_emit(ptr @.str10432) %t108 = load ptr, ptr %t107 call void @fn_emit(ptr %t108) - call void @fn_emit(ptr @.str10428) + call void @fn_emit(ptr @.str10433) %t109 = load ptr, ptr %t104 %t110 = call i32 @fn_find_arch_id(ptr %t109) %t111 = call ptr @fn_itoa(i32 %t110) call void @fn_emit(ptr %t111) - call void @fn_emit(ptr @.str10429) - call void @fn_emit(ptr @.str10430) + call void @fn_emit(ptr @.str10434) + call void @fn_emit(ptr @.str10435) %t112 = load ptr, ptr %t107 call void @fn_emit(ptr %t112) - call void @fn_emit(ptr @.str10431) + call void @fn_emit(ptr @.str10436) %t113 = load ptr, ptr %t107 call void @fn_emit(ptr %t113) - call void @fn_emit(ptr @.str10432) + call void @fn_emit(ptr @.str10437) %t114 = load ptr, ptr %t107 call void @fn_emit(ptr %t114) - call void @fn_emit(ptr @.str10433) - call void @fn_emit(ptr @.str10434) + call void @fn_emit(ptr @.str10438) + call void @fn_emit(ptr @.str10439) %t115 = load ptr, ptr %t107 call void @fn_emit(ptr %t115) - call void @fn_emit(ptr @.str10435) + call void @fn_emit(ptr @.str10440) %t116 = load ptr, ptr %t104 call void @fn_emit(ptr %t116) - call void @fn_emit(ptr @.str10436) - call void @fn_emit(ptr @.str10437) + call void @fn_emit(ptr @.str10441) + call void @fn_emit(ptr @.str10442) %t117 = load ptr, ptr %t107 call void @fn_emit(ptr %t117) - call void @fn_emit(ptr @.str10438) + call void @fn_emit(ptr @.str10443) %t118 = load i32, ptr %t3 %t119 = add i32 %t118, 1 store i32 %t119, ptr %t3 @@ -104094,12 +104250,12 @@ ifend15: store i32 %t121, ptr %t4 br label %wcond8 wend10: - call void @fn_emit(ptr @.str10439) - call void @fn_emit(ptr @.str10440) - call void @fn_emit(ptr @.str10441) + call void @fn_emit(ptr @.str10444) + call void @fn_emit(ptr @.str10445) + call void @fn_emit(ptr @.str10446) %t122 = load ptr, ptr %t1 call void @fn_emit(ptr %t122) - call void @fn_emit(ptr @.str10442) + call void @fn_emit(ptr @.str10447) store i32 0, ptr %t3 store i32 0, ptr %t4 br label %wcond16 @@ -104156,29 +104312,29 @@ then21: %t163 = load i32, ptr %t3 %t164 = call ptr @fn_itoa(i32 %t163) store ptr %t164, ptr %t165 - call void @fn_emit(ptr @.str10443) + call void @fn_emit(ptr @.str10448) %t166 = load ptr, ptr %t165 call void @fn_emit(ptr %t166) - call void @fn_emit(ptr @.str10444) + call void @fn_emit(ptr @.str10449) %t167 = load ptr, ptr %t162 %t168 = call i32 @fn_find_arch_id(ptr %t167) %t169 = call ptr @fn_itoa(i32 %t168) call void @fn_emit(ptr %t169) - call void @fn_emit(ptr @.str10445) - call void @fn_emit(ptr @.str10446) + call void @fn_emit(ptr @.str10450) + call void @fn_emit(ptr @.str10451) %t170 = load ptr, ptr %t165 call void @fn_emit(ptr %t170) - call void @fn_emit(ptr @.str10447) + call void @fn_emit(ptr @.str10452) %t171 = load ptr, ptr %t165 call void @fn_emit(ptr %t171) - call void @fn_emit(ptr @.str10448) + call void @fn_emit(ptr @.str10453) %t172 = load ptr, ptr %t165 call void @fn_emit(ptr %t172) - call void @fn_emit(ptr @.str10449) - call void @fn_emit(ptr @.str10450) + call void @fn_emit(ptr @.str10454) + call void @fn_emit(ptr @.str10455) %t173 = load ptr, ptr %t165 call void @fn_emit(ptr %t173) - call void @fn_emit(ptr @.str10451) + call void @fn_emit(ptr @.str10456) %t174 = load ptr, ptr @g_prog %t175 = getelementptr inbounds %LSlice, ptr %t174, i32 0, i32 0 %t176 = load ptr, ptr %t175 @@ -104188,11 +104344,11 @@ then21: %t180 = call i32 @fn_net_model_bytes(ptr %t179) %t181 = call ptr @fn_itoa(i32 %t180) call void @fn_emit(ptr %t181) - call void @fn_emit(ptr @.str10452) - call void @fn_emit(ptr @.str10453) + call void @fn_emit(ptr @.str10457) + call void @fn_emit(ptr @.str10458) %t182 = load ptr, ptr %t165 call void @fn_emit(ptr %t182) - call void @fn_emit(ptr @.str10454) + call void @fn_emit(ptr @.str10459) %t183 = load i32, ptr %t3 %t184 = add i32 %t183, 1 store i32 %t184, ptr %t3 @@ -104203,7 +104359,7 @@ ifend23: store i32 %t186, ptr %t4 br label %wcond16 wend18: - call void @fn_emit(ptr @.str10455) + call void @fn_emit(ptr @.str10460) br label %ret ret: ret void @@ -104214,22 +104370,22 @@ entry: %t1 = alloca ptr %t0 = call ptr @fn_itoa(i32 1024) store ptr %t0, ptr %t1 - call void @fn_emit(ptr @.str10456) - call void @fn_emit(ptr @.str10457) - %t2 = load ptr, ptr %t1 - call void @fn_emit(ptr %t2) - call void @fn_emit(ptr @.str10458) - call void @fn_emit(ptr @.str10459) - call void @fn_emit(ptr @.str10460) - %t3 = load ptr, ptr %t1 - call void @fn_emit(ptr %t3) call void @fn_emit(ptr @.str10461) call void @fn_emit(ptr @.str10462) + %t2 = load ptr, ptr %t1 + call void @fn_emit(ptr %t2) call void @fn_emit(ptr @.str10463) - %t4 = load ptr, ptr %t1 - call void @fn_emit(ptr %t4) call void @fn_emit(ptr @.str10464) call void @fn_emit(ptr @.str10465) + %t3 = load ptr, ptr %t1 + call void @fn_emit(ptr %t3) + call void @fn_emit(ptr @.str10466) + call void @fn_emit(ptr @.str10467) + call void @fn_emit(ptr @.str10468) + %t4 = load ptr, ptr %t1 + call void @fn_emit(ptr %t4) + call void @fn_emit(ptr @.str10469) + call void @fn_emit(ptr @.str10470) br label %ret ret: ret void @@ -104237,15 +104393,10 @@ ret: define void @fn_emit_loopback() { entry: - call void @fn_emith(ptr @.str10466) - call void @fn_emith(ptr @.str10467) - call void @fn_emith(ptr @.str10468) - call void @fn_emith(ptr @.str10469) - call void @fn_emit(ptr @.str10470) - call void @fn_emit(ptr @.str10471) - call void @fn_emit(ptr @.str10472) - call void @fn_emit(ptr @.str10473) - call void @fn_emit(ptr @.str10474) + call void @fn_emith(ptr @.str10471) + call void @fn_emith(ptr @.str10472) + call void @fn_emith(ptr @.str10473) + call void @fn_emith(ptr @.str10474) call void @fn_emit(ptr @.str10475) call void @fn_emit(ptr @.str10476) call void @fn_emit(ptr @.str10477) @@ -104263,6 +104414,11 @@ entry: call void @fn_emit(ptr @.str10489) call void @fn_emit(ptr @.str10490) call void @fn_emit(ptr @.str10491) + call void @fn_emit(ptr @.str10492) + call void @fn_emit(ptr @.str10493) + call void @fn_emit(ptr @.str10494) + call void @fn_emit(ptr @.str10495) + call void @fn_emit(ptr @.str10496) br label %ret ret: ret void @@ -104364,7 +104520,7 @@ define ptr @fn_net_send_sym() { entry: %retval = alloca ptr %t1 = alloca ptr - %t0 = call ptr @fn_find_extern(ptr @.str10492) + %t0 = call ptr @fn_find_extern(ptr @.str10497) store ptr %t0, ptr %t1 %t2 = load ptr, ptr %t1 %t3 = icmp ne ptr %t2, null @@ -104380,7 +104536,7 @@ then0: store ptr %t10, ptr %retval br label %ret ifend2: - store ptr @.str10493, ptr %retval + store ptr @.str10498, ptr %retval br label %ret ret: %t11 = load ptr, ptr %retval @@ -104391,7 +104547,7 @@ define ptr @fn_net_poll_sym() { entry: %retval = alloca ptr %t1 = alloca ptr - %t0 = call ptr @fn_find_extern(ptr @.str10494) + %t0 = call ptr @fn_find_extern(ptr @.str10499) store ptr %t0, ptr %t1 %t2 = load ptr, ptr %t1 %t3 = icmp ne ptr %t2, null @@ -104407,7 +104563,7 @@ then0: store ptr %t10, ptr %retval br label %ret ifend2: - store ptr @.str10495, ptr %retval + store ptr @.str10500, ptr %retval br label %ret ret: %t11 = load ptr, ptr %retval @@ -104425,8 +104581,8 @@ entry: %t44 = alloca ptr %t65 = alloca ptr %t71 = alloca ptr - call void @fn_emith(ptr @.str10496) - %t0 = call ptr @fn_find_extern(ptr @.str10497) + call void @fn_emith(ptr @.str10501) + %t0 = call ptr @fn_find_extern(ptr @.str10502) %t1 = icmp eq ptr %t0, null %t2 = zext i1 %t1 to i32 %t3 = icmp ne i32 %t2, 0 @@ -104437,13 +104593,13 @@ then0: ifend2: %t4 = call ptr @fn_net_poll_sym() store ptr %t4, ptr %t5 - call void @fn_emit(ptr @.str10498) - call void @fn_emit(ptr @.str10499) + call void @fn_emit(ptr @.str10503) + call void @fn_emit(ptr @.str10504) %t6 = load ptr, ptr %t5 call void @fn_emit(ptr %t6) - call void @fn_emit(ptr @.str10500) - call void @fn_emit(ptr @.str10501) - call void @fn_emit(ptr @.str10502) + call void @fn_emit(ptr @.str10505) + call void @fn_emit(ptr @.str10506) + call void @fn_emit(ptr @.str10507) store i32 0, ptr %t7 br label %wcond3 wcond3: @@ -104474,31 +104630,31 @@ then6: %t28 = load i32, ptr %t7 %t29 = call ptr @fn_itoa(i32 %t28) store ptr %t29, ptr %t30 - call void @fn_emit(ptr @.str10503) + call void @fn_emit(ptr @.str10508) %t31 = load ptr, ptr %t30 call void @fn_emit(ptr %t31) - call void @fn_emit(ptr @.str10504) + call void @fn_emit(ptr @.str10509) %t32 = load ptr, ptr %t21 %t33 = getelementptr inbounds %Cmp_Node, ptr %t32, i32 0, i32 1 %t34 = load ptr, ptr %t33 %t35 = call i32 @fn_net_event_id(ptr %t34) %t36 = call ptr @fn_itoa(i32 %t35) call void @fn_emit(ptr %t36) - call void @fn_emit(ptr @.str10505) - call void @fn_emit(ptr @.str10506) + call void @fn_emit(ptr @.str10510) + call void @fn_emit(ptr @.str10511) %t37 = load ptr, ptr %t30 call void @fn_emit(ptr %t37) - call void @fn_emit(ptr @.str10507) + call void @fn_emit(ptr @.str10512) %t38 = load ptr, ptr %t30 call void @fn_emit(ptr %t38) - call void @fn_emit(ptr @.str10508) + call void @fn_emit(ptr @.str10513) %t39 = load ptr, ptr %t30 call void @fn_emit(ptr %t39) - call void @fn_emit(ptr @.str10509) - call void @fn_emit(ptr @.str10510) + call void @fn_emit(ptr @.str10514) + call void @fn_emit(ptr @.str10515) %t40 = load ptr, ptr %t30 call void @fn_emit(ptr %t40) - call void @fn_emit(ptr @.str10511) + call void @fn_emit(ptr @.str10516) store i32 4, ptr %t41 store i32 0, ptr %t42 %t43 = call ptr @fn_buf_new() @@ -104529,29 +104685,29 @@ wbody10: %t64 = call ptr @fn_llty(ptr %t63) store ptr %t64, ptr %t65 %t66 = load ptr, ptr %t30 - %t67 = call ptr @lp_str_concat(ptr %t66, ptr @.str10512) + %t67 = call ptr @lp_str_concat(ptr %t66, ptr @.str10517) %t68 = load i32, ptr %t42 %t69 = call ptr @fn_itoa(i32 %t68) %t70 = call ptr @lp_str_concat(ptr %t67, ptr %t69) store ptr %t70, ptr %t71 - call void @fn_emit(ptr @.str10513) + call void @fn_emit(ptr @.str10518) %t72 = load ptr, ptr %t71 call void @fn_emit(ptr %t72) - call void @fn_emit(ptr @.str10514) + call void @fn_emit(ptr @.str10519) %t73 = load i32, ptr %t41 %t74 = call ptr @fn_itoa(i32 %t73) call void @fn_emit(ptr %t74) - call void @fn_emit(ptr @.str10515) - call void @fn_emit(ptr @.str10516) + call void @fn_emit(ptr @.str10520) + call void @fn_emit(ptr @.str10521) %t75 = load ptr, ptr %t71 call void @fn_emit(ptr %t75) - call void @fn_emit(ptr @.str10517) + call void @fn_emit(ptr @.str10522) %t76 = load ptr, ptr %t65 call void @fn_emit(ptr %t76) - call void @fn_emit(ptr @.str10518) + call void @fn_emit(ptr @.str10523) %t77 = load ptr, ptr %t71 call void @fn_emit(ptr %t77) - call void @fn_emit(ptr @.str10519) + call void @fn_emit(ptr @.str10524) %t78 = load i32, ptr %t42 %t79 = icmp sgt i32 %t78, 0 %t80 = zext i1 %t79 to i32 @@ -104559,14 +104715,14 @@ wbody10: br i1 %t81, label %then12, label %ifend14 then12: %t82 = load ptr, ptr %t44 - call void @fn_buf_puts(ptr %t82, ptr @.str10520) + call void @fn_buf_puts(ptr %t82, ptr @.str10525) br label %ifend14 ifend14: %t83 = load ptr, ptr %t44 %t84 = load ptr, ptr %t65 call void @fn_buf_puts(ptr %t83, ptr %t84) %t85 = load ptr, ptr %t44 - call void @fn_buf_puts(ptr %t85, ptr @.str10521) + call void @fn_buf_puts(ptr %t85, ptr @.str10526) %t86 = load ptr, ptr %t44 %t87 = load ptr, ptr %t71 call void @fn_buf_puts(ptr %t86, ptr %t87) @@ -104589,21 +104745,21 @@ ifend14: store i32 %t102, ptr %t42 br label %wcond9 wend11: - call void @fn_emit(ptr @.str10522) + call void @fn_emit(ptr @.str10527) %t103 = load ptr, ptr %t21 %t104 = getelementptr inbounds %Cmp_Node, ptr %t103, i32 0, i32 1 %t105 = load ptr, ptr %t104 call void @fn_emit(ptr %t105) - call void @fn_emit(ptr @.str10523) + call void @fn_emit(ptr @.str10528) %t106 = load ptr, ptr %t44 %t107 = call ptr @fn_buf_str(ptr %t106) call void @fn_emit(ptr %t107) - call void @fn_emit(ptr @.str10524) - call void @fn_emit(ptr @.str10525) - call void @fn_emit(ptr @.str10526) + call void @fn_emit(ptr @.str10529) + call void @fn_emit(ptr @.str10530) + call void @fn_emit(ptr @.str10531) %t108 = load ptr, ptr %t30 call void @fn_emit(ptr %t108) - call void @fn_emit(ptr @.str10527) + call void @fn_emit(ptr @.str10532) br label %ifend8 ifend8: %t109 = load i32, ptr %t7 @@ -104611,8 +104767,8 @@ ifend8: store i32 %t110, ptr %t7 br label %wcond3 wend5: - call void @fn_emit(ptr @.str10528) - call void @fn_emit(ptr @.str10529) + call void @fn_emit(ptr @.str10533) + call void @fn_emit(ptr @.str10534) br label %ret ret: ret void @@ -104705,7 +104861,7 @@ ifend13: %t51 = icmp ne i32 %t50, 0 br i1 %t51, label %then14, label %ifend16 then14: - call void @fn_emith(ptr @.str10530) + call void @fn_emith(ptr @.str10535) call void @fn_emit_net_pump() br label %ifend16 ifend16: @@ -104725,7 +104881,7 @@ entry: %t3 = load ptr, ptr %t2 store ptr %t3, ptr %t4 %t5 = load ptr, ptr %t4 - %t6 = call i32 @lp_str_eq(ptr %t5, ptr @.str10531) + %t6 = call i32 @lp_str_eq(ptr %t5, ptr @.str10536) %t7 = icmp ne i32 %t6, 0 br i1 %t7, label %then0, label %ifend2 then0: @@ -104733,7 +104889,7 @@ then0: br label %ret ifend2: %t8 = load ptr, ptr %t4 - %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str10532) + %t9 = call i32 @lp_str_eq(ptr %t8, ptr @.str10537) %t10 = icmp ne i32 %t9, 0 br i1 %t10, label %then3, label %ifend5 then3: @@ -104741,7 +104897,7 @@ then3: br label %ret ifend5: %t11 = load ptr, ptr %t4 - %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str10533) + %t12 = call i32 @lp_str_eq(ptr %t11, ptr @.str10538) %t13 = icmp ne i32 %t12, 0 br i1 %t13, label %then6, label %ifend8 then6: @@ -104749,7 +104905,7 @@ then6: br label %ret ifend8: %t14 = load ptr, ptr %t4 - %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str10534) + %t15 = call i32 @lp_str_eq(ptr %t14, ptr @.str10539) %t16 = icmp ne i32 %t15, 0 br i1 %t16, label %then9, label %ifend11 then9: @@ -104757,7 +104913,7 @@ then9: br label %ret ifend11: %t17 = load ptr, ptr %t4 - %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str10535) + %t18 = call i32 @lp_str_eq(ptr %t17, ptr @.str10540) %t19 = icmp ne i32 %t18, 0 br i1 %t19, label %then12, label %ifend14 then12: @@ -104765,7 +104921,7 @@ then12: br label %ret ifend14: %t20 = load ptr, ptr %t4 - %t21 = call i32 @lp_str_eq(ptr %t20, ptr @.str10536) + %t21 = call i32 @lp_str_eq(ptr %t20, ptr @.str10541) %t22 = icmp ne i32 %t21, 0 br i1 %t22, label %then15, label %ifend17 then15: @@ -104773,7 +104929,7 @@ then15: br label %ret ifend17: %t23 = load ptr, ptr %t4 - %t24 = call i32 @lp_str_eq(ptr %t23, ptr @.str10537) + %t24 = call i32 @lp_str_eq(ptr %t23, ptr @.str10542) %t25 = icmp ne i32 %t24, 0 br i1 %t25, label %then18, label %ifend20 then18: @@ -104977,7 +105133,7 @@ grow5: put6: %t81 = load ptr, ptr %t68 %t82 = getelementptr inbounds ptr, ptr %t81, i32 %t69 - store ptr @.str10538, ptr %t82 + store ptr @.str10543, ptr %t82 %t83 = add i32 %t69, 1 store i32 %t83, ptr %t66 %t84 = load ptr, ptr %t64 @@ -105004,7 +105160,7 @@ grow7: put8: %t100 = load ptr, ptr %t87 %t101 = getelementptr inbounds ptr, ptr %t100, i32 %t88 - store ptr @.str10539, ptr %t101 + store ptr @.str10544, ptr %t101 %t102 = add i32 %t88, 1 store i32 %t102, ptr %t85 %t103 = load ptr, ptr %t64 @@ -105031,7 +105187,7 @@ grow9: put10: %t119 = load ptr, ptr %t106 %t120 = getelementptr inbounds ptr, ptr %t119, i32 %t107 - store ptr @.str10540, ptr %t120 + store ptr @.str10545, ptr %t120 %t121 = add i32 %t107, 1 store i32 %t121, ptr %t104 %t122 = load ptr, ptr %t64 @@ -105058,7 +105214,7 @@ grow11: put12: %t138 = load ptr, ptr %t125 %t139 = getelementptr inbounds ptr, ptr %t138, i32 %t126 - store ptr @.str10541, ptr %t139 + store ptr @.str10546, ptr %t139 %t140 = add i32 %t126, 1 store i32 %t140, ptr %t123 store i32 0, ptr %t141 @@ -105619,7 +105775,7 @@ wbody15: %t79 = load i32, ptr %t13 %t80 = getelementptr inbounds ptr, ptr %t78, i32 %t79 %t81 = load ptr, ptr %t80 - %t82 = call ptr @fn_ui_prop(ptr %t81, ptr @.str10542) + %t82 = call ptr @fn_ui_prop(ptr %t81, ptr @.str10547) store ptr %t82, ptr %t83 %t84 = load ptr, ptr %t83 %t85 = icmp ne ptr %t84, null @@ -105748,18 +105904,18 @@ entry: store i32 %arg_idx, ptr %t0 store i32 %arg_key, ptr %t1 store ptr %arg_val, ptr %t2 - call void @fn_emit(ptr @.str10543) + call void @fn_emit(ptr @.str10548) %t3 = load i32, ptr %t0 %t4 = call ptr @fn_itoa(i32 %t3) call void @fn_emit(ptr %t4) - call void @fn_emit(ptr @.str10544) + call void @fn_emit(ptr @.str10549) %t5 = load i32, ptr %t1 %t6 = call ptr @fn_itoa(i32 %t5) call void @fn_emit(ptr %t6) - call void @fn_emit(ptr @.str10545) + call void @fn_emit(ptr @.str10550) %t7 = load ptr, ptr %t2 call void @fn_emit(ptr %t7) - call void @fn_emit(ptr @.str10546) + call void @fn_emit(ptr @.str10551) br label %ret ret: ret void @@ -105771,7 +105927,7 @@ entry: %t0 = alloca ptr store ptr %arg_k, ptr %t0 %t1 = load ptr, ptr %t0 - %t2 = call i32 @lp_str_eq(ptr %t1, ptr @.str10547) + %t2 = call i32 @lp_str_eq(ptr %t1, ptr @.str10552) %t3 = icmp ne i32 %t2, 0 br i1 %t3, label %then0, label %ifend2 then0: @@ -105779,7 +105935,7 @@ then0: br label %ret ifend2: %t4 = load ptr, ptr %t0 - %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str10548) + %t5 = call i32 @lp_str_eq(ptr %t4, ptr @.str10553) %t6 = icmp ne i32 %t5, 0 br i1 %t6, label %then3, label %ifend5 then3: @@ -105787,7 +105943,7 @@ then3: br label %ret ifend5: %t7 = load ptr, ptr %t0 - %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str10549) + %t8 = call i32 @lp_str_eq(ptr %t7, ptr @.str10554) %t9 = icmp ne i32 %t8, 0 br i1 %t9, label %then6, label %ifend8 then6: @@ -105795,7 +105951,7 @@ then6: br label %ret ifend8: %t10 = load ptr, ptr %t0 - %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str10550) + %t11 = call i32 @lp_str_eq(ptr %t10, ptr @.str10555) %t12 = icmp ne i32 %t11, 0 br i1 %t12, label %then9, label %ifend11 then9: @@ -105803,7 +105959,7 @@ then9: br label %ret ifend11: %t13 = load ptr, ptr %t0 - %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str10551) + %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str10556) %t15 = icmp ne i32 %t14, 0 br i1 %t15, label %then12, label %ifend14 then12: @@ -105811,7 +105967,7 @@ then12: br label %ret ifend14: %t16 = load ptr, ptr %t0 - %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str10552) + %t17 = call i32 @lp_str_eq(ptr %t16, ptr @.str10557) %t18 = icmp ne i32 %t17, 0 br i1 %t18, label %then15, label %ifend17 then15: @@ -105819,7 +105975,7 @@ then15: br label %ret ifend17: %t19 = load ptr, ptr %t0 - %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str10553) + %t20 = call i32 @lp_str_eq(ptr %t19, ptr @.str10558) %t21 = icmp ne i32 %t20, 0 br i1 %t21, label %then18, label %ifend20 then18: @@ -105827,7 +105983,7 @@ then18: br label %ret ifend20: %t22 = load ptr, ptr %t0 - %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str10554) + %t23 = call i32 @lp_str_eq(ptr %t22, ptr @.str10559) %t24 = icmp ne i32 %t23, 0 br i1 %t24, label %then21, label %ifend23 then21: @@ -105835,7 +105991,7 @@ then21: br label %ret ifend23: %t25 = load ptr, ptr %t0 - %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str10555) + %t26 = call i32 @lp_str_eq(ptr %t25, ptr @.str10560) %t27 = icmp ne i32 %t26, 0 br i1 %t27, label %then24, label %ifend26 then24: @@ -105843,7 +105999,7 @@ then24: br label %ret ifend26: %t28 = load ptr, ptr %t0 - %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str10556) + %t29 = call i32 @lp_str_eq(ptr %t28, ptr @.str10561) %t30 = icmp ne i32 %t29, 0 br i1 %t30, label %then27, label %ifend29 then27: @@ -105851,7 +106007,7 @@ then27: br label %ret ifend29: %t31 = load ptr, ptr %t0 - %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str10557) + %t32 = call i32 @lp_str_eq(ptr %t31, ptr @.str10562) %t33 = icmp ne i32 %t32, 0 br i1 %t33, label %then30, label %ifend32 then30: @@ -105859,7 +106015,7 @@ then30: br label %ret ifend32: %t34 = load ptr, ptr %t0 - %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str10558) + %t35 = call i32 @lp_str_eq(ptr %t34, ptr @.str10563) %t36 = icmp ne i32 %t35, 0 br i1 %t36, label %then33, label %ifend35 then33: @@ -105867,7 +106023,7 @@ then33: br label %ret ifend35: %t37 = load ptr, ptr %t0 - %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str10559) + %t38 = call i32 @lp_str_eq(ptr %t37, ptr @.str10564) %t39 = icmp ne i32 %t38, 0 br i1 %t39, label %then36, label %ifend38 then36: @@ -105875,7 +106031,7 @@ then36: br label %ret ifend38: %t40 = load ptr, ptr %t0 - %t41 = call i32 @lp_str_eq(ptr %t40, ptr @.str10560) + %t41 = call i32 @lp_str_eq(ptr %t40, ptr @.str10565) %t42 = icmp ne i32 %t41, 0 br i1 %t42, label %then39, label %ifend41 then39: @@ -105926,13 +106082,13 @@ entry: store ptr %t3, ptr %t4 %t5 = load ptr, ptr %t1 store ptr %t5, ptr @g_code - call void @fn_emit(ptr @.str10561) + call void @fn_emit(ptr @.str10566) %t6 = load ptr, ptr @g_uiw %t7 = getelementptr inbounds %LSlice, ptr %t6, i32 0, i32 1 %t8 = load i32, ptr %t7 %t9 = call ptr @fn_itoa(i32 %t8) call void @fn_emit(ptr %t9) - call void @fn_emit(ptr @.str10562) + call void @fn_emit(ptr @.str10567) store i32 0, ptr %t10 br label %wcond0 wcond0: @@ -105975,7 +106131,7 @@ wbody1: br i1 %t42, label %then3, label %ifend5 then3: %t43 = load i32, ptr %t10 - call void @fn_ll_ui_set(i32 %t43, i32 17, ptr @.str10563) + call void @fn_ll_ui_set(i32 %t43, i32 17, ptr @.str10568) br label %ifend5 ifend5: %t44 = load i32, ptr %t10 @@ -106009,14 +106165,14 @@ wbody7: %t68 = load ptr, ptr %t67 store ptr %t68, ptr %t69 %t71 = load ptr, ptr %t65 - %t72 = call i32 @lp_str_eq(ptr %t71, ptr @.str10564) + %t72 = call i32 @lp_str_eq(ptr %t71, ptr @.str10569) %t73 = icmp ne i32 %t72, 0 %t74 = zext i1 %t73 to i32 store i32 %t74, ptr %t70 br i1 %t73, label %scend10, label %sc9 sc9: %t75 = load ptr, ptr %t65 - %t76 = call i32 @lp_str_eq(ptr %t75, ptr @.str10565) + %t76 = call i32 @lp_str_eq(ptr %t75, ptr @.str10570) %t77 = icmp ne i32 %t76, 0 %t78 = zext i1 %t77 to i32 store i32 %t78, ptr %t70 @@ -106032,34 +106188,34 @@ then11: br label %wcond6 ifend13: %t83 = load ptr, ptr %t65 - %t84 = call i32 @lp_str_eq(ptr %t83, ptr @.str10566) + %t84 = call i32 @lp_str_eq(ptr %t83, ptr @.str10571) %t85 = icmp ne i32 %t84, 0 br i1 %t85, label %then14, label %else15 then14: %t86 = load ptr, ptr %t69 %t87 = call ptr @fn_emit_expr(ptr %t86) store ptr %t87, ptr %t88 - call void @fn_emit(ptr @.str10567) + call void @fn_emit(ptr @.str10572) %t89 = load i32, ptr %t10 %t90 = call ptr @fn_itoa(i32 %t89) call void @fn_emit(ptr %t90) - call void @fn_emit(ptr @.str10568) + call void @fn_emit(ptr @.str10573) %t91 = load ptr, ptr %t88 %t92 = getelementptr inbounds %Cmp_Val, ptr %t91, i32 0, i32 0 %t93 = load ptr, ptr %t92 call void @fn_emit(ptr %t93) - call void @fn_emit(ptr @.str10569) + call void @fn_emit(ptr @.str10574) br label %ifend16 else15: %t95 = load ptr, ptr %t65 - %t96 = call i32 @lp_str_eq(ptr %t95, ptr @.str10570) + %t96 = call i32 @lp_str_eq(ptr %t95, ptr @.str10575) %t97 = icmp ne i32 %t96, 0 %t98 = zext i1 %t97 to i32 store i32 %t98, ptr %t94 br i1 %t97, label %scend18, label %sc17 sc17: %t99 = load ptr, ptr %t65 - %t100 = call i32 @lp_str_eq(ptr %t99, ptr @.str10571) + %t100 = call i32 @lp_str_eq(ptr %t99, ptr @.str10576) %t101 = icmp ne i32 %t100, 0 %t102 = zext i1 %t101 to i32 store i32 %t102, ptr %t94 @@ -106075,12 +106231,12 @@ then19: %t108 = load ptr, ptr %t107 %t109 = getelementptr inbounds %Cmp_Val, ptr %t108, i32 0, i32 0 %t110 = load ptr, ptr %t109 - %t111 = call ptr @lp_str_concat(ptr @.str10572, ptr %t110) - %t112 = call ptr @lp_str_concat(ptr %t111, ptr @.str10573) + %t111 = call ptr @lp_str_concat(ptr @.str10577, ptr %t110) + %t112 = call ptr @lp_str_concat(ptr %t111, ptr @.str10578) %t113 = call ptr @fn_emit_bind(ptr %t112) store ptr %t113, ptr %t114 %t115 = load ptr, ptr %t65 - %t116 = call i32 @lp_str_eq(ptr %t115, ptr @.str10574) + %t116 = call i32 @lp_str_eq(ptr %t115, ptr @.str10579) %t117 = icmp ne i32 %t116, 0 br i1 %t117, label %then22, label %else23 then22: @@ -106097,7 +106253,7 @@ ifend24: br label %ifend21 else20: %t122 = load ptr, ptr %t65 - %t123 = call i32 @lp_str_eq(ptr %t122, ptr @.str10575) + %t123 = call i32 @lp_str_eq(ptr %t122, ptr @.str10580) %t124 = icmp ne i32 %t123, 0 br i1 %t124, label %then25, label %else26 then25: @@ -106113,7 +106269,7 @@ then28: %t132 = load ptr, ptr %t69 %t133 = getelementptr inbounds %Cmp_Node, ptr %t132, i32 0, i32 1 %t134 = load ptr, ptr %t133 - %t135 = call i32 @lp_str_eq(ptr %t134, ptr @.str10576) + %t135 = call i32 @lp_str_eq(ptr %t134, ptr @.str10581) %t136 = icmp ne i32 %t135, 0 br i1 %t136, label %then31, label %ifend33 then31: @@ -106123,7 +106279,7 @@ ifend33: %t137 = load ptr, ptr %t69 %t138 = getelementptr inbounds %Cmp_Node, ptr %t137, i32 0, i32 1 %t139 = load ptr, ptr %t138 - %t140 = call i32 @lp_str_eq(ptr %t139, ptr @.str10577) + %t140 = call i32 @lp_str_eq(ptr %t139, ptr @.str10582) %t141 = icmp ne i32 %t140, 0 br i1 %t141, label %then34, label %ifend36 then34: @@ -106187,7 +106343,7 @@ scend41: br i1 %t179, label %then42, label %ifend44 then42: %t180 = load i32, ptr %t10 - call void @fn_ll_ui_set(i32 %t180, i32 6, ptr @.str10578) + call void @fn_ll_ui_set(i32 %t180, i32 6, ptr @.str10583) br label %ifend44 ifend44: br label %ifend39 @@ -106210,14 +106366,14 @@ wend8: wend2: %t185 = load ptr, ptr %t4 store ptr %t185, ptr @g_code - call void @fn_emit(ptr @.str10579) + call void @fn_emit(ptr @.str10584) %t186 = load ptr, ptr @g_falloc %t187 = call ptr @fn_buf_str(ptr %t186) call void @fn_emit(ptr %t187) %t188 = load ptr, ptr %t1 %t189 = call ptr @fn_buf_str(ptr %t188) call void @fn_emit(ptr %t189) - call void @fn_emit(ptr @.str10580) + call void @fn_emit(ptr @.str10585) br label %ret ret: ret void @@ -106248,7 +106404,7 @@ wbody1: %t14 = icmp ne i32 %t13, 0 br i1 %t14, label %then3, label %ifend5 then3: - call void @fn_emit(ptr @.str10581) + call void @fn_emit(ptr @.str10586) br label %ifend5 ifend5: %t15 = load ptr, ptr %t0 @@ -106263,7 +106419,7 @@ ifend5: %t24 = load ptr, ptr %t23 %t25 = call ptr @fn_llty(ptr %t24) call void @fn_emit(ptr %t25) - call void @fn_emit(ptr @.str10582) + call void @fn_emit(ptr @.str10587) %t26 = load ptr, ptr %t0 %t27 = getelementptr inbounds %Cmp_Node, ptr %t26, i32 0, i32 7 %t28 = load ptr, ptr %t27 @@ -106318,19 +106474,19 @@ entry: %t11 = call ptr @fn_llty(ptr %t10) store ptr %t11, ptr %t12 %t13 = load ptr, ptr %t12 - %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str10583) + %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str10588) %t15 = icmp eq i32 %t14, 0 %t16 = zext i1 %t15 to i32 %t17 = icmp ne i32 %t16, 0 br i1 %t17, label %then0, label %ifend2 then0: %t18 = load ptr, ptr @g_falloc - call void @fn_buf_puts(ptr %t18, ptr @.str10584) + call void @fn_buf_puts(ptr %t18, ptr @.str10589) %t19 = load ptr, ptr @g_falloc %t20 = load ptr, ptr %t12 call void @fn_buf_puts(ptr %t19, ptr %t20) %t21 = load ptr, ptr @g_falloc - call void @fn_buf_puts(ptr %t21, ptr @.str10585) + call void @fn_buf_puts(ptr %t21, ptr @.str10590) br label %ifend2 ifend2: store i32 0, ptr %t22 @@ -106362,21 +106518,21 @@ wbody4: %t44 = call ptr @fn_llty(ptr %t43) %t45 = call ptr @fn_emit_alloca(ptr %t44) store ptr %t45, ptr %t46 - call void @fn_emit(ptr @.str10586) + call void @fn_emit(ptr @.str10591) %t47 = load ptr, ptr %t40 %t48 = getelementptr inbounds %Cmp_Node, ptr %t47, i32 0, i32 3 %t49 = load ptr, ptr %t48 %t50 = call ptr @fn_llty(ptr %t49) call void @fn_emit(ptr %t50) - call void @fn_emit(ptr @.str10587) + call void @fn_emit(ptr @.str10592) %t51 = load ptr, ptr %t40 %t52 = getelementptr inbounds %Cmp_Node, ptr %t51, i32 0, i32 1 %t53 = load ptr, ptr %t52 call void @fn_emit(ptr %t53) - call void @fn_emit(ptr @.str10588) + call void @fn_emit(ptr @.str10593) %t54 = load ptr, ptr %t46 call void @fn_emit(ptr %t54) - call void @fn_emit(ptr @.str10589) + call void @fn_emit(ptr @.str10594) %t55 = load ptr, ptr %t40 %t56 = getelementptr inbounds %Cmp_Node, ptr %t55, i32 0, i32 1 %t57 = load ptr, ptr %t56 @@ -106400,53 +106556,53 @@ wend5: %t70 = icmp ne i32 %t69, 0 br i1 %t70, label %then6, label %ifend8 then6: - call void @fn_emit(ptr @.str10590) + call void @fn_emit(ptr @.str10595) br label %ifend8 ifend8: - call void @fn_emit(ptr @.str10591) + call void @fn_emit(ptr @.str10596) %t71 = load ptr, ptr %t12 - %t72 = call i32 @lp_str_eq(ptr %t71, ptr @.str10592) + %t72 = call i32 @lp_str_eq(ptr %t71, ptr @.str10597) %t73 = icmp ne i32 %t72, 0 br i1 %t73, label %then9, label %else10 then9: - call void @fn_emit(ptr @.str10593) + call void @fn_emit(ptr @.str10598) br label %ifend11 else10: %t74 = load ptr, ptr %t12 - %t75 = call ptr @lp_str_concat(ptr @.str10594, ptr %t74) - %t76 = call ptr @lp_str_concat(ptr %t75, ptr @.str10595) + %t75 = call ptr @lp_str_concat(ptr @.str10599, ptr %t74) + %t76 = call ptr @lp_str_concat(ptr %t75, ptr @.str10600) %t77 = call ptr @fn_emit_bind(ptr %t76) store ptr %t77, ptr %t78 - call void @fn_emit(ptr @.str10596) + call void @fn_emit(ptr @.str10601) %t79 = load ptr, ptr %t12 call void @fn_emit(ptr %t79) - call void @fn_emit(ptr @.str10597) + call void @fn_emit(ptr @.str10602) %t80 = load ptr, ptr %t78 call void @fn_emit(ptr %t80) - call void @fn_emit(ptr @.str10598) + call void @fn_emit(ptr @.str10603) br label %ifend11 ifend11: %t81 = load ptr, ptr %t8 store ptr %t81, ptr @g_code - call void @fn_emit(ptr @.str10599) + call void @fn_emit(ptr @.str10604) %t82 = load ptr, ptr %t12 call void @fn_emit(ptr %t82) - call void @fn_emit(ptr @.str10600) + call void @fn_emit(ptr @.str10605) %t83 = load ptr, ptr %t0 %t84 = getelementptr inbounds %Cmp_Node, ptr %t83, i32 0, i32 1 %t85 = load ptr, ptr %t84 call void @fn_emit(ptr %t85) - call void @fn_emit(ptr @.str10601) + call void @fn_emit(ptr @.str10606) %t86 = load ptr, ptr %t0 call void @fn_emit_params_sig(ptr %t86) - call void @fn_emit(ptr @.str10602) + call void @fn_emit(ptr @.str10607) %t87 = load ptr, ptr @g_falloc %t88 = call ptr @fn_buf_str(ptr %t87) call void @fn_emit(ptr %t88) %t89 = load ptr, ptr %t5 %t90 = call ptr @fn_buf_str(ptr %t89) call void @fn_emit(ptr %t90) - call void @fn_emit(ptr @.str10603) + call void @fn_emit(ptr @.str10608) br label %ret ret: ret void @@ -106464,7 +106620,7 @@ entry: store i32 0, ptr @g_g_term call void @fn_loc_reset() store i32 0, ptr @g_nloop - store ptr @.str10604, ptr @g_ret_ty + store ptr @.str10609, ptr @g_ret_ty %t1 = call ptr @fn_buf_new() store ptr %t1, ptr %t2 %t3 = call ptr @fn_buf_new() @@ -106474,20 +106630,20 @@ entry: %t6 = load ptr, ptr %t2 store ptr %t6, ptr @g_code %t7 = load ptr, ptr @g_falloc - call void @fn_buf_puts(ptr %t7, ptr @.str10605) - call void @fn_emit(ptr @.str10606) - call void @fn_emit(ptr @.str10607) - call void @fn_emit(ptr @.str10608) - %t8 = call ptr @fn_find_fn(ptr @.str10609) + call void @fn_buf_puts(ptr %t7, ptr @.str10610) + call void @fn_emit(ptr @.str10611) + call void @fn_emit(ptr @.str10612) + call void @fn_emit(ptr @.str10613) + %t8 = call ptr @fn_find_fn(ptr @.str10614) %t9 = icmp ne ptr %t8, null %t10 = zext i1 %t9 to i32 %t11 = icmp ne i32 %t10, 0 br i1 %t11, label %then0, label %ifend2 then0: - call void @fn_emit(ptr @.str10610) + call void @fn_emit(ptr @.str10615) br label %ifend2 ifend2: - call void @fn_emit(ptr @.str10611) + call void @fn_emit(ptr @.str10616) %t12 = load ptr, ptr %t0 %t13 = getelementptr inbounds %Cmp_Node, ptr %t12, i32 0, i32 4 %t14 = load ptr, ptr %t13 @@ -106498,26 +106654,26 @@ ifend2: %t18 = icmp ne i32 %t17, 0 br i1 %t18, label %then3, label %ifend5 then3: - call void @fn_emit(ptr @.str10612) + call void @fn_emit(ptr @.str10617) br label %ifend5 ifend5: - call void @fn_emit(ptr @.str10613) - %t19 = call ptr @fn_emit_bind(ptr @.str10614) + call void @fn_emit(ptr @.str10618) + %t19 = call ptr @fn_emit_bind(ptr @.str10619) store ptr %t19, ptr %t20 - call void @fn_emit(ptr @.str10615) + call void @fn_emit(ptr @.str10620) %t21 = load ptr, ptr %t20 call void @fn_emit(ptr %t21) - call void @fn_emit(ptr @.str10616) + call void @fn_emit(ptr @.str10621) %t22 = load ptr, ptr %t5 store ptr %t22, ptr @g_code - call void @fn_emit(ptr @.str10617) + call void @fn_emit(ptr @.str10622) %t23 = load ptr, ptr @g_falloc %t24 = call ptr @fn_buf_str(ptr %t23) call void @fn_emit(ptr %t24) %t25 = load ptr, ptr %t2 %t26 = call ptr @fn_buf_str(ptr %t25) call void @fn_emit(ptr %t26) - call void @fn_emit(ptr @.str10618) + call void @fn_emit(ptr @.str10623) br label %ret ret: ret void @@ -106536,7 +106692,7 @@ entry: store i32 0, ptr @g_g_term call void @fn_loc_reset() store i32 0, ptr @g_nloop - store ptr @.str10619, ptr @g_ret_ty + store ptr @.str10624, ptr @g_ret_ty %t2 = call ptr @fn_buf_new() store ptr %t2, ptr %t3 %t4 = call ptr @fn_buf_new() @@ -106555,24 +106711,24 @@ entry: %t14 = icmp ne i32 %t13, 0 br i1 %t14, label %then0, label %ifend2 then0: - call void @fn_emit(ptr @.str10620) + call void @fn_emit(ptr @.str10625) br label %ifend2 ifend2: - call void @fn_emit(ptr @.str10621) + call void @fn_emit(ptr @.str10626) %t15 = load ptr, ptr %t6 store ptr %t15, ptr @g_code - call void @fn_emit(ptr @.str10622) + call void @fn_emit(ptr @.str10627) %t16 = load i32, ptr %t1 %t17 = call ptr @fn_itoa(i32 %t16) call void @fn_emit(ptr %t17) - call void @fn_emit(ptr @.str10623) + call void @fn_emit(ptr @.str10628) %t18 = load ptr, ptr @g_falloc %t19 = call ptr @fn_buf_str(ptr %t18) call void @fn_emit(ptr %t19) %t20 = load ptr, ptr %t3 %t21 = call ptr @fn_buf_str(ptr %t20) call void @fn_emit(ptr %t21) - call void @fn_emit(ptr @.str10624) + call void @fn_emit(ptr @.str10629) br label %ret ret: ret void @@ -106594,8 +106750,8 @@ entry: %t117 = alloca ptr %t128 = alloca ptr %t133 = alloca ptr - call void @fn_emith(ptr @.str10625) - call void @fn_emith(ptr @.str10626) + call void @fn_emith(ptr @.str10630) + call void @fn_emith(ptr @.str10631) store i32 0, ptr %t0 br label %wcond0 wcond0: @@ -106625,23 +106781,23 @@ wend2: %t18 = icmp ne i32 %t17, 0 br i1 %t18, label %then3, label %ifend5 then3: - call void @fn_emith(ptr @.str10627) + call void @fn_emith(ptr @.str10632) br label %ifend5 ifend5: store i32 0, ptr @g_ll_t store i32 0, ptr @g_ll_lbl - call void @fn_emit(ptr @.str10628) - call void @fn_emit(ptr @.str10629) - call void @fn_emit(ptr @.str10630) - call void @fn_emit(ptr @.str10631) + call void @fn_emit(ptr @.str10633) + call void @fn_emit(ptr @.str10634) + call void @fn_emit(ptr @.str10635) + call void @fn_emit(ptr @.str10636) %t19 = call i32 @fn_has_ecs() %t20 = icmp ne i32 %t19, 0 br i1 %t20, label %then6, label %ifend8 then6: - call void @fn_emit(ptr @.str10632) + call void @fn_emit(ptr @.str10637) br label %ifend8 ifend8: - call void @fn_emit(ptr @.str10633) + call void @fn_emit(ptr @.str10638) store i32 0, ptr %t0 br label %wcond9 wcond9: @@ -106662,7 +106818,7 @@ wbody10: %t33 = load ptr, ptr %t32 %t34 = getelementptr inbounds %Cmp_Node, ptr %t33, i32 0, i32 1 %t35 = load ptr, ptr %t34 - %t36 = call ptr @lp_str_concat(ptr @.str10634, ptr %t35) + %t36 = call ptr @lp_str_concat(ptr @.str10639, ptr %t35) %t37 = call ptr @fn_emit_str_const(ptr %t36) store ptr %t37, ptr %t38 %t39 = load ptr, ptr @g_g_tests @@ -106673,111 +106829,111 @@ wbody10: %t44 = load ptr, ptr %t43 %t45 = getelementptr inbounds %Cmp_Node, ptr %t44, i32 0, i32 1 %t46 = load ptr, ptr %t45 - %t47 = call ptr @lp_str_concat(ptr @.str10635, ptr %t46) + %t47 = call ptr @lp_str_concat(ptr @.str10640, ptr %t46) %t48 = call ptr @fn_emit_str_const(ptr %t47) store ptr %t48, ptr %t49 - call void @fn_emit(ptr @.str10636) + call void @fn_emit(ptr @.str10641) %t50 = load i32, ptr %t0 %t51 = call ptr @fn_itoa(i32 %t50) - %t52 = call ptr @lp_str_concat(ptr @.str10637, ptr %t51) - %t53 = call ptr @lp_str_concat(ptr %t52, ptr @.str10638) + %t52 = call ptr @lp_str_concat(ptr @.str10642, ptr %t51) + %t53 = call ptr @lp_str_concat(ptr %t52, ptr @.str10643) call void @fn_emit(ptr %t53) - %t54 = call ptr @fn_emit_bind(ptr @.str10639) + %t54 = call ptr @fn_emit_bind(ptr @.str10644) store ptr %t54, ptr %t55 %t56 = load ptr, ptr %t55 - %t57 = call ptr @lp_str_concat(ptr @.str10640, ptr %t56) - %t58 = call ptr @lp_str_concat(ptr %t57, ptr @.str10641) + %t57 = call ptr @lp_str_concat(ptr @.str10645, ptr %t56) + %t58 = call ptr @lp_str_concat(ptr %t57, ptr @.str10646) %t59 = call ptr @fn_emit_bind(ptr %t58) store ptr %t59, ptr %t60 - %t61 = call ptr @fn_lbl(ptr @.str10642) + %t61 = call ptr @fn_lbl(ptr @.str10647) store ptr %t61, ptr %t62 - %t63 = call ptr @fn_lbl(ptr @.str10643) + %t63 = call ptr @fn_lbl(ptr @.str10648) store ptr %t63, ptr %t64 - %t65 = call ptr @fn_lbl(ptr @.str10644) + %t65 = call ptr @fn_lbl(ptr @.str10649) store ptr %t65, ptr %t66 %t67 = load ptr, ptr %t60 - %t68 = call ptr @lp_str_concat(ptr @.str10645, ptr %t67) - %t69 = call ptr @lp_str_concat(ptr %t68, ptr @.str10646) + %t68 = call ptr @lp_str_concat(ptr @.str10650, ptr %t67) + %t69 = call ptr @lp_str_concat(ptr %t68, ptr @.str10651) %t70 = load ptr, ptr %t64 %t71 = call ptr @lp_str_concat(ptr %t69, ptr %t70) - %t72 = call ptr @lp_str_concat(ptr %t71, ptr @.str10647) + %t72 = call ptr @lp_str_concat(ptr %t71, ptr @.str10652) %t73 = load ptr, ptr %t62 %t74 = call ptr @lp_str_concat(ptr %t72, ptr %t73) - %t75 = call ptr @lp_str_concat(ptr %t74, ptr @.str10648) + %t75 = call ptr @lp_str_concat(ptr %t74, ptr @.str10653) call void @fn_emit(ptr %t75) %t76 = load ptr, ptr %t62 - %t77 = call ptr @lp_str_concat(ptr %t76, ptr @.str10649) + %t77 = call ptr @lp_str_concat(ptr %t76, ptr @.str10654) call void @fn_emit(ptr %t77) %t78 = load ptr, ptr %t38 - %t79 = call ptr @lp_str_concat(ptr @.str10650, ptr %t78) - %t80 = call ptr @lp_str_concat(ptr %t79, ptr @.str10651) + %t79 = call ptr @lp_str_concat(ptr @.str10655, ptr %t78) + %t80 = call ptr @lp_str_concat(ptr %t79, ptr @.str10656) call void @fn_emit(ptr %t80) %t81 = load ptr, ptr %t66 - %t82 = call ptr @lp_str_concat(ptr @.str10652, ptr %t81) - %t83 = call ptr @lp_str_concat(ptr %t82, ptr @.str10653) + %t82 = call ptr @lp_str_concat(ptr @.str10657, ptr %t81) + %t83 = call ptr @lp_str_concat(ptr %t82, ptr @.str10658) call void @fn_emit(ptr %t83) %t84 = load ptr, ptr %t64 - %t85 = call ptr @lp_str_concat(ptr %t84, ptr @.str10654) + %t85 = call ptr @lp_str_concat(ptr %t84, ptr @.str10659) call void @fn_emit(ptr %t85) - %t86 = call ptr @fn_emit_bind(ptr @.str10655) + %t86 = call ptr @fn_emit_bind(ptr @.str10660) store ptr %t86, ptr %t87 %t88 = load ptr, ptr %t87 - %t89 = call ptr @lp_str_concat(ptr @.str10656, ptr %t88) - %t90 = call ptr @lp_str_concat(ptr %t89, ptr @.str10657) + %t89 = call ptr @lp_str_concat(ptr @.str10661, ptr %t88) + %t90 = call ptr @lp_str_concat(ptr %t89, ptr @.str10662) %t91 = call ptr @fn_emit_bind(ptr %t90) store ptr %t91, ptr %t92 %t93 = load ptr, ptr %t92 - %t94 = call ptr @lp_str_concat(ptr @.str10658, ptr %t93) - %t95 = call ptr @lp_str_concat(ptr %t94, ptr @.str10659) + %t94 = call ptr @lp_str_concat(ptr @.str10663, ptr %t93) + %t95 = call ptr @lp_str_concat(ptr %t94, ptr @.str10664) call void @fn_emit(ptr %t95) %t96 = load ptr, ptr %t49 - %t97 = call ptr @lp_str_concat(ptr @.str10660, ptr %t96) - %t98 = call ptr @lp_str_concat(ptr %t97, ptr @.str10661) + %t97 = call ptr @lp_str_concat(ptr @.str10665, ptr %t96) + %t98 = call ptr @lp_str_concat(ptr %t97, ptr @.str10666) call void @fn_emit(ptr %t98) %t99 = load ptr, ptr %t66 - %t100 = call ptr @lp_str_concat(ptr @.str10662, ptr %t99) - %t101 = call ptr @lp_str_concat(ptr %t100, ptr @.str10663) + %t100 = call ptr @lp_str_concat(ptr @.str10667, ptr %t99) + %t101 = call ptr @lp_str_concat(ptr %t100, ptr @.str10668) call void @fn_emit(ptr %t101) %t102 = load ptr, ptr %t66 - %t103 = call ptr @lp_str_concat(ptr %t102, ptr @.str10664) + %t103 = call ptr @lp_str_concat(ptr %t102, ptr @.str10669) call void @fn_emit(ptr %t103) %t104 = load i32, ptr %t0 %t105 = add i32 %t104, 1 store i32 %t105, ptr %t0 br label %wcond9 wend11: - %t106 = call ptr @fn_emit_bind(ptr @.str10665) + %t106 = call ptr @fn_emit_bind(ptr @.str10670) store ptr %t106, ptr %t107 %t108 = load ptr, ptr @g_g_tests %t109 = getelementptr inbounds %LSlice, ptr %t108, i32 0, i32 1 %t110 = load i32, ptr %t109 %t111 = call ptr @fn_itoa(i32 %t110) - %t112 = call ptr @lp_str_concat(ptr @.str10666, ptr %t111) - %t113 = call ptr @lp_str_concat(ptr %t112, ptr @.str10667) + %t112 = call ptr @lp_str_concat(ptr @.str10671, ptr %t111) + %t113 = call ptr @lp_str_concat(ptr %t112, ptr @.str10672) %t114 = load ptr, ptr %t107 %t115 = call ptr @lp_str_concat(ptr %t113, ptr %t114) %t116 = call ptr @fn_emit_bind(ptr %t115) store ptr %t116, ptr %t117 %t118 = load ptr, ptr %t117 - %t119 = call ptr @lp_str_concat(ptr @.str10668, ptr %t118) - %t120 = call ptr @lp_str_concat(ptr %t119, ptr @.str10669) + %t119 = call ptr @lp_str_concat(ptr @.str10673, ptr %t118) + %t120 = call ptr @lp_str_concat(ptr %t119, ptr @.str10674) %t121 = load ptr, ptr %t107 %t122 = call ptr @lp_str_concat(ptr %t120, ptr %t121) - %t123 = call ptr @lp_str_concat(ptr %t122, ptr @.str10670) + %t123 = call ptr @lp_str_concat(ptr %t122, ptr @.str10675) call void @fn_emit(ptr %t123) %t124 = load ptr, ptr %t107 - %t125 = call ptr @lp_str_concat(ptr @.str10671, ptr %t124) - %t126 = call ptr @lp_str_concat(ptr %t125, ptr @.str10672) + %t125 = call ptr @lp_str_concat(ptr @.str10676, ptr %t124) + %t126 = call ptr @lp_str_concat(ptr %t125, ptr @.str10677) %t127 = call ptr @fn_emit_bind(ptr %t126) store ptr %t127, ptr %t128 %t129 = load ptr, ptr %t128 - %t130 = call ptr @lp_str_concat(ptr @.str10673, ptr %t129) - %t131 = call ptr @lp_str_concat(ptr %t130, ptr @.str10674) + %t130 = call ptr @lp_str_concat(ptr @.str10678, ptr %t129) + %t131 = call ptr @lp_str_concat(ptr %t130, ptr @.str10679) %t132 = call ptr @fn_emit_bind(ptr %t131) store ptr %t132, ptr %t133 %t134 = load ptr, ptr %t133 - %t135 = call ptr @lp_str_concat(ptr @.str10675, ptr %t134) - %t136 = call ptr @lp_str_concat(ptr %t135, ptr @.str10676) + %t135 = call ptr @lp_str_concat(ptr @.str10680, ptr %t134) + %t136 = call ptr @lp_str_concat(ptr %t135, ptr @.str10681) call void @fn_emit(ptr %t136) br label %ret ret: @@ -106876,19 +107032,19 @@ then11: %t63 = load ptr, ptr %t14 %t64 = getelementptr inbounds %Cmp_Node, ptr %t63, i32 0, i32 1 %t65 = load ptr, ptr %t64 - %t66 = call ptr @lp_str_concat(ptr @.str10677, ptr %t65) - %t67 = call ptr @lp_str_concat(ptr %t66, ptr @.str10678) + %t66 = call ptr @lp_str_concat(ptr @.str10682, ptr %t65) + %t67 = call ptr @lp_str_concat(ptr %t66, ptr @.str10683) %t68 = load ptr, ptr %t14 %t69 = getelementptr inbounds %Cmp_Node, ptr %t68, i32 0, i32 9 %t70 = load ptr, ptr %t69 %t71 = call ptr @lp_str_concat(ptr %t67, ptr %t70) - %t72 = call ptr @lp_str_concat(ptr %t71, ptr @.str10679) + %t72 = call ptr @lp_str_concat(ptr %t71, ptr @.str10684) %t73 = load ptr, ptr %t14 %t74 = getelementptr inbounds %Cmp_Node, ptr %t73, i32 0, i32 8 %t75 = load i32, ptr %t74 %t76 = call ptr @fn_itoa(i32 %t75) %t77 = call ptr @lp_str_concat(ptr %t72, ptr %t76) - %t78 = call ptr @lp_str_concat(ptr %t77, ptr @.str10680) + %t78 = call ptr @lp_str_concat(ptr %t77, ptr @.str10685) call void @fn_perr(ptr %t78) br label %ifend13 ifend13: @@ -107350,7 +107506,7 @@ ifend94: %t205 = icmp ne i32 %t204, 0 br i1 %t205, label %then95, label %ifend97 then95: - call void @fn_emith(ptr @.str10681) + call void @fn_emith(ptr @.str10686) br label %ifend97 ifend97: %t206 = load i32, ptr @g_g_uses_unicodert @@ -107378,22 +107534,22 @@ ifend106: %t213 = icmp ne i32 %t212, 0 br i1 %t213, label %then107, label %ifend109 then107: - call void @fn_emith(ptr @.str10682) - call void @fn_emith(ptr @.str10683) + call void @fn_emith(ptr @.str10687) + call void @fn_emith(ptr @.str10688) br label %ifend109 ifend109: %t214 = load i32, ptr @g_g_uses_result %t215 = icmp ne i32 %t214, 0 br i1 %t215, label %then110, label %ifend112 then110: - call void @fn_emith(ptr @.str10684) + call void @fn_emith(ptr @.str10689) br label %ifend112 ifend112: %t216 = load i32, ptr @g_g_uses_option %t217 = icmp ne i32 %t216, 0 br i1 %t217, label %then113, label %ifend115 then113: - call void @fn_emith(ptr @.str10685) + call void @fn_emith(ptr @.str10690) br label %ifend115 ifend115: call void @fn_emit_cov_runtime() @@ -107441,10 +107597,10 @@ ifend5: %t12 = load i32, ptr %t7 %t13 = call ptr @fn_itoa(i32 %t12) store ptr %t13, ptr %t14 - call void @fn_emith(ptr @.str10686) + call void @fn_emith(ptr @.str10691) %t15 = load ptr, ptr %t14 call void @fn_emith(ptr %t15) - call void @fn_emith(ptr @.str10687) + call void @fn_emith(ptr @.str10692) store i32 0, ptr %t16 br label %wcond6 wcond6: @@ -107461,10 +107617,10 @@ wbody7: %t25 = icmp ne i32 %t24, 0 br i1 %t25, label %then9, label %ifend11 then9: - call void @fn_emith(ptr @.str10688) + call void @fn_emith(ptr @.str10693) br label %ifend11 ifend11: - call void @fn_emith(ptr @.str10689) + call void @fn_emith(ptr @.str10694) %t26 = load ptr, ptr @g_g_cov_lines %t27 = getelementptr inbounds %LSlice, ptr %t26, i32 0, i32 0 %t28 = load ptr, ptr %t27 @@ -107478,79 +107634,74 @@ ifend11: store i32 %t34, ptr %t16 br label %wcond6 wend8: - call void @fn_emith(ptr @.str10690) - call void @fn_emith(ptr @.str10691) + call void @fn_emith(ptr @.str10695) + call void @fn_emith(ptr @.str10696) %t35 = load ptr, ptr %t14 call void @fn_emith(ptr %t35) - call void @fn_emith(ptr @.str10692) + call void @fn_emith(ptr @.str10697) %t36 = load ptr, ptr %t14 - %t37 = call ptr @lp_str_concat(ptr @.str10693, ptr %t36) - %t38 = call ptr @lp_str_concat(ptr %t37, ptr @.str10694) + %t37 = call ptr @lp_str_concat(ptr @.str10698, ptr %t36) + %t38 = call ptr @lp_str_concat(ptr %t37, ptr @.str10699) call void @fn_emith(ptr %t38) %t39 = load ptr, ptr @g_g_src_name %t40 = call ptr @fn_emit_str_const(ptr %t39) store ptr %t40, ptr %t41 - %t42 = call ptr @fn_emit_str_const(ptr @.str10695) + %t42 = call ptr @fn_emit_str_const(ptr @.str10700) store ptr %t42, ptr %t43 - %t44 = call ptr @fn_emit_str_const(ptr @.str10696) + %t44 = call ptr @fn_emit_str_const(ptr @.str10701) store ptr %t44, ptr %t45 - %t46 = call ptr @fn_emit_str_const(ptr @.str10697) + %t46 = call ptr @fn_emit_str_const(ptr @.str10702) store ptr %t46, ptr %t47 - call void @fn_emith(ptr @.str10698) - call void @fn_emith(ptr @.str10699) + call void @fn_emith(ptr @.str10703) + call void @fn_emith(ptr @.str10704) %t48 = load i32, ptr @g_g_uses_panic %t49 = icmp eq i32 %t48, 0 %t50 = zext i1 %t49 to i32 %t51 = icmp ne i32 %t50, 0 br i1 %t51, label %then12, label %ifend14 then12: - call void @fn_emith(ptr @.str10700) + call void @fn_emith(ptr @.str10705) br label %ifend14 ifend14: - call void @fn_emith(ptr @.str10701) - call void @fn_emit(ptr @.str10702) + call void @fn_emith(ptr @.str10706) + call void @fn_emit(ptr @.str10707) %t52 = load ptr, ptr %t43 - %t53 = call ptr @lp_str_concat(ptr @.str10703, ptr %t52) - %t54 = call ptr @lp_str_concat(ptr %t53, ptr @.str10704) + %t53 = call ptr @lp_str_concat(ptr @.str10708, ptr %t52) + %t54 = call ptr @lp_str_concat(ptr %t53, ptr @.str10709) call void @fn_emit(ptr %t54) - call void @fn_emit(ptr @.str10705) + call void @fn_emit(ptr @.str10710) %t55 = load ptr, ptr %t45 - %t56 = call ptr @lp_str_concat(ptr @.str10706, ptr %t55) - %t57 = call ptr @lp_str_concat(ptr %t56, ptr @.str10707) + %t56 = call ptr @lp_str_concat(ptr @.str10711, ptr %t55) + %t57 = call ptr @lp_str_concat(ptr %t56, ptr @.str10712) call void @fn_emit(ptr %t57) %t58 = load ptr, ptr %t47 - %t59 = call ptr @lp_str_concat(ptr @.str10708, ptr %t58) - %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str10709) + %t59 = call ptr @lp_str_concat(ptr @.str10713, ptr %t58) + %t60 = call ptr @lp_str_concat(ptr %t59, ptr @.str10714) call void @fn_emit(ptr %t60) - call void @fn_emit(ptr @.str10710) - call void @fn_emit(ptr @.str10711) - call void @fn_emit(ptr @.str10712) - %t61 = load ptr, ptr %t41 - %t62 = call ptr @lp_str_concat(ptr @.str10713, ptr %t61) - %t63 = call ptr @lp_str_concat(ptr %t62, ptr @.str10714) - call void @fn_emit(ptr %t63) call void @fn_emit(ptr @.str10715) call void @fn_emit(ptr @.str10716) call void @fn_emit(ptr @.str10717) - %t64 = load ptr, ptr %t14 - %t65 = call ptr @lp_str_concat(ptr @.str10718, ptr %t64) - %t66 = call ptr @lp_str_concat(ptr %t65, ptr @.str10719) - call void @fn_emit(ptr %t66) + %t61 = load ptr, ptr %t41 + %t62 = call ptr @lp_str_concat(ptr @.str10718, ptr %t61) + %t63 = call ptr @lp_str_concat(ptr %t62, ptr @.str10719) + call void @fn_emit(ptr %t63) call void @fn_emit(ptr @.str10720) call void @fn_emit(ptr @.str10721) call void @fn_emit(ptr @.str10722) - %t67 = load ptr, ptr %t14 - call void @fn_emit(ptr %t67) - call void @fn_emit(ptr @.str10723) - call void @fn_emit(ptr @.str10724) + %t64 = load ptr, ptr %t14 + %t65 = call ptr @lp_str_concat(ptr @.str10723, ptr %t64) + %t66 = call ptr @lp_str_concat(ptr %t65, ptr @.str10724) + call void @fn_emit(ptr %t66) call void @fn_emit(ptr @.str10725) - %t68 = load ptr, ptr %t14 - call void @fn_emit(ptr %t68) call void @fn_emit(ptr @.str10726) call void @fn_emit(ptr @.str10727) + %t67 = load ptr, ptr %t14 + call void @fn_emit(ptr %t67) call void @fn_emit(ptr @.str10728) call void @fn_emit(ptr @.str10729) call void @fn_emit(ptr @.str10730) + %t68 = load ptr, ptr %t14 + call void @fn_emit(ptr %t68) call void @fn_emit(ptr @.str10731) call void @fn_emit(ptr @.str10732) call void @fn_emit(ptr @.str10733) @@ -107558,7 +107709,12 @@ ifend14: call void @fn_emit(ptr @.str10735) call void @fn_emit(ptr @.str10736) call void @fn_emit(ptr @.str10737) - call void @fn_emith(ptr @.str10738) + call void @fn_emit(ptr @.str10738) + call void @fn_emit(ptr @.str10739) + call void @fn_emit(ptr @.str10740) + call void @fn_emit(ptr @.str10741) + call void @fn_emit(ptr @.str10742) + call void @fn_emith(ptr @.str10743) br label %ret ret: ret void @@ -107607,7 +107763,7 @@ then0: br label %ret ifend2: %t29 = load ptr, ptr %t0 - %t30 = call ptr @fopen(ptr %t29, ptr @.str10739) + %t30 = call ptr @fopen(ptr %t29, ptr @.str10744) store ptr %t30, ptr %t31 %t32 = load ptr, ptr %t31 %t33 = icmp eq ptr %t32, null @@ -107717,7 +107873,7 @@ then0: %t11 = sub i32 %t10, 6 %t12 = load i32, ptr %t4 %t13 = call ptr @lp_str_slice(ptr %t9, i32 %t11, i32 %t12) - %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str10740) + %t14 = call i32 @lp_str_eq(ptr %t13, ptr @.str10745) %t15 = icmp ne i32 %t14, 0 br i1 %t15, label %then3, label %ifend5 then3: @@ -107803,7 +107959,7 @@ then3: br label %ret ifend5: %t20 = load ptr, ptr %t0 - %t21 = call ptr @lp_str_concat(ptr %t20, ptr @.str10741) + %t21 = call ptr @lp_str_concat(ptr %t20, ptr @.str10746) store ptr %t21, ptr %retval br label %ret ret: @@ -107926,7 +108082,7 @@ define void @fn_show_version() { entry: %t3 = alloca ptr %t0 = call ptr @fn_ludic_home() - %t1 = call ptr @fn_join_path(ptr %t0, ptr @.str10742) + %t1 = call ptr @fn_join_path(ptr %t0, ptr @.str10747) %t2 = call ptr @fn_read_file(ptr %t1) store ptr %t2, ptr %t3 %t4 = load ptr, ptr %t3 @@ -107935,12 +108091,12 @@ entry: %t7 = icmp ne i32 %t6, 0 br i1 %t7, label %then0, label %else1 then0: - call i32 (ptr, ...) @printf(ptr @.fmt_line, ptr @.str10743) + call i32 (ptr, ...) @printf(ptr @.fmt_line, ptr @.str10748) br label %ifend2 else1: %t8 = load ptr, ptr %t3 %t9 = call ptr @fn_chomp(ptr %t8) - %t10 = call ptr @lp_str_concat(ptr @.str10744, ptr %t9) + %t10 = call ptr @lp_str_concat(ptr @.str10749, ptr %t9) call i32 (ptr, ...) @printf(ptr @.fmt_line, ptr %t10) br label %ifend2 ifend2: @@ -107952,9 +108108,9 @@ ret: define void @L_init_globals() { entry: - store ptr @.str10745, ptr @g_g_parse_file - store ptr @.str10746, ptr @g_g_err_file - store ptr @.str10747, ptr @g_g_src_name + store ptr @.str10750, ptr @g_g_parse_file + store ptr @.str10751, ptr @g_g_err_file + store ptr @.str10752, ptr @g_g_src_name ret void } @@ -107984,8 +108140,10 @@ entry: %t187 = alloca ptr %t197 = alloca ptr %t207 = alloca ptr - %t219 = alloca i32 + %t217 = alloca ptr + %t220 = alloca ptr %t235 = alloca i32 + %t251 = alloca i32 store i32 %argc, ptr @L_argc store ptr %argv, ptr @L_argv store i32 0, ptr %retval @@ -108014,7 +108172,7 @@ wbody1: %t16 = load ptr, ptr %t15 store ptr %t16, ptr %t17 %t18 = load ptr, ptr %t17 - %t19 = call i32 @lp_str_eq(ptr %t18, ptr @.str10748) + %t19 = call i32 @lp_str_eq(ptr %t18, ptr @.str10753) %t20 = icmp ne i32 %t19, 0 br i1 %t20, label %then3, label %else4 then3: @@ -108022,7 +108180,7 @@ then3: br label %ifend5 else4: %t21 = load ptr, ptr %t17 - %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str10749) + %t22 = call i32 @lp_str_eq(ptr %t21, ptr @.str10754) %t23 = icmp ne i32 %t22, 0 br i1 %t23, label %then6, label %else7 then6: @@ -108030,7 +108188,7 @@ then6: br label %ifend8 else7: %t24 = load ptr, ptr %t17 - %t25 = call i32 @lp_str_eq(ptr %t24, ptr @.str10750) + %t25 = call i32 @lp_str_eq(ptr %t24, ptr @.str10755) %t26 = icmp ne i32 %t25, 0 br i1 %t26, label %then9, label %else10 then9: @@ -108038,7 +108196,7 @@ then9: br label %ifend11 else10: %t27 = load ptr, ptr %t17 - %t28 = call i32 @lp_str_eq(ptr %t27, ptr @.str10751) + %t28 = call i32 @lp_str_eq(ptr %t27, ptr @.str10756) %t29 = icmp ne i32 %t28, 0 br i1 %t29, label %then12, label %else13 then12: @@ -108046,7 +108204,7 @@ then12: br label %ifend14 else13: %t30 = load ptr, ptr %t17 - %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str10752) + %t31 = call i32 @lp_str_eq(ptr %t30, ptr @.str10757) %t32 = icmp ne i32 %t31, 0 br i1 %t32, label %then15, label %else16 then15: @@ -108055,7 +108213,7 @@ then15: br label %ifend17 else16: %t33 = load ptr, ptr %t17 - %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str10753) + %t34 = call i32 @lp_str_eq(ptr %t33, ptr @.str10758) %t35 = icmp ne i32 %t34, 0 br i1 %t35, label %then18, label %else19 then18: @@ -108063,7 +108221,7 @@ then18: br label %ifend20 else19: %t36 = load ptr, ptr %t17 - %t37 = call i32 @lp_str_eq(ptr %t36, ptr @.str10754) + %t37 = call i32 @lp_str_eq(ptr %t36, ptr @.str10759) %t38 = icmp ne i32 %t37, 0 br i1 %t38, label %then21, label %else22 then21: @@ -108071,7 +108229,7 @@ then21: br label %ifend23 else22: %t39 = load ptr, ptr %t17 - %t40 = call i32 @lp_str_eq(ptr %t39, ptr @.str10755) + %t40 = call i32 @lp_str_eq(ptr %t39, ptr @.str10760) %t41 = icmp ne i32 %t40, 0 br i1 %t41, label %then24, label %else25 then24: @@ -108079,7 +108237,7 @@ then24: br label %ifend26 else25: %t42 = load ptr, ptr %t17 - %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str10756) + %t43 = call i32 @lp_str_eq(ptr %t42, ptr @.str10761) %t44 = icmp ne i32 %t43, 0 br i1 %t44, label %then27, label %else28 then27: @@ -108087,7 +108245,7 @@ then27: br label %ifend29 else28: %t45 = load ptr, ptr %t17 - %t46 = call i32 @lp_str_eq(ptr %t45, ptr @.str10757) + %t46 = call i32 @lp_str_eq(ptr %t45, ptr @.str10762) %t47 = icmp ne i32 %t46, 0 br i1 %t47, label %then30, label %else31 then30: @@ -108120,8 +108278,8 @@ else31: br i1 %t65, label %then36, label %else37 then36: %t66 = load ptr, ptr %t17 - %t67 = call ptr @lp_str_concat(ptr @.str10758, ptr %t66) - %t68 = call ptr @lp_str_concat(ptr %t67, ptr @.str10759) + %t67 = call ptr @lp_str_concat(ptr @.str10763, ptr %t66) + %t68 = call ptr @lp_str_concat(ptr %t67, ptr @.str10764) store ptr %t68, ptr %t69 %t70 = load ptr, ptr @__stderrp %t71 = load ptr, ptr %t69 @@ -108168,7 +108326,7 @@ wend2: %t84 = icmp ne i32 %t83, 0 br i1 %t84, label %then39, label %ifend41 then39: - call void @fn_die(ptr @.str10760) + call void @fn_die(ptr @.str10765) br label %ifend41 ifend41: %t85 = load ptr, ptr %t0 @@ -108180,7 +108338,7 @@ ifend41: %t91 = icmp ne i32 %t90, 0 br i1 %t91, label %then42, label %ifend44 then42: - call void @fn_die(ptr @.str10761) + call void @fn_die(ptr @.str10766) br label %ifend44 ifend44: %t92 = load ptr, ptr %t0 @@ -108299,7 +108457,7 @@ then66: %t150 = load ptr, ptr %t0 %t151 = call ptr @fn_base_name(ptr %t150) %t152 = call ptr @fn_strip_ludic(ptr %t151) - %t153 = call ptr @lp_str_concat(ptr @.str10762, ptr %t152) + %t153 = call ptr @lp_str_concat(ptr @.str10767, ptr %t152) store ptr %t153, ptr %t1 br label %ifend68 ifend68: @@ -108315,12 +108473,12 @@ ifend68: br i1 %t162, label %then69, label %ifend71 then69: %t163 = load ptr, ptr %t156 - %t164 = call ptr @lp_str_concat(ptr @.str10763, ptr %t163) + %t164 = call ptr @lp_str_concat(ptr @.str10768, ptr %t163) %t165 = call i32 @system(ptr %t164) br label %ifend71 ifend71: %t166 = load ptr, ptr %t1 - %t167 = call ptr @lp_str_concat(ptr %t166, ptr @.str10764) + %t167 = call ptr @lp_str_concat(ptr %t166, ptr @.str10769) store ptr %t167, ptr %t168 %t169 = load ptr, ptr %t168 %t170 = call i32 @fn_ir_flush(ptr %t169) @@ -108329,15 +108487,15 @@ ifend71: %t173 = icmp ne i32 %t172, 0 br i1 %t173, label %then72, label %ifend74 then72: - call void @fn_die(ptr @.str10765) + call void @fn_die(ptr @.str10770) br label %ifend74 ifend74: - %t174 = call ptr @fn_getenv_or(ptr @.str10766, ptr @.str10767) + %t174 = call ptr @fn_getenv_or(ptr @.str10771, ptr @.str10772) store ptr %t174, ptr %t175 %t176 = call ptr @fn_ludic_home() store ptr %t176, ptr %t177 %t178 = load ptr, ptr %t175 - %t179 = call ptr @lp_str_concat(ptr %t178, ptr @.str10768) + %t179 = call ptr @lp_str_concat(ptr %t178, ptr @.str10773) %t180 = load ptr, ptr %t168 %t181 = call ptr @lp_str_concat(ptr %t179, ptr %t180) store ptr %t181, ptr %t182 @@ -108346,26 +108504,26 @@ ifend74: br i1 %t184, label %then75, label %ifend77 then75: %t185 = load ptr, ptr %t177 - %t186 = call ptr @fn_join_path(ptr %t185, ptr @.str10769) + %t186 = call ptr @fn_join_path(ptr %t185, ptr @.str10774) store ptr %t186, ptr %t187 %t188 = load ptr, ptr %t182 - %t189 = call ptr @lp_str_concat(ptr %t188, ptr @.str10770) + %t189 = call ptr @lp_str_concat(ptr %t188, ptr @.str10775) %t190 = load ptr, ptr %t187 %t191 = call ptr @lp_str_concat(ptr %t189, ptr %t190) - %t192 = call ptr @lp_str_concat(ptr %t191, ptr @.str10771) + %t192 = call ptr @lp_str_concat(ptr %t191, ptr @.str10776) store ptr %t192, ptr %t182 %t193 = load i32, ptr @g_g_uses_audio %t194 = icmp ne i32 %t193, 0 br i1 %t194, label %then78, label %ifend80 then78: %t195 = load ptr, ptr %t177 - %t196 = call ptr @fn_join_path(ptr %t195, ptr @.str10772) + %t196 = call ptr @fn_join_path(ptr %t195, ptr @.str10777) store ptr %t196, ptr %t197 %t198 = load ptr, ptr %t182 - %t199 = call ptr @lp_str_concat(ptr %t198, ptr @.str10773) + %t199 = call ptr @lp_str_concat(ptr %t198, ptr @.str10778) %t200 = load ptr, ptr %t197 %t201 = call ptr @lp_str_concat(ptr %t199, ptr %t200) - %t202 = call ptr @lp_str_concat(ptr %t201, ptr @.str10774) + %t202 = call ptr @lp_str_concat(ptr %t201, ptr @.str10779) store ptr %t202, ptr %t182 br label %ifend80 ifend80: @@ -108376,59 +108534,80 @@ ifend77: br i1 %t204, label %then81, label %ifend83 then81: %t205 = load ptr, ptr %t177 - %t206 = call ptr @fn_join_path(ptr %t205, ptr @.str10775) + %t206 = call ptr @fn_join_path(ptr %t205, ptr @.str10780) store ptr %t206, ptr %t207 %t208 = load ptr, ptr %t182 - %t209 = call ptr @lp_str_concat(ptr %t208, ptr @.str10776) + %t209 = call ptr @lp_str_concat(ptr %t208, ptr @.str10781) %t210 = load ptr, ptr %t207 %t211 = call ptr @lp_str_concat(ptr %t209, ptr %t210) - %t212 = call ptr @lp_str_concat(ptr %t211, ptr @.str10777) + %t212 = call ptr @lp_str_concat(ptr %t211, ptr @.str10782) store ptr %t212, ptr %t182 br label %ifend83 ifend83: - %t213 = load ptr, ptr %t182 - %t214 = call ptr @lp_str_concat(ptr %t213, ptr @.str10778) - %t215 = load ptr, ptr %t1 - %t216 = call ptr @lp_str_concat(ptr %t214, ptr %t215) - store ptr %t216, ptr %t182 - %t217 = load ptr, ptr %t182 - %t218 = call i32 @system(ptr %t217) - store i32 %t218, ptr %t219 - %t220 = load i32, ptr %t5 - %t221 = icmp eq i32 %t220, 0 - %t222 = zext i1 %t221 to i32 - %t223 = icmp ne i32 %t222, 0 - br i1 %t223, label %then84, label %ifend86 + %t213 = load i32, ptr @g_g_uses_gl + %t214 = icmp ne i32 %t213, 0 + br i1 %t214, label %then84, label %ifend86 then84: - %t224 = load ptr, ptr %t168 - %t225 = call ptr @lp_str_concat(ptr @.str10779, ptr %t224) - %t226 = call i32 @system(ptr %t225) + %t215 = load ptr, ptr %t177 + %t216 = call ptr @fn_join_path(ptr %t215, ptr @.str10783) + store ptr %t216, ptr %t217 + %t218 = load ptr, ptr %t177 + %t219 = call ptr @fn_join_path(ptr %t218, ptr @.str10784) + store ptr %t219, ptr %t220 + %t221 = load ptr, ptr %t182 + %t222 = call ptr @lp_str_concat(ptr %t221, ptr @.str10785) + %t223 = load ptr, ptr %t217 + %t224 = call ptr @lp_str_concat(ptr %t222, ptr %t223) + %t225 = call ptr @lp_str_concat(ptr %t224, ptr @.str10786) + %t226 = load ptr, ptr %t220 + %t227 = call ptr @lp_str_concat(ptr %t225, ptr %t226) + %t228 = call ptr @lp_str_concat(ptr %t227, ptr @.str10787) + store ptr %t228, ptr %t182 br label %ifend86 ifend86: - %t227 = load i32, ptr %t219 - %t228 = icmp ne i32 %t227, 0 - %t229 = zext i1 %t228 to i32 - %t230 = icmp ne i32 %t229, 0 - br i1 %t230, label %then87, label %ifend89 -then87: - call void @fn_die(ptr @.str10780) - br label %ifend89 -ifend89: - %t231 = load i32, ptr %t6 - %t232 = icmp ne i32 %t231, 0 - br i1 %t232, label %then90, label %ifend92 -then90: - %t233 = load ptr, ptr %t1 + %t229 = load ptr, ptr %t182 + %t230 = call ptr @lp_str_concat(ptr %t229, ptr @.str10788) + %t231 = load ptr, ptr %t1 + %t232 = call ptr @lp_str_concat(ptr %t230, ptr %t231) + store ptr %t232, ptr %t182 + %t233 = load ptr, ptr %t182 %t234 = call i32 @system(ptr %t233) store i32 %t234, ptr %t235 - %t236 = load i32, ptr %t235 - %t237 = lshr i32 %t236, 8 - %t238 = and i32 %t237, 255 - call void @exit(i32 %t238) - unreachable + %t236 = load i32, ptr %t5 + %t237 = icmp eq i32 %t236, 0 + %t238 = zext i1 %t237 to i32 + %t239 = icmp ne i32 %t238, 0 + br i1 %t239, label %then87, label %ifend89 +then87: + %t240 = load ptr, ptr %t168 + %t241 = call ptr @lp_str_concat(ptr @.str10789, ptr %t240) + %t242 = call i32 @system(ptr %t241) + br label %ifend89 +ifend89: + %t243 = load i32, ptr %t235 + %t244 = icmp ne i32 %t243, 0 + %t245 = zext i1 %t244 to i32 + %t246 = icmp ne i32 %t245, 0 + br i1 %t246, label %then90, label %ifend92 +then90: + call void @fn_die(ptr @.str10790) + br label %ifend92 ifend92: + %t247 = load i32, ptr %t6 + %t248 = icmp ne i32 %t247, 0 + br i1 %t248, label %then93, label %ifend95 +then93: + %t249 = load ptr, ptr %t1 + %t250 = call i32 @system(ptr %t249) + store i32 %t250, ptr %t251 + %t252 = load i32, ptr %t251 + %t253 = lshr i32 %t252, 8 + %t254 = and i32 %t253, 255 + call void @exit(i32 %t254) + unreachable +ifend95: br label %ret ret: - %t239 = load i32, ptr %retval - ret i32 %t239 + %t255 = load i32, ptr %retval + ret i32 %t255 } diff --git a/selfhost/main.ludic b/selfhost/main.ludic index 18eaac57..b100b4e1 100644 --- a/selfhost/main.ludic +++ b/selfhost/main.ludic @@ -180,6 +180,13 @@ entry { let http = join_path(home, "runtime/native/http.ll") cmd = `{cmd} {http} -Wl,-needed_framework,Foundation` } + # Gl.* links the OpenGL backend: gl.ll (offscreen contexts, float helpers), the + # generated per-entry-point ABI thunks, and OpenGL.framework. Windowed or not. + if g_uses_gl { + let gl = join_path(home, "runtime/native/gl.ll") + let glt = join_path(home, "runtime/native/gl_thunks.ll") + cmd = `{cmd} {gl} {glt} -framework OpenGL` + } cmd = `{cmd} -o {out}` let rc = run(cmd) diff --git a/tools/ludic-cli/assets.ludic b/tools/ludic-cli/assets.ludic new file mode 100644 index 00000000..22570e0a --- /dev/null +++ b/tools/ludic-cli/assets.ludic @@ -0,0 +1,73 @@ +# assets.ludic — fetch the CC0 Poly Haven assets the renderer uses +# (ported off tools/glgen/fetch_assets.sh, the last shell script in the tree). +# +# ludic assets [--force] (a game, fetching what the renderer needs) +# ludic dev fetch-assets [--force] (the same thing, from a Ludic checkout) +# +# The manifest is `packages/ludic.render3d/assets.manifest` — one ` ` +# pair per line — and it belongs to the renderer, not to any one project: the renderer +# decides which scanned materials it wants. It ships with the package (and so with the +# toolchain), so a game outside this repo fetches the right set without keeping its own +# copy of the list. The files land in the PROJECT, under assets/polyhaven/: they are +# large and redistributable from their origin, so they are fetched rather than tracked +# by anyone. + +# the manifest that belongs to the renderer, in a checkout or in the install +function assets_manifest_path() -> pointer { + let local = "packages/ludic.render3d/assets.manifest" + if file_exists(local) { return local } + var home = getenv("LUDIC_HOME") + if home == null or slen(home) == 0 { home = `{getenv_or("HOME", "")}/.ludic` } + let inst = `{home}/packages/ludic.render3d/assets.manifest` + if file_exists(inst) { return inst } + return "" +} + +function cmd_fetch_assets() -> int { + let force = arg_count() > 2 and arg(2) == "--force" + let root = "assets/polyhaven" + let mpath = assets_manifest_path() + if mpath == "" { err("ludic assets: cannot find packages/ludic.render3d/assets.manifest (is the toolchain installed?)\n"); return 1 } + let manifest = read_file(mpath) + if manifest == null { err(`ludic assets: cannot read {mpath}\n`); return 1 } + + var got = 0 + var had = 0 + var failed = 0 + let n = slen(manifest) + var i = 0 + while i < n { + var j = i + while j < n and manifest[j] != 10 { j += 1 } + let line = Text.trim(str_sub(manifest, i, j)) + i = j + 1 + if slen(line) == 0 { continue } + + # split the line into on the first run of whitespace + let ln = slen(line) + var k = 0 + while k < ln and not str_space(line[k]) { k += 1 } + let rel = str_sub(line, 0, k) + while k < ln and str_space(line[k]) { k += 1 } + let url = Text.trim(str_sub(line, k, ln)) + if slen(rel) == 0 or slen(url) == 0 { continue } + + let dest = `{root}/{rel}` + if not force and shq(`test -s {dest}`) { + had += 1 + continue + } + print(`fetch {rel}`) + run(`mkdir -p "$(dirname {dest})"`) + if not shq(`curl -sSL --retry 3 -o {dest} {url}`) { + err(`fetch-assets: cannot fetch {rel}\n`) + run(`rm -f {dest}`) + failed += 1 + } else { + got += 1 + } + } + if failed > 0 { err(`fetch-assets: {string(failed)} failed\n`); return 1 } + print(`OK {string(got)} fetched, {string(had)} already present`) + return 0 +} diff --git a/tools/ludic-cli/build.ludic b/tools/ludic-cli/build.ludic index 146afd98..3ecedcb9 100644 --- a/tools/ludic-cli/build.ludic +++ b/tools/ludic-cli/build.ludic @@ -36,7 +36,7 @@ function compile_app(src: pointer, out: pointer, mode: int, save: bool) -> bool if mode == 2 { if not shq(`{ludicc()} --headless {src} --emit-llvm -o {ll}`) { return false } - if not shq(`{cc()} -O2 {ll}{pbf} -o {out}`) { return false } + if not shq(`{cc()} -O2 {ll}{gl_link_flags(ll)}{pbf} -o {out}`) { return false } if not save { run(`rm -f {ll}`) } return true } @@ -46,11 +46,19 @@ function compile_app(src: pointer, out: pointer, mode: int, save: bool) -> bool # canonical `ludicc -o` path links it only when Audio.* is used. let cocoa = `{home}runtime/native/cocoa.ll` let audio = `{home}runtime/native/audio.ll` - if not shq(`{cc()} -O2 {ll} {cocoa} {audio} -framework Cocoa -Wl,-needed_framework,GameController -Wl,-needed_framework,AVFoundation -Wl,-rpath,@loader_path{pbf} -o {out}`) { return false } + if not shq(`{cc()} -O2 {ll} {cocoa} {audio} -framework Cocoa -Wl,-needed_framework,GameController -Wl,-needed_framework,AVFoundation -Wl,-rpath,@loader_path{gl_link_flags(ll)}{pbf} -o {out}`) { return false } if not save { run(`rm -f {ll}`) } return true } +# A program that uses Gl.* references the @lgl_* thunks; link the OpenGL backend +# (gl.ll + gl_thunks.ll + OpenGL.framework) only then, so other builds are untouched. +function gl_link_flags(ll: pointer) -> pointer { + if not shq(`grep -q "@lgl_" {ll}`) { return "" } + let home = ludic_home() + return ` {home}runtime/native/gl.ll {home}runtime/native/gl_thunks.ll -framework OpenGL` +} + # the directory part of a path, without the trailing '/' ("" when there is none) function dir_of_path(p: pointer) -> pointer { var last = -1 diff --git a/tools/ludic-cli/dev.ludic b/tools/ludic-cli/dev.ludic index dd28829d..0085b16a 100644 --- a/tools/ludic-cli/dev.ludic +++ b/tools/ludic-cli/dev.ludic @@ -32,6 +32,8 @@ program LudicDev { import "docgen.ludic" import "docgen_gen.ludic" import "docgen_check.ludic" + import "glgen.ludic" + import "assets.ludic" import "release.ludic" import "pkg.ludic" import "pkg_test.ludic" @@ -47,6 +49,7 @@ program LudicDev { print(" build-cli build just bin/ludicc from the IR seed") print(" tools [--install] [--test] build the editor toolchain (ludic-fmt, ludic-lsp)") print(" clean remove build/") + print(" fetch-assets [--force] fetch the CC0 Poly Haven assets the rendering examples use") print("") print("test:") print(" test the full regression suite") @@ -65,6 +68,7 @@ program LudicDev { print(" docs-gen [--out DIR] generate the documentation site (default build/pages)") print(" docs-check [DIR] coverage/integrity guard over a generated docs site") print(" docs-palette [--check] regenerate emit_color.ludic + palette.json from the palette table") + print(" glgen [--check] regenerate gl_api.ludic + gl_thunks.ll from the platform gl3.h") print("") print("release:") print(" release [major|minor|patch] [--dry-run] [--publish]") @@ -101,6 +105,8 @@ program LudicDev { if (cmd == "check-vocabulary") { return cmd_check_vocab() } if (cmd == "lint-asset") { return cmd_lint_asset() } if (cmd == "docs-palette") { return cmd_docs_palette() } + if (cmd == "glgen") { return cmd_glgen() } + if (cmd == "fetch-assets") { return cmd_fetch_assets() } if (cmd == "docs-gen") { return cmd_docs_gen() } if (cmd == "docs-check") { return cmd_docs_check() } if (cmd == "golden") { return cmd_golden() } diff --git a/tools/ludic-cli/glgen.ludic b/tools/ludic-cli/glgen.ludic new file mode 100644 index 00000000..f8e08dcd --- /dev/null +++ b/tools/ludic-cli/glgen.ludic @@ -0,0 +1,542 @@ +# glgen.ludic — the OpenGL binding generator, in Ludic (ported off glgen.py, the +# same way docgen.ludic was ported off gen.py). One x subcommand: +# +# ludic-dev glgen [--check] read the platform gl3.h and emit +# runtime/native/gl_api.ludic + runtime/native/gl_thunks.ll; +# --check regenerates into scratch files and compares, +# so the drift guard judges the working tree. +# +# Both outputs are tracked, so a build never runs this: it is the tool you run +# when the SDK's gl3.h changes. Output is byte-identical to the Python generator +# it replaces (verified by the drift guard in `ludic-dev test`). + +# ---- parsed constants ------------------------------------------------------- +var glg_cname: []pointer = null # GL_DEPTH_BUFFER_BIT +var glg_ctype: []pointer = null # "int" | "long" +var glg_cval: []pointer = null # the literal as it is emitted + +# ---- parsed entry points ---------------------------------------------------- +# Parallel arrays; the params of function f are the pcount[f] entries of the flat +# pp_* arrays starting at poff[f]. Flat arrays keep this free of nested slices. +var glg_fname: []pointer = null # "CullFace" (the gl prefix already stripped) +var glg_frbase: []pointer = null # return base type ("void", "GLuint", …) +var glg_frstar: []int = null # return pointer depth +var glg_fpoff: []int = null +var glg_fpcnt: []int = null +var glg_ppbase: []pointer = null +var glg_ppstar: []int = null +var glg_ppname: []pointer = null + +# ---- character helpers ------------------------------------------------------ +function glg_upper(c: int) -> bool { return c >= 'A' and c <= 'Z' } +function glg_lower(c: int) -> bool { return c >= 'a' and c <= 'z' } +function glg_digit(c: int) -> bool { return c >= '0' and c <= '9' } +function glg_hexdig(c: int) -> bool { + return glg_digit(c) or (c >= 'a' and c <= 'f') or (c >= 'A' and c <= 'F') +} +# a GL_* macro name character +function glg_namech(c: int) -> bool { return glg_upper(c) or glg_digit(c) or c == '_' } + +# a fresh NUL-terminated copy of s[a..b) + +# CamelCase -> snake_case, exactly as glgen.py's snake(): an underscore goes in +# before an upper-case letter that follows a lower-case one, nowhere else. +function glg_snake(n: pointer) -> pointer { + let b = sb_new() + let m = slen(n) + var i = 0 + while i < m { + let c = n[i] + if glg_upper(c) and i > 0 and glg_lower(n[i - 1]) { sb_putc(b, '_') } + if glg_upper(c) { sb_putc(b, c + 32) } else { sb_putc(b, c) } + i += 1 + } + return sb_str(b) +} + +# ---- the type tables (glgen.py's INT / LONG / FLT / DBL) -------------------- +# Membership in a space-delimited list, matched as whole tokens — one line per +# table instead of a chain of `or`s that a newline would cut in half. +function glg_in(t: pointer, set: pointer) -> bool { + let n = slen(set) + var p = 0 + while p <= n { + var q = p + while q < n and set[q] != 32 { q += 1 } + if str_sub(set, p, q) == t { return true } + if q >= n { break } + p = q + 1 + } + return false +} + +function glg_is_int(t: pointer) -> bool { + return glg_in(t, "GLenum GLuint GLint GLsizei GLbitfield GLshort GLushort GLbyte GLubyte GLhalf GLchar GLboolean GLfixed") +} +function glg_is_long(t: pointer) -> bool { + return glg_in(t, "GLsizeiptr GLintptr GLint64 GLuint64 GLint64EXT GLuint64EXT") +} +function glg_is_flt(t: pointer) -> bool { return glg_in(t, "GLfloat GLclampf") } +function glg_is_dbl(t: pointer) -> bool { return glg_in(t, "GLdouble GLclampd") } + +# the LLVM type a C parameter of this shape has +function glg_ir_ty(base: pointer, star: int) -> pointer { + if star > 0 { return "ptr" } + if base == "GLboolean" { return "i8" } + if base == "GLbyte" or base == "GLubyte" or base == "GLchar" { return "i8" } + if base == "GLshort" or base == "GLushort" or base == "GLhalf" { return "i16" } + if glg_is_int(base) { return "i32" } + if glg_is_long(base) { return "i64" } + if glg_is_flt(base) { return "float" } + if glg_is_dbl(base) { return "double" } + if base == "GLsync" { return "ptr" } + if base == "void" { return "void" } + return null +} + +# the Ludic type it is bound as +function glg_ludic_ty(base: pointer, star: int) -> pointer { + if star > 0 or base == "GLsync" { return "pointer" } + if glg_is_int(base) { return "int" } + if glg_is_long(base) { return "long" } + if glg_is_flt(base) or glg_is_dbl(base) { return "fixed" } + if base == "void" { return "void" } + return null +} + +# the Ludic ABI type carrying an LLVM type across the extern boundary +function glg_abi_ty(ct: pointer) -> pointer { + if ct == "i64" { return "i64" } + if ct == "ptr" { return "ptr" } + if ct == "void" { return "void" } + return "i32" +} + +# ---- parameter names -------------------------------------------------------- +# A Ludic keyword or type name cannot label a parameter. glVertexAttribPointer's +# `pointer` is a byte offset, so it says so rather than wearing a trailing _. +function glg_reserved(n: pointer) -> bool { + if glg_in(n, "program import property model enum ui namespace const var function extern handler entry") { return true } + if glg_in(n, "event scene test phase query on cancellable public layer start") { return true } + if glg_in(n, "let return if else while for in spawn despawn enable disable match machine state become where prefab") { return true } + if glg_in(n, "and or not break continue new emit cancel try") { return true } + if glg_in(n, "int long fixed countdown bool entity string pointer byte words fixeds pointers") { return true } + if glg_in(n, "Vector IVec2 Rect void true false null") { return true } + return false +} +function glg_pname(raw: pointer, i: int) -> pointer { + var n = raw + if slen(n) == 0 { n = `a{string(i)}` } + n = glg_snake(n) + if n == "pointer" { return "offset" } + if n == "program" { return "prog" } + if n == "start" { return "first" } + if n == "string" { return "text" } + if n == "layer" { return "level" } + if glg_reserved(n) { return n + "_" } + return n +} + +# ---- one C declarator -> (base, star, name) --------------------------------- +# glgen.py's ctype_of: count the stars, drop every `const`, split what is left. +# Sets glg_t_base / glg_t_star / glg_t_name (Ludic has no tuple return). +var glg_t_base: pointer = null +var glg_t_star: int = 0 +var glg_t_name: pointer = null + +function glg_ctype_of(decl: pointer) -> void { + let m = slen(decl) + var star = 0 + var i = 0 + while i < m { + if decl[i] == '*' { star += 1 } + i += 1 + } + # drop `const` (whole words) and turn '*' into a separator + let b = sb_new() + i = 0 + while i < m { + if decl[i] == 'c' and i + 5 <= m and str_sub(decl, i, i + 5) == "const" { + i += 5 + sb_putc(b, 32) + } else { + if decl[i] == '*' { sb_putc(b, 32) } else { sb_putc(b, decl[i]) } + i += 1 + } + } + let flat = sb_str(b) + # split on whitespace + let parts = new []pointer + let fn = slen(flat) + var p = 0 + while p < fn { + while p < fn and str_space(flat[p]) { p += 1 } + if p >= fn { break } + var q = p + while q < fn and not str_space(flat[q]) { q += 1 } + push(parts, str_sub(flat, p, q)) + p = q + } + glg_t_star = star + if len(parts) == 0 { glg_t_base = ""; glg_t_name = ""; return } + glg_t_base = parts[0] + if len(parts) > 1 { glg_t_name = parts[1] } else { glg_t_name = "" } +} + +# ---- constants -------------------------------------------------------------- +# `#define GL_NAME <0xHEX|-?DEC>[u|U|ull|ULL]` and nothing else on the line — +# the shape glgen.py's regex accepted. Returns false when the line is not one. +var glg_v_hex: bool = false +var glg_v_digits: pointer = null # the numeric text, suffix stripped +var glg_v_neg: bool = false + +function glg_num_of(tok: pointer) -> bool { + let n = slen(tok) + var i = 0 + glg_v_neg = false + glg_v_hex = false + if i < n and tok[i] == '-' { glg_v_neg = true; i += 1 } + let numstart = i + if i + 1 < n and tok[i] == '0' and tok[i + 1] == 'x' { + if glg_v_neg { return false } + glg_v_hex = true + i += 2 + let ds = i + while i < n and glg_hexdig(tok[i]) { i += 1 } + if i == ds { return false } + } else { + let ds = i + while i < n and glg_digit(tok[i]) { i += 1 } + if i == ds { return false } + } + glg_v_digits = str_sub(tok, numstart, i) + # what is left must be one of the accepted integer suffixes + let suf = str_sub(tok, i, n) + if suf == "" or suf == "u" or suf == "U" or suf == "ull" or suf == "ULL" { return true } + return false +} + +# accumulate hex digits into an i32: the wrap makes an 8-digit value with the top +# bit set come out as the signed integer with those exact bits (glgen.py's v - 2^32). +function glg_hex_i32(h: pointer) -> int { + var v = 0 + var i = 0 + while i < slen(h) { + let c = h[i] + var d = 0 + if glg_digit(c) { d = c - '0' } + if c >= 'a' and c <= 'f' { d = c - 'a' + 10 } + if c >= 'A' and c <= 'F' { d = c - 'A' + 10 } + v = v * 16 + d + i += 1 + } + return v +} + +function glg_parse_define(line: pointer) -> void { + let n = slen(line) + if n < 8 { return } + if str_sub(line, 0, 8) != "#define " { return } + var i = 8 + while i < n and str_space(line[i]) { i += 1 } + let ns = i + while i < n and glg_namech(line[i]) { i += 1 } + let name = str_sub(line, ns, i) + if slen(name) < 4 { return } + if str_sub(name, 0, 3) != "GL_" { return } + # the name must be followed by whitespace (not '(' — that is a macro) + if i >= n or not str_space(line[i]) { return } + while i < n and str_space(line[i]) { i += 1 } + let vs = i + while i < n and not str_space(line[i]) { i += 1 } + let tok = str_sub(line, vs, i) + # trailing whitespace only + while i < n and str_space(line[i]) { i += 1 } + if i != n { return } + if slen(tok) == 0 { return } + # glgen.py skips the GL_VERSION_* feature macros and any repeated name + if slen(name) >= 11 and str_sub(name, 0, 11) == "GL_VERSION_" { return } + var k = 0 + while k < len(glg_cname) { + if glg_cname[k] == name { return } + k += 1 + } + if not glg_num_of(tok) { return } + + # classify the width exactly as glgen.py did, but by digit count so a 64-bit + # all-ones literal never has to be parsed into a signed 64-bit register. + if glg_v_hex { + var d = glg_v_digits + var h = str_sub(d, 2, slen(d)) # drop the 0x + var z = 0 + while z < slen(h) - 1 and h[z] == '0' { z += 1 } + h = str_sub(h, z, slen(h)) + let hn = slen(h) + if hn > 8 { + push(glg_cname, name); push(glg_ctype, "long"); push(glg_cval, "-1") + return + } + if hn == 8 and not (h[0] >= '0' and h[0] <= '7') { + # 0x8… — the same bits as a negative i32; emit the signed decimal + let v = glg_hex_i32(h) + push(glg_cname, name); push(glg_ctype, "int"); push(glg_cval, string(v)) + return + } + push(glg_cname, name); push(glg_ctype, "int"); push(glg_cval, glg_v_digits) + return + } + var lit = glg_v_digits + if glg_v_neg { lit = "-" + lit } + push(glg_cname, name); push(glg_ctype, "int"); push(glg_cval, lit) +} + +# ---- entry points ----------------------------------------------------------- +# `GLAPI APIENTRY gl () …;` — every gl3.h declaration is on one +# line, so a line scan matches what glgen.py's re.M regex did. +function glg_parse_glapi(line: pointer) -> void { + let n = slen(line) + if n < 6 { return } + if str_sub(line, 0, 6) != "GLAPI " { return } + let ap = Text.index_of(line, " APIENTRY ") + if ap < 0 { return } + let ret = Text.trim(str_sub(line, 6, ap)) + var i = ap + 10 + while i < n and str_space(line[i]) { i += 1 } + let ns = i + while i < n and (glg_upper(line[i]) or glg_lower(line[i]) or glg_digit(line[i]) or line[i] == '_') { i += 1 } + let fname = str_sub(line, ns, i) + if slen(fname) < 3 { return } + if str_sub(fname, 0, 2) != "gl" { return } + while i < n and str_space(line[i]) { i += 1 } + if i >= n or line[i] != '(' { return } + let argstart = i + 1 + var depth = 1 + i += 1 + while i < n and depth > 0 { + if line[i] == '(' { depth += 1 } + if line[i] == ')' { depth -= 1 } + if depth == 0 { break } + i += 1 + } + if depth != 0 { return } + let args = str_sub(line, argstart, i) + let bare = str_sub(fname, 2, slen(fname)) + var k = 0 + while k < len(glg_fname) { + if glg_fname[k] == bare { return } + k += 1 + } + + glg_ctype_of(ret) + let rbase = glg_t_base + let rstar = glg_t_star + + let poff = len(glg_ppbase) + var pcnt = 0 + let at = Text.trim(args) + if at != "void" and at != "" { + # split the argument list on commas (no function-pointer args in gl3.h) + let an = slen(args) + var p = 0 + while p <= an { + var q = p + while q < an and args[q] != ',' { q += 1 } + let one = str_sub(args, p, q) + glg_ctype_of(one) + push(glg_ppbase, glg_t_base) + push(glg_ppstar, glg_t_star) + push(glg_ppname, glg_t_name) + pcnt += 1 + if q >= an { break } + p = q + 1 + } + } + push(glg_fname, bare) + push(glg_frbase, rbase) + push(glg_frstar, rstar) + push(glg_fpoff, poff) + push(glg_fpcnt, pcnt) +} + +function glg_parse(h: pointer) -> void { + glg_cname = new []pointer; glg_ctype = new []pointer; glg_cval = new []pointer + glg_fname = new []pointer; glg_frbase = new []pointer; glg_frstar = new []int + glg_fpoff = new []int; glg_fpcnt = new []int + glg_ppbase = new []pointer; glg_ppstar = new []int; glg_ppname = new []pointer + let n = slen(h) + var i = 0 + while i < n { + var j = i + while j < n and h[j] != 10 { j += 1 } + let line = str_sub(h, i, j) + if slen(line) > 0 { + if line[0] == '#' { glg_parse_define(line) } + if line[0] == 'G' { glg_parse_glapi(line) } + } + i = j + 1 + } +} + +# ---- emit gl_api.ludic ------------------------------------------------------ +function glg_emit_ludic(path: pointer) -> bool { + let b = sb_new() + sb_puts(b, "# ============================================================================\n") + sb_puts(b, "# gl_api.ludic — the OpenGL 4.1 core API, bound for Ludic. GENERATED by\n") + sb_puts(b, "# `ludic-dev glgen` from the platform gl3.h: every entry point and every GL_* constant.\n") + sb_puts(b, "# Do not edit by hand; regenerate. float/double parameters take `fixed`; the IR\n") + sb_puts(b, "# thunks in runtime/native/gl.ll (also generated) convert at the C boundary.\n") + sb_puts(b, "# ============================================================================\n") + sb_puts(b, "\n") + var i = 0 + while i < len(glg_cname) { + sb_puts(b, `const {glg_cname[i]}: {glg_ctype[i]} = {glg_cval[i]}\n`) + i += 1 + } + sb_puts(b, "\n") + i = 0 + while i < len(glg_fname) { + let lname = "gl_" + glg_snake(glg_fname[i]) + let ps = sb_new() + var p = 0 + while p < glg_fpcnt[i] { + let ix = glg_fpoff[i] + p + if p > 0 { sb_puts(ps, ", ") } + let lt = glg_ludic_ty(glg_ppbase[ix], glg_ppstar[ix]) + sb_puts(ps, `{glg_pname(glg_ppname[ix], p)}: {lt}`) + p += 1 + } + let rt = glg_ludic_ty(glg_frbase[i], glg_frstar[i]) + var rets = "" + if rt != "void" { rets = " -> " + rt } + sb_puts(b, `extern function {lname}({sb_str(ps)}){rets} = "lgl_{glg_fname[i]}"\n`) + i += 1 + } + return write_file(path, sb_str(b)) +} + +# ---- emit gl_thunks.ll ------------------------------------------------------ +function glg_emit_thunks(path: pointer) -> bool { + let b = sb_new() + sb_puts(b, "; ============================================================================\n") + sb_puts(b, "; gl_thunks.ll — one thunk per OpenGL 4.1 core entry point. GENERATED by\n") + sb_puts(b, "; `ludic-dev glgen` from gl3.h. Each @lgl_* takes the Ludic ABI (i32 / i64 / ptr,\n") + sb_puts(b, "; float and double as Q16.16 fixed) and calls the real gl* with exact C types.\n") + sb_puts(b, "; ============================================================================\n") + sb_puts(b, "\n") + var i = 0 + while i < len(glg_fname) { + let cret = glg_ir_ty(glg_frbase[i], glg_frstar[i]) + let ps = sb_new() + var p = 0 + while p < glg_fpcnt[i] { + let ix = glg_fpoff[i] + p + if p > 0 { sb_puts(ps, ", ") } + sb_puts(ps, glg_ir_ty(glg_ppbase[ix], glg_ppstar[ix])) + p += 1 + } + sb_puts(b, `declare {cret} @gl{glg_fname[i]}({sb_str(ps)})\n`) + i += 1 + } + sb_puts(b, "\n") + i = 0 + while i < len(glg_fname) { + let cret = glg_ir_ty(glg_frbase[i], glg_frstar[i]) + let lret = glg_abi_ty(cret) + let sig = sb_new() + let body = sb_new() + let call = sb_new() + var p = 0 + while p < glg_fpcnt[i] { + let ix = glg_fpoff[i] + p + let ct = glg_ir_ty(glg_ppbase[ix], glg_ppstar[ix]) + let lt = glg_abi_ty(ct) + if p > 0 { sb_puts(sig, ", "); sb_puts(call, ", ") } + sb_puts(sig, `{lt} %a{string(p)}`) + if ct == lt { + sb_puts(call, `{ct} %a{string(p)}`) + } else { + if ct == "i8" or ct == "i16" { + sb_puts(body, ` %c{string(p)} = trunc i32 %a{string(p)} to {ct}\n`) + sb_puts(call, `{ct} %c{string(p)}`) + } else { + # float / double: the Ludic side passes Q16.16, so scale by 1/65536 + sb_puts(body, ` %f{string(p)} = sitofp i32 %a{string(p)} to {ct}\n`) + sb_puts(body, ` %c{string(p)} = fmul {ct} %f{string(p)}, 0x3EF0000000000000\n`) + sb_puts(call, `{ct} %c{string(p)}`) + } + } + p += 1 + } + sb_puts(b, `define {lret} @lgl_{glg_fname[i]}({sb_str(sig)}) `) + sb_puts(b, "{\n") + sb_puts(b, "entry:\n") + sb_puts(b, sb_str(body)) + let invoke = `call {cret} @gl{glg_fname[i]}({sb_str(call)})` + if cret == "void" { + sb_puts(b, ` {invoke}\n`) + sb_puts(b, " ret void\n") + } else { + if cret == lret { + sb_puts(b, ` %r = {invoke}\n`) + sb_puts(b, ` ret {lret} %r\n`) + } else { + if cret == "i8" or cret == "i16" { + sb_puts(b, ` %r = {invoke}\n`) + sb_puts(b, ` %z = zext {cret} %r to i32\n`) + sb_puts(b, " ret i32 %z\n") + } else { + sb_puts(b, ` %r = {invoke}\n`) + sb_puts(b, ` %m = fmul {cret} %r, 65536.0\n`) + sb_puts(b, ` %z = fptosi {cret} %m to i32\n`) + sb_puts(b, " ret i32 %z\n") + } + } + } + sb_puts(b, "}\n") + i += 1 + } + return write_file(path, sb_str(b)) +} + +# ---- the task --------------------------------------------------------------- +# `ludic-dev glgen` rewrites the two tracked outputs; `--check` regenerates into +# scratch files and compares, so the guard judges the working tree, not git HEAD. +function cmd_glgen() -> int { + let check = arg_count() > 2 and arg(2) == "--check" + let sdk = Text.trim(capture("xcrun --show-sdk-path")) + if sdk == "" { err("glgen: no macOS SDK (xcrun --show-sdk-path)\n"); return 1 } + let hpath = `{sdk}/System/Library/Frameworks/OpenGL.framework/Headers/gl3.h` + let h = read_file(hpath) + if h == null { err(`glgen: cannot read {hpath}\n`); return 1 } + glg_parse(h) + if len(glg_fname) == 0 { err("glgen: no GLAPI declarations found\n"); return 1 } + + # every type in the header must be one this generator knows how to bind + var i = 0 + while i < len(glg_fname) { + if glg_ir_ty(glg_frbase[i], glg_frstar[i]) == null or glg_ludic_ty(glg_frbase[i], glg_frstar[i]) == null { + err(`glgen: unknown return type {glg_frbase[i]} on gl{glg_fname[i]}\n`); return 1 + } + var p = 0 + while p < glg_fpcnt[i] { + let ix = glg_fpoff[i] + p + if glg_ir_ty(glg_ppbase[ix], glg_ppstar[ix]) == null or glg_ludic_ty(glg_ppbase[ix], glg_ppstar[ix]) == null { + err(`glgen: unknown parameter type {glg_ppbase[ix]} on gl{glg_fname[i]}\n`); return 1 + } + p += 1 + } + i += 1 + } + + var api_out = "runtime/native/gl_api.ludic" + var thunk_out = "runtime/native/gl_thunks.ll" + if check { api_out = tmp_path("gl_api.ludic"); thunk_out = tmp_path("gl_thunks.ll") } + if not glg_emit_ludic(api_out) { err("glgen: cannot write gl_api.ludic\n"); return 1 } + if not glg_emit_thunks(thunk_out) { err("glgen: cannot write gl_thunks.ll\n"); return 1 } + if check { + if not shq(`cmp -s {api_out} runtime/native/gl_api.ludic`) { err("gl_api.ludic drifted from gl3.h (run: ludic-dev glgen)\n"); return 1 } + if not shq(`cmp -s {thunk_out} runtime/native/gl_thunks.ll`) { err("gl_thunks.ll drifted from gl3.h (run: ludic-dev glgen)\n"); return 1 } + } + print(`OK {string(len(glg_cname))} constants, {string(len(glg_fname))} entry points`) + return 0 +} diff --git a/tools/ludic-cli/main.ludic b/tools/ludic-cli/main.ludic index 8436a0c6..183f80a7 100644 --- a/tools/ludic-cli/main.ludic +++ b/tools/ludic-cli/main.ludic @@ -24,6 +24,7 @@ program Ludic { import "build.ludic" import "project.ludic" import "pkg.ludic" + import "assets.ludic" function usage() -> void { print("ludic — the toolchain for the Ludic language") @@ -44,6 +45,7 @@ program Ludic { print(" update [module] bump a dependency (or all) to its latest published version") print(" verify check every locked package against the store by content hash") print(" vendor copy the resolved packages into ./vendor for offline builds") + print(" assets [--force] fetch the CC0 materials the renderer needs into assets/polyhaven/") print(" build-lib compile a package's module to a prebuilt dylib in lib//") print(" link-flags print the clang flags to link this project's prebuilt module dylibs") print("") @@ -85,6 +87,7 @@ program Ludic { if (cmd == "update") { return cmd_pkg_update() } if (cmd == "verify") { return cmd_pkg_verify() } if (cmd == "vendor") { return cmd_pkg_vendor() } + if (cmd == "assets") { return cmd_fetch_assets() } if (cmd == "build-lib") { return cmd_pkg_build_lib() } if (cmd == "link-flags") { return cmd_pkg_link_flags() } diff --git a/tools/ludic-cli/prelude.ludic b/tools/ludic-cli/prelude.ludic index 0e151d79..f8e15539 100644 --- a/tools/ludic-cli/prelude.ludic +++ b/tools/ludic-cli/prelude.ludic @@ -35,6 +35,22 @@ function write_file(path: pointer, s: pointer) -> bool { return true } +# ---- byte strings ------------------------------------------------------------------ +# s[a, b) as a fresh NUL-terminated string; out-of-range ends are clamped. +function str_sub(s: pointer, a: int, b: int) -> pointer { + var lo = a + if lo < 0 { lo = 0 } + var hi = b + if hi < lo { hi = lo } + let out = bytes(hi - lo + 1) + var i = lo + var k = 0 + while i < hi { out[k] = s[i]; k += 1; i += 1 } + out[k] = 0 + return out +} +function str_space(c: int) -> bool { return c == 32 or c == 9 or c == 13 } + function file_exists(path: pointer) -> bool { return shq(`test -e {path}`) } function is_exec(path: pointer) -> bool { return shq(`test -x {path}`) } # is `a` newer than `b` (like the shell's `-nt`)? diff --git a/tools/ludic-cli/project.ludic b/tools/ludic-cli/project.ludic index 620879c9..7baeb35c 100644 --- a/tools/ludic-cli/project.ludic +++ b/tools/ludic-cli/project.ludic @@ -22,14 +22,27 @@ function manifest_name() -> pointer { # the name to give the built binary: the manifest's module (its last dotted # segment, so ludic.snake builds `snake`), else the entry file's base name. +# The built binary's name, from the manifest's module path when there is one. +# +# A module path is a URL — `git.host/user/maroon-lake` — so the last path segment comes +# first: taking the last DOT of that would have cut inside the host and produced +# `io/user/maroon-lake`, which git-hosted names all share and which `build/{name}` then +# turned into directories. Within the segment a dot still separates a namespace from the +# package (`ludic.render3d` builds as `render3d`). function project_name(entry: pointer) -> pointer { - let mod = manifest_name() + var mod = manifest_name() if mod != "" { - var last = -1 + var n = 0 + while mod[n] != 0 { n += 1 } + var slash = -1 var i = 0 - while mod[i] != 0 { if mod[i] == '.' { last = i }; i += 1 } - if last >= 0 { return mod[last + 1..i] } - return mod + while i < n { if mod[i] == '/' { slash = i }; i += 1 } + if slash >= 0 { mod = mod[slash + 1..n]; n = n - slash - 1 } + var last = -1 + i = 0 + while i < n { if mod[i] == '.' { last = i }; i += 1 } + if last >= 0 { return mod[last + 1..n] } + if n > 0 { return mod } } return capture_line(`basename {entry} .ludic`) } diff --git a/tools/ludic-cli/test.ludic b/tools/ludic-cli/test.ludic index a1e17e83..71ef4cc1 100644 --- a/tools/ludic-cli/test.ludic +++ b/tools/ludic-cli/test.ludic @@ -447,6 +447,7 @@ function cmd_dev_test() -> int { smoke("events/events") smoke("networking/net_rt") smoke("library/cursor_capture") # #89 Input.cursor_mode compiles (no-op headless; windowed links cocoa.ll) + smoke("rendering/gl_triangle") # Gl.* (OpenGL 4.1 core) compiles headless; the run needs a GPU context print("== the compiler and the CLI (ludicc / ludic) ==") # ludicc comes out of the IR seed with clang alone; the CLI is then compiled @@ -525,5 +526,14 @@ function cmd_dev_test() -> int { ok("ludic-dev docs-palette regenerates emit_color.ludic + palette.json byte-identically") } else { bad2("ludic-dev docs-palette --check", capture_line(`tail -1 {tmp_dir()}/pal.out`)) } + # the OpenGL binding generator is the same shape: gl_api.ludic + gl_thunks.ll are + # tracked, and --check regenerates them from the platform gl3.h and compares. The + # header is macOS-only, so this guard cannot run off Darwin. + if is_darwin() { + if shq(`bin/ludic-dev glgen --check > {tmp_dir()}/glgen.out 2>&1`) { + ok("ludic-dev glgen regenerates gl_api.ludic + gl_thunks.ll byte-identically") + } else { bad2("ludic-dev glgen --check", capture_line(`tail -1 {tmp_dir()}/glgen.out`)) } + } else { skip("ludic-dev glgen --check (needs the macOS OpenGL headers)") } + return report() }